From 3f02d5cd0e4044208b440a04c75fa1af9c1d591c Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 13 Oct 2015 18:48:44 +0200 Subject: [PATCH] Chest To Storage Crate Upgrade & Textures to be made --- TexturesToBeMade.txt | 5 + .../actuallyadditions/items/InitItems.java | 5 + .../items/ItemChestToCrateUpgrade.java | 97 +++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 src/main/java/ellpeck/actuallyadditions/items/ItemChestToCrateUpgrade.java diff --git a/TexturesToBeMade.txt b/TexturesToBeMade.txt index 59d9f5607..be32d2982 100644 --- a/TexturesToBeMade.txt +++ b/TexturesToBeMade.txt @@ -4,3 +4,8 @@ This file is a reminder to Glenthor for what textures he should make or change. If you want to give making some of these textures a go, go ahead and make a pull request when you're done. -------------------------------------------------------------------------------------------------------------- +-Chest To Storage Crate Upgrade (right click on chest to turn into storage crate) "itemChestToCrateUpgrade" + +-Crafty Crate (Storage Crate with Crafting inside of it) "blockCraftyCrate" + +-Storage Crate To Crafty Crate Upgrade "itemCrateToCraftyUpgrade" diff --git a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java index a7f9b2923..345ed051d 100644 --- a/src/main/java/ellpeck/actuallyadditions/items/InitItems.java +++ b/src/main/java/ellpeck/actuallyadditions/items/InitItems.java @@ -125,9 +125,14 @@ public class InitItems{ public static Item itemMagnetRing; public static Item itemWaterRemovalRing; + public static Item itemChestToCrateUpgrade; + public static void init(){ ModUtil.LOGGER.info("Initializing Items..."); + itemChestToCrateUpgrade = new ItemChestToCrateUpgrade(); + ItemUtil.register(itemChestToCrateUpgrade); + itemLexicon = new ItemBooklet(); ItemUtil.register(itemLexicon); diff --git a/src/main/java/ellpeck/actuallyadditions/items/ItemChestToCrateUpgrade.java b/src/main/java/ellpeck/actuallyadditions/items/ItemChestToCrateUpgrade.java new file mode 100644 index 000000000..a769fc155 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/items/ItemChestToCrateUpgrade.java @@ -0,0 +1,97 @@ +/* + * This file ("ItemChestToCrateUpgrade.java") is part of the Actually Additions Mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://github.com/Ellpeck/ActuallyAdditions/blob/master/README.md + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015 Ellpeck + */ + +package ellpeck.actuallyadditions.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ellpeck.actuallyadditions.blocks.InitBlocks; +import ellpeck.actuallyadditions.tile.TileEntityGiantChest; +import ellpeck.actuallyadditions.util.IActAddItemOrBlock; +import ellpeck.actuallyadditions.util.ModUtil; +import net.minecraft.block.BlockChest; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class ItemChestToCrateUpgrade extends Item implements IActAddItemOrBlock{ + + @Override + public boolean onItemUse(ItemStack heldStack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10){ + if(player.isSneaking()){ + TileEntity tileHit = world.getTileEntity(x, y, z); + if(world.getBlock(x, y, z) instanceof BlockChest && tileHit instanceof TileEntityChest){ + if(!world.isRemote){ + TileEntityChest chest = (TileEntityChest)tileHit; + + //Copy Slots + ItemStack[] stacks = new ItemStack[chest.getSizeInventory()]; + for(int i = 0; i < stacks.length; i++){ + ItemStack aStack = chest.getStackInSlot(i); + if(aStack != null){ + stacks[i] = aStack.copy(); + chest.setInventorySlotContents(i, null); + } + } + + //Set New Block + world.setBlock(x, y, z, InitBlocks.blockGiantChest, 0, 2); + + //Copy Items into new Chest + TileEntity newTileHit = world.getTileEntity(x, y, z); + if(newTileHit instanceof TileEntityGiantChest){ + TileEntityGiantChest newChest = (TileEntityGiantChest)newTileHit; + for(int i = 0; i < stacks.length; i++){ + if(stacks[i] != null){ + if(newChest.getSizeInventory() > i){ + newChest.setInventorySlotContents(i, stacks[i].copy()); + } + } + } + } + + if(!player.capabilities.isCreativeMode){ + heldStack.stackSize--; + } + } + return true; + } + } + + return super.onItemUse(heldStack, player, world, x, y, z, par7, par8, par9, par10); + } + + @Override + public EnumRarity getRarity(ItemStack stack){ + return EnumRarity.rare; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconReg){ + this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER+":"+this.getName()); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass){ + return this.itemIcon; + } + + @Override + public String getName(){ + return "itemChestToCrateUpgrade"; + } +}