From 22cd07924ec571814932c3087b7a702f0ab365ef Mon Sep 17 00:00:00 2001 From: RecursivePineapple Date: Sat, 10 Jan 2026 17:33:48 -0500 Subject: [PATCH 1/2] Allow clusters to store more than 16k items --- .../avaritia/items/ItemMatterCluster.java | 30 ++++++++++++++----- .../avaritia/items/tools/ToolHelper.java | 9 +++++- .../resources/assets/avaritia/lang/en_US.lang | 2 ++ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java b/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java index ac280fbc..e2904c53 100644 --- a/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java +++ b/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java @@ -70,7 +70,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List to tooltip.add( clustertag.getInteger(MAINCOUNTTAG) + "/" - + MAX_CAPACITY + + Math.max(MAX_CAPACITY, clustertag.getInteger(MAINCOUNTTAG)) + " " + StatCollector.translateToLocal("tooltip.matter_cluster.counter")); tooltip.add(""); @@ -93,6 +93,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List to } } else { tooltip.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("tooltip.matter_cluster.desc")); + tooltip.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("tooltip.matter_cluster.desc3")); tooltip.add( EnumChatFormatting.DARK_GRAY.toString() + EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.matter_cluster.desc2")); @@ -126,7 +127,7 @@ public static List makeClusters(List input) { itemlist.remove(0); } - if (currentTotal == MAX_CAPACITY) { + if (currentTotal >= MAX_CAPACITY) { ItemStack cluster = makeCluster(currentItems); clusters.add(cluster); @@ -155,6 +156,18 @@ public static ItemStack makeCluster(Map input) { return cluster; } + public static ItemStack makeCluster(ItemStack input) { + HashMap map = new HashMap<>(); + + ItemStack input2 = input.copy(); + input2.stackSize = 1; + map.put(new ItemStackWrapper(input2), input.stackSize); + + ItemStack cluster = new ItemStack(LudicrousItems.matter_cluster); + setClusterData(cluster, map, input.stackSize); + return cluster; + } + public static Map getClusterData(ItemStack cluster) { if (!cluster.hasTagCompound() || !cluster.getTagCompound().hasKey(MAINTAG)) { return new HashMap<>(); @@ -186,7 +199,7 @@ public static int getClusterSize(ItemStack cluster) { } public static boolean isClusterFull(ItemStack cluster) { - return getClusterSize(cluster) == MAX_CAPACITY; + return getClusterSize(cluster) >= MAX_CAPACITY; } public static void setClusterData(ItemStack stack, Map data, int count) { @@ -212,7 +225,7 @@ public static void mergeClusters(ItemStack donor, ItemStack recipient) { int donorcount = getClusterSize(donor); int recipientcount = getClusterSize(recipient); - if (donorcount == 0 || donorcount == MAX_CAPACITY || recipientcount == MAX_CAPACITY) { + if (donorcount == 0 || donorcount >= MAX_CAPACITY || recipientcount >= MAX_CAPACITY) { return; } @@ -275,7 +288,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla @Override public IIcon getMaskTexture(ItemStack stack, EntityPlayer player) { int count = getClusterSize(stack); - if (count == MAX_CAPACITY) { + if (count >= MAX_CAPACITY) { return cosmicIconFull; } return cosmicIcon; @@ -284,13 +297,13 @@ public IIcon getMaskTexture(ItemStack stack, EntityPlayer player) { @Override public float getMaskMultiplier(ItemStack stack, EntityPlayer player) { int count = getClusterSize(stack); - return count / (float) MAX_CAPACITY; + return Math.min(1f, count / (float) MAX_CAPACITY); } @Override public IIcon getIcon(ItemStack stack, int pass) { int count = getClusterSize(stack); - if (count == MAX_CAPACITY) { + if (count >= MAX_CAPACITY) { return iconFull; } return super.getIcon(stack, pass); @@ -307,6 +320,9 @@ public String getUnlocalizedName(ItemStack stack) { if (count == MAX_CAPACITY) { return super.getUnlocalizedName(stack) + ".full"; } + if (count > MAX_CAPACITY) { + return super.getUnlocalizedName(stack) + ".veryfull"; + } return super.getUnlocalizedName(stack); } } diff --git a/src/main/java/fox/spiteful/avaritia/items/tools/ToolHelper.java b/src/main/java/fox/spiteful/avaritia/items/tools/ToolHelper.java index 4b2391d5..ac4e44a3 100644 --- a/src/main/java/fox/spiteful/avaritia/items/tools/ToolHelper.java +++ b/src/main/java/fox/spiteful/avaritia/items/tools/ToolHelper.java @@ -130,7 +130,14 @@ public static void removeBlockWithDrops(EntityPlayer player, ItemStack stack, Wo ItemStack drop = blk .getPickBlock(raytraceFromEntity(world, player, true, 10), world, x, y, z, player); if (drop == null) drop = new ItemStack(blk, 1, meta); - dropItem(drop, world, x, y, z); + + List drops = hammerdrops.get(player); + + if (drops != null) { + drops.add(drop); + } else { + dropItem(drop, world, x, y, z); + } } blk.harvestBlock(world, player, x, y, z, localMeta); } diff --git a/src/main/resources/assets/avaritia/lang/en_US.lang b/src/main/resources/assets/avaritia/lang/en_US.lang index 8b17c8c6..701a6e09 100644 --- a/src/main/resources/assets/avaritia/lang/en_US.lang +++ b/src/main/resources/assets/avaritia/lang/en_US.lang @@ -43,6 +43,7 @@ item.avaritia_fracturedore.name=Unknown Fractured Ore item.avaritia_fracturedore.prefix=Fractured item.avaritia_mattercluster.name=Matter Cluster item.avaritia_mattercluster.full.name=Critical Matter Cluster +item.avaritia_mattercluster.veryfull.name=Super-Critical Matter Cluster item.morvinabox.name=Morv-In-A-Box (WIP)(WILL LIGHT YOU ON FIRE) item.avaritia.comb.nerfed.name=Nerfed Comb item.avaritia.comb.cosmic.name=Cosmic Comb @@ -83,6 +84,7 @@ tooltip.starfuel.desc=The light of the cosmos in a convenient chunk of earth tooltip.skullfire_sword.desc=Beheads skeletons and scorches them black. tooltip.matter_cluster.desc=Right click to deconstruct. tooltip.matter_cluster.desc2=Hold SHIFT for contents. +tooltip.matter_cluster.desc3=Use a Matter Cluster Decompressor for large clusters. tooltip.matter_cluster.counter=items tooltip.morvinabox.desc=Instant housing tooltip.morvinabox.subdesc=In Canada, Morvy comes in bags. From 44939f9f513e664319cb3779ae1b5123dbecbf92 Mon Sep 17 00:00:00 2001 From: RecursivePineapple Date: Sat, 10 Jan 2026 17:47:02 -0500 Subject: [PATCH 2/2] Disable cluster opening for super-critical clusters --- .../java/fox/spiteful/avaritia/items/ItemMatterCluster.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java b/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java index e2904c53..2d95e3d7 100644 --- a/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java +++ b/src/main/java/fox/spiteful/avaritia/items/ItemMatterCluster.java @@ -268,6 +268,9 @@ public static void mergeClusters(ItemStack donor, ItemStack recipient) { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + // Do nothing for super critical clusters + if (getClusterSize(stack) > MAX_CAPACITY) return stack; + if (!world.isRemote) { List drops = ToolHelper.collateMatterClusterContents(ItemMatterCluster.getClusterData(stack));