DRE2N / DungeonsXL

Create custom dungeons and adventure maps with ease!
https://www.spigotmc.org/resources/dungeonsxl.9488/
GNU General Public License v3.0
154 stars 83 forks source link

floor config doesnt do anything #616

Closed BeHeaven616 closed 5 years ago

BeHeaven616 commented 5 years ago

i just created my first config file for a single floor dungeon, but it doesnt affect the gamerules

[//]: # (For Example i changed the keepinventoryonenter to true but if i enter the dungeon the inv is empty. To be clear i copy/ pastet the floor config file (since i have no clue what arguments i can use) on the wiki page, deletet every argument i didnt want to have set, deletet all descriptions and saved it under DXL/MAPS/MAPNAME/config.yml

I tried setting some values in the main config too but it doesnt work at all.)

The basic arguments i wanna have for my dungeon are:

forcedGameType: DEFAULT isLobbyDisabled: false timeUntilKickOfflinePlayer: 10000 fly: false playerVersusPlayer: false friendlyFire: false requirements: forbiddenItems:

keepInventoryOnEnter: true keepInventoryOnDeath: false keepInventoryOnFinish: true keepInventoryOnEscape: false breakBlocks: true breakPlacedBlocks: true breakWhitelist: COAL_ORE: ["STONE_PICKAXE"] IRON_ORE: ["STONE_PICKAXE"] STONE: ["STONE_PICKAXE"] DIRT: []

interactionProtectedEntities:

placeBlocks: true placeWhitelist:

initialLives: 2 secureObjects:

Sataniel98 commented 5 years ago

Is there anything in the log files? Did you reload?

BeHeaven616 commented 5 years ago

[11:42:45] [Server thread/ERROR]: Cannot load plugins\DungeonsXL\maps\Kohlemiene\config.yml org.bukkit.configuration.InvalidConfigurationException: while scanning for the next token found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation) in 'string', line 10, column 1:

it seems ike a have a syntax error or am i wrong? this is the first time i am creating a .yml file and i have no idea.

iron_pickaxe is one of the forbidden items in the dungeon and in notepad++ it is red marked same as golden_pickaxe

Sataniel98 commented 5 years ago

Try http://yamllint.com. YAML doesn't accept TABs, use some spaces instead. Make sure the indentation is as it is in the examples.

BeHeaven616 commented 5 years ago

thanks that already helped with the syntax problem, but the requirements and blocks free to break still wont work. i have enabled breakblocks and unter breakwhitelist i defined: breakWhitelist: COAL_ORE: ["STONE_PICKAXE"] IRON_ORE: ["STONE_PICKAXE"] STONE: ["STONE_PICKAXE"] DIRT: []

thank you for your help on this frustrating saturday

Sataniel98 commented 5 years ago

No problem, feel free to open more issues if you have further problems :)

Did you start the game correctly with a ready sign? Do you test it as a non-OP player? Since OPs have the permission dxl.ignorerequirements, they are excluded. If yes, make sure that the indents match, the keyItems and forbiddenItems sections must be inside the requirements section. Maybe post the config you're using now between two of three of these symbols ```, this makes it keep the formatting here, like

key:
    childKey: value
BeHeaven616 commented 5 years ago

thanks!

i did enter the dungeon after joining a group with the group sign, then i used the ready-sign (i createt it only using [ready] and no other arguments, i hope this is okay as i want the gamemode to be default), and i joined in gamemode survival, but i am set as op on the server. my server doesnt use any permission plugin since only friends of mine play on it.

forcedGameType: DEFAULT
isLobbyDisabled: false
timeUntilKickOfflinePlayer: 10000
fly: false
playerVersusPlayer: false
friendlyFire: false
requirements:
  forbiddenItems:
    - DIAMOND_PICKAXE
    - IRON_PICKAXE
    - GOLDEN_PICKAXE
  keyItems:
    - STONE_PICKAXE

keepInventoryOnEnter: true
keepInventoryOnDeath: false
keepInventoryOnFinish: true
keepInventoryOnEscape: false
breakBlocks: true
breakPlacedBlocks: true
breakWhitelist:
 COAL_ORE: ["STONE_PICKAXE"]
  IRON_ORE: ["STONE_PICKAXE"]
  STONE: ["STONE_PICKAXE"]
  DIRT: []

