From 3c5b51c50539627df4247e28faf825288146c185 Mon Sep 17 00:00:00 2001 From: cargocats Date: Fri, 23 May 2025 23:14:46 -0400 Subject: [PATCH 01/21] Initial implementation for the Quantity Key item --- .../storagedrawers/block/BlockController.java | 3 ++ .../storagedrawers/block/BlockDrawers.java | 2 ++ .../block/tile/TileEntityController.java | 29 +++++++++++++++---- .../block/tile/TileEntityDrawers.java | 23 +++++++++++++++ .../storagedrawers/config/ConfigManager.java | 3 ++ .../storagedrawers/core/ModItems.java | 14 +++------ .../storage/DefaultStorageProvider.java | 6 ++++ .../storagedrawers/storage/DrawerData.java | 15 ++++++---- .../storage/IStorageProvider.java | 4 +++ .../assets/storagedrawers/lang/en_US.lang | 2 ++ 10 files changed, 81 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockController.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockController.java index bcd155c..4933143 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockController.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockController.java @@ -141,6 +141,9 @@ public class BlockController extends BlockContainer implements INetworked { te.toggleProtection(player.getGameProfile(), provider); } + return true; + } else if (item.getItem() == ModItems.quantifyKey) { + if (!world.isRemote) te.toggleQuantify(player.getGameProfile()); return true; } } diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java index 6c8dda9..e21a489 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java @@ -392,6 +392,8 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH } else if (item.getItem() == ModItems.shroudKey) { tileDrawers.setIsShrouded(!tileDrawers.isShrouded()); return true; + } else if (item.getItem() == ModItems.quantifyKey) { + tileDrawers.setIsQuantified(!tileDrawers.isQuantified()); } else if (item.getItem() instanceof ItemPersonalKey) { String securityKey = ((ItemPersonalKey) item.getItem()) .getSecurityProviderKey(item.getItemDamage()); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java index 5756c18..23c8ed1 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java @@ -14,6 +14,7 @@ import java.util.Queue; import java.util.Set; import java.util.UUID; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -34,11 +35,6 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.INetworked; import com.jaquadro.minecraft.storagedrawers.api.storage.IPriorityGroup; import com.jaquadro.minecraft.storagedrawers.api.storage.ISmartGroup; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IProtectable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockSlave; import com.jaquadro.minecraft.storagedrawers.security.SecurityManager; @@ -300,6 +296,29 @@ public class TileEntityController extends TileEntity } } + public void toggleQuantify(GameProfile profile) { + IQuantifiable template = null; + boolean state = false; + + for (StorageRecord record : storage.values()) { + if (record.storage == null) continue; + + if (record.storage instanceof IProtectable) { + if (!SecurityManager.hasAccess(profile, (IProtectable) record.storage)) continue; + } + + if (record.storage instanceof IQuantifiable) { + IQuantifiable quantifiableStorage = (IQuantifiable) storage; + if (template == null) { + template = quantifiableStorage; + state = !template.isQuantified(); + } + + quantifiableStorage.setIsQuantified(state); + } + } + } + public void toggleLock(EnumSet attributes, LockAttribute key, GameProfile profile) { ILockable template = null; boolean state = false; diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java index 3f37187..1b45b0e 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java @@ -49,6 +49,7 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe private int direction; private int drawerCapacity = 1; private boolean shrouded = false; + private boolean quantified = false; private boolean taped = false; private boolean hideUpgrade = false; private boolean downgraded = false; @@ -243,6 +244,23 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe } } + public boolean isQuantified() { + if (!StorageDrawers.config.cache.enableQuantifyUpgrades) return false; + + return quantified; + } + + public void setIsQuantified(boolean quantified) { + if (this.quantified != quantified) { + this.quantified = quantified; + + if (worldObj != null && !worldObj.isRemote) { + markDirty(); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + } + @Override public UUID getOwner() { if (!StorageDrawers.config.cache.enablePersonalUpgrades) return null; @@ -651,6 +669,9 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe shrouded = false; if (tag.hasKey("Shr")) shrouded = tag.getBoolean("Shr"); + quantified = false; + if (tag.hasKey("Qua")) quantified = tag.getBoolean("Qua"); + owner = null; if (tag.hasKey("Own")) owner = UUID.fromString(tag.getString("Own")); @@ -703,6 +724,8 @@ public abstract class TileEntityDrawers extends BaseTileEntity implements IDrawe if (shrouded) tag.setBoolean("Shr", shrouded); + if (quantified) tag.setBoolean("Qua", quantified); + if (owner != null) tag.setString("Own", owner.toString()); if (securityKey != null) tag.setString("Sec", securityKey); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java index 3f9412d..6861d3d 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java @@ -62,6 +62,7 @@ public class ConfigManager { public boolean enableVoidUpgrades; public boolean enableCreativeUpgrades; public boolean enableShroudUpgrades; + public boolean enableQuantifyUpgrades; public boolean enablePersonalUpgrades; public boolean enableSortingUpgrades; public boolean enableRedstoneUpgrades; @@ -341,6 +342,8 @@ public class ConfigManager { .setLanguageKey(LANG_PREFIX + "prop.enableCreativeUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enableShroudUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableShroudUpgrades", true) .setLanguageKey(LANG_PREFIX + "prop.enableShroudUpgrades").setRequiresMcRestart(true).getBoolean(); + cache.enableQuantifyUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableQuantifyUpgrades", true) + .setLanguageKey(LANG_PREFIX + "prop.enableQuantifyUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enablePersonalUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enablePersonalUpgrades", true) .setLanguageKey(LANG_PREFIX + "prop.enablePersonalUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enableSortingUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableSortingUpgrades", true) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java index d2b522c..3bfdfeb 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java @@ -1,18 +1,9 @@ package com.jaquadro.minecraft.storagedrawers.core; +import com.jaquadro.minecraft.storagedrawers.item.*; import net.minecraft.item.Item; import com.jaquadro.minecraft.storagedrawers.StorageDrawers; -import com.jaquadro.minecraft.storagedrawers.item.ItemPersonalKey; -import com.jaquadro.minecraft.storagedrawers.item.ItemShroudKey; -import com.jaquadro.minecraft.storagedrawers.item.ItemTape; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgrade; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeCreative; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeDowngrade; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeLock; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeRedstone; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeStatus; -import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeVoid; import cpw.mods.fml.common.registry.GameRegistry; @@ -27,6 +18,7 @@ public class ModItems { public static ItemUpgradeRedstone upgradeRedstone; public static ItemShroudKey shroudKey; public static ItemPersonalKey personalKey; + public static ItemQuantifyKey quantifyKey; public static ItemTape tape; public static ItemUpgradeDowngrade upgradeDowngrade; @@ -44,6 +36,7 @@ public class ModItems { shroudKey = new ItemShroudKey(makeName("shroudKey")); personalKey = new ItemPersonalKey(makeName("personalKey")); + quantifyKey = new ItemQuantifyKey(makeName("quantifyKey")); tape = new ItemTape(makeName("tape")); GameRegistry.registerItem(upgradeTemplate, "upgradeTemplate"); @@ -58,6 +51,7 @@ public class ModItems { GameRegistry.registerItem(upgradeRedstone, "upgradeRedstone"); if (StorageDrawers.config.cache.enableLockUpgrades) GameRegistry.registerItem(upgradeLock, "upgradeLock"); if (StorageDrawers.config.cache.enableShroudUpgrades) GameRegistry.registerItem(shroudKey, "shroudKey"); + if (StorageDrawers.config.cache.enableQuantifyUpgrades) GameRegistry.registerItem(quantifyKey, "quantifyKey"); if (StorageDrawers.config.cache.enablePersonalUpgrades) GameRegistry.registerItem(personalKey, "personalKey"); if (StorageDrawers.config.cache.enableTape) GameRegistry.registerItem(tape, "tape"); GameRegistry.registerItem(upgradeDowngrade, "upgradeDowngrade"); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java index 15d47fa..bc970aa 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java @@ -63,6 +63,12 @@ public class DefaultStorageProvider implements IStorageProvider { return false; } + @Override + public boolean isQuantified(int slot) { return false; } + + @Override + public boolean setIsQuantified(int slot, boolean state) { return false; } + @Override public boolean isStorageUnlimited(int slot) { return false; diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index 7468531..9c61607 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -1,5 +1,6 @@ package com.jaquadro.minecraft.storagedrawers.storage; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -7,12 +8,8 @@ import net.minecraftforge.common.MinecraftForge; import com.jaquadro.minecraft.storagedrawers.api.event.DrawerPopulatedEvent; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; -public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable, ILockable { +public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable, ILockable, IQuantifiable { private static final ItemStack nullStack = new ItemStack((Item) null); @@ -207,6 +204,14 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable return storageProvider.setIsShrouded(slot, state); } + @Override + public boolean isQuantified() { return storageProvider.isQuantified(slot); } + + @Override + public boolean setIsQuantified(boolean state) { + return storageProvider.setIsQuantified(slot, state); + } + @Override public boolean isLocked(LockAttribute attr) { return storageProvider.isLocked(slot, attr); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java index 9f98554..340a8f1 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java @@ -22,6 +22,10 @@ public interface IStorageProvider { public boolean setIsShrouded(int slot, boolean state); + public boolean isQuantified(int slot); + + public boolean setIsQuantified(int slot, boolean state); + public boolean isStorageUnlimited(int slot); public boolean isVendingUnlimited(int slot); diff --git a/src/main/resources/assets/storagedrawers/lang/en_US.lang b/src/main/resources/assets/storagedrawers/lang/en_US.lang index e39bdf3..dfdf09c 100644 --- a/src/main/resources/assets/storagedrawers/lang/en_US.lang +++ b/src/main/resources/assets/storagedrawers/lang/en_US.lang @@ -47,6 +47,8 @@ item.storagedrawers.upgradeSorting.name=Sorting Upgrade item.storagedrawers.upgradeSorting.description=For Refined Relocation item.storagedrawers.shroudKey.name=Concealment Key item.storagedrawers.shroudKey.description=Show or hide item labels +item.storagedrawers.quantifyKey.name=Quantify Key +item.storagedrawers.quantifyKey.description=Show or hide item quantities item.storagedrawers.personalKey.name=Personal Key item.storagedrawers.personalKey.default.name=Personal Key item.storagedrawers.personalKey.default.description=Protect access from other players From 9c49adcf3ca26a6f73c8231ffa38587cb34b5095 Mon Sep 17 00:00:00 2001 From: cargocats Date: Fri, 23 May 2025 23:14:56 -0400 Subject: [PATCH 02/21] Initial rendering for the Quantity Key item --- .../renderer/TileEntityDrawersRenderer.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 52c8f14..16079e4 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -2,6 +2,7 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer; import java.util.List; +import cpw.mods.fml.common.FMLLog; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -24,6 +25,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.common.util.ForgeDirection; +import org.apache.logging.log4j.Level; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -267,6 +269,13 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { // Swallow exception } + if (StorageDrawers.config.cache.enableQuantifyUpgrades) { + for (int i = 0; i < tileDrawers.getDrawerCount(); i++) { + if (!tileDrawers.isDrawerEnabled(i)) continue; + drawDrawerTexts(tileDrawers, i, side, depth); + } + } + mc.gameSettings.fancyGraphics = cache; GL11.glPopMatrix(); @@ -349,6 +358,59 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { } } + private void drawDrawerTexts(TileEntityDrawers tile, int slot, ForgeDirection side, float depth) { + int drawerCount = tile.getDrawerCount(); + + BlockDrawers block = (BlockDrawers) tile.getBlockType(); + float xunit = getXOffset(drawerCount, slot); + float yunit = getYOffset(drawerCount, slot); + float zunit = block.getTrimDepth(); + + float xc = 0, zc = 0; + float itemDepth = depth + .001f; + + switch (tile.getDirection()) { + case 3: + xc = xunit; + zc = itemDepth - zunit; + break; + case 2: + xc = 1 - xunit; + zc = 1 - itemDepth + zunit; + break; + case 5: + xc = itemDepth - zunit; + zc = 1 - xunit; + break; + case 4: + xc = 1 - itemDepth + zunit; + zc = xunit; + break; + } + + float yAdj = 0; + if (drawerCount == 2 || drawerCount == 4) yAdj = -.5f; + else if (drawerCount == 1) yAdj = -3f; + + renderText( + String.valueOf(slot + 1), side, + xc, unit * (yunit + 0.75f + yAdj), zc + ); + } + + private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ) { + int stringWidth = this.func_147498_b().getStringWidth(renderString); + this.alignRendering(side); + this.moveRendering(0.125f, offsetX , offsetY, offsetZ); + + GL11.glDepthMask(false); + + GL11.glDisable(GL11.GL_LIGHTING); + this.func_147498_b().drawString(renderString, -stringWidth / 2, 0, 0xFFFFFFFF); + + GL11.glDepthMask(true); + } + private void renderFancyItem(ItemStack itemStack, TileEntityDrawers tile, int slot, ForgeDirection side, float depth) { int drawerCount = tile.getDrawerCount(); From e2894cff72cbdf3f40d64335626f934152c80276 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 09:26:20 -0400 Subject: [PATCH 03/21] Proper positioning of labels and format the number --- .../renderer/TileEntityDrawersRenderer.java | 50 +++++++-------- .../storagedrawers/util/CountFormatter.java | 62 +++++++++++++++++++ 2 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 16079e4..a49091f 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -2,7 +2,7 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer; import java.util.List; -import cpw.mods.fml.common.FMLLog; +import com.jaquadro.minecraft.storagedrawers.util.CountFormatter; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -25,7 +25,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.common.util.ForgeDirection; -import org.apache.logging.log4j.Level; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -272,6 +271,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { if (StorageDrawers.config.cache.enableQuantifyUpgrades) { for (int i = 0; i < tileDrawers.getDrawerCount(); i++) { if (!tileDrawers.isDrawerEnabled(i)) continue; + drawDrawerTexts(tileDrawers, i, side, depth); } } @@ -359,49 +359,40 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { } private void drawDrawerTexts(TileEntityDrawers tile, int slot, ForgeDirection side, float depth) { + BlockDrawers block = (BlockDrawers) tile.getBlockType(); int drawerCount = tile.getDrawerCount(); - BlockDrawers block = (BlockDrawers) tile.getBlockType(); - float xunit = getXOffset(drawerCount, slot); - float yunit = getYOffset(drawerCount, slot); - float zunit = block.getTrimDepth(); + float offsetX = 8; + float offsetY = 14; - float xc = 0, zc = 0; - float itemDepth = depth + .001f; - - switch (tile.getDirection()) { - case 3: - xc = xunit; - zc = itemDepth - zunit; + switch (drawerCount) { + case 1: break; case 2: - xc = 1 - xunit; - zc = 1 - itemDepth + zunit; - break; - case 5: - xc = itemDepth - zunit; - zc = 1 - xunit; + offsetY = (slot == 0) ? 6 : 14; break; case 4: - xc = 1 - itemDepth + zunit; - zc = xunit; + switch (slot) { + case 0: offsetX = 4; offsetY = 6; break; + case 1: offsetX = 4; break; + case 2: offsetX = 12; offsetY = 6; break; + case 3: offsetX = 12; break; + } break; } - float yAdj = 0; - if (drawerCount == 2 || drawerCount == 4) yAdj = -.5f; - else if (drawerCount == 1) yAdj = -3f; + if (block.halfDepth) depth += 1; - renderText( - String.valueOf(slot + 1), side, - xc, unit * (yunit + 0.75f + yAdj), zc - ); + renderText(CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), side, offsetX, offsetY, depth - 1f); } + private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ) { int stringWidth = this.func_147498_b().getStringWidth(renderString); + + GL11.glPushMatrix(); this.alignRendering(side); - this.moveRendering(0.125f, offsetX , offsetY, offsetZ); + this.moveRendering(0.125f, offsetX, offsetY, offsetZ); GL11.glDepthMask(false); @@ -409,6 +400,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { this.func_147498_b().drawString(renderString, -stringWidth / 2, 0, 0xFFFFFFFF); GL11.glDepthMask(true); + GL11.glPopMatrix(); } private void renderFancyItem(ItemStack itemStack, TileEntityDrawers tile, int slot, ForgeDirection side, diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java new file mode 100644 index 0000000..e4c5dbb --- /dev/null +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java @@ -0,0 +1,62 @@ +package com.jaquadro.minecraft.storagedrawers.util; + +import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; +import net.minecraft.client.gui.FontRenderer; + +public class CountFormatter +{ + public static String format (FontRenderer font, IDrawer drawer) { + return formatApprox(font, drawer); + } + + public static String formatStackNotation (IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) + return ""; + + String text; + int stacks = drawer.getStoredItemCount() / drawer.getStoredItemStackSize(); + int remainder = drawer.getStoredItemCount() - (stacks * drawer.getStoredItemStackSize()); + + if (stacks > 0 && remainder > 0) + text = stacks + "x" + drawer.getStoredItemStackSize() + "+" + remainder; + else if (stacks > 0) + text = stacks + "x" + drawer.getStoredItemStackSize(); + else + text = String.valueOf(remainder); + + return text; + } + + public static String formatExact (IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) + return ""; + + return String.valueOf(drawer.getStoredItemCount()); + } + + public static String formatApprox (FontRenderer font, IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) + return ""; + + return formatApprox(font, drawer.getStoredItemCount()); + } + + public static String formatApprox (FontRenderer font, int count) { + String text; + + if (count >= 1000000000) + text = String.format("%.1fG", count / 1000000000f); + else if (count >= 100000000) + text = String.format("%.0fM", count / 1000000f); + else if (count >= 1000000) + text = String.format("%.1fM", count / 1000000f); + else if (count >= 100000) + text = String.format("%.0fK", count / 1000f); + else if (count >= 10000) + text = String.format("%.1fK", count / 1000f); + else + text = String.valueOf(count); + + return text; + } +} \ No newline at end of file From c5bb68dcb450b207f4d8de2d9f9fa7d78a9135b8 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 09:42:16 -0400 Subject: [PATCH 04/21] Don't render if too far away, and color alpha based on distance --- .../renderer/TileEntityDrawersRenderer.java | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index a49091f..13607e8 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -5,6 +5,8 @@ import java.util.List; import com.jaquadro.minecraft.storagedrawers.util.CountFormatter; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; @@ -16,6 +18,7 @@ import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -268,11 +271,24 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { // Swallow exception } - if (StorageDrawers.config.cache.enableQuantifyUpgrades) { - for (int i = 0; i < tileDrawers.getDrawerCount(); i++) { - if (!tileDrawers.isDrawerEnabled(i)) continue; + if (StorageDrawers.config.cache.enableQuantifyUpgrades && tileDrawers.isQuantified()) { + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + double dx = tile.xCoord + 0.5 - player.posX; + double dy = tile.yCoord + 0.5 - player.posY; + double dz = tile.zCoord + 0.5 - player.posZ; + double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); - drawDrawerTexts(tileDrawers, i, side, depth); + float alpha = 1.0f; + if (distance > 4.0) { + alpha = Math.max(1.0f - (float) ((distance - 4.0) / 6.0), 0.05f); + } + + if (distance < 10.0) { + for (int i = 0; i < tileDrawers.getDrawerCount(); i++) { + if (!tileDrawers.isDrawerEnabled(i)) continue; + + drawDrawerTexts(tileDrawers, i, side, depth, alpha); + } } } @@ -358,7 +374,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { } } - private void drawDrawerTexts(TileEntityDrawers tile, int slot, ForgeDirection side, float depth) { + private void drawDrawerTexts(TileEntityDrawers tile, int slot, ForgeDirection side, float depth, float alpha) { BlockDrawers block = (BlockDrawers) tile.getBlockType(); int drawerCount = tile.getDrawerCount(); @@ -383,11 +399,11 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { if (block.halfDepth) depth += 1; - renderText(CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), side, offsetX, offsetY, depth - 1f); + renderText(CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), side, offsetX, offsetY, depth - 1f, alpha); } - private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ) { + private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ, float alpha) { int stringWidth = this.func_147498_b().getStringWidth(renderString); GL11.glPushMatrix(); @@ -395,11 +411,14 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { this.moveRendering(0.125f, offsetX, offsetY, offsetZ); GL11.glDepthMask(false); - GL11.glDisable(GL11.GL_LIGHTING); - this.func_147498_b().drawString(renderString, -stringWidth / 2, 0, 0xFFFFFFFF); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + this.func_147498_b().drawString(renderString, -stringWidth / 2, 0, (int)(255 * alpha) << 24 | 255 << 16 | 255 << 8 | 255); GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } From ffc36cdea97a31fb54c34c88eef3fe528f0de114 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 09:48:42 -0400 Subject: [PATCH 05/21] Prevent moving key into drawer --- .../jaquadro/minecraft/storagedrawers/block/BlockDrawers.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java index e21a489..1273813 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java @@ -394,6 +394,7 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH return true; } else if (item.getItem() == ModItems.quantifyKey) { tileDrawers.setIsQuantified(!tileDrawers.isQuantified()); + return true; } else if (item.getItem() instanceof ItemPersonalKey) { String securityKey = ((ItemPersonalKey) item.getItem()) .getSecurityProviderKey(item.getItemDamage()); From bc5a87caf83b5454b47928c60887eba4f6cced55 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 10:17:25 -0400 Subject: [PATCH 06/21] Add some api stuff related to quantify key --- .../block/tile/TileEntityDrawersComp.java | 5 +++++ .../block/tile/TileEntityDrawersStandard.java | 11 +++++++++++ .../storagedrawers/storage/CompDrawerData.java | 15 ++++++++++----- .../storagedrawers/storage/DrawerData.java | 4 +--- .../storagedrawers/storage/ICentralInventory.java | 2 ++ .../storagedrawers/storage/IUpgradeProvider.java | 2 ++ 6 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java index 1c1fd6d..0dfb111 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java @@ -649,6 +649,11 @@ public class TileEntityDrawersComp extends TileEntityDrawers { return true; } + @Override + public boolean isQuantified() { + return TileEntityDrawersComp.this.isQuantified(); + } + @Override public boolean isLocked(int slot, LockAttribute attr) { return TileEntityDrawersComp.this.isLocked(attr); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersStandard.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersStandard.java index eec3625..95f56ee 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersStandard.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersStandard.java @@ -68,6 +68,17 @@ public class TileEntityDrawersStandard extends TileEntityDrawers { return true; } + @Override + public boolean isQuantified(int slot) { + return TileEntityDrawersStandard.this.isQuantified(); + } + + @Override + public boolean setIsQuantified(int slot, boolean state) { + TileEntityDrawersStandard.this.setIsQuantified(state); + return true; + } + @Override public boolean isStorageUnlimited(int slot) { return TileEntityDrawersStandard.this.isUnlimited(); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java index 7e96439..04bbc7a 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java @@ -1,17 +1,14 @@ package com.jaquadro.minecraft.storagedrawers.storage; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; -public class CompDrawerData extends BaseDrawerData implements IFractionalDrawer, IVoidable, IShroudable, ILockable { +public class CompDrawerData extends BaseDrawerData implements IFractionalDrawer, IVoidable, IShroudable, ILockable, IQuantifiable { private static final ItemStack nullStack = new ItemStack((Item) null); @@ -142,6 +139,14 @@ public class CompDrawerData extends BaseDrawerData implements IFractionalDrawer, return central.setIsSlotShrouded(slot, state); } + @Override + public boolean isQuantified() { + return central.isQuantified(); + } + + @Override + public void setIsQuantified(boolean state) {}; + @Override public boolean isLocked(LockAttribute attr) { return central.isLocked(slot, attr); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index 9c61607..4c12945 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -208,9 +208,7 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable public boolean isQuantified() { return storageProvider.isQuantified(slot); } @Override - public boolean setIsQuantified(boolean state) { - return storageProvider.setIsQuantified(slot, state); - } + public void setIsQuantified(boolean state) {} @Override public boolean isLocked(LockAttribute attr) { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java index 319bc1c..bf4c2e5 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java @@ -38,6 +38,8 @@ public interface ICentralInventory { public boolean setIsSlotShrouded(int slot, boolean state); + public boolean isQuantified(); + public boolean isLocked(int slot, LockAttribute attr); public void readFromNBT(int slot, NBTTagCompound tag); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IUpgradeProvider.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IUpgradeProvider.java index be66440..3bc7ab1 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IUpgradeProvider.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/IUpgradeProvider.java @@ -8,5 +8,7 @@ public interface IUpgradeProvider { boolean isShrouded(); + boolean isQuantified(); + boolean isDowngraded(); } From 119e8eff032a1a60d96aa4c5b086a81704c7fbb0 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 10:18:16 -0400 Subject: [PATCH 07/21] Recipe and recipe integration with GTNH --- .../minecraft/storagedrawers/core/ModRecipes.java | 4 ++++ .../storagedrawers/integration/gtnh/ModRecipes.java | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java index 9dcea3b..e22b8a9 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java @@ -398,6 +398,10 @@ public class ModRecipes { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.personalKey), ModItems.upgradeLock, Items.name_tag); } + if (config.cache.enableQuantifyUpgrades) { + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.quantifyKey), ModItems.upgradeLock, Items.writable_book); + } + if (config.cache.enableTape) { GameRegistry.addRecipe( new ShapedOreRecipe( diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/integration/gtnh/ModRecipes.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/integration/gtnh/ModRecipes.java index c56034b..121a432 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/integration/gtnh/ModRecipes.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/integration/gtnh/ModRecipes.java @@ -200,6 +200,7 @@ public class ModRecipes { lockUpgradeRecipes(); // Drawer key shroudKeyUpgradeRecipes(); // Concealment Key personalKeyUpgradeRecipes(); // Personal Key + quantifyKeyUpgradeRecipes(); // Quantify Key // Packing Tape packingTapeRecipes(); // Packing Tape @@ -472,6 +473,7 @@ public class ModRecipes { || config.cache.enablePersonalUpgrades || config.cache.enableRedstoneUpgrades || config.cache.enableShroudUpgrades + || config.cache.enableQuantifyUpgrades || config.cache.enableSortingUpgrades || config.cache.enableStorageUpgrades || config.cache.enableVoidUpgrades)) @@ -757,6 +759,15 @@ public class ModRecipes { .addTo(assemblerRecipes); } + private static void quantifyKeyUpgradeRecipes() { + if (!config.cache.enableQuantifyUpgrades) return; + + // Quantify Key + GTValues.RA.stdBuilder().itemInputs(upgradeLock, new ItemStack(Items.writable_book)) + .itemOutputs(new ItemStack(ModItems.quantifyKey)).duration(5 * SECONDS).eut(TierEU.RECIPE_LV) + .addTo(assemblerRecipes); + } + private static void packingTapeRecipes() { if (!config.cache.enableTape) return; From 2f77f44ab33bc1f02988a6f9b078f2ffdf8d364c Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 10:19:53 -0400 Subject: [PATCH 08/21] Apply spotless --- gradle.properties | 2 +- .../block/tile/TileEntityController.java | 2 +- .../renderer/TileEntityDrawersRenderer.java | 37 +++++++++---- .../storagedrawers/core/ModItems.java | 2 +- .../storagedrawers/core/ModRecipes.java | 3 +- .../storage/CompDrawerData.java | 5 +- .../storage/DefaultStorageProvider.java | 8 ++- .../storagedrawers/storage/DrawerData.java | 6 +- .../storagedrawers/util/CountFormatter.java | 55 ++++++++----------- 9 files changed, 66 insertions(+), 54 deletions(-) diff --git a/gradle.properties b/gradle.properties index cc2122a..065ff2d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,7 +37,7 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co # Select a default username for testing your mod. You can always override this per-run by running # `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE. -developmentEnvironmentUserName = "Developer" +developmentEnvironmentUserName = "cargocat" # Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. # See https://github.com/bsideup/jabel for details on how this works. diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java index 23c8ed1..7979ea6 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java @@ -14,7 +14,6 @@ import java.util.Queue; import java.util.Set; import java.util.UUID; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -35,6 +34,7 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.INetworked; import com.jaquadro.minecraft.storagedrawers.api.storage.IPriorityGroup; import com.jaquadro.minecraft.storagedrawers.api.storage.ISmartGroup; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockSlave; import com.jaquadro.minecraft.storagedrawers.security.SecurityManager; diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 13607e8..defcc2b 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -2,11 +2,9 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer; import java.util.List; -import com.jaquadro.minecraft.storagedrawers.util.CountFormatter; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; @@ -18,7 +16,6 @@ import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -36,6 +33,7 @@ import com.jaquadro.minecraft.storagedrawers.api.render.IRenderLabel; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawers; +import com.jaquadro.minecraft.storagedrawers.util.CountFormatter; import cpw.mods.fml.common.registry.GameData; import cpw.mods.fml.relauncher.Side; @@ -389,21 +387,37 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { break; case 4: switch (slot) { - case 0: offsetX = 4; offsetY = 6; break; - case 1: offsetX = 4; break; - case 2: offsetX = 12; offsetY = 6; break; - case 3: offsetX = 12; break; + case 0: + offsetX = 4; + offsetY = 6; + break; + case 1: + offsetX = 4; + break; + case 2: + offsetX = 12; + offsetY = 6; + break; + case 3: + offsetX = 12; + break; } break; } if (block.halfDepth) depth += 1; - renderText(CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), side, offsetX, offsetY, depth - 1f, alpha); + renderText( + CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), + side, + offsetX, + offsetY, + depth - 1f, + alpha); } - - private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ, float alpha) { + private void renderText(String renderString, ForgeDirection side, float offsetX, float offsetY, float offsetZ, + float alpha) { int stringWidth = this.func_147498_b().getStringWidth(renderString); GL11.glPushMatrix(); @@ -415,7 +429,8 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - this.func_147498_b().drawString(renderString, -stringWidth / 2, 0, (int)(255 * alpha) << 24 | 255 << 16 | 255 << 8 | 255); + this.func_147498_b() + .drawString(renderString, -stringWidth / 2, 0, (int) (255 * alpha) << 24 | 255 << 16 | 255 << 8 | 255); GL11.glDepthMask(true); GL11.glDisable(GL11.GL_BLEND); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java index 3bfdfeb..bc812f6 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java @@ -1,9 +1,9 @@ package com.jaquadro.minecraft.storagedrawers.core; -import com.jaquadro.minecraft.storagedrawers.item.*; import net.minecraft.item.Item; import com.jaquadro.minecraft.storagedrawers.StorageDrawers; +import com.jaquadro.minecraft.storagedrawers.item.*; import cpw.mods.fml.common.registry.GameRegistry; diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java index e22b8a9..7e724bc 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModRecipes.java @@ -399,7 +399,8 @@ public class ModRecipes { } if (config.cache.enableQuantifyUpgrades) { - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.quantifyKey), ModItems.upgradeLock, Items.writable_book); + GameRegistry + .addShapelessRecipe(new ItemStack(ModItems.quantifyKey), ModItems.upgradeLock, Items.writable_book); } if (config.cache.enableTape) { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java index 04bbc7a..9c1a42f 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java @@ -1,14 +1,15 @@ package com.jaquadro.minecraft.storagedrawers.storage; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; -public class CompDrawerData extends BaseDrawerData implements IFractionalDrawer, IVoidable, IShroudable, ILockable, IQuantifiable { +public class CompDrawerData extends BaseDrawerData + implements IFractionalDrawer, IVoidable, IShroudable, ILockable, IQuantifiable { private static final ItemStack nullStack = new ItemStack((Item) null); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java index bc970aa..be15cb1 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java @@ -64,10 +64,14 @@ public class DefaultStorageProvider implements IStorageProvider { } @Override - public boolean isQuantified(int slot) { return false; } + public boolean isQuantified(int slot) { + return false; + } @Override - public boolean setIsQuantified(int slot, boolean state) { return false; } + public boolean setIsQuantified(int slot, boolean state) { + return false; + } @Override public boolean isStorageUnlimited(int slot) { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index 4c12945..45022bd 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -1,6 +1,5 @@ package com.jaquadro.minecraft.storagedrawers.storage; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -8,6 +7,7 @@ import net.minecraftforge.common.MinecraftForge; import com.jaquadro.minecraft.storagedrawers.api.event.DrawerPopulatedEvent; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable, ILockable, IQuantifiable { @@ -205,7 +205,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable } @Override - public boolean isQuantified() { return storageProvider.isQuantified(slot); } + public boolean isQuantified() { + return storageProvider.isQuantified(slot); + } @Override public void setIsQuantified(boolean state) {} diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java index e4c5dbb..61f9c13 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/util/CountFormatter.java @@ -1,62 +1,51 @@ package com.jaquadro.minecraft.storagedrawers.util; -import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import net.minecraft.client.gui.FontRenderer; -public class CountFormatter -{ - public static String format (FontRenderer font, IDrawer drawer) { +import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; + +public class CountFormatter { + + public static String format(FontRenderer font, IDrawer drawer) { return formatApprox(font, drawer); } - public static String formatStackNotation (IDrawer drawer) { - if (drawer == null || drawer.isEmpty()) - return ""; + public static String formatStackNotation(IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) return ""; String text; int stacks = drawer.getStoredItemCount() / drawer.getStoredItemStackSize(); int remainder = drawer.getStoredItemCount() - (stacks * drawer.getStoredItemStackSize()); - if (stacks > 0 && remainder > 0) - text = stacks + "x" + drawer.getStoredItemStackSize() + "+" + remainder; - else if (stacks > 0) - text = stacks + "x" + drawer.getStoredItemStackSize(); - else - text = String.valueOf(remainder); + if (stacks > 0 && remainder > 0) text = stacks + "x" + drawer.getStoredItemStackSize() + "+" + remainder; + else if (stacks > 0) text = stacks + "x" + drawer.getStoredItemStackSize(); + else text = String.valueOf(remainder); return text; } - public static String formatExact (IDrawer drawer) { - if (drawer == null || drawer.isEmpty()) - return ""; + public static String formatExact(IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) return ""; return String.valueOf(drawer.getStoredItemCount()); } - public static String formatApprox (FontRenderer font, IDrawer drawer) { - if (drawer == null || drawer.isEmpty()) - return ""; + public static String formatApprox(FontRenderer font, IDrawer drawer) { + if (drawer == null || drawer.isEmpty()) return ""; return formatApprox(font, drawer.getStoredItemCount()); } - public static String formatApprox (FontRenderer font, int count) { + public static String formatApprox(FontRenderer font, int count) { String text; - if (count >= 1000000000) - text = String.format("%.1fG", count / 1000000000f); - else if (count >= 100000000) - text = String.format("%.0fM", count / 1000000f); - else if (count >= 1000000) - text = String.format("%.1fM", count / 1000000f); - else if (count >= 100000) - text = String.format("%.0fK", count / 1000f); - else if (count >= 10000) - text = String.format("%.1fK", count / 1000f); - else - text = String.valueOf(count); + if (count >= 1000000000) text = String.format("%.1fG", count / 1000000000f); + else if (count >= 100000000) text = String.format("%.0fM", count / 1000000f); + else if (count >= 1000000) text = String.format("%.1fM", count / 1000000f); + else if (count >= 100000) text = String.format("%.0fK", count / 1000f); + else if (count >= 10000) text = String.format("%.1fK", count / 1000f); + else text = String.valueOf(count); return text; } -} \ No newline at end of file +} From 0b2fbd5731ece7ea7f999a900cd8ea4076fc5eed Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 10:24:09 -0400 Subject: [PATCH 09/21] Oops, revert gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 065ff2d..cc2122a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,7 +37,7 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co # Select a default username for testing your mod. You can always override this per-run by running # `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE. -developmentEnvironmentUserName = "cargocat" +developmentEnvironmentUserName = "Developer" # Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. # See https://github.com/bsideup/jabel for details on how this works. From a695036156880138e6f1185a733f59e9d10ee9fd Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 10:31:33 -0400 Subject: [PATCH 10/21] English lang file for drawer quantity --- src/main/resources/assets/storagedrawers/lang/en_US.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/assets/storagedrawers/lang/en_US.lang b/src/main/resources/assets/storagedrawers/lang/en_US.lang index dfdf09c..7361cf4 100644 --- a/src/main/resources/assets/storagedrawers/lang/en_US.lang +++ b/src/main/resources/assets/storagedrawers/lang/en_US.lang @@ -169,6 +169,7 @@ storageDrawers.config.prop.enableIndicatorUpgrades=Enable Indicator Upgrades storageDrawers.config.prop.enableStorageUpgrades=Enable Storage Upgrades storageDrawers.config.prop.enableLockUpgrades=Enable Drawer Locking storageDrawers.config.prop.enableShroudUpgrades=Enable Item Concealing +storageDrawers.config.prop.enableQuantifyUpgrades=Enable Show Drawer Quantities storageDrawers.config.prop.enablePersonalUpgrades=Enable Access Protection storageDrawers.config.prop.enableVoidUpgrades=Enable Void Upgrade storageDrawers.config.prop.enableCreativeUpgrades=Enable Creative Upgrade From 2217330efc7f8e923b280dea030b71163fa7b9b5 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 11:39:17 -0400 Subject: [PATCH 11/21] Move to ternary --- .../client/renderer/TileEntityDrawersRenderer.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index defcc2b..0d29d98 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -405,14 +405,12 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { break; } - if (block.halfDepth) depth += 1; - renderText( CountFormatter.format(this.func_147498_b(), tile.getDrawer(slot)), side, offsetX, offsetY, - depth - 1f, + block.halfDepth ? depth : depth - 1f, alpha); } From 9285f0372975859161a84a03446f17afd609f85a Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 11:57:54 -0400 Subject: [PATCH 12/21] Make it 1.0f --- .../client/renderer/TileEntityDrawersRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 0d29d98..db4ea49 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -410,7 +410,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { side, offsetX, offsetY, - block.halfDepth ? depth : depth - 1f, + block.halfDepth ? depth : depth - 1.0f, alpha); } From e4fe9683e582df74eb4234ea3e4c45d34df51474 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 12:29:23 -0400 Subject: [PATCH 13/21] Change how depth works (again) to how it renders the items --- .../client/renderer/TileEntityDrawersRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index db4ea49..77ce518 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -410,7 +410,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { side, offsetX, offsetY, - block.halfDepth ? depth : depth - 1.0f, + 1f - depth + block.getTrimDepth() - 0.005f, alpha); } From 9d2c5f0c1e95afee84f72feb97878e832d9f83db Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 13:00:09 -0400 Subject: [PATCH 14/21] Don't need to disable GL Lighting --- .../client/renderer/TileEntityDrawersRenderer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 77ce518..74cd67e 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -419,11 +419,11 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { int stringWidth = this.func_147498_b().getStringWidth(renderString); GL11.glPushMatrix(); + this.alignRendering(side); this.moveRendering(0.125f, offsetX, offsetY, offsetZ); GL11.glDepthMask(false); - GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); @@ -432,6 +432,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { GL11.glDepthMask(true); GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); } From 1065923275de9bb89ef258ca3f22350148204ebe Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 14:17:48 -0400 Subject: [PATCH 15/21] Handle compacting drawers --- .../client/renderer/TileEntityDrawersRenderer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 74cd67e..d1904fc 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -2,6 +2,7 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer; import java.util.List; +import cpw.mods.fml.common.FMLLog; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; @@ -383,7 +384,14 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { case 1: break; case 2: - offsetY = (slot == 0) ? 6 : 14; + offsetY = (slot == 0) ? 7 : 14; + break; + case 3: + switch (slot) { + case 0: offsetY = 7; break; + case 1: offsetX = 4; break; + case 2: offsetX = 12; break; + } break; case 4: switch (slot) { From 6fa0391b2881f9b53a2d89e708274bc9834424b6 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 14:18:15 -0400 Subject: [PATCH 16/21] Apply spotless --- .../client/renderer/TileEntityDrawersRenderer.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index d1904fc..c203053 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -2,7 +2,6 @@ package com.jaquadro.minecraft.storagedrawers.client.renderer; import java.util.List; -import cpw.mods.fml.common.FMLLog; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; @@ -388,9 +387,15 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { break; case 3: switch (slot) { - case 0: offsetY = 7; break; - case 1: offsetX = 4; break; - case 2: offsetX = 12; break; + case 0: + offsetY = 7; + break; + case 1: + offsetX = 4; + break; + case 2: + offsetX = 12; + break; } break; case 4: From a9cbf8806e51fffee5decefff16639417ef4d5af Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 14:44:09 -0400 Subject: [PATCH 17/21] Implement using quantifier key on Drawer Controllers --- .../block/tile/TileEntityController.java | 9 +++++++-- .../block/tile/TileEntityDrawersComp.java | 10 ++++++++-- .../storagedrawers/storage/CompDrawerData.java | 6 ++++-- .../minecraft/storagedrawers/storage/DrawerData.java | 4 +++- .../storagedrawers/storage/ICentralInventory.java | 4 +++- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java index 7979ea6..63d1879 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java @@ -307,8 +307,13 @@ public class TileEntityController extends TileEntity if (!SecurityManager.hasAccess(profile, (IProtectable) record.storage)) continue; } - if (record.storage instanceof IQuantifiable) { - IQuantifiable quantifiableStorage = (IQuantifiable) storage; + for (int i = 0, n = record.storage.getDrawerCount(); i < n; i++) { + if (!record.storage.isDrawerEnabled(i)) continue; + + IDrawer drawer = record.storage.getDrawer(i); + if (!(drawer instanceof IQuantifiable)) continue; + + IQuantifiable quantifiableStorage = (IQuantifiable) drawer; if (template == null) { template = quantifiableStorage; state = !template.isQuantified(); diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java index 0dfb111..70dc832 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java @@ -650,8 +650,14 @@ public class TileEntityDrawersComp extends TileEntityDrawers { } @Override - public boolean isQuantified() { - return TileEntityDrawersComp.this.isQuantified(); + public boolean isQuantifiedSlot(int slot) { + return isQuantified(); + } + + @Override + public boolean setIsSlotQuantifiable(int slot, boolean state) { + setIsQuantified(state); + return true; } @Override diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java index 9c1a42f..0fa5d1e 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java @@ -142,11 +142,13 @@ public class CompDrawerData extends BaseDrawerData @Override public boolean isQuantified() { - return central.isQuantified(); + return central.isQuantifiedSlot(slot); } @Override - public void setIsQuantified(boolean state) {}; + public boolean setIsQuantified(boolean state) { + return central.setIsSlotQuantifiable(slot, state); + }; @Override public boolean isLocked(LockAttribute attr) { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index 45022bd..f7858e3 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -210,7 +210,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable } @Override - public void setIsQuantified(boolean state) {} + public boolean setIsQuantified(boolean state) { + return storageProvider.setIsQuantified(slot, state); + } @Override public boolean isLocked(LockAttribute attr) { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java index bf4c2e5..2ec63d0 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/ICentralInventory.java @@ -38,7 +38,9 @@ public interface ICentralInventory { public boolean setIsSlotShrouded(int slot, boolean state); - public boolean isQuantified(); + public boolean isQuantifiedSlot(int slot); + + public boolean setIsSlotQuantifiable(int slot, boolean state); public boolean isLocked(int slot, LockAttribute attr); From 7027303cc83ffb0ec6c40e24e4539b830aa94797 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 15:01:09 -0400 Subject: [PATCH 18/21] Add in quantify key --- .../api/storage/attribute/IQuantifiable.java | 12 +++++ .../storagedrawers/item/ItemQuantifyKey.java | 48 ++++++++++++++++++ .../textures/items/drawer_key_quantify.png | Bin 0 -> 333 bytes 3 files changed, 60 insertions(+) create mode 100644 src/main/java/com/jaquadro/minecraft/storagedrawers/api/storage/attribute/IQuantifiable.java create mode 100644 src/main/java/com/jaquadro/minecraft/storagedrawers/item/ItemQuantifyKey.java create mode 100644 src/main/resources/assets/storagedrawers/textures/items/drawer_key_quantify.png diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/api/storage/attribute/IQuantifiable.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/api/storage/attribute/IQuantifiable.java new file mode 100644 index 0000000..628c00f --- /dev/null +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/api/storage/attribute/IQuantifiable.java @@ -0,0 +1,12 @@ +package com.jaquadro.minecraft.storagedrawers.api.storage.attribute; + +public interface IQuantifiable { + + /** + * Gets whether the drawer has the quantifiable attribute. The quantifiable attribute instructs the drawer to render + * the quantity of the item contained in the drawer. + */ + boolean isQuantified(); + + boolean setIsQuantified(boolean state); +} diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/item/ItemQuantifyKey.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/item/ItemQuantifyKey.java new file mode 100644 index 0000000..3154685 --- /dev/null +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/item/ItemQuantifyKey.java @@ -0,0 +1,48 @@ +package com.jaquadro.minecraft.storagedrawers.item; + +import java.util.List; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import com.google.common.collect.Multimap; +import com.jaquadro.minecraft.storagedrawers.StorageDrawers; +import com.jaquadro.minecraft.storagedrawers.core.ModCreativeTabs; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemQuantifyKey extends Item { + + public ItemQuantifyKey(String name) { + setUnlocalizedName(name); + setCreativeTab(ModCreativeTabs.tabStorageDrawers); + setTextureName(StorageDrawers.MOD_ID + ":drawer_key_quantify"); + setMaxDamage(0); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4) { + String name = getUnlocalizedName(itemStack); + list.add(StatCollector.translateToLocalFormatted(name + ".description")); + } + + @SideOnly(Side.CLIENT) + public boolean isFull3D() { + return true; + } + + @Override + public Multimap getAttributeModifiers(ItemStack item) { + Multimap multimap = super.getAttributeModifiers(item); + multimap.put( + SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", (double) 2, 0)); + return multimap; + } +} diff --git a/src/main/resources/assets/storagedrawers/textures/items/drawer_key_quantify.png b/src/main/resources/assets/storagedrawers/textures/items/drawer_key_quantify.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc0d9b5ceed9e00963e5c77e5be737e8c81c018 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x z8Knw_W(tl4MG8g+hNcRJmR6<)R))q3x(22O20r?-3xWFBOFVsD*&lF=v+~NvJ&tn& z3UL;AL>4nJaD4z_MyE95jgR3=A9lx&I`x0{KfkT^vIyZY3uyP(SfG^*8_G z#2m386Y-FLOq&$GoDSZj@bJG&_P+9-hyOov?kSLZ#x!Y;zwp_f9ZX!32mb7-dGFum zIlJEQkqN^R%S$t553{PT`;)Ze|0nylG=T)C>pFSgBzqhgQj|F!T;gHUc`+-I;YeS~ z162vT1n~wR_M2?I(IU`lh*9(xXgJiehNU@= Date: Sat, 24 May 2025 15:01:22 -0400 Subject: [PATCH 19/21] Readjust position --- .../client/renderer/TileEntityDrawersRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index c203053..964cbf3 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -383,7 +383,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer { case 1: break; case 2: - offsetY = (slot == 0) ? 7 : 14; + offsetY = (slot == 0) ? 6 : 14; break; case 3: switch (slot) { From 9d13fef26b01a6b259de79d3e91bb64036f07136 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 15:04:54 -0400 Subject: [PATCH 20/21] Remove non-static wildcard imports --- .../minecraft/storagedrawers/core/ModItems.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java index bc812f6..d31ef12 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/core/ModItems.java @@ -3,7 +3,17 @@ package com.jaquadro.minecraft.storagedrawers.core; import net.minecraft.item.Item; import com.jaquadro.minecraft.storagedrawers.StorageDrawers; -import com.jaquadro.minecraft.storagedrawers.item.*; +import com.jaquadro.minecraft.storagedrawers.item.ItemPersonalKey; +import com.jaquadro.minecraft.storagedrawers.item.ItemQuantifyKey; +import com.jaquadro.minecraft.storagedrawers.item.ItemShroudKey; +import com.jaquadro.minecraft.storagedrawers.item.ItemTape; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgrade; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeCreative; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeDowngrade; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeLock; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeRedstone; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeStatus; +import com.jaquadro.minecraft.storagedrawers.item.ItemUpgradeVoid; import cpw.mods.fml.common.registry.GameRegistry; From a127096a7bad0bf459b7ce41ce2dbeb81bb77ea5 Mon Sep 17 00:00:00 2001 From: cargocats Date: Sat, 24 May 2025 15:09:09 -0400 Subject: [PATCH 21/21] Optimize imports + apply spotless --- .../storagedrawers/block/tile/TileEntityController.java | 7 ++++++- .../minecraft/storagedrawers/storage/CompDrawerData.java | 6 +++++- .../minecraft/storagedrawers/storage/DrawerData.java | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java index 63d1879..9a49593 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java @@ -34,7 +34,12 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.INetworked; import com.jaquadro.minecraft.storagedrawers.api.storage.IPriorityGroup; import com.jaquadro.minecraft.storagedrawers.api.storage.ISmartGroup; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IProtectable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IQuantifiable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; import com.jaquadro.minecraft.storagedrawers.block.BlockDrawers; import com.jaquadro.minecraft.storagedrawers.block.BlockSlave; import com.jaquadro.minecraft.storagedrawers.security.SecurityManager; diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java index 0fa5d1e..1d9c7c0 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/CompDrawerData.java @@ -6,7 +6,11 @@ import net.minecraft.nbt.NBTTagCompound; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.IFractionalDrawer; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IQuantifiable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; public class CompDrawerData extends BaseDrawerData implements IFractionalDrawer, IVoidable, IShroudable, ILockable, IQuantifiable { diff --git a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index f7858e3..62e8d40 100644 --- a/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/main/java/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -7,7 +7,11 @@ import net.minecraftforge.common.MinecraftForge; import com.jaquadro.minecraft.storagedrawers.api.event.DrawerPopulatedEvent; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; -import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.*; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.ILockable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IQuantifiable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IShroudable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute; public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable, ILockable, IQuantifiable {