rutgerkok / WorldGeneratorApi

Minecraft Spigot plugin that enables other plugins to customize world generation
MIT License
95 stars 9 forks source link

WorldEdit //regen doesn't work with WorldGeneratorApi #27

Closed rutgerkok closed 3 years ago

rutgerkok commented 3 years ago

Describe the bug When using the WorldEdit //regen command, an error appears in the console.

To Reproduce

  1. Install WorldEdit, WorldGeneratorApi and a plugin that replaces the chunk generator using WorldGeneratorApi.
  2. Use //regen.

Log files

java.lang.IllegalStateException: Regen failed.
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.regenerate(Spigot_v1_16_R3.java:579) ~[?:?]
    at com.sk89q.worldedit.bukkit.BukkitWorld.regenerate(BukkitWorld.java:206) ~[?:?]
    at com.sk89q.worldedit.command.RegionCommands.regenerate(RegionCommands.java:431) ~[?:?]
    at com.sk89q.worldedit.command.RegionCommandsRegistration.cmd$_regen(RegionCommandsRegistration.java:576) ~[?:?]
    at org.enginehub.piston.CommandManager.execute(CommandManager.java:157) ~[?:?]
    at com.sk89q.worldedit.extension.platform.PlatformCommandManager.handleCommand(PlatformCommandManager.java:494) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at com.sk89q.worldedit.util.eventbus.MethodEventHandler.dispatch(MethodEventHandler.java:58) ~[?:?]
    at com.sk89q.worldedit.util.eventbus.EventHandler.handleEvent(EventHandler.java:73) ~[?:?]
    at com.sk89q.worldedit.util.eventbus.EventBus.dispatch(EventBus.java:193) ~[?:?]
    at com.sk89q.worldedit.util.eventbus.EventBus.post(EventBus.java:181) ~[?:?]
    at com.sk89q.worldedit.bukkit.WorldEditPlugin.onCommand(WorldEditPlugin.java:375) ~[?:?]
    at com.sk89q.bukkit.util.DynamicPluginCommand.execute(DynamicPluginCommand.java:55) ~[?:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.4.jar:git-Paper-300]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:802) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2008) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1819) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1772) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:23) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1131) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1124) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:95) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1260) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:995) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:177) ~[patched_1.16.4.jar:git-Paper-300]
    at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: net.minecraft.server.v1_16_R3.ReportedException: Exception generating new chunk
    at com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1329) ~[patched_1.16.4.jar:git-Paper-300]
    at com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1314) ~[patched_1.16.4.jar:git-Paper-300]
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.lambda$null$9(Spigot_v1_16_R3.java:690) ~[?:?]
    at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) ~[?:?]
    at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632) ~[?:?]
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) ~[?:?]
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) ~[?:?]
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:528) ~[?:?]
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.lambda$regenForWorld$10(Spigot_v1_16_R3.java:689) ~[?:?]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:118) ~[patched_1.16.4.jar:git-Paper-300]
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.regenForWorld(Spigot_v1_16_R3.java:687) ~[?:?]
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.doRegen(Spigot_v1_16_R3.java:641) ~[?:?]
    at com.sk89q.worldedit.bukkit.adapter.impl.Spigot_v1_16_R3.regenerate(Spigot_v1_16_R3.java:577) ~[?:?]
    ... 34 more
Caused by: net.minecraft.server.v1_16_R3.ReportedException: Exception generating new chunk
    at net.minecraft.server.v1_16_R3.PlayerChunkMap.lambda$null$39(PlayerChunkMap.java:1235) ~[patched_1.16.4.jar:git-Paper-300]
    at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerChunkMap.lambda$b$41(PlayerChunkMap.java:1220) ~[patched_1.16.4.jar:git-Paper-300]
    at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072) ~[?:?]
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?]
    at net.minecraft.server.v1_16_R3.ChunkTaskQueueSorter.b(SourceFile:58) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.e(ThreadedMailbox.java:90) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.a(ThreadedMailbox.java:137) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.run(ThreadedMailbox.java:102) ~[patched_1.16.4.jar:git-Paper-300]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
    ... 1 more
Caused by: java.lang.UnsupportedOperationException: This is a dummy class, used because a custom world generator was registered, but no base chunk generator has been set. Please use WorldGenerator.setBaseChunkGenerator(...).
    at nl.rutgerkok.worldgeneratorapi.internal.bukkitoverrides.DummyBukkitChunkGenerator.generateChunkData(DummyBukkitChunkGenerator.java:40) ~[?:?]
    at org.bukkit.craftbukkit.v1_16_R3.generator.CustomChunkGenerator.buildBase(CustomChunkGenerator.java:119) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ChunkStatus.lambda$static$6(ChunkStatus.java:55) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ChunkStatus$d.doWork(ChunkStatus.java:249) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ChunkStatus.a(ChunkStatus.java:193) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerChunkMap.lambda$null$39(PlayerChunkMap.java:1222) ~[patched_1.16.4.jar:git-Paper-300]
    at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.PlayerChunkMap.lambda$b$41(PlayerChunkMap.java:1220) ~[patched_1.16.4.jar:git-Paper-300]
    at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072) ~[?:?]
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) ~[?:?]
    at net.minecraft.server.v1_16_R3.ChunkTaskQueueSorter.b(SourceFile:58) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.e(ThreadedMailbox.java:90) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.a(ThreadedMailbox.java:137) ~[patched_1.16.4.jar:git-Paper-300]
    at net.minecraft.server.v1_16_R3.ThreadedMailbox.run(ThreadedMailbox.java:102) ~[patched_1.16.4.jar:git-Paper-300]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
    ... 1 more
rutgerkok commented 3 years ago

Relevant WorldEdit code at https://github.com/EngineHub/worldedit-adapters/blob/1722343398e99a7c9b78581aa7b0b4a45c7ca834/spigot_v1_16_R3/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/Spigot_v1_16_R3.java#L585