Add delay when reopening inventory
@@ -30,6 +30,7 @@ import com.nukkitx.protocol.bedrock.data.ContainerId;
import com.nukkitx.protocol.bedrock.data.ItemData;
import com.nukkitx.protocol.bedrock.packet.ContainerClosePacket;
import com.nukkitx.protocol.bedrock.packet.InventorySlotPacket;
+import org.geysermc.api.Geyser;
import org.geysermc.connector.inventory.Inventory;
import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.network.translators.PacketTranslator;
@@ -37,6 +38,7 @@ import org.geysermc.connector.network.translators.TranslatorsInit;
import org.geysermc.connector.network.translators.inventory.InventoryTranslator;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
public class JavaSetSlotTranslator extends PacketTranslator<ServerSetSlotPacket> {
@@ -53,6 +55,7 @@ public class JavaSetSlotTranslator extends PacketTranslator<ServerSetSlotPacket>
cursorPacket.setSlot(ItemData.AIR);
session.getUpstream().sendPacket(cursorPacket);
+ Geyser.getGeneralThreadPool().schedule(() -> {
Inventory inventory = session.getInventoryCache().getOpenInventory();
if (inventory != null) {
session.setReopeningWindow(inventory.getId());
@@ -62,6 +65,7 @@ public class JavaSetSlotTranslator extends PacketTranslator<ServerSetSlotPacket>
ContainerClosePacket closePacket = new ContainerClosePacket();
closePacket.setWindowId((byte) inventory.getId());
session.getUpstream().sendPacket(closePacket);
+ }, 150, TimeUnit.MILLISECONDS);
}
session.getInventory().setCursor(packet.getItem());
