PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
9.39k stars 2.2k forks source link

Placing structures is broken #10832

Open davidmayr opened 1 month ago

davidmayr commented 1 month ago

Stack trace

[21:28:14 ERROR]: Error occurred while enabling TestStructure v1.0-SNAPSHOT (Is it up to date?)
java.lang.IllegalArgumentException: Coordinates -16, 74, 33 are not in the region
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:463) ~[guava-32.1.2-jre.jar:?]
        at org.bukkit.craftbukkit.generator.CraftLimitedRegion.getBlockState(CraftLimitedRegion.java:185) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at org.bukkit.craftbukkit.util.CraftStructureTransformer.transformCraftState(CraftStructureTransformer.java:117) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.placeInWorld(StructureTemplate.java:298) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at org.bukkit.craftbukkit.structure.CraftStructure.place(CraftStructure.java:99) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at org.bukkit.craftbukkit.structure.CraftStructure.place(CraftStructure.java:65) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at TestStructure-1.0-SNAPSHOT.jar/eu.cafestube.furniture.teststructure.TestStructure.onEnable(TestStructure.java:31) ~[TestStructure-1.0-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:519) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:604) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:553) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:675) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:437) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:323) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1136) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323) ~[paper-1.20.6.jar:1.20.6-125-8e6554a]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

Plugin and Datapack List

Test Plugin to test the issue

Actions to reproduce (if known)

Paper version

This server is running Paper version 1.20.6-125-master@8e6554a (2024-05-30T18:14:53Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT) You are 1 version(s) behind Download the new version at: https://papermc.io/downloads/paper

(The 1 version I am behind is unrelated)

Other

My thrown together code of the test plugin to test this issue:

        try {
            Bukkit.getStructureManager().registerStructure(new NamespacedKey("test", "test"),
                    Bukkit.getStructureManager().loadStructure(getResource("test.nbt")));

            Bukkit.getStructureManager().getStructure(new NamespacedKey("test", "test"))
                    .place(new Location(Bukkit.getWorlds().get(0), -37, 74, 28), true, StructureRotation.NONE, Mirror.NONE, 0, 1.0F, ThreadLocalRandom.current(), List.of(new BlockTransformer() {
                        @Override
                        public @NotNull BlockState transform(@NotNull LimitedRegion limitedRegion, int i, int i1, int i2, @NotNull BlockState blockState, @NotNull BlockTransformer.TransformationState transformationState) {
                            return Bukkit.createBlockData(Material.DIRT).createBlockState();
                        }
                    }), List.of((limitedRegion, i, i1, i2, entity, b) -> true));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
Lulu13022002 commented 1 month ago

I think https://github.com/PaperMC/Paper/pull/10125 already fix this issue