mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-12 12:16:41 +01:00
1.13: Resend bed on cancelled interaction (#1245)
Minecraft 1.13 requires resending the block for both parts of the bed
This commit is contained in:
parent
1fe8472503
commit
ff4ae7b05e
@ -1,4 +1,4 @@
|
|||||||
From 8ee7700cdaccb5163a9398141a29fc19c30e0eea Mon Sep 17 00:00:00 2001
|
From 0fb78f02246374d62846d855b0a0774ea91877cb Mon Sep 17 00:00:00 2001
|
||||||
From: Shane Freeder <theboyetronic@gmail.com>
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||||||
Date: Sun, 11 Feb 2018 10:43:46 +0000
|
Date: Sun, 11 Feb 2018 10:43:46 +0000
|
||||||
Subject: [PATCH] Extend Player Interact cancellation
|
Subject: [PATCH] Extend Player Interact cancellation
|
||||||
@ -13,7 +13,7 @@ Update adjacent blocks of doors, double plants, pistons and beds
|
|||||||
when cancelling interaction.
|
when cancelling interaction.
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
||||||
index e34198e40..620efb1ac 100644
|
index e34198e4..e375e255 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
||||||
@@ -110,6 +110,7 @@ public class PlayerInteractManager {
|
@@ -110,6 +110,7 @@ public class PlayerInteractManager {
|
||||||
@ -24,7 +24,7 @@ index e34198e40..620efb1ac 100644
|
|||||||
// Update any tile entity data for this block
|
// Update any tile entity data for this block
|
||||||
TileEntity tileentity = this.world.getTileEntity(blockposition);
|
TileEntity tileentity = this.world.getTileEntity(blockposition);
|
||||||
if (tileentity != null) {
|
if (tileentity != null) {
|
||||||
@@ -249,6 +250,34 @@ public class PlayerInteractManager {
|
@@ -249,6 +250,33 @@ public class PlayerInteractManager {
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,24 +42,23 @@ index e34198e40..620efb1ac 100644
|
|||||||
+ BlockPosition piston = position.shift(data.get(BlockPistonExtension.FACING).opposite());
|
+ BlockPosition piston = position.shift(data.get(BlockPistonExtension.FACING).opposite());
|
||||||
+ this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, piston));
|
+ this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, piston));
|
||||||
+ } else if (block instanceof BlockBed) {
|
+ } else if (block instanceof BlockBed) {
|
||||||
+ if (data.get(BlockBed.PART) == BlockPropertyBedPart.FOOT) {
|
+ // Restore other half of bed
|
||||||
+ // Restore head of bed
|
+ boolean foot = data.get(BlockBed.PART) == BlockPropertyBedPart.FOOT;
|
||||||
+ BlockPosition head = position.shift(data.get(BlockBed.FACING));
|
+ BlockPosition otherBlock = position.shift(foot ? data.get(BlockBed.FACING) : data.get(BlockBed.FACING).opposite());
|
||||||
+ this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, head));
|
+ this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(world, otherBlock));
|
||||||
+
|
+
|
||||||
+ TileEntity tileentity = this.world.getTileEntity(head);
|
+ TileEntity tileentity = this.world.getTileEntity(otherBlock);
|
||||||
+ if (tileentity != null) {
|
+ if (tileentity != null) {
|
||||||
+ this.player.playerConnection.sendPacket(tileentity.getUpdatePacket());
|
+ this.player.playerConnection.sendPacket(tileentity.getUpdatePacket());
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
+
|
+
|
||||||
public boolean breakBlock(BlockPosition blockposition) {
|
public boolean breakBlock(BlockPosition blockposition) {
|
||||||
IBlockData iblockdata = this.world.getType(blockposition);
|
IBlockData iblockdata = this.world.getType(blockposition);
|
||||||
// CraftBukkit start - fire BlockBreakEvent
|
// CraftBukkit start - fire BlockBreakEvent
|
||||||
@@ -297,11 +326,7 @@ public class PlayerInteractManager {
|
@@ -297,11 +325,7 @@ public class PlayerInteractManager {
|
||||||
}
|
}
|
||||||
// Let the client know the block still exists
|
// Let the client know the block still exists
|
||||||
((EntityPlayer) this.player).playerConnection.sendPacket(new PacketPlayOutBlockChange(this.world, blockposition));
|
((EntityPlayer) this.player).playerConnection.sendPacket(new PacketPlayOutBlockChange(this.world, blockposition));
|
||||||
@ -72,7 +71,7 @@ index e34198e40..620efb1ac 100644
|
|||||||
// Update any tile entity data for this block
|
// Update any tile entity data for this block
|
||||||
TileEntity tileentity = this.world.getTileEntity(blockposition);
|
TileEntity tileentity = this.world.getTileEntity(blockposition);
|
||||||
if (tileentity != null) {
|
if (tileentity != null) {
|
||||||
@@ -459,7 +484,25 @@ public class PlayerInteractManager {
|
@@ -459,7 +483,25 @@ public class PlayerInteractManager {
|
||||||
((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutBlockChange(world, bottom ? blockposition.up() : blockposition.down()));
|
((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutBlockChange(world, bottom ? blockposition.up() : blockposition.down()));
|
||||||
} else if (iblockdata.getBlock() instanceof BlockCake) {
|
} else if (iblockdata.getBlock() instanceof BlockCake) {
|
||||||
((EntityPlayer) entityhuman).getBukkitEntity().sendHealthUpdate(); // SPIGOT-1341 - reset health for cake
|
((EntityPlayer) entityhuman).getBukkitEntity().sendHealthUpdate(); // SPIGOT-1341 - reset health for cake
|
||||||
@ -99,5 +98,5 @@ index e34198e40..620efb1ac 100644
|
|||||||
enuminteractionresult = (event.useItemInHand() != Event.Result.ALLOW) ? EnumInteractionResult.SUCCESS : EnumInteractionResult.PASS;
|
enuminteractionresult = (event.useItemInHand() != Event.Result.ALLOW) ? EnumInteractionResult.SUCCESS : EnumInteractionResult.PASS;
|
||||||
} else if (this.gamemode == EnumGamemode.SPECTATOR) {
|
} else if (this.gamemode == EnumGamemode.SPECTATOR) {
|
||||||
--
|
--
|
||||||
2.18.0
|
2.16.1.windows.1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user