Imprex-Development / orebfuscator

Orebfuscator - High-Performance Anti X-Ray plugin
https://modrinth.com/plugin/orebfuscator
GNU General Public License v3.0
125 stars 25 forks source link

Invalid YAML config format #164

Closed tvdruten closed 2 years ago

tvdruten commented 2 years ago

Please fill out the following information:

Describe the bug When I load the plugin for the first time, without .yml config, the plugin works flawless. Because no config extists, the plugin generates one. This is where things go wrong. Next time I load my server, or use the reload command, orebfuscator is broken and no longer working. This is the config it creates:

version: 1
general:
  checkForUpdates: true
  updateOnBlockDamage: true
  bypassNotification: true
  ignoreSpectator: false
  initialRadius: 1
  updateRadius: 2
  proximityHiderRunnerSize: 4
cache:
  enabled: true
  baseDirectory: orebfuscator_cache
  maximumOpenRegionFiles: 256
  deleteRegionFilesAfterAccess: 172800000
  maximumSize: 8192
  expireAfterAccess: 30000
  maximumTaskQueueSize: 32768
  protocolLibThreads: -1
obfuscation:
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null
proximity:
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null
- !!org.bukkit.configuration.MemoryConfiguration
  defaults: null

When I now restart the server, or use the reload command I get the following error

[19:18:54 INFO]: [Orebfuscator] Enabling Orebfuscator v5.2.1
[19:18:54 INFO]: [Orebfuscator] HeightAccessor found method: World::getMaxHeight()
[19:18:54 INFO]: [Orebfuscator] HeightAccessor found method: World::getMinHeight()
[19:18:54 ERROR]: [Orebfuscator] An error occurred while enabling plugin
[19:18:54 ERROR]: [Orebfuscator] could not determine a constructor for the tag tag:yaml.org,2002:org.bukkit.configuration.MemoryConfiguration
 in 'reader', line 20, column 3:
    - !!org.bukkit.configuration.Memor ... 
      ^

org.yaml.snakeyaml.constructor.ConstructorException: could not determine a constructor for the tag tag:yaml.org,2002:org.bukkit.configuration.MemoryConfiguration
 in 'reader', line 20, column 3:
    - !!org.bukkit.configuration.Memor ... 
      ^

    at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructUndefined.construct(SafeConstructor.java:574) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:220) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:391) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructSequence(BaseConstructor.java:375) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlSeq.construct(SafeConstructor.java:534) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230) ~[snakeyaml-1.30.jar:?]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:220) ~[snakeyaml-1.30.jar:?]
    at org.bukkit.configuration.file.YamlConstructor.construct(YamlConstructor.java:21) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:156) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:114) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:160) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:128) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:291) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:158) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at net.imprex.orebfuscator.config.OrebfuscatorConfig.load(OrebfuscatorConfig.java:54) ~[?:?]
    at net.imprex.orebfuscator.config.OrebfuscatorConfig.<init>(OrebfuscatorConfig.java:49) ~[?:?]
    at net.imprex.orebfuscator.Orebfuscator.onEnable(Orebfuscator.java:50) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugin(CraftServer.java:526) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugins(CraftServer.java:440) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.reload(CraftServer.java:941) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.Bukkit.reload(Bukkit.java:749) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchCommand(CraftServer.java:821) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchServerCommand(CraftServer.java:806) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.dedicated.DedicatedServer.bf(DedicatedServer.java:453) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:429) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1206) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1034) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at java.lang.Thread.run(Thread.java:833) [?:?]