damageProtectedEntities:

interactionProtectedEntities:
- ARMOR_STAND
- TORCH
- SCAFFOLDING

placeBlocks: true
placeWhitelist:
  - LADDER
  - COBBLESTONE

initialLives: 2
secureObjects:
- BEDROCK
- 160
BeHeaven616 commented 5 years ago

yeah i already had a feeling i would screw up the insert code stuff :/

https://drive.google.com/open?id=1z6Fz5Vv49L2D1gbHEgKhNLWmMzzs5Zbv here is the config in my google drive

Sataniel98 commented 5 years ago

If there's no error in the console anymore, it should work.

BeHeaven616 commented 5 years ago

aaah i am so sorry it seems like i missed this error in my server logs.....

but i really have no clue whats going on there, this is beyond my knowledge

[17:11:12] [Server thread/ERROR]: Cannot load plugins\DungeonsXL\maps\Kohlemiene\config.yml
org.bukkit.configuration.InvalidConfigurationException: while parsing a block mapping
 in 'string', line 23, column 2:
     COAL_ORE: ["STONE_PICKAXE"]
     ^
expected <block end>, but found '<block mapping start>'
 in 'string', line 24, column 3:
      IRON_ORE: ["STONE_PICKAXE"]
      ^

    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:56) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:160) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:128) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:183) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at de.erethon.dungeonsxl.world.WorldConfig.<init>(WorldConfig.java:68) [dungeonsxl-dist-0.18-SNAPSHOT-767.jar:?]
    at de.erethon.dungeonsxl.world.DResourceWorld.<init>(DResourceWorld.java:73) [dungeonsxl-dist-0.18-SNAPSHOT-767.jar:?]
    at de.erethon.dungeonsxl.world.DWorldCache.init(DWorldCache.java:57) [dungeonsxl-dist-0.18-SNAPSHOT-767.jar:?]
    at de.erethon.dungeonsxl.DungeonsXL.initCaches(DungeonsXL.java:244) [dungeonsxl-dist-0.18-SNAPSHOT-767.jar:?]
    at de.erethon.dungeonsxl.DungeonsXL.onEnable(DungeonsXL.java:135) [dungeonsxl-dist-0.18-SNAPSHOT-767.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:352) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:417) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugin(CraftServer.java:461) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugins(CraftServer.java:375) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:439) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at net.minecraft.server.v1_14_R1.DedicatedServer.init(DedicatedServer.java:258) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:764) [spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
 in 'string', line 23, column 2:
     COAL_ORE: ["STONE_PICKAXE"]
     ^
expected <block end>, but found '<block mapping start>'
 in 'string', line 24, column 3:
      IRON_ORE: ["STONE_PICKAXE"]
      ^

    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:572) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:214) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:236) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:227) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:215) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:144) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:85) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:139) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:437) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:54) ~[spigot-1.14.3.jar:git-Spigot-9a643a6-eb2e657]
    ... 17 more
[17:11:12] [Server thread/INFO]: [DungeonsXL] Successfully loaded Vignette module "Inventory".
BeHeaven616 commented 5 years ago

well it seems like i am a little idiot when it comes to YAML, but i jsut found out there is a nearly invisible line in notepad++ that does tell me where to put my code to be correct, i just didnt notice it. now the error is completely gone, i am able to keep my items when entering the dungeon now but i am still not able to break the blocks i defined in the whitelist.

Sataniel98 commented 5 years ago

but i really have no clue whats going on there, this is beyond my knowledge

Ah, OK, I see.

breakWhitelist:
 COAL_ORE: ["STONE_PICKAXE"] # <- Just one space in front of the key-value pair
  IRON_ORE: ["STONE_PICKAXE"]
  STONE: ["STONE_PICKAXE"]
  DIRT: []

YAML can interprete different amounts of spaces to mark children (usually two or four is used), but you must be consistent within one section.

Try doing it like this with two spaces:

breakWhitelist:
  COAL_ORE: ["STONE_PICKAXE"]
  IRON_ORE: ["STONE_PICKAXE"]
  STONE: ["STONE_PICKAXE"]
  DIRT: []

