diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java index a35fdfbcb..0e22fc0be 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java @@ -41,6 +41,7 @@ import com.nukkitx.protocol.bedrock.data.inventory.stackrequestactions.*; import com.nukkitx.protocol.bedrock.packet.ItemStackResponsePacket; import it.unimi.dsi.fastutil.ints.*; import lombok.AllArgsConstructor; +import org.checkerframework.checker.nullness.qual.Nullable; import org.geysermc.geyser.GeyserImpl; import org.geysermc.geyser.inventory.CartographyContainer; import org.geysermc.geyser.inventory.GeyserItemStack; @@ -65,11 +66,8 @@ import java.util.*; public abstract class InventoryTranslator { public static final InventoryTranslator PLAYER_INVENTORY_TRANSLATOR = new PlayerInventoryTranslator(); - public static final Map INVENTORY_TRANSLATORS = new EnumMap<>(ContainerType.class) { + private static final Map INVENTORY_TRANSLATORS = new EnumMap<>(ContainerType.class) { { - /* Player Inventory */ - put(null, PLAYER_INVENTORY_TRANSLATOR); - /* Chest UIs */ put(ContainerType.GENERIC_9X1, new SingleChestInventoryTranslator(9)); put(ContainerType.GENERIC_9X2, new SingleChestInventoryTranslator(18)); @@ -878,6 +876,22 @@ public abstract class InventoryTranslator { return slotInfoData.getContainer() == ContainerSlotType.CURSOR; } + /** + * Gets the {@link InventoryTranslator} for the given {@link ContainerType}. + * Returns {@link #PLAYER_INVENTORY_TRANSLATOR} if type is null. + * + * @param type the type + * @return the InventoryType for the given ContainerType. + */ + @Nullable + public static InventoryTranslator inventoryTranslator(@Nullable ContainerType type) { + if (type == null) { + return PLAYER_INVENTORY_TRANSLATOR; + } + + return INVENTORY_TRANSLATORS.get(type); + } + protected enum CraftState { START, RECIPE_ID, diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java index 69066eb39..dafe1fb2d 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java @@ -45,7 +45,7 @@ public class JavaOpenScreenTranslator extends PacketTranslator