diff --git a/CHANGELOG.md b/CHANGELOG.md index 0303a460e..3edf8c633 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ - Fixed delay until grid items are visible - Performance improvements +**Features** +- Added a debug storage disk + ### 0.8.3 **Bugfixes** - Fixed drawer controllers not working with external storage diff --git a/src/main/java/refinedstorage/block/EnumStorageType.java b/src/main/java/refinedstorage/block/EnumStorageType.java index e3878a5da..c1447a724 100755 --- a/src/main/java/refinedstorage/block/EnumStorageType.java +++ b/src/main/java/refinedstorage/block/EnumStorageType.java @@ -38,6 +38,10 @@ public enum EnumStorageType implements IStringSerializable { } public static EnumStorageType getById(int id) { + if (id == 5) { + return TYPE_CREATIVE; + } + for (EnumStorageType type : EnumStorageType.values()) { if (type.getId() == id) { return type; diff --git a/src/main/java/refinedstorage/item/ItemStorageDisk.java b/src/main/java/refinedstorage/item/ItemStorageDisk.java index ac8f1c454..689e7867e 100755 --- a/src/main/java/refinedstorage/item/ItemStorageDisk.java +++ b/src/main/java/refinedstorage/item/ItemStorageDisk.java @@ -6,6 +6,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; @@ -14,6 +15,8 @@ import refinedstorage.RefinedStorageItems; import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.block.EnumStorageType; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; public class ItemStorageDisk extends ItemBase { @@ -22,6 +25,9 @@ public class ItemStorageDisk extends ItemBase { public static final int TYPE_16K = 2; public static final int TYPE_64K = 3; public static final int TYPE_CREATIVE = 4; + public static final int TYPE_DEBUG = 5; + + private NBTTagCompound debugDiskTag; public ItemStorageDisk() { super("storage_disk"); @@ -33,11 +39,48 @@ public class ItemStorageDisk extends ItemBase { @Override public void getSubItems(Item item, CreativeTabs tab, List list) { - for (int i = 0; i < 5; ++i) { - list.add(NBTStorage.createStackWithNBT(new ItemStack(item, 1, i))); + for (int i = 0; i < 6; ++i) { + list.add(i == TYPE_DEBUG ? createDebugDisk() : NBTStorage.createStackWithNBT(new ItemStack(item, 1, i))); } } + private ItemStack createDebugDisk() { + ItemStack debugDisk = new ItemStack(RefinedStorageItems.STORAGE_DISK, 1, ItemStorageDisk.TYPE_DEBUG); + + if (debugDiskTag == null) { + debugDiskTag = NBTStorage.createNBT(); + + NBTStorage storage = new NBTStorage(debugDiskTag, -1, null) { + @Override + public int getPriority() { + return 0; + } + }; + + Iterator it = Item.REGISTRY.iterator(); + + while (it.hasNext()) { + Item item = it.next(); + + if (item != RefinedStorageItems.STORAGE_DISK) { + List stacks = new ArrayList(); + + item.getSubItems(item, CreativeTabs.INVENTORY, stacks); + + for (ItemStack itemStack : stacks) { + storage.push(itemStack, 1000, false); + } + } + } + + storage.writeToNBT(); + } + + debugDisk.setTagCompound(debugDiskTag.copy()); + + return debugDisk; + } + @Override public void addInformation(ItemStack disk, EntityPlayer player, List list, boolean b) { int capacity = EnumStorageType.getById(disk.getItemDamage()).getCapacity(); diff --git a/src/main/java/refinedstorage/proxy/ClientProxy.java b/src/main/java/refinedstorage/proxy/ClientProxy.java index cf562f81a..acc3ba74d 100755 --- a/src/main/java/refinedstorage/proxy/ClientProxy.java +++ b/src/main/java/refinedstorage/proxy/ClientProxy.java @@ -31,7 +31,8 @@ public class ClientProxy extends CommonProxy { new ResourceLocation("refinedstorage:4k_storage_disk"), new ResourceLocation("refinedstorage:16k_storage_disk"), new ResourceLocation("refinedstorage:64k_storage_disk"), - new ResourceLocation("refinedstorage:creative_storage_disk") + new ResourceLocation("refinedstorage:creative_storage_disk"), + new ResourceLocation("refinedstorage:debug_storage_disk") ); ModelBakery.registerItemVariants(RefinedStorageItems.STORAGE_PART, @@ -69,6 +70,7 @@ public class ClientProxy extends CommonProxy { ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_DISK, ItemStorageDisk.TYPE_16K, new ModelResourceLocation("refinedstorage:16k_storage_disk", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_DISK, ItemStorageDisk.TYPE_64K, new ModelResourceLocation("refinedstorage:64k_storage_disk", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_DISK, ItemStorageDisk.TYPE_CREATIVE, new ModelResourceLocation("refinedstorage:creative_storage_disk", "inventory")); + ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_DISK, ItemStorageDisk.TYPE_DEBUG, new ModelResourceLocation("refinedstorage:debug_storage_disk", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_PART, ItemStoragePart.TYPE_1K, new ModelResourceLocation("refinedstorage:1k_storage_part", "inventory")); ModelLoader.setCustomModelResourceLocation(RefinedStorageItems.STORAGE_PART, ItemStoragePart.TYPE_4K, new ModelResourceLocation("refinedstorage:4k_storage_part", "inventory")); diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index a1ed83d73..c63b1dbc3 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -117,6 +117,7 @@ item.refinedstorage:storage_disk.1.name=4k Storage Disk item.refinedstorage:storage_disk.2.name=16k Storage Disk item.refinedstorage:storage_disk.3.name=64k Storage Disk item.refinedstorage:storage_disk.4.name=Creative Storage Disk +item.refinedstorage:storage_disk.5.name=Debug Storage Disk item.refinedstorage:wireless_grid.0.name=Wireless Grid item.refinedstorage:wireless_grid.1.name=Creative Wireless Grid item.refinedstorage:quartz_enriched_iron.name=Quartz Enriched Iron diff --git a/src/main/resources/assets/refinedstorage/models/item/debug_storage_disk.json b/src/main/resources/assets/refinedstorage/models/item/debug_storage_disk.json new file mode 100755 index 000000000..4119b149f --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/debug_storage_disk.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/debug_storage_disk" + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/items/debug_storage_disk.png b/src/main/resources/assets/refinedstorage/textures/items/debug_storage_disk.png new file mode 100755 index 000000000..b3b3eefbc Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/items/debug_storage_disk.png differ