(Du kannst übrigens auch gern auf Deutsch schreiben.)

BeHeaven616 commented 5 years ago

hah du bist deutscher :) <3 wie nice!! also ich hab jz wie gesagt keine fehler mehr in der log aber dennoch nimmt er die whitelist nicht!

BeHeaven616 commented 5 years ago

hab jetzt gerade mal die funktionen ingame getestet, bis auf keepinventory scheint nichts zu funktionieren:

requirements: forbiddenItems:

und auch

breakBlocks: true breakPlacedBlocks: true breakWhitelist: COAL_ORE: ["STONE_PICKAXE"] IRON_ORE: ["STONE_PICKAXE"] STONE: ["STONE_PICKAXE"] DIRT: []

klappt nicht.

placeBlocks: true placeWhitelist:

hat auch keine auswirkungen.

interactionProtectedEntities:

konnte ich bisher nicht testen! serverlog nachwievor ohne fehler soweit ich sehen kann, jedenfalls keine fehler zu dxl ^^

Sataniel98 commented 5 years ago

Sowohl Gerüste als auch Fackeln sind Blöcke, keine Entities, also werden die schon durch den Blockschutz geschützt. Wenn das Spiel richtig gestartet ist (also ein Ready-Schild muss ausgelöst worden sein, das ist, wenn es z.B. berührt wurde und der rote Text auf dem Bildschirm erschienen war) sollte es funktionieren. Achte auch darauf, dass der Spawn-Schutz von Vanilla (server.properties) das nicht verhindert.

BeHeaven616 commented 5 years ago

Okay also ich habs jz mochmal alles durchgecheckt, die fackeln und gerüste rausgenommen aus der config, die spawnprotection in den server.properties hatte ich bereits auf 0 jedoch scheint das generell nicht zu funktionieren?!?!? der spawn auf meinem server ist trotz spawnprotection=0 geschützt! warum auch immer, ich habe in worldguard nur eine region definiert am spawn jedoch ohne flags, nur um die region zu benennen! Das hab ich aber wie gesagt nur am spawn und nicht in der dungeon. Die Dungeon starte ich nachdem ich der gruppe beigetreten bin und durchs portal laufe mit einem klick auf das Ready schild. Der Dungeonname erscheint und ich spawne dort wo ich das Start schild angebracht habe. Der Start ist ein gutes Stück vom spawn entfernt. Die Dungeon verfügt über 2 End-Schilder.

Trotzdem tut sich da garnichts, ich kann keine blöcke platzieren und auch nichts abbauen von der whitelist :( das plugin hatte bei mir auf 1.13.2 perfekt funktioniert, da hatte mir jemand anders die config.yml erstellt. also ich find das plugin trotzdem noch mega super, und du bist mega freundlich und hilfsbereit!

Sataniel98 commented 5 years ago

Freut mich zu hören :) Ich hab es jetzt selbst noch mal getestet, und so, wie es aussieht, funktioniert es wirklich nicht, wie es soll. Das Problem scheint an breakPlacedBlocks zu liegen, die Konstellation mit breakBlocks, breakPlacedBlocks und der Whitelist allen zusammen habe ich wohl so noch nie getestet. Ich werde es beheben.

BeHeaven616 commented 5 years ago

Hah super vielen dank für die info :)) du bist der beste! Könntest du mir nur noch sagen wie ich meine config nun anpassen soll bzw was genau raus soll? Die dungeon is einfach nue ne höle aus stein mit ein paar kohle und eisen vorkommen, umwickelt von bedrock, man sollte eigentlich alles abbauen können ausser einer weißen glasscheibe und natürlich bedrock :)

Danke vielmals!!!

Sataniel98 commented 5 years ago

Das kommt drauf an, was genau man abbauen können soll. In meinen Tests lief es so, dass:

  1. Dinge platziert werden konnten, die auf der placeWhitelist standen.
  2. Blöcke nicht immer abgebaut werden konnten, wenn sie auf der breakWhitelist standen.
  3. Blöcke nicht immer abgebaut werden konnten, wenn sie von einem Spieler platziert wurden (=breakPlacedBlocks: true).