[19:18:54 INFO]: [Orebfuscator] Disabling Orebfuscator v5.2.1
[19:18:54 ERROR]: Error occurred while disabling Orebfuscator v5.2.1 (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "net.imprex.orebfuscator.cache.ChunkCache.close()" because "this.chunkCache" is null
    at net.imprex.orebfuscator.Orebfuscator.onDisable(Orebfuscator.java:96) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:367) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:501) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at net.imprex.orebfuscator.Orebfuscator.onEnableFailed(Orebfuscator.java:116) ~[?:?]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:349) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugin(CraftServer.java:526) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugins(CraftServer.java:440) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.reload(CraftServer.java:941) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.Bukkit.reload(Bukkit.java:749) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchCommand(CraftServer.java:821) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchServerCommand(CraftServer.java:806) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.dedicated.DedicatedServer.bf(DedicatedServer.java:453) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:429) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1206) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1034) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3379-Spigot-8965a50-0ba6b90]
    at java.lang.Thread.run(Thread.java:833) [?:?]

Clearly the generated .yml config is broken.

All I want is use Orebfuscator with the default settings, so no tweaking in the config.

When I remove the whole obfuscation and proximity section and reload the plugin it sends the error:

[19:48:50 INFO]: [Orebfuscator] Enabling Orebfuscator v5.2.1
[19:48:50 INFO]: [Orebfuscator] HeightAccessor found method: World::getMaxHeight()
[19:48:50 INFO]: [Orebfuscator] HeightAccessor found method: World::getMinHeight()
[19:48:50 INFO]: [Orebfuscator] Using 'orebfuscator_cache' as chunk cache path
[19:48:50 INFO]: [Orebfuscator] cache.protocolLibThreads is less than one, choosing processor count as value = 4
[19:48:50 INFO]: [Orebfuscator] Searching NMS adapter for server version "v1_18_R1"!
[19:48:50 INFO]: [Orebfuscator] NMS adapter for server version "v1_18_R1" found!
[19:48:50 WARN]: [Orebfuscator] config section 'obfuscation' is missing or empty
[19:48:50 WARN]: [Orebfuscator] config section 'proximity' is missing or empty

when re-opening the config I see the following:

version: 1
general:
  checkForUpdates: true
  updateOnBlockDamage: true
  bypassNotification: true
  ignoreSpectator: false
  initialRadius: 1
  updateRadius: 2
  proximityHiderRunnerSize: 4
cache:
  enabled: true
  baseDirectory: orebfuscator_cache
  maximumOpenRegionFiles: 256
  deleteRegionFilesAfterAccess: 172800000
  maximumSize: 8192
  expireAfterAccess: 30000
  maximumTaskQueueSize: 32768
  protocolLibThreads: -1
obfuscation: []
proximity: []
tvdruten commented 2 years ago

So I also tried setting up your config help: https://github.com/Imprex-Development/Orebfuscator/wiki/Config#proximity-block-options

I came up with the next config:

version: 1
general:
  checkForUpdates: true
  updateOnBlockDamage: true
  bypassNotification: true
  ignoreSpectator: false
  initialRadius: 1
  updateRadius: 2
  proximityHiderRunnerSize: 4
cache:
  enabled: true
  baseDirectory: orebfuscator_cache
  maximumOpenRegionFiles: 256
  deleteRegionFilesAfterAccess: 172800000
  maximumSize: 8192
  expireAfterAccess: 30000
  maximumTaskQueueSize: 32768
  protocolLibThreads: -1
obfuscation:
  default:
   worlds:
     world
     world_nether
     world_the_end
   enabled: true
   hiddenBlocks:
     stone
   randomBlocks:
     iron: 4
proximity:
  default:
    worlds:
      world
      world_nether
      world_the_end
    enabled: true
    distance: 2
    useFastGazeCheck: false
    defaults: false
    hiddenBlocks:
      stone
    randomBlocks:
      iron: 4

This config also fails... So either I'm a total pleb, or your config wiki is just unclear (no hard feelings)

I hope this and above message is enough information for this bug report. Thanks in advance

Ingrim4 commented 2 years ago

The Spigot-Devs changed the way configs are written/read (in this commit: 031731e60ec) which in turn broke the way our config is set up. I will try to fix this today but can't promise anything.

tvdruten commented 2 years ago

Thanks!