Add missing important BlockStateListPopulator methods

Without these methods it causes exceptions due to these being used by certain feature generators.
This commit is contained in:
Owen1212055 2022-06-12 13:25:52 -04:00
parent f2dcecf4d9
commit 24d356944c
2 changed files with 40 additions and 1 deletions

View file

@ -130,7 +130,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
@ -159,4 +159,33 @@ public class BlockStateListPopulator extends DummyGeneratorAccess {
public RandomSource getRandom() {
return this.world.getRandom();
}
// 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
}

View file

@ -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
}