From 2e1cc6a6a57b57908d5ab0f787134b8c566c7295 Mon Sep 17 00:00:00 2001 From: Amanda Cameron Date: Wed, 16 Sep 2026 10:33:47 -0400 Subject: [PATCH] integration/create: Return ItemStacks instead of a custom Map --- .../create/CreateLogisticsEnvironments.java | 14 +++---- .../create/CreateLuaConversion.java | 42 +++++++------------ .../create/CreatePackageValue.java | 14 +++---- 3 files changed, 30 insertions(+), 40 deletions(-) diff --git a/src/main/java/li/cil/oc/integration/create/CreateLogisticsEnvironments.java b/src/main/java/li/cil/oc/integration/create/CreateLogisticsEnvironments.java index d9206a02f9..c7e076978c 100644 --- a/src/main/java/li/cil/oc/integration/create/CreateLogisticsEnvironments.java +++ b/src/main/java/li/cil/oc/integration/create/CreateLogisticsEnvironments.java @@ -58,15 +58,15 @@ public Object[] setCraftingRequest(final Context context, final Arguments args) @Callback public Object[] getRequest(final Context context, final Arguments args) { - final Map> result = new LinkedHashMap<>(); + final Map result = new LinkedHashMap<>(); int index = 1; for (final BigItemStack stack : blockEntity.encodedRequest.stacks()) { if (stack.stack.isEmpty()) { index++; continue; } - final Map details = CreateLuaConversion.itemDetails(stack.stack); - details.put("count", stack.count); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); result.put(index++, details); } return result(result); @@ -198,7 +198,7 @@ public Object[] setAddress(final Context context, final Arguments args) { @Callback public Object[] getPriceTagItem(final Context context, final Arguments args) { assertShop(); - return result(CreateLuaConversion.itemDetails(blockEntity.priceTag.getFilter())); + return result(blockEntity.priceTag.getFilter()); } @Callback @@ -227,11 +227,11 @@ public Object[] setPriceTagCount(final Context context, final Arguments args) { @Callback public Object[] getWares(final Context context, final Arguments args) { assertShop(); - final Map> result = new LinkedHashMap<>(); + final Map result = new LinkedHashMap<>(); int index = 1; for (final BigItemStack stack : blockEntity.requestData.encodedRequest().stacks()) { - final Map details = CreateLuaConversion.itemDetails(stack.stack); - details.put("count", stack.count); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); result.put(index++, details); } return result(result); diff --git a/src/main/java/li/cil/oc/integration/create/CreateLuaConversion.java b/src/main/java/li/cil/oc/integration/create/CreateLuaConversion.java index 698717c33a..7519693d65 100644 --- a/src/main/java/li/cil/oc/integration/create/CreateLuaConversion.java +++ b/src/main/java/li/cil/oc/integration/create/CreateLuaConversion.java @@ -17,59 +17,49 @@ final class CreateLuaConversion { private CreateLuaConversion() { } - static Map> list(final IItemHandler inventory) { - final Map> result = new LinkedHashMap<>(); + static Map list(final IItemHandler inventory) { + final Map result = new LinkedHashMap<>(); for (int slot = 0; slot < inventory.getSlots(); slot++) { final ItemStack stack = inventory.getStackInSlot(slot); if (!stack.isEmpty()) - result.put(slot + 1, itemDetails(stack)); + result.put(slot + 1, stack); } return result; } - static Map> list(final InventorySummary inventory) { - final Map> result = new LinkedHashMap<>(); + static Map list(final InventorySummary inventory) { + final Map result = new LinkedHashMap<>(); int slot = 1; for (final BigItemStack stack : inventory.getStacks()) { - final Map details = itemDetails(stack.stack); - details.put("count", stack.count); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); result.put(slot++, details); } return result; } - static Map getItemDetail(final IItemHandler inventory, final int slot) { + static ItemStack getItemDetail(final IItemHandler inventory, final int slot) { if (slot < 1 || slot > inventory.getSlots()) throw new IllegalArgumentException("Slot " + slot + " out of range, available slots between 1 and " + inventory.getSlots()); final ItemStack stack = inventory.getStackInSlot(slot - 1); - return stack.isEmpty() ? null : itemDetails(stack); + return stack.isEmpty() ? null : stack; } - static Map getItemDetail(final InventorySummary inventory, final int slot) { + static ItemStack getItemDetail(final InventorySummary inventory, final int slot) { final List stacks = inventory.getStacks(); if (slot < 1 || slot > stacks.size()) throw new IllegalArgumentException("Slot " + slot + " out of range, available slots between 1 and " + stacks.size()); final BigItemStack stack = stacks.get(slot - 1); - final Map details = itemDetails(stack.stack); - details.put("count", stack.count); - return details; - } - - static Map itemDetails(final ItemStack stack) { - final Map details = new LinkedHashMap<>(); - details.put("name", BuiltInRegistries.ITEM.getKey(stack.getItem()).toString()); - details.put("count", stack.getCount()); - details.put("displayName", stack.getHoverName().getString()); - details.put("damage", stack.getDamageValue()); - details.put("maxDamage", stack.getMaxDamage()); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); return details; } static int matchingCount(final BigItemStack entry, final Map filter) { - final Map details = itemDetails(entry.stack); - details.put("count", entry.count); - if (filter.get("name") instanceof String name && !name.contains(":")) - details.put("name", "minecraft:" + name); + final ItemStack details = entry.stack.copy(); + details.setCount(entry.count); + //if (filter.get("name") instanceof String name && !name.contains(":")) + // details.put("name", "minecraft:" + name); return deepMatches(filter, details) ? entry.count : 0; } diff --git a/src/main/java/li/cil/oc/integration/create/CreatePackageValue.java b/src/main/java/li/cil/oc/integration/create/CreatePackageValue.java index 5538aa98f6..303392b2c7 100644 --- a/src/main/java/li/cil/oc/integration/create/CreatePackageValue.java +++ b/src/main/java/li/cil/oc/integration/create/CreatePackageValue.java @@ -118,25 +118,25 @@ public Object[] invoke(final String method, final Context context, final Argumen }; } - private static Map> list(final PackageOrderWithCrafts order) { - final Map> result = new LinkedHashMap<>(); + private static Map list(final PackageOrderWithCrafts order) { + final Map result = new LinkedHashMap<>(); int index = 1; for (final BigItemStack stack : order.stacks()) { - final Map details = CreateLuaConversion.itemDetails(stack.stack); - details.put("count", stack.count); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); result.put(index++, details); } return result; } - private static Map detail(final PackageOrderWithCrafts order, final int slot) { + private static ItemStack detail(final PackageOrderWithCrafts order, final int slot) { if (slot < 1) throw new IllegalArgumentException("Slot out of range (1 or greater)"); if (slot > order.stacks().size()) return null; final BigItemStack stack = order.stacks().get(slot - 1); - final Map details = CreateLuaConversion.itemDetails(stack.stack); - details.put("count", stack.count); + final ItemStack details = stack.stack.copy(); + details.setCount(stack.count); return details; }