aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch')
-rw-r--r--patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch b/patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch
new file mode 100644
index 0000000000..cdb1bc89a3
--- /dev/null
+++ b/patches/server/0840-Add-missing-important-BlockStateListPopulator-method.patch
@@ -0,0 +1,81 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Owen1212055 <[email protected]>
+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.
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
+index 4bd59614606962a5371fd0da54bde25bf6a01325..216b413ce29c2557d12b80b29072e7fc822de551 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
+@@ -128,7 +128,7 @@ public class BlockStateListPopulator extends DummyGeneratorAccess {
+
+ @Override
+ public boolean isFluidAtPosition(BlockPos pos, Predicate<FluidState> state) {
+- return this.world.isFluidAtPosition(pos, state);
++ return state.test(this.getFluidState(pos)); // Paper - fix
+ }
+
+ @Override
+@@ -140,4 +140,38 @@ public class BlockStateListPopulator extends DummyGeneratorAccess {
+ public RegistryAccess registryAccess() {
+ return this.world.registryAccess();
+ }
++
++ // Paper start
++ @Override
++ public <T extends BlockEntity> java.util.Optional<T> getBlockEntity(BlockPos pos, net.minecraft.world.level.block.entity.BlockEntityType<T> type) {
++ BlockEntity tileentity = this.getBlockEntity(pos);
++
++ return tileentity != null && tileentity.getType() == type ? (java.util.Optional<T>) 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 net.minecraft.world.level.storage.LevelData getLevelData() {
++ return world.getLevelData();
++ }
++
++ @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/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
+index d5861dfa771c4eb217e082e3c832c3a6c603710d..80026dcdb66cc88a080b33ef290a6a7fb7bcbbaa 100644
+--- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
++++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
+@@ -273,5 +273,17 @@ public class DummyGeneratorAccess implements WorldGenLevel {
+
+ @Override
+ public <T> void getEntitiesByClass(Class<? extends T> clazz, Entity except, AABB box, List<? super T> into, Predicate<? super T> predicate) {}
++
++ @Override
++ 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
+ }