From 1ec768d95d313525e03af4b500927c29a2eb5762 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+DoctorMacc@users.noreply.github.com>
Date: Thu, 24 Sep 2020 12:54:18 -0400
Subject: [PATCH] Fix interaction spam bug (#1324)
* Fix interaction spam bug
This references the Nukkit 1.0 fix for the client bug of spamming to interact. Holding down still works.
* Remove interaction position set at action type 1
* Remove debug line
---
.../connector/network/session/GeyserSession.java | 14 +++++++++++++-
.../BedrockInventoryTransactionTranslator.java | 14 +++++++++++---
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
index 81b92282..0a28b11f 100644
--- a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
+++ b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
@@ -156,8 +156,13 @@ public class GeyserSession implements CommandSender {
@Setter
private boolean interacting;
+ /**
+ * Stores the last position of the block the player interacted with. This can either be a block that the client
+ * placed or an existing block the player interacted with (for example, a chest).
+ * Initialized as (0, 0, 0) so it is always not-null.
+ */
@Setter
- private Vector3i lastInteractionPosition;
+ private Vector3i lastInteractionPosition = Vector3i.ZERO;
private boolean manyDimPackets = false;
private ServerRespawnPacket lastDimPacket = null;
@@ -193,6 +198,13 @@ public class GeyserSession implements CommandSender {
@Setter
private long lastHitTime;
+ /**
+ * Store the last time the player interacted. Used to fix a right-click spam bug.
+ * See https://github.com/GeyserMC/Geyser/issues/503 for context.
+ */
+ @Setter
+ private long lastInteractionTime;
+
private boolean reducedDebugInfo = false;
@Setter
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java
index 95e66957..131fdcc9 100644
--- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java
@@ -78,6 +78,17 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator