aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0834-Send-block-entities-after-destroy-prediction.patch
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2023-09-22 16:26:10 -0700
committerJake Potrebic <[email protected]>2023-09-22 16:26:10 -0700
commit81c5901c674e6ee89dbfed4848c9eb645bfb0f16 (patch)
treef6c716a6060d6d6a4757ed83ddd600fb40276cdb /patches/server/0834-Send-block-entities-after-destroy-prediction.patch
parent47aeab84ad94196bc24530ff8ad02342fc16f336 (diff)
downloadPaper-81c5901c674e6ee89dbfed4848c9eb645bfb0f16.tar.gz
Paper-81c5901c674e6ee89dbfed4848c9eb645bfb0f16.zip
re-add distance map patch
Diffstat (limited to 'patches/server/0834-Send-block-entities-after-destroy-prediction.patch')
-rw-r--r--patches/server/0834-Send-block-entities-after-destroy-prediction.patch91
1 files changed, 0 insertions, 91 deletions
diff --git a/patches/server/0834-Send-block-entities-after-destroy-prediction.patch b/patches/server/0834-Send-block-entities-after-destroy-prediction.patch
deleted file mode 100644
index 2955282332..0000000000
--- a/patches/server/0834-Send-block-entities-after-destroy-prediction.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Owen1212055 <[email protected]>
-Date: Sat, 25 Jun 2022 19:45:20 -0400
-Subject: [PATCH] Send block entities after destroy prediction
-
-Minecraft's prediction system does not handle block entities, so if we are manually sending block entities during
-block breaking we need to set it after the prediction is finished. This fixes block entities not showing when cancelling the BlockBreakEvent.
-
-diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-index f968dee743f58fe71935097701866800c0f382a1..73e2948210139e40e234b5e2107f9008f3094964 100644
---- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
-@@ -62,6 +62,8 @@ public class ServerPlayerGameMode {
- private BlockPos delayedDestroyPos;
- private int delayedTickStart;
- private int lastSentState;
-+ public boolean captureSentBlockEntities = false; // Paper
-+ public boolean capturedBlockEntity = false; // Paper
-
- public ServerPlayerGameMode(ServerPlayer player) {
- this.gameModeForPlayer = GameType.DEFAULT_MODE;
-@@ -188,10 +190,7 @@ public class ServerPlayerGameMode {
- this.player.connection.send(new ClientboundBlockUpdatePacket(pos, this.level.getBlockState(pos)));
- this.debugLogging(pos, false, sequence, "may not interact");
- // Update any tile entity data for this block
-- BlockEntity tileentity = this.level.getBlockEntity(pos);
-- if (tileentity != null) {
-- this.player.connection.send(tileentity.getUpdatePacket());
-- }
-+ capturedBlockEntity = true; // Paper - send block entity after predicting
- // CraftBukkit end
- return;
- }
-@@ -207,10 +206,7 @@ public class ServerPlayerGameMode {
- // Paper end
- this.player.connection.send(new ClientboundBlockUpdatePacket(this.level, pos));
- // Update any tile entity data for this block
-- BlockEntity tileentity = this.level.getBlockEntity(pos);
-- if (tileentity != null) {
-- this.player.connection.send(tileentity.getUpdatePacket());
-- }
-+ capturedBlockEntity = true; // Paper - send block entity after predicting
- return;
- }
- // CraftBukkit end
-@@ -392,10 +388,12 @@ public class ServerPlayerGameMode {
- }
-
- // Update any tile entity data for this block
-+ if (!captureSentBlockEntities) { // Paper - Toggle this location for capturing as this is used for api
- BlockEntity tileentity = this.level.getBlockEntity(pos);
- if (tileentity != null) {
- this.player.connection.send(tileentity.getUpdatePacket());
- }
-+ } else {capturedBlockEntity = true;} // Paper end
- return false;
- }
- }
-diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index c28a45b2093b805812258047d06e8064c267fb7b..ff65e2cc10a3197f09086ed5c4baa44305af158e 100644
---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -1751,8 +1751,28 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
- return;
- }
- // Paper end - Don't allow digging in unloaded chunks
-+ // Paper start - send block entities after prediction
-+ this.player.gameMode.capturedBlockEntity = false;
-+ this.player.gameMode.captureSentBlockEntities = true;
-+ // Paper end - send block entities after prediction
- this.player.gameMode.handleBlockBreakAction(blockposition, packetplayinblockdig_enumplayerdigtype, packet.getDirection(), this.player.level().getMaxBuildHeight(), packet.getSequence());
- this.player.connection.ackBlockChangesUpTo(packet.getSequence());
-+ // Paper start - send block entities after prediction
-+ this.player.gameMode.captureSentBlockEntities = false;
-+ // If a block entity was modified speedup the block change ack to avoid the block entity
-+ // being overriden.
-+ if (this.player.gameMode.capturedBlockEntity) {
-+ // manually tick
-+ this.send(new ClientboundBlockChangedAckPacket(this.ackBlockChangesUpTo));
-+ this.player.connection.ackBlockChangesUpTo = -1;
-+
-+ this.player.gameMode.capturedBlockEntity = false;
-+ BlockEntity tileentity = this.player.level().getBlockEntity(blockposition);
-+ if (tileentity != null) {
-+ this.player.connection.send(tileentity.getUpdatePacket());
-+ }
-+ }
-+ // Paper end - send block entities after prediction
- return;
- default:
- throw new IllegalArgumentException("Invalid player action");