From 24d356944cb72d5d480c4fc703c3426c9175969d Mon Sep 17 00:00:00 2001 From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 12 Jun 2022 13:25:52 -0400 Subject: [PATCH] Add missing important BlockStateListPopulator methods Without these methods it causes exceptions due to these being used by certain feature generators. --- .../util/BlockStateListPopulator.java | 31 ++++++++++++++++++- .../util/DummyGeneratorAccess.java | 10 ++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java index e32321f466..514084aff8 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java @@ -130,7 +130,7 @@ public class BlockStateListPopulator extends DummyGeneratorAccess { @Override public boolean isFluidAtPosition(BlockPos pos, Predicate state) { - return this.world.isFluidAtPosition(pos, state); + return state.test(this.getFluidState(pos)); // Paper - fix } @Override @@ -159,4 +159,33 @@ public class BlockStateListPopulator extends DummyGeneratorAccess { public RandomSource getRandom() { return this.world.getRandom(); } + + // Paper start + @Override + public java.util.Optional getBlockEntity(BlockPos pos, net.minecraft.world.level.block.entity.BlockEntityType type) { + BlockEntity tileentity = this.getBlockEntity(pos); + + return tileentity != null && tileentity.getType() == type ? (java.util.Optional) java.util.Optional.of(tileentity) : java.util.Optional.empty(); + } + + @Override + public BlockPos getHeightmapPos(net.minecraft.world.level.levelgen.Heightmap.Types heightmap, BlockPos pos) { + return world.getHeightmapPos(heightmap, pos); + } + + @Override + public int getHeight(net.minecraft.world.level.levelgen.Heightmap.Types heightmap, int x, int z) { + return world.getHeight(heightmap, x, z); + } + + @Override + public int getRawBrightness(BlockPos pos, int ambientDarkness) { + return world.getRawBrightness(pos, ambientDarkness); + } + + @Override + public int getBrightness(net.minecraft.world.level.LightLayer type, BlockPos pos) { + return world.getBrightness(type, pos); + } + // Paper end } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java b/paper-server/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java index 4705aed1dd..daf3c26fce 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java @@ -258,4 +258,14 @@ public class DummyGeneratorAccess implements WorldGenLevel { public boolean destroyBlock(BlockPos pos, boolean drop, Entity breakingEntity, int maxUpdateDepth) { return false; // SPIGOT-6515 } + + // Paper start - add more methods + public void scheduleTick(BlockPos pos, Fluid fluid, int delay) {} + + @Override + public void scheduleTick(BlockPos pos, Block block, int delay, net.minecraft.world.ticks.TickPriority priority) {} + + @Override + public void scheduleTick(BlockPos pos, Fluid fluid, int delay, net.minecraft.world.ticks.TickPriority priority) {} + // Paper end - add more methods }