1.21.5
Co-authored-by: Bjarne Koll <git@lynxplay.dev> Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com> Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Co-authored-by: MiniDigger | Martin <admin@minidigger.dev> Co-authored-by: Nassim Jahnke <nassim@njahnke.dev> Co-authored-by: Noah van der Aa <ndvdaa@gmail.com> Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Co-authored-by: Shane Freeder <theboyetronic@gmail.com> Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com> Co-authored-by: Tamion <70228790+notTamion@users.noreply.github.com> Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
This commit is contained in:
@@ -46,7 +46,7 @@
|
||||
FluidState fluidState = blockState.getFluidState();
|
||||
if (fluidState.getType().isSame(this) && canPassThroughWall(direction, level, pos, state, blockPos, blockState)) {
|
||||
if (fluidState.isSource()) {
|
||||
@@ -252,13 +_,14 @@
|
||||
@@ -252,13 +_,15 @@
|
||||
liquidBlockContainer.placeLiquid(level, pos, blockState, fluidState);
|
||||
} else {
|
||||
if (!blockState.isAir()) {
|
||||
@@ -59,6 +59,7 @@
|
||||
}
|
||||
|
||||
+ protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state, BlockPos source) { beforeDestroyingBlock(level, pos, state); } // Paper - Add BlockBreakBlockEvent
|
||||
+
|
||||
protected abstract void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state);
|
||||
|
||||
protected int getSlopeDistance(LevelReader level, BlockPos pos, int depth, Direction direction, BlockState state, FlowingFluid.SpreadContext spreadContext) {
|
||||
@@ -94,7 +95,7 @@
|
||||
+ blockState = ((org.bukkit.craftbukkit.block.data.CraftBlockData) event.getNewData()).getState();
|
||||
+ // CraftBukkit end
|
||||
level.setBlock(pos, blockState, 3);
|
||||
} else if (!newLiquid.equals(fluidState)) {
|
||||
} else if (newLiquid != fluidState) {
|
||||
fluidState = newLiquid;
|
||||
blockState = newLiquid.createLegacyBlock();
|
||||
+ // CraftBukkit start
|
||||
@@ -107,7 +108,7 @@
|
||||
level.setBlock(pos, blockState, 3);
|
||||
level.scheduleTick(pos, newLiquid.getType(), spreadDelay);
|
||||
}
|
||||
@@ -476,9 +_,26 @@
|
||||
@@ -476,9 +_,27 @@
|
||||
public BlockState getBlockState(BlockPos pos) {
|
||||
return this.getBlockState(pos, this.getCacheKey(pos));
|
||||
}
|
||||
@@ -122,6 +123,7 @@
|
||||
+ // Paper start - Prevent chunk loading from fluid flowing
|
||||
+ return getBlockState(pos, cacheKey, true);
|
||||
+ }
|
||||
+
|
||||
+ private @javax.annotation.Nullable BlockState getBlockState(BlockPos pos, short packed, boolean load) {
|
||||
+ BlockState blockState = this.stateCache.get(packed);
|
||||
+ if (blockState == null) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/world/level/material/FluidState.java
|
||||
+++ b/net/minecraft/world/level/material/FluidState.java
|
||||
@@ -26,9 +_,11 @@
|
||||
@@ -29,9 +_,11 @@
|
||||
public static final Codec<FluidState> CODEC = codec(BuiltInRegistries.FLUID.byNameCodec(), Fluid::defaultFluidState).stable();
|
||||
public static final int AMOUNT_MAX = 9;
|
||||
public static final int AMOUNT_FULL = 8;
|
||||
@@ -12,7 +12,7 @@
|
||||
}
|
||||
|
||||
public Fluid getType() {
|
||||
@@ -44,7 +_,7 @@
|
||||
@@ -47,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
|
||||
@@ -1,35 +1,46 @@
|
||||
--- a/net/minecraft/world/level/material/LavaFluid.java
|
||||
+++ b/net/minecraft/world/level/material/LavaFluid.java
|
||||
@@ -88,6 +_,13 @@
|
||||
BlockState blockState = level.getBlockState(blockPos);
|
||||
if (blockState.isAir()) {
|
||||
if (this.hasFlammableNeighbours(level, blockPos)) {
|
||||
@@ -92,6 +_,13 @@
|
||||
BlockState blockState = level.getBlockState(blockPos);
|
||||
if (blockState.isAir()) {
|
||||
if (this.hasFlammableNeighbours(level, blockPos)) {
|
||||
+ // CraftBukkit start - Prevent lava putting something on fire
|
||||
+ if (!level.getBlockState(blockPos).is(Blocks.FIRE)) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockIgniteEvent(level, blockPos, pos).isCancelled()) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
level.setBlockAndUpdate(blockPos, BaseFireBlock.getState(level, blockPos));
|
||||
return;
|
||||
}
|
||||
@@ -107,6 +_,14 @@
|
||||
}
|
||||
|
||||
if (level.isEmptyBlock(blockPos1.above()) && this.isFlammable(level, blockPos1)) {
|
||||
+ // CraftBukkit start - Prevent lava putting something on fire
|
||||
+ if (level.getBlockState(blockPos).getBlock() != Blocks.FIRE) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockIgniteEvent(level, blockPos, pos).isCancelled()) {
|
||||
+ BlockPos up = blockPos1.above();
|
||||
+ if (!level.getBlockState(up).is(Blocks.FIRE)) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockIgniteEvent(level, up, pos).isCancelled()) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
level.setBlockAndUpdate(blockPos, BaseFireBlock.getState(level, blockPos));
|
||||
return;
|
||||
+ // CraftBukkit end - Prevent lava putting something on fire
|
||||
level.setBlockAndUpdate(blockPos1.above(), BaseFireBlock.getState(level, blockPos1));
|
||||
}
|
||||
@@ -103,6 +_,14 @@
|
||||
}
|
||||
@@ -117,8 +_,9 @@
|
||||
|
||||
if (level.isEmptyBlock(blockPos1.above()) && this.isFlammable(level, blockPos1)) {
|
||||
+ // CraftBukkit start - Prevent lava putting something on fire
|
||||
+ BlockPos up = blockPos1.above();
|
||||
+ if (level.getBlockState(up).getBlock() != Blocks.FIRE) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callBlockIgniteEvent(level, up, pos).isCancelled()) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
level.setBlockAndUpdate(blockPos1.above(), BaseFireBlock.getState(level, blockPos1));
|
||||
}
|
||||
}
|
||||
@@ -195,7 +_,11 @@
|
||||
@Override
|
||||
protected void entityInside(Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) {
|
||||
+ BlockPos savedPos = pos.immutable(); // Paper - track lava contact
|
||||
effectApplier.apply(InsideBlockEffectType.LAVA_IGNITE);
|
||||
- effectApplier.runAfter(InsideBlockEffectType.LAVA_IGNITE, Entity::lavaHurt);
|
||||
+ effectApplier.runAfter(InsideBlockEffectType.LAVA_IGNITE, ignitedEntity -> ignitedEntity.lavaHurt(savedPos)); // Paper - track lava contact
|
||||
}
|
||||
|
||||
private boolean hasFlammableNeighbours(LevelReader level, BlockPos pos) {
|
||||
@@ -206,7 +_,11 @@
|
||||
FluidState fluidState1 = level.getFluidState(pos);
|
||||
if (this.is(FluidTags.LAVA) && fluidState1.is(FluidTags.WATER)) {
|
||||
if (blockState.getBlock() instanceof LiquidBlock) {
|
||||
@@ -42,7 +53,7 @@
|
||||
}
|
||||
|
||||
this.fizz(level, pos);
|
||||
@@ -213,7 +_,7 @@
|
||||
@@ -224,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
protected float getExplosionResistance() {
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
--- a/net/minecraft/world/level/material/WaterFluid.java
|
||||
+++ b/net/minecraft/world/level/material/WaterFluid.java
|
||||
@@ -74,7 +_,13 @@
|
||||
protected boolean canConvertToSource(ServerLevel level) {
|
||||
@@ -78,6 +_,14 @@
|
||||
return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION);
|
||||
}
|
||||
-
|
||||
|
||||
+ // Paper start - Add BlockBreakBlockEvent
|
||||
+ @Override
|
||||
+ protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state, BlockPos source) {
|
||||
+ BlockEntity tileentity = state.hasBlockEntity() ? level.getBlockEntity(pos) : null;
|
||||
+ Block.dropResources(state, level, pos, tileentity, source);
|
||||
+ BlockEntity blockEntity = state.hasBlockEntity() ? level.getBlockEntity(pos) : null;
|
||||
+ Block.dropResources(state, level, pos, blockEntity, source);
|
||||
+ }
|
||||
+ // Paper end - Add BlockBreakBlockEvent
|
||||
+
|
||||
@Override
|
||||
protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state) {
|
||||
BlockEntity blockEntity = state.hasBlockEntity() ? level.getBlockEntity(pos) : null;
|
||||
@@ -113,7 +_,7 @@
|
||||
@@ -121,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
protected float getExplosionResistance() {
|
||||
|
||||
Reference in New Issue
Block a user