From bbad2a9a81538c19ffc6036770a781074eadb7c1 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Fri, 27 Nov 2015 02:24:15 -0500 Subject: [PATCH] Creative storage and vending upgrades --- .../assets/storagedrawers/lang/en_US.lang | 5 ++ .../textures/items/upgrade_creative_store.png | Bin 0 -> 457 bytes .../textures/items/upgrade_creative_vend.png | Bin 0 -> 482 bytes .../storagedrawers/block/BlockController.java | 16 ++++ .../storagedrawers/block/BlockDrawers.java | 2 +- .../block/tile/TileEntityDrawers.java | 24 ++++++ .../block/tile/TileEntityDrawersComp.java | 22 ++++++ .../block/tile/TileEntityDrawersStandard.java | 10 +++ .../client/renderer/DrawersRenderer.java | 2 +- .../storagedrawers/config/ConfigManager.java | 2 + .../storagedrawers/core/ModItems.java | 4 + .../storagedrawers/integration/Waila.java | 4 +- .../item/ItemUpgradeCreative.java | 73 ++++++++++++++++++ .../storagedrawers/item/ItemUpgradeVoid.java | 4 - .../storage/DefaultStorageProvider.java | 10 +++ .../storagedrawers/storage/DrawerData.java | 12 +++ .../storage/IStorageProvider.java | 4 + 17 files changed, 187 insertions(+), 7 deletions(-) create mode 100644 resources/assets/storagedrawers/textures/items/upgrade_creative_store.png create mode 100644 resources/assets/storagedrawers/textures/items/upgrade_creative_vend.png create mode 100644 src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeCreative.java diff --git a/resources/assets/storagedrawers/lang/en_US.lang b/resources/assets/storagedrawers/lang/en_US.lang index 3048ba1..8a3e94d 100644 --- a/resources/assets/storagedrawers/lang/en_US.lang +++ b/resources/assets/storagedrawers/lang/en_US.lang @@ -24,6 +24,10 @@ item.storagedrawers.upgradeLock.name=Drawer Key item.storagedrawers.upgradeLock.description=Locks and unlocks drawers item.storagedrawers.upgradeVoid.name=Void Upgrade item.storagedrawers.upgradeVoid.description=Destroys excess items +item.storagedrawers.upgradeCreative.store.name=Creative Storage Upgrade +item.storagedrawers.upgradeCreative.store.description=Near-infinite storage +item.storagedrawers.upgradeCreative.vend.name=Creative Vending Upgrade +item.storagedrawers.upgradeCreative.vend.description=Unlimited item withdrawal item.storagedrawers.upgradeSorting.name=Sorting Upgrade item.storagedrawers.upgradeSorting.description=For Refined Relocation item.storagedrawers.shroudKey.name=Concealment Key @@ -127,6 +131,7 @@ storageDrawers.config.prop.enableStorageUpgrades=Enable Storage Upgrades storageDrawers.config.prop.enableLockUpgrades=Enable Drawer Locking storageDrawers.config.prop.enableShroudUpgrades=Enable Item Concealing storageDrawers.config.prop.enableVoidUpgrades=Enable Void Upgrade +storageDrawers.config.prop.enableCreativeUpgrades=Enable Creative Upgrade storageDrawers.config.prop.enableSortingUpgrades=Enable Sorting Upgrade storageDrawers.config.prop.enableSortingUpgrades.tooltip=Refined Relocation must be loaded. storageDrawers.config.prop.renderStorageUpgrades=Render Storage Upgrades diff --git a/resources/assets/storagedrawers/textures/items/upgrade_creative_store.png b/resources/assets/storagedrawers/textures/items/upgrade_creative_store.png new file mode 100644 index 0000000000000000000000000000000000000000..a8adb41d5ed057fcae8c44234264ada685ccfb18 GIT binary patch literal 457 zcmV;)0XF`LP)WdKxlWgs#(AVGC!ATls9G$1lDIy5pmGczD9Ff}kRJ3!xc00007bV*G` z2j2@D1}YG#B}FR$000SaNLh0L01EH`01EH{Laa2H00004XF*Lt006O%3;baP0003X zNklLgs_ySwKW)h%uPM#l;5J#L2?S z@b=SJIRF0r`wSa4Y+wio2msR{J`AwHH0r2{FvyCCf(4sq>_>5hqM{;L^OY-C;D(?W z@a@|#22mbfh95tEFmP~iFw|u@g4rMd(*&YdPAO(!$mxaiQCtAh2m_DbyoR%1AL(WI za|7ZskU9qk2S#Mqv0&2#^9oEHSq>e*4LEh-8C>ub!!vjQ!n}yr0FVMR11Yf0AisAl zI1X2k7@`Ar)!IE5u^Rxg4d(3EUp~V%fdD9QK>!x0IK6-?43OoKy@g=_NE1jAj7A3# zm%PDkz=2bDz^M-ufWmy-C@B#VPS3EqfMNguXY!x^q16Wq00000NkvXXu0mjf>;0(s literal 0 HcmV?d00001 diff --git a/resources/assets/storagedrawers/textures/items/upgrade_creative_vend.png b/resources/assets/storagedrawers/textures/items/upgrade_creative_vend.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9cf0b6c6f1194eefbd063c0d43a1ad96dba688 GIT binary patch literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Iwh_VCC){ui6xo&c?uz!xv2~x zrKt)=W(tm_=?X>$h9(L|hE^ssB(x(22O2G$PuOM&{>OFVsD+3#~pvl&Y-{cgG& zD8yOd5n0T@!1V!y8J*Uc%m50qq&xaLGB9lH=l+w(%D}*A>FMGaQgJIeLE=k7(W_Jc zt1r*{%YO0351$sE3rSm2Ew(?Gn!%Ro^sJeIyW<3pA=~U@M~||JJxNJSt@!;?dro~^ zkuLLLIW{(B@s2cs`yGzli3}bK`(|-8uj$Z;*pPXwZU^_CGZGR!^VykAvkhZ@*GuGZ zoG@U^Wou!)zwd97z|)7RKR!NYXJ%(-caCjSp25p>eVvm@qe*=A{i6pIPB1)Qyn|th zAe-F&O5XI(C-f74=x>_rD14%>pr=={yv#zmNMd8cWtPueJ~EMfvIlrAN*_wbd=NQo zT)}W?PseqJ2~5V!nj6k4>@U}~;0vE1v52|+>MdLGjnWL8c%Qww9&dNpw2?uhz>z_0 zg~i?mZJr5FC+=+pdO_Gju*Z#EVEUeexd$49%MYyN7il 0 ? block.getIndSteps() : 1000; - float fillAmt = (float)(step * count / cap) / step; + float fillAmt = (float)((double)step * count / cap) / step; return x + (w * fillAmt); } diff --git a/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java b/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java index 9fcbc1b..a7f19a7 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java +++ b/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java @@ -58,6 +58,7 @@ public class ConfigManager public boolean enableStorageUpgrades; public boolean enableLockUpgrades; public boolean enableVoidUpgrades; + public boolean enableCreativeUpgrades; public boolean enableShroudUpgrades; public boolean enableSortingUpgrades; public boolean renderStorageUpgrades; @@ -224,6 +225,7 @@ public class ConfigManager cache.enableStorageUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableStorageUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableStorageUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enableLockUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableLockUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableLockUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enableVoidUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableVoidUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableVoidUpgrades").setRequiresMcRestart(true).getBoolean(); + cache.enableCreativeUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableCreativeUpgrades", true).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.enableSortingUpgrades = config.get(Configuration.CATEGORY_GENERAL, "enableSortingUpgrades", true).setLanguageKey(LANG_PREFIX + "prop.enableSortingUpgrades").setRequiresMcRestart(true).getBoolean(); cache.enableTape = config.get(Configuration.CATEGORY_GENERAL, "enableTape", true).setLanguageKey(LANG_PREFIX + "prop.enableTape").setRequiresMcRestart(true).getBoolean(); diff --git a/src/com/jaquadro/minecraft/storagedrawers/core/ModItems.java b/src/com/jaquadro/minecraft/storagedrawers/core/ModItems.java index 3611241..a16346f 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/core/ModItems.java +++ b/src/com/jaquadro/minecraft/storagedrawers/core/ModItems.java @@ -12,6 +12,7 @@ public class ModItems public static ItemUpgradeStatus upgradeStatus; public static ItemUpgradeLock upgradeLock; public static ItemUpgradeVoid upgradeVoid; + public static ItemUpgradeCreative upgradeCreative; public static ItemShroudKey shroudKey; public static ItemTape tape; @@ -21,6 +22,7 @@ public class ModItems upgradeStatus = new ItemUpgradeStatus(makeName("upgradeStatus")); upgradeLock = new ItemUpgradeLock(makeName("upgradeLock")); upgradeVoid = new ItemUpgradeVoid(makeName("upgradeVoid")); + upgradeCreative = new ItemUpgradeCreative(makeName("upgradeCreative")); shroudKey = new ItemShroudKey(makeName("shroudKey")); tape = new ItemTape(makeName("tape")); @@ -32,6 +34,8 @@ public class ModItems GameRegistry.registerItem(upgradeStatus, "upgradeStatus"); if (StorageDrawers.config.cache.enableVoidUpgrades) GameRegistry.registerItem(upgradeVoid, "upgradeVoid"); + if (StorageDrawers.config.cache.enableCreativeUpgrades) + GameRegistry.registerItem(upgradeCreative, "upgradeCreative"); if (StorageDrawers.config.cache.enableLockUpgrades) GameRegistry.registerItem(upgradeLock, "upgradeLock"); if (StorageDrawers.config.cache.enableShroudUpgrades) diff --git a/src/com/jaquadro/minecraft/storagedrawers/integration/Waila.java b/src/com/jaquadro/minecraft/storagedrawers/integration/Waila.java index 0939914..54e322e 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/integration/Waila.java +++ b/src/com/jaquadro/minecraft/storagedrawers/integration/Waila.java @@ -76,7 +76,9 @@ public class Waila extends IntegrationModule for (int j = 0, n = handlers.size(); j < n; j++) stackName = handlers.get(j).transformItemName(drawer, stackName); - if (drawer instanceof IFractionalDrawer && ((IFractionalDrawer) drawer).getConversionRate() > 1) + if (drawer.getStoredItemCount() == Integer.MAX_VALUE) + name = stackName + " [\u221E]"; + else if (drawer instanceof IFractionalDrawer && ((IFractionalDrawer) drawer).getConversionRate() > 1) name = stackName + ((i == 0) ? " [" : " [+") + ((IFractionalDrawer) drawer).getStoredItemRemainder() + "]"; else if (StorageDrawers.config.cache.stackRemainderWaila) { int stacks = drawer.getStoredItemCount() / drawer.getStoredItemStackSize(); diff --git a/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeCreative.java b/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeCreative.java new file mode 100644 index 0000000..77cd5ba --- /dev/null +++ b/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeCreative.java @@ -0,0 +1,73 @@ +package com.jaquadro.minecraft.storagedrawers.item; + +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; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; + +import java.util.List; + +public class ItemUpgradeCreative extends Item +{ + public static final String[] iconNames = new String[] { "store", "vend" }; + + @SideOnly(Side.CLIENT) + private IIcon[] icons; + + public ItemUpgradeCreative (String name) { + setUnlocalizedName(name); + setHasSubtypes(true); + setCreativeTab(ModCreativeTabs.tabStorageDrawers); + setMaxDamage(0); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage (int meta) { + return icons[MathHelper.clamp_int(meta, 0, iconNames.length - 1)]; + } + + @Override + public String getUnlocalizedName (ItemStack itemStack) { + int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, iconNames.length - 1); + if (iconNames[meta] == null) + return super.getUnlocalizedName(); + + return super.getUnlocalizedName() + "." + iconNames[meta]; + } + + @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")); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems (Item item, CreativeTabs creativeTabs, List list) { + for (int i = 0, n = iconNames.length; i < n; i++) { + if (iconNames[i] != null) + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons (IIconRegister register) { + icons = new IIcon[iconNames.length]; + + for (int i = 0, n = iconNames.length; i < n; i++) { + if (iconNames[i] != null) + icons[i] = register.registerIcon(StorageDrawers.MOD_ID + ":upgrade_creative_" + iconNames[i]); + } + } +} diff --git a/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeVoid.java b/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeVoid.java index 569555e..1a9f39e 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeVoid.java +++ b/src/com/jaquadro/minecraft/storagedrawers/item/ItemUpgradeVoid.java @@ -1,13 +1,9 @@ package com.jaquadro.minecraft.storagedrawers.item; -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; -import net.minecraft.entity.EntityLivingBase; -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; diff --git a/src/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java b/src/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java index d08a9e9..c5bfb80 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java +++ b/src/com/jaquadro/minecraft/storagedrawers/storage/DefaultStorageProvider.java @@ -57,6 +57,16 @@ public class DefaultStorageProvider implements IStorageProvider return false; } + @Override + public boolean isStorageUnlimited (int slot) { + return false; + } + + @Override + public boolean isVendingUnlimited (int slot) { + return false; + } + @Override public void markAmountDirty (int slot) { if (tile.getWorldObj().isRemote) diff --git a/src/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java b/src/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java index a7fef2c..5a77467 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java +++ b/src/com/jaquadro/minecraft/storagedrawers/storage/DrawerData.java @@ -71,6 +71,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable @Override public int getStoredItemCount () { + if (protoStack != nullStack && storageProvider.isVendingUnlimited(slot)) + return Integer.MAX_VALUE; + return count; } @@ -80,6 +83,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable } public void setStoredItemCount (int amount, boolean mark, boolean clearOnEmpty) { + if (storageProvider.isVendingUnlimited(slot)) + return; + count = amount; if (count > getMaxCapacity()) count = getMaxCapacity(); @@ -106,6 +112,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable if (itemPrototype == null || itemPrototype.getItem() == null) return 0; + if (storageProvider.isStorageUnlimited(slot) || storageProvider.isVendingUnlimited(slot)) + return Integer.MAX_VALUE; + return itemPrototype.getItem().getItemStackLimit(itemPrototype) * storageProvider.getSlotStackCapacity(slot); } @@ -114,6 +123,9 @@ public class DrawerData extends BaseDrawerData implements IVoidable, IShroudable if (protoStack.getItem() == null) return 0; + if (storageProvider.isVendingUnlimited(slot)) + return Integer.MAX_VALUE; + return getMaxCapacity() - getStoredItemCount(); } diff --git a/src/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java b/src/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java index cdca607..c7274e2 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java +++ b/src/com/jaquadro/minecraft/storagedrawers/storage/IStorageProvider.java @@ -21,6 +21,10 @@ public interface IStorageProvider public boolean setIsShrouded (int slot, boolean state); + public boolean isStorageUnlimited (int slot); + + public boolean isVendingUnlimited (int slot); + public void markAmountDirty (int slot); public void markDirty (int slot);