aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0874-Add-missing-important-BlockStateListPopulator-method.patch
blob: 2296cce8647637ce28fba4ef3ebdfaee55b14374 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
From 0000000000000000000000000000000000000000 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.

diff --git a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
index 8e6a71c1e8b53faa70b893c76f5bd25f96a5e142..19abf7b6000a875be8c7141cfba81b279b2cae60 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
@@ -129,4 +129,32 @@ public class BlockStateListPopulator extends DummyGeneratorAccess {
     public DimensionType dimensionType() {
         return this.world.dimensionType();
     }
+    // Paper start
+    @Override
+    public boolean isFluidAtPosition(BlockPos pos, Predicate<FluidState> state) {
+        return state.test(this.getFluidState(pos));
+    }
+
+    @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();
+    }
+    // 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 fbd82b6be6604bf854e01ed5718e4e072f42b265..cd0dc080fbd8c5b1509d67e2b60264393b2b7dbb 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
@@ -269,5 +269,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
 }