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 50ab17e23..17c6bd66c 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 @@ -151,6 +151,9 @@ public class GeyserSession implements CommandSender { @Getter(AccessLevel.NONE) private CompletableFuture inventoryFuture; + @Setter + private ScheduledFuture craftingGridFuture; + /** * Stores session collision */ diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaSetSlotTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaSetSlotTranslator.java index ea2c9d555..c5bf6dd25 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaSetSlotTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaSetSlotTranslator.java @@ -52,6 +52,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Objects; import java.util.UUID; +import java.util.concurrent.TimeUnit; @Translator(packet = ServerSetSlotPacket.class) public class JavaSetSlotTranslator extends PacketTranslator { @@ -73,7 +74,10 @@ public class JavaSetSlotTranslator extends PacketTranslator InventoryTranslator translator = session.getInventoryTranslator(); if (translator != null) { - updateCraftingGrid(session, packet, inventory, translator); + if (session.getCraftingGridFuture() != null) { + session.getCraftingGridFuture().cancel(false); + } + session.setCraftingGridFuture(session.getConnector().getGeneralThreadPool().schedule(() -> session.addInventoryTask(() -> updateCraftingGrid(session, packet, inventory, translator)), 150, TimeUnit.MILLISECONDS)); GeyserItemStack newItem = GeyserItemStack.from(packet.getItem()); inventory.setItem(packet.getSlot(), newItem, session); @@ -208,7 +212,6 @@ public class JavaSetSlotTranslator extends PacketTranslator } ShapedRecipeData data = new ShapedRecipeData(width, height, "", javaIngredients, packet.getItem()); - session.getConnector().getLogger().error(data.toString()); // Cache this recipe so we know the client has received it session.getCraftingRecipes().put(newRecipeId, new Recipe(RecipeType.CRAFTING_SHAPED, uuid.toString(), data));