Im Endeffekt muss der Typ eines Blocks im Moment also sowohl auf der Whitelist stehen als auch von einem Spieler platziert sein, wenn man ihn abbauen können soll. Das dürfte aber niemand so wollen. Viel intuitiver und nützlicher finde ich es, wenn sich die Regeln ergänzen und nicht gegenseitig einschränken.

Wenn Du also willst, dass man alles, was ein Spieler platziert hat, abbauen können soll, wird es ausreichen, breakPlacedBlocks auf true zu setzen. Man kann ja schon davon implizit Blöcke rausnehmen, indem man sie einfach nicht mit der placeWhitelist platzierbar macht, also braucht man die breakWhitelist in der Praxis nicht für platzierte Blöcke. Also reicht es, wenn die breakWhitelist platzierte Blöcke ignoriert, wenn breakPlacedBlocks true ist, und nur dann prüft, wenn ein Spieler einen Block, der nicht im Spiel platziert wurde, abbaut.

Bedrock würde ich einfach Vanilla überlassen. Wenn Du von "einer" weißen Glasscheibe sprichst und nicht von dem Blocktyp an sich, würde ich da überhaupt keine Game Rules für benutzen und einfach ein [Protection]-Schild drankleben.

BeHeaven616 commented 5 years ago

Wow. Bin sprachlos. Habs jetzt so gemacht wie du gesagt hast und alles klappt eigentlich wie gewünscht!! Vielen dank für die hilfe, dazu noch um 23 uhr! Werd definitiv was via paypal rüberwachsen lassen <3

Sataniel98 commented 5 years ago

Kein Ding, 23 Uhr ist für einen Studenten auch nur das, was für einen normalen Menschen 18 Uhr ist xD Danke, wenn Du noch Fragen hast, erstell ruhig neue Issues dafür :)

BeHeaven616 commented 5 years ago

ich werd jz mal einfach unverschämt nochmal diesen Beitrag hier nehmen und ihn nutzen um dir noch was zu fragen! Ist es möglich an der selben stelle 2 portale quasi ineinander zu haben und je nachdem welche gruppe man joint kommt bam in die eine oder andere dungeon? so zusagen wie in world of warcraft man geht in die selbe ungeon aber mit verschiedenen schwierigkeitsgrad?

und noch etwas: ich hab im wiki gelesen dass man external mobs auch via schild spawnen kann aber ich versteh nicht genau wie? ich würde gern nen citizen mit einer bestimmten skin als gegner erstellen, geht das?

Sataniel98 commented 5 years ago

Neue Issues je Frage sind mir lieber, weil ich sie dann besser als To-Do-Liste abarbeiten kann. Es ist aber nicht so schlimm.

Was Du machen willst, ist in DungeonsXL eigentlich der Normalfall: Portale haben keinen Dungeon ausdrücklich zugewiesen, sondern sie senden den Spieler in den, den seine Gruppe als Ziel eingetragen hat. Mit anderen Worten: Du kannst einfach zwei Group-Schilder mit verschiedenen Zielen neben ein und dasselbe Portal hängen und es funktioniert für beide.

Um Mobs von anderen Plugins zu spawnen, fügst Du in der dritten Zeile auf dem Mob-Schild einfach einen Parameter hinzu, der für das Plugin steht, z.B. CI für Citizens. Der Mob-Name in der zweiten Zeile wird dann was auch immer das Plugin benutzt, um Mobs zu identifizieren, also im Fall von Citizens die ID-Nummern aus /npc list.

Das sieht dann etwa so aus:

[Mob]

13 <= Das Mob mit der ID 13

0,1,CI <= Genau ein Mob von [CI]tizens

D5 <= Dann, wenn ein Spieler auf 5 Block nah dran gekommen ist

Citizens und MythicMobs sind von Haus aus unterstützt. Alle anderen Custom-Mob-Plugins kann man benutzen, wenn sie einen Befehl für Command Blocks haben, der die Welt und die Koordinaten als Parameter annimmt. Die kann man dann in der Haupt-Config registrieren.

BeHeaven616 commented 5 years ago

Wow ich bin echt begeistert, vielen dank! Nicht nur dass das plugin an sich echt tolle arbeit ist aber du als student dann auch noch am fragen beantworten und das montags?!? Echt wahnsinn! Vielen dank!