89d51d5f29
Because this exploit has been widely known for years and has not been fixed by Mojang, we decided that it was worth allowing people to toggle it on/off due to how easy it is to make it configurable. It should be noted that this decision does not promise all future exploits will be configurable.
74 Zeilen
3.4 KiB
Diff
74 Zeilen
3.4 KiB
Diff
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 ffe6881d93153838cd23f125980b832e6fd1d0eb..f5cbe9ae5802fa48e57092b1e5ca8a5f5f69ee60 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/BlockStateListPopulator.java
|
|
@@ -129,7 +129,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
|
|
@@ -152,4 +152,33 @@ public class BlockStateListPopulator extends DummyGeneratorAccess {
|
|
public long nextSubTickCount() {
|
|
return this.world.nextSubTickCount();
|
|
}
|
|
+
|
|
+ // 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 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 440660dfa70d57e94ae4eef1dce783aee5034f7e..67c9009b735429e887e706baf50a6023d572a46c 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/DummyGeneratorAccess.java
|
|
+++ b/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
|
|
}
|