Initial 1.18 update
This commit is contained in:
@@ -10,22 +10,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
|
||||
@@ -0,0 +0,0 @@ public class FallingBlockEntity extends Entity {
|
||||
|
||||
if (this.time++ == 0) {
|
||||
blockposition = this.blockPosition();
|
||||
- if (this.level.getBlockState(blockposition).is(block) && !CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, Blocks.AIR.defaultBlockState()).isCancelled()) {
|
||||
- this.level.removeBlock(blockposition, false);
|
||||
+ // Paper start - fix cancelling block falling causing client desync
|
||||
+ if (this.level.getBlockState(blockposition).is(block)) {
|
||||
+ if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, Blocks.AIR.defaultBlockState()).isCancelled()) {
|
||||
+ if (this.level.getBlockState(blockposition).is(block)) { //if listener didn't update the block
|
||||
+ ((ServerLevel) level).getChunkSource().blockChanged(blockposition);
|
||||
+ }
|
||||
+ this.discard();
|
||||
+ return;
|
||||
+ } else {
|
||||
+ this.level.removeBlock(blockposition, false);
|
||||
+ }
|
||||
+ // Paper end - fix cancelling block falling causing client desync
|
||||
} else if (!this.level.isClientSide) {
|
||||
this.discard();
|
||||
return;
|
||||
// CraftBukkit start
|
||||
if (CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, this.blockState).isCancelled()) {
|
||||
- this.discard(); // SPIGOT-6586 called before the event in previous versions
|
||||
+ this.discard(); // SPIGOT-6586 called before the event in previous versions //TODO test if desync happens on cancel
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
Reference in New Issue
Block a user