From 7c14f2db03b043f0e60471f84fe5662e949b558c Mon Sep 17 00:00:00 2001 From: Cricket Date: Mon, 22 Dec 2014 17:52:31 -0500 Subject: [PATCH] More stream work --- .../chisel/block/BlockPresent.java | 17 ++++++++++++++ .../tileentity/TileEntityAutoChisel.java | 22 ++++++------------ .../render/item/ItemPresentRenderer.java | 6 +++-- .../client/render/tile/RenderPresent.java | 8 +++---- .../cricketcraft/chisel/init/ModBlocks.java | 10 ++------ .../chisel/proxy/ClientProxy.java | 2 +- .../assets/chisel/textures/autochisel-gui.png | Bin 7419 -> 9997 bytes 7 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java index 583ec06b..b51caff4 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java @@ -38,6 +38,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockPresent extends BlockContainer implements ICarvable { private final Random random = new Random(); + private String textureLocation; public CarvableHelper carverHelper; private boolean isChristmas = true; @@ -73,7 +74,23 @@ public class BlockPresent extends BlockContainer implements ICarvable { public ResourceLocation getResourceSingle(int metadata) { if (isChristmas) { switch (metadata) { + case 0: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxBlack.png"); case 1: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxBlue.png"); + case 2: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxCyan.png"); + case 3: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxGreen.png"); + case 4: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxOrange.png"); + case 5: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxPink.png"); + case 6: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxPurple.png"); + case 7: + return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/giftboxYellow.png"); + case 8: return new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/red.png"); default: return null; diff --git a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java index 7cf95308..84a7d7f6 100644 --- a/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java +++ b/src/main/java/com/cricketcraft/chisel/block/tileentity/TileEntityAutoChisel.java @@ -92,11 +92,11 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory } if(isFaster){ - if(!worldObj.isRemote && worldObj.getWorldTime() % 10 == 0){ + if(!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0){ doTransaction(); } } else { - if(!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0){ + if(!worldObj.isRemote && worldObj.getWorldTime() % 40 == 0){ doTransaction(); } } @@ -105,7 +105,7 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory } private void doTransaction(){ - if(!(isSlotNull(BASE) && !(isSlotNull(TARGET)))){ + if(inventory[BASE] != null && inventory[TARGET] != null){ if(inventory[BASE].getItem() instanceof ItemBlock && inventory[TARGET].getItem() instanceof ItemBlock){ Block base = Block.getBlockFromItem(inventory[BASE].getItem()); Block target = Block.getBlockFromItem(inventory[TARGET].getItem()); @@ -116,13 +116,13 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory if(baseCarvable.carverHelper.variations.contains(target)){ if(isStackMode){ if(inventory[BASE].stackSize == inventory[BASE].getMaxStackSize()){ - if(isSlotNull(OUTPUT)){ + if(inventory[OUTPUT] == null){ inventory[OUTPUT] = inventory[BASE]; inventory[BASE] = null; } } } else { - if(isSlotNull(OUTPUT)){ + if(inventory[OUTPUT] == null){ inventory[OUTPUT] = new ItemStack(base, 1, inventory[BASE].getItemDamage()); inventory[BASE].stackSize--; } else if(inventory[BASE].stackSize != 0){ @@ -137,13 +137,13 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory if(targetCarvable.carverHelper.variations.contains(base)){ if(isStackMode){ if(inventory[BASE].stackSize == inventory[BASE].getMaxStackSize()){ - if(isSlotNull(OUTPUT)){ + if(inventory[OUTPUT] == null){ inventory[OUTPUT] = inventory[BASE]; inventory[BASE] = null; } } } else { - if(isSlotNull(OUTPUT)){ + if(inventory[OUTPUT] == null){ inventory[OUTPUT] = new ItemStack(base, 1, inventory[BASE].getItemDamage()); inventory[BASE].stackSize--; } else if(inventory[BASE].stackSize != 0){ @@ -157,14 +157,6 @@ public class TileEntityAutoChisel extends TileEntity implements ISidedInventory } } - private boolean isSlotNull(int slot){ - if(inventory[slot] == null){ - return true; - } else { - return false; - } - } - @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); diff --git a/src/main/java/com/cricketcraft/chisel/client/render/item/ItemPresentRenderer.java b/src/main/java/com/cricketcraft/chisel/client/render/item/ItemPresentRenderer.java index 50bd7463..220a3223 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/item/ItemPresentRenderer.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/item/ItemPresentRenderer.java @@ -1,5 +1,7 @@ package com.cricketcraft.chisel.client.render.item; +import com.cricketcraft.chisel.block.BlockPresent; +import net.minecraft.block.Block; import net.minecraft.client.model.ModelChest; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -13,7 +15,7 @@ import cpw.mods.fml.client.FMLClientHandler; public class ItemPresentRenderer implements IItemRenderer { private final ModelChest model = new ModelChest(); - + private final BlockPresent present = new BlockPresent(); @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type != ItemRenderType.FIRST_PERSON_MAP; @@ -26,7 +28,7 @@ public class ItemPresentRenderer implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation(Chisel.MOD_ID, "textures/blocks/present/red.png")); + FMLClientHandler.instance().getClient().renderEngine.bindTexture(present.getResourceSingle(item.getItemDamage())); switch (type) { case ENTITY: renderBlock(0.0F, 0.0F, 0.0F); diff --git a/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderPresent.java b/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderPresent.java index 5a135cfe..0fb1c775 100644 --- a/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderPresent.java +++ b/src/main/java/com/cricketcraft/chisel/client/render/tile/RenderPresent.java @@ -35,9 +35,9 @@ public class RenderPresent extends TileEntityChestRenderer { Block block = present.getBlockType(); i = present.getBlockMetadata(); - if (block instanceof BlockChest && i == 0) { + if (block instanceof BlockPresent && i == 0) { try { - ((BlockChest) block).func_149954_e(present.getWorldObj(), present.xCoord, present.yCoord, present.zCoord); + ((BlockPresent) block).changeMetadataBasedOffSpecs(present.getWorldObj(), present.xCoord, present.yCoord, present.zCoord); } catch (ClassCastException e) { FMLLog.severe("[Chisel 2] Attempted to render a present at %d, %d, %d that was not a present", present.xCoord, present.yCoord, present.zCoord); } @@ -53,10 +53,10 @@ public class RenderPresent extends TileEntityChestRenderer { if (present.adjacentChestXPos == null && present.adjacentChestZPos == null) { modelchest = this.chest; - this.bindTexture(blockPresent.getResourceSingle(1)); + this.bindTexture(blockPresent.getResourceSingle(present.getBlockMetadata())); } else { modelchest = this.doubleChest; - this.bindTexture(blockPresent.getResourceDouble(1)); + this.bindTexture(blockPresent.getResourceDouble(present.getBlockMetadata())); } GL11.glPushMatrix(); diff --git a/src/main/java/com/cricketcraft/chisel/init/ModBlocks.java b/src/main/java/com/cricketcraft/chisel/init/ModBlocks.java index 6dc018a7..d6742f81 100644 --- a/src/main/java/com/cricketcraft/chisel/init/ModBlocks.java +++ b/src/main/java/com/cricketcraft/chisel/init/ModBlocks.java @@ -6,6 +6,7 @@ import com.cricketcraft.chisel.block.*; import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; import com.cricketcraft.chisel.carving.Carving; +import com.cricketcraft.chisel.client.render.item.ItemPresentRenderer; import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.item.ItemMarbleSlab; import cpw.mods.fml.common.registry.GameRegistry; @@ -76,7 +77,7 @@ public class ModBlocks { public static BlockVoidstonePillar voidstonePillar; public static BlockVoidstonePillar2 voidstonePillar2; public static Block autoChisel; - public static BlockPresent present; + public static BlockPresent[] present = new BlockPresent[16]; public static BlockSnakestone snakestone; public static BlockSnakestone sandSnakestone; public static BlockSnakestoneObsidian obsidianSnakestone; @@ -1338,14 +1339,7 @@ public class ModBlocks { } if (Configurations.featureEnabled("chest")) { - //TODO: will be done at winter time - present = (BlockPresent) new BlockPresent().setHardness(2.5F).setStepSound(Block.soundTypeWood); Carving.chisel.addVariation("chest", Blocks.chest, 0, 0); - present.carverHelper.addVariation(StatCollector.translateToLocal("tile.present.0.desc"), 0, present, 1); - present.carverHelper.addVariation(StatCollector.translateToLocal("tile.present.1.desc"), 1, present, 1); - present.carverHelper.addVariation(StatCollector.translateToLocal("tile.present.2.desc"), 2, present, 1); - present.carverHelper.addVariation(StatCollector.translateToLocal("tile.present.3.desc"), 3, present, 1); - present.carverHelper.register(present, "present"); Carving.chisel.registerOre("chest", "chest"); } diff --git a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java index 8c99dff8..229bf41a 100644 --- a/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java +++ b/src/main/java/com/cricketcraft/chisel/proxy/ClientProxy.java @@ -58,7 +58,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPresent.class, new RenderPresent()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.autoChisel), new ItemAutoChiselRenderer()); - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.present), new ItemPresentRenderer()); + //MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.present), new ItemPresentRenderer()); RenderingRegistry.registerEntityRenderingHandler(EntityCloudInABottle.class, new RenderSnowball(ModItems.itemCloudInABottle)); RenderingRegistry.registerEntityRenderingHandler(EntityBallOMoss.class, new RenderSnowball(ModItems.itemBallOMoss)); diff --git a/src/main/resources/assets/chisel/textures/autochisel-gui.png b/src/main/resources/assets/chisel/textures/autochisel-gui.png index a090d5830a314d66e274d08cc754b86f63106a7a..563c58388ae39adaaab91f4f947d8c3f1aa0fbf3 100644 GIT binary patch literal 9997 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