Add delay when reopening inventory

This commit is contained in:
AJ Ferguson 2019-10-20 13:52:21 -08:00
parent 3812712a06
commit 8ae803b9a5

View file

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