EngineHub / WorldEdit

🗺️ Minecraft map editor and mod
https://enginehub.org/worldedit/
Other
3.06k stars 827 forks source link

worldedit cannot modify custom biomes. #2495

Closed XXY233 closed 3 months ago

XXY233 commented 3 months ago

WorldEdit Version

7.3.0

Platform Version

git-Paper-461 (1.20.4)

Confirmations

Bug Description

The original biome was the cherry grove generated by TerraformGenerator. image

I get an exception when I try to set the biome to "plains".

[22:16:47 INFO]: TheLittle_Yang issued server command: //setbiome plains
[22:16:47 ERROR]: An unexpected error while handling a WorldEdit command
java.lang.NullPointerException: null
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903) ~[guava-32.1.2-jre.jar:?]
        at com.sk89q.worldedit.history.change.BiomeChange3D.<init>(BiomeChange3D.java:49) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extent.ChangeSetExtent.setBiome(ChangeSetExtent.java:107) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extent.AbstractDelegateExtent.setBiome(AbstractDelegateExtent.java:109) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extent.AbstractDelegateExtent.setBiome(AbstractDelegateExtent.java:109) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extent.AbstractDelegateExtent.setBiome(AbstractDelegateExtent.java:109) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extent.validation.DataValidatorExtent.setBiome(DataValidatorExtent.java:88) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.EditSession.setBiome(EditSession.java:700) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.function.biome.BiomeReplace.apply(BiomeReplace.java:66) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.function.visitor.RegionVisitor.resume(RegionVisitor.java:60) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.function.operation.Operations.completeLegacy(Operations.java:55) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.command.BiomeCommands.setBiome(BiomeCommands.java:195) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.command.BiomeCommandsRegistration.cmd$_setbiome(BiomeCommandsRegistration.java:171) ~[worldedit-bukkit-7.3.0.jar:?]
        at org.enginehub.piston.CommandManager.execute(CommandManager.java:157) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.extension.platform.PlatformCommandManager.handleCommand(PlatformCommandManager.java:506) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.util.eventbus.MethodHandleEventHandler.dispatch(MethodHandleEventHandler.java:51) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.util.eventbus.EventHandler.handleEvent(EventHandler.java:73) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.util.eventbus.EventBus.dispatch(EventBus.java:193) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.util.eventbus.EventBus.post(EventBus.java:181) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.worldedit.bukkit.WorldEditPlugin.onCommand(WorldEditPlugin.java:386) ~[worldedit-bukkit-7.3.0.jar:?]
        at com.sk89q.bukkit.util.DynamicPluginCommand.execute(DynamicPluginCommand.java:55) ~[worldedit-bukkit-7.3.0.jar:?]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_20_R3.CraftServer.dispatchCommand(CraftServer.java:999) ~[paper-1.20.4.jar:git-Paper-461]
        at org.bukkit.craftbukkit.v1_20_R3.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[paper-1.20.4.jar:git-Paper-461]
        at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73) ~[brigadier-1.2.9.jar:?]
        at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:32) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:19) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.commands.execution.UnboundEntryAction.lambda$bind$0(UnboundEntryAction.java:8) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.commands.execution.CommandQueueEntry.a(CommandQueueEntry.java:5) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.commands.execution.ExecutionContext.runCommandQueue(ExecutionContext.java:101) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.commands.Commands.executeCommandInContext(Commands.java:434) ~[?:?]
        at net.minecraft.commands.Commands.performCommand(Commands.java:336) ~[?:?]
        at net.minecraft.commands.Commands.performCommand(Commands.java:323) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2230) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$14(ServerGamePacketListenerImpl.java:2190) ~[?:?]
        at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1465) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1442) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1365) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1343) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1232) ~[paper-1.20.4.jar:git-Paper-461]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-461]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]

Expected Behavior

No exceptions will occur and the biome is correctly set to "plains".

Reproduction Steps

  1. Select the custom biome block
  2. Enter the command: //setbiome plains

Anything Else?

No response

octylFractal commented 3 months ago

Bukkit API doesn't report custom biomes, so we can't support them.

mcp43 commented 3 months ago

So is there no way to change the biome then with world edit? I'm experiencing the exact issue - however I used Terra to generate my world instead of TerraformGen.

octylFractal commented 3 months ago

No, because Bukkit doesn't let us know about them.

wizjany commented 3 months ago

dupe #1538