From 401d313409ca088156f5e7658cdb744a9d2d2cb7 Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Sat, 21 Dec 2013 03:01:31 +0200 Subject: Changed Shadow Ingot image, added item renders to the blocks and working on item dropping --- .../block/BlockJewelrsCraftingTable.java | 46 ++++-- .../darkknight/jewelrycraft/block/BlockMolder.java | 89 ++++------- .../jewelrycraft/block/BlockSmelter.java | 41 ++--- common/darkknight/jewelrycraft/item/ItemRing.java | 2 +- .../TileEntityJewelrsCraftingTableRender.java | 170 ++++++++++++++++++++- .../renders/TileEntityMolderRender.java | 52 ++++++- .../tileentity/TileEntityJewelrsCraftingTable.java | 23 ++- 7 files changed, 301 insertions(+), 122 deletions(-) (limited to 'common') diff --git a/common/darkknight/jewelrycraft/block/BlockJewelrsCraftingTable.java b/common/darkknight/jewelrycraft/block/BlockJewelrsCraftingTable.java index e67249c..4f327ff 100644 --- a/common/darkknight/jewelrycraft/block/BlockJewelrsCraftingTable.java +++ b/common/darkknight/jewelrycraft/block/BlockJewelrsCraftingTable.java @@ -6,6 +6,7 @@ import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -49,30 +50,33 @@ public class BlockJewelrsCraftingTable extends BlockContainer ItemStack item = entityPlayer.inventory.getCurrentItem(); if (te != null && !world.isRemote) { - if (!te.hasJewel && item != null && item.getItem().itemID == ItemList.ring.itemID) + te.isDirty = true; + if (!te.hasEndItem && !te.hasJewel && item != null && item.getItem().itemID == ItemList.ring.itemID) { te.jewel = item.copy(); te.hasJewel = true; --item.stackSize; + entityPlayer.inventory.onInventoryChanged(); } - if (!te.hasModifier && item != null && item.getItem().itemID == modifiers[0]) + if (!te.hasEndItem && !te.hasModifier && item != null && item.getItem().itemID == modifiers[0]) { te.modifier = item.copy(); + te.modifier.stackSize = 1; te.hasModifier = true; --item.stackSize; + entityPlayer.inventory.onInventoryChanged(); } + if(te.hasEndItem && item != null) entityPlayer.addChatMessage("First take out the crafted jewel before inserting new stuff."); if (te.hasModifier && entityPlayer.isSneaking()) { - entityPlayer.inventory.addItemStackToInventory(te.modifier); - entityPlayer.inventory.onInventoryChanged(); + dropItem( world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.modifier); te.modifier = new ItemStack(0, 0, 0); te.hasModifier = false; } if (te.hasJewel && entityPlayer.isSneaking()) { - entityPlayer.inventory.addItemStackToInventory(te.jewel); - entityPlayer.inventory.onInventoryChanged(); + dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.jewel); te.jewel = new ItemStack(0, 0, 0); te.hasJewel = false; } @@ -82,13 +86,33 @@ public class BlockJewelrsCraftingTable extends BlockContainer return true; } - public void giveJewelToPlayer(TileEntityJewelrsCraftingTable cf, EntityPlayer player, ItemStack item, ItemStack modifier) + public void dropItem(World world, double x, double y, double z, ItemStack stack) + { + EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 1D, z + 0.5D, stack); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.21000000298023224D; + world.spawnEntityInWorld(entityitem); + } + + public void breakBlock(World world, int i, int j, int k, int par5, int par6) + { + TileEntityJewelrsCraftingTable te = (TileEntityJewelrsCraftingTable) world.getBlockTileEntity(i, j, k); + if (te != null) + { + if(te.hasModifier) dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.modifier); + if(te.hasJewel) dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.jewel); + if(te.hasEndItem) giveJewelToPlayer(te, te.endItem, te.modifier); + } + super.breakBlock(world, i, j, k, par5, par6); + } + + public void giveJewelToPlayer(TileEntityJewelrsCraftingTable cf, ItemStack item, ItemStack modifier) { if (item != null) { ItemRing.addEffect(item, Potion.fireResistance.id); - player.inventory.addItemStackToInventory(item); - player.inventory.onInventoryChanged(); + dropItem(cf.worldObj, (double)cf.xCoord, (double)cf.yCoord, (double)cf.zCoord, item); } } @@ -107,7 +131,7 @@ public class BlockJewelrsCraftingTable extends BlockContainer { if (te.hasEndItem) { - giveJewelToPlayer(te, player, te.endItem, te.modifier); + giveJewelToPlayer(te, te.endItem, te.modifier); te.endItem = new ItemStack(0, 0, 0); te.hasEndItem = false; } @@ -117,7 +141,7 @@ public class BlockJewelrsCraftingTable extends BlockContainer player.addChatMessage("You're missing a ring"); else if (!te.hasModifier && !world.isRemote) player.addChatMessage("You need a modifier"); - te.timer = 5; + te.timer = 2000; te.isDirty = true; } } diff --git a/common/darkknight/jewelrycraft/block/BlockMolder.java b/common/darkknight/jewelrycraft/block/BlockMolder.java index 7967cbd..a58323b 100644 --- a/common/darkknight/jewelrycraft/block/BlockMolder.java +++ b/common/darkknight/jewelrycraft/block/BlockMolder.java @@ -8,10 +8,8 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; -import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import darkknight.jewelrycraft.item.ItemList; @@ -21,25 +19,25 @@ import darkknight.jewelrycraft.tileentity.TileEntityMolder; public class BlockMolder extends BlockContainer { Random rand = new Random(); - + protected BlockMolder(int par1, Material par2Material) { super(par1, par2Material); this.setBlockBounds(0.1F, 0F, 0.1F, 0.9F, 0.2F, 0.9F); } - + @Override public TileEntity createNewTileEntity(World world) { return new TileEntityMolder(); } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9) { @@ -56,64 +54,37 @@ public class BlockMolder extends BlockContainer } if (te.hasMold && entityPlayer.isSneaking() && !world.isRemote) { - entityPlayer.inventory.addItemStackToInventory(new ItemStack(te.mold.itemID, 1, te.mold.getItemDamage())); - entityPlayer.inventory.onInventoryChanged(); + dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.mold); te.mold = new ItemStack(0, 0, 0); te.hasMold = false; te.isDirty = true; } return true; } + + public void dropItem(World world, double x, double y, double z, ItemStack stack) + { + EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 0.5D, z + 0.5D, stack); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.11000000298023224D; + world.spawnEntityInWorld(entityitem); + } - @Override - public void onBlockDestroyedByPlayer(World world, int i, int j, int k, int par5) + public void breakBlock(World world, int i, int j, int k, int par5, int par6) { TileEntityMolder te = (TileEntityMolder) world.getBlockTileEntity(i, j, k); + if (te != null) { - float f = this.rand.nextFloat() * 0.8F + 0.1F; - float f1 = this.rand.nextFloat() * 0.8F + 0.1F; - float f2 = this.rand.nextFloat() * 0.8F + 0.1F; - if (te.hasMold) - { - EntityItem entityitem = new EntityItem(world, i + f, j + f1, k + f2, new ItemStack(te.mold.itemID, 1, te.mold.getItemDamage())); - - if (te.mold.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) te.mold.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) this.rand.nextGaussian() * f3; - entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.rand.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); - } - if (te.hasJewelBase) - { - EntityItem entityitem = new EntityItem(world, i + f, j + f1, k + f2, new ItemStack(te.jewelBase.itemID, 1, te.jewelBase.getItemDamage())); - - if (te.jewelBase.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) te.jewelBase.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) this.rand.nextGaussian() * f3; - entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.rand.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); - } + if(te.hasJewelBase) giveJewelToPlayer(te, te.jewelBase, te.ringMetal); + if(te.hasMold) dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.mold); } + + super.breakBlock(world, i, j, k, par5, par6); } - - @Override - public void onBlockDestroyedByExplosion(World world, int i, int j, int k, Explosion par5Explosion) - { - onBlockDestroyedByPlayer(world, i, j, k, 0); - } - - public void giveJewelToPlayer(TileEntityMolder md, EntityPlayer player, ItemStack item, ItemStack metal) + + public void giveJewelToPlayer(TileEntityMolder md, ItemStack item, ItemStack metal) { if (item != null) { @@ -121,11 +92,11 @@ public class BlockMolder extends BlockContainer { ItemRing.addMetal(item, metal); } - player.inventory.addItemStackToInventory(item); - player.inventory.onInventoryChanged(); + dropItem(md.worldObj, (double)md.xCoord, (double)md.yCoord, (double)md.zCoord, item); + md.isDirty = true; } } - + @Override public void onBlockClicked(World world, int i, int j, int k, EntityPlayer player) { @@ -134,7 +105,7 @@ public class BlockMolder extends BlockContainer { if (me.hasJewelBase) { - giveJewelToPlayer(me, player, me.jewelBase, me.ringMetal); + giveJewelToPlayer(me, me.jewelBase, me.ringMetal); me.jewelBase = new ItemStack(0, 0, 0); me.hasJewelBase = false; } @@ -147,25 +118,25 @@ public class BlockMolder extends BlockContainer me.isDirty = true; } } - + @Override public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l) { return false; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public int getRenderType() { return -1; } - + @Override public void registerIcons(IconRegister icon) { diff --git a/common/darkknight/jewelrycraft/block/BlockSmelter.java b/common/darkknight/jewelrycraft/block/BlockSmelter.java index 5576ea3..f58812b 100644 --- a/common/darkknight/jewelrycraft/block/BlockSmelter.java +++ b/common/darkknight/jewelrycraft/block/BlockSmelter.java @@ -9,11 +9,9 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; -import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import darkknight.jewelrycraft.tileentity.TileEntityMolder; @@ -40,37 +38,20 @@ public class BlockSmelter extends BlockContainer return false; } - @Override - public void onBlockDestroyedByPlayer(World world, int i, int j, int k, int par5) + public void dropItem(World world, double x, double y, double z, ItemStack stack) { - TileEntitySmelter te = (TileEntitySmelter) world.getBlockTileEntity(i, j, k); - if (te != null) - { - float f = this.rand.nextFloat() * 0.8F + 0.1F; - float f1 = this.rand.nextFloat() * 0.8F + 0.1F; - float f2 = this.rand.nextFloat() * 0.8F + 0.1F; - if (te.hasMetal) - { - EntityItem entityitem = new EntityItem(world, i + f, j + f1, k + f2, new ItemStack(te.metal.itemID, 1, te.metal.getItemDamage())); - - if (te.metal.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound) te.metal.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float) this.rand.nextGaussian() * f3; - entityitem.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float) this.rand.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); - } - } + EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 1.3D, z + 0.5D, stack); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.11000000298023224D; + world.spawnEntityInWorld(entityitem); } - @Override - public void onBlockDestroyedByExplosion(World world, int i, int j, int k, Explosion par5Explosion) + public void breakBlock(World world, int i, int j, int k, int par5, int par6) { - onBlockDestroyedByPlayer(world, i, j, k, 0); + TileEntitySmelter te = (TileEntitySmelter) world.getBlockTileEntity(i, j, k); + if (te != null && te.hasMetal) dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.metal); + super.breakBlock(world, i, j, k, par5, par6); } @Override @@ -99,7 +80,7 @@ public class BlockSmelter extends BlockContainer if (te.hasMetal && entityPlayer.isSneaking()) { - entityPlayer.dropPlayerItem(te.metal); + dropItem(world, (double)te.xCoord, (double)te.yCoord, (double)te.zCoord, te.metal); te.hasMetal = false; } world.setBlockTileEntity(i, j, k, te); diff --git a/common/darkknight/jewelrycraft/item/ItemRing.java b/common/darkknight/jewelrycraft/item/ItemRing.java index 1c533e4..3368032 100644 --- a/common/darkknight/jewelrycraft/item/ItemRing.java +++ b/common/darkknight/jewelrycraft/item/ItemRing.java @@ -43,7 +43,7 @@ public class ItemRing extends ItemBase return 0; } - public int color(ItemStack stack) throws IOException + public static int color(ItemStack stack) throws IOException { if (stack.hasTagCompound()) { diff --git a/common/darkknight/jewelrycraft/renders/TileEntityJewelrsCraftingTableRender.java b/common/darkknight/jewelrycraft/renders/TileEntityJewelrsCraftingTableRender.java index 6d674ef..dc56d02 100644 --- a/common/darkknight/jewelrycraft/renders/TileEntityJewelrsCraftingTableRender.java +++ b/common/darkknight/jewelrycraft/renders/TileEntityJewelrsCraftingTableRender.java @@ -2,13 +2,17 @@ package darkknight.jewelrycraft.renders; import org.lwjgl.opengl.GL11; +import darkknight.jewelrycraft.item.ItemRing; import darkknight.jewelrycraft.model.ModelJewlersCraftingBench; +import darkknight.jewelrycraft.tileentity.TileEntityJewelrsCraftingTable; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -17,17 +21,19 @@ public class TileEntityJewelrsCraftingTableRender extends TileEntitySpecialRende { ModelJewlersCraftingBench modelTable = new ModelJewlersCraftingBench(); String texture = "textures/tileentities/JewelrsCraftingBench.png"; - + @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); - + ResourceLocation blockTexture = new ResourceLocation("jewelrycraft", texture); Minecraft.getMinecraft().renderEngine.bindTexture(blockTexture); + Tessellator tessellator = Tessellator.instance; int block = te.getBlockMetadata(); - + TileEntityJewelrsCraftingTable jt = (TileEntityJewelrsCraftingTable)te; + GL11.glPushMatrix(); if (block == 0) GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); @@ -39,13 +45,161 @@ public class TileEntityJewelrsCraftingTableRender extends TileEntitySpecialRende GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); else if (block == 3) GL11.glRotatef(180F, 1.0F, 0.0F, 1.0F); - - modelTable.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - + + modelTable.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); + //GL11.glTranslatef(0.05F, 0F, -0.5F); + if (jt != null) + { + if (jt.hasJewel) + { + if(jt.jewel.getIconIndex().getIconName() != "") + { + String domain = ""; + if(jt.jewel.getIconIndex().getIconName().substring(0, jt.jewel.getIconIndex().getIconName().indexOf(":") + 1) != "") + domain = jt.jewel.getIconIndex().getIconName().substring(0, jt.jewel.getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim(); + else + domain = "minecraft"; + String texture = jt.jewel.getIconIndex().getIconName().substring(jt.jewel.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + ResourceLocation lava = new ResourceLocation(domain, "textures/items/" + texture); + Minecraft.getMinecraft().renderEngine.bindTexture(lava); + jt.jewel.getIconIndex().getInterpolatedU(0); + double minu = jt.jewel.getIconIndex().getInterpolatedU(0); + double minv = jt.jewel.getIconIndex().getInterpolatedV(-64); + double maxu = jt.jewel.getIconIndex().getInterpolatedU(256); + double maxv = jt.jewel.getIconIndex().getInterpolatedV(256 - 64); + GL11.glPushMatrix(); + GL11.glScalef(1f / 16f, 1f / 16f, 1f / 16f); + GL11.glDisable(GL11.GL_LIGHTING); + if (jt.jewel.hasTagCompound()) + { + if (jt.jewel.getTagCompound().hasKey("ingot")) + { + NBTTagCompound ingotNBT = (NBTTagCompound) jt.jewel.getTagCompound().getTag("ingot"); + ItemStack ingotStack = new ItemStack(0, 0, 0); + ingotStack.readFromNBT(ingotNBT); + ItemRing.addMetal(jt.jewel, ingotStack); + int color = jt.jewel.getItem().getColorFromItemStack(jt.jewel, 0); + float red = (float)(color >> 16 & 255) / 255.0F; + float green = (float)(color >> 8 & 255) / 255.0F; + float blue = (float)(color & 255) / 255.0F; + if(!jt.jewel.getDisplayName().contains("Ingot")) GL11.glColor4f(red, green, blue, 1F); + } + } + tessellator.startDrawingQuads(); + for(float f=0; f<=1; f+=0.001){ + tessellator.addVertexWithUV(3, 9, -5+f, minu, minv); + tessellator.addVertexWithUV(-2.2, 9, -5+f, maxu, minv); + tessellator.addVertexWithUV(-2.2, 14, -5+f, maxu, maxv); + tessellator.addVertexWithUV(3, 14, -5+f, minu, maxv); + + tessellator.addVertexWithUV(-3, 9, -5+f, minu, minv); + tessellator.addVertexWithUV(2.2, 9, -5+f, maxu, minv); + tessellator.addVertexWithUV(2.2, 14, -5+f, maxu, maxv); + tessellator.addVertexWithUV(-3, 14, -5+f, minu, maxv); + } + tessellator.draw(); + GL11.glColor4f(1, 1F, 1F, 1.0F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } + if (jt.hasEndItem) + { + if(jt.endItem.getIconIndex().getIconName() != "") + { + String domain = ""; + if(jt.endItem.getIconIndex().getIconName().substring(0, jt.endItem.getIconIndex().getIconName().indexOf(":") + 1) != "") + domain = jt.endItem.getIconIndex().getIconName().substring(0, jt.endItem.getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim(); + else + domain = "minecraft"; + String texture = jt.endItem.getIconIndex().getIconName().substring(jt.endItem.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + ResourceLocation lava = new ResourceLocation(domain, "textures/items/" + texture); + Minecraft.getMinecraft().renderEngine.bindTexture(lava); + jt.endItem.getIconIndex().getInterpolatedU(0); + double minu = jt.endItem.getIconIndex().getInterpolatedU(0); + double minv = jt.endItem.getIconIndex().getInterpolatedV(-64); + double maxu = jt.endItem.getIconIndex().getInterpolatedU(256); + double maxv = jt.endItem.getIconIndex().getInterpolatedV(256 - 64); + GL11.glPushMatrix(); + GL11.glScalef(1f / 16f, 1f / 16f, 1f / 16f); + GL11.glDisable(GL11.GL_LIGHTING); + if (jt.endItem.hasTagCompound()) + { + if (jt.endItem.getTagCompound().hasKey("ingot")) + { + NBTTagCompound ingotNBT = (NBTTagCompound) jt.endItem.getTagCompound().getTag("ingot"); + ItemStack ingotStack = new ItemStack(0, 0, 0); + ingotStack.readFromNBT(ingotNBT); + ItemRing.addMetal(jt.endItem, ingotStack); + int color = jt.endItem.getItem().getColorFromItemStack(jt.endItem, 0); + float red = (float)(color >> 16 & 255) / 255.0F; + float green = (float)(color >> 8 & 255) / 255.0F; + float blue = (float)(color & 255) / 255.0F; + if(!jt.endItem.getDisplayName().contains("Ingot")) GL11.glColor4f(red, green, blue, 1F); + } + } + tessellator.startDrawingQuads(); + for(float f=0; f<=1; f+=0.001){ + tessellator.addVertexWithUV(3, 9, -5+f, minu, minv); + tessellator.addVertexWithUV(-2.2, 9, -5+f, maxu, minv); + tessellator.addVertexWithUV(-2.2, 14, -5+f, maxu, maxv); + tessellator.addVertexWithUV(3, 14, -5+f, minu, maxv); + + tessellator.addVertexWithUV(-3, 9, -5+f, minu, minv); + tessellator.addVertexWithUV(2.2, 9, -5+f, maxu, minv); + tessellator.addVertexWithUV(2.2, 14, -5+f, maxu, maxv); + tessellator.addVertexWithUV(-3, 14, -5+f, minu, maxv); + } + tessellator.draw(); + GL11.glColor4f(1, 1F, 1F, 1.0F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } + if (jt.hasModifier) + { + if(jt.modifier.getIconIndex().getIconName() != "") + { + String domain = ""; + if(jt.modifier.getIconIndex().getIconName().substring(0, jt.modifier.getIconIndex().getIconName().indexOf(":") + 1) != "") + domain = jt.modifier.getIconIndex().getIconName().substring(0, jt.modifier.getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim(); + else + domain = "minecraft"; + String texture = jt.modifier.getIconIndex().getIconName().substring(jt.modifier.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + ResourceLocation lava = new ResourceLocation(domain, "textures/items/" + texture); + Minecraft.getMinecraft().renderEngine.bindTexture(lava); + jt.modifier.getIconIndex().getInterpolatedU(0); + double minu = jt.modifier.getIconIndex().getInterpolatedU(-64); + double minv = jt.modifier.getIconIndex().getInterpolatedV(0); + double maxu = jt.modifier.getIconIndex().getInterpolatedU(256-64); + double maxv = jt.modifier.getIconIndex().getInterpolatedV(256); + GL11.glPushMatrix(); + GL11.glScalef(1f / 16f, 1f / 16f, 1f / 16f); + GL11.glDisable(GL11.GL_LIGHTING); + tessellator.startDrawingQuads(); + for(float f=0; f<=1; f+=0.001){ + tessellator.addVertexWithUV(8, 7.5, 3+f, minu, minv); + tessellator.addVertexWithUV(2.8, 7.5, 3+f, maxu, minv); + tessellator.addVertexWithUV(2.8, 13, 3+f, maxu, maxv); + tessellator.addVertexWithUV(8, 13, 3+f, minu, maxv); + + tessellator.addVertexWithUV(2, 7.5, 3+f, minu, minv); + tessellator.addVertexWithUV(7.2, 7.5, 3+f, maxu, minv); + tessellator.addVertexWithUV(7.2, 13, 3+f, maxu, maxv); + tessellator.addVertexWithUV(2, 13, 3+f, minu, maxv); + } + tessellator.draw(); + GL11.glColor4f(1, 1F, 1F, 1.0F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } + } + GL11.glPopMatrix(); GL11.glPopMatrix(); } - + public void adjustLightFixture(World world, int i, int j, int k, Block block) { Tessellator tess = Tessellator.instance; @@ -56,5 +210,5 @@ public class TileEntityJewelrsCraftingTableRender extends TileEntitySpecialRende tess.setColorOpaque_F(brightness, brightness, brightness); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) modulousModifier, divModifier); } - + } diff --git a/common/darkknight/jewelrycraft/renders/TileEntityMolderRender.java b/common/darkknight/jewelrycraft/renders/TileEntityMolderRender.java index 84d041a..1d65eea 100644 --- a/common/darkknight/jewelrycraft/renders/TileEntityMolderRender.java +++ b/common/darkknight/jewelrycraft/renders/TileEntityMolderRender.java @@ -2,6 +2,7 @@ package darkknight.jewelrycraft.renders; import org.lwjgl.opengl.GL11; +import darkknight.jewelrycraft.item.ItemRing; import darkknight.jewelrycraft.model.ModelMolder; import darkknight.jewelrycraft.tileentity.TileEntityMolder; @@ -19,23 +20,62 @@ public class TileEntityMolderRender extends TileEntitySpecialRenderer { ModelMolder modelMolder = new ModelMolder(); String texture = "textures/tileentities/Molder.png"; - + @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); TileEntityMolder me = (TileEntityMolder) te; - + ResourceLocation blockTexture = new ResourceLocation("jewelrycraft", texture); Minecraft.getMinecraft().renderEngine.bindTexture(blockTexture); Tessellator tessellator = Tessellator.instance; - + GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); modelMolder.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); if (me != null) { + if (me.hasJewelBase) + { + if(me.jewelBase.getIconIndex().getIconName() != "") + { + String domain = ""; + if(me.jewelBase.getIconIndex().getIconName().substring(0, me.jewelBase.getIconIndex().getIconName().indexOf(":") + 1) != "") + domain = me.jewelBase.getIconIndex().getIconName().substring(0, me.jewelBase.getIconIndex().getIconName().indexOf(":") + 1).replace(":", " ").trim(); + else + domain = "minecraft"; + String texture = me.jewelBase.getIconIndex().getIconName().substring(me.jewelBase.getIconIndex().getIconName().lastIndexOf(":") + 1) + ".png"; + ResourceLocation lava = new ResourceLocation(domain, "textures/items/" + texture); + Minecraft.getMinecraft().renderEngine.bindTexture(lava); + me.jewelBase.getIconIndex().getInterpolatedU(0); + int decal = -4; + int decal2 = 4; + double minu = me.jewelBase.getIconIndex().getInterpolatedU(decal2 + 48); + double minv = me.jewelBase.getIconIndex().getInterpolatedV(-decal + 48); + double maxu = me.jewelBase.getIconIndex().getInterpolatedU(256*decal2 + 48); + double maxv = me.jewelBase.getIconIndex().getInterpolatedV(256*decal + 48); + GL11.glPushMatrix(); + GL11.glScalef(1f / 16f, 1f / 16f, 1f / 16f); + GL11.glDisable(GL11.GL_LIGHTING); + ItemRing.addMetal(me.jewelBase, me.ringMetal); + int color = me.jewelBase.getItem().getColorFromItemStack(me.jewelBase, 0); + float red = (float)(color >> 16 & 255) / 255.0F; + float green = (float)(color >> 8 & 255) / 255.0F; + float blue = (float)(color & 255) / 255.0F; + if(!me.jewelBase.getDisplayName().contains("Ingot")) GL11.glColor4f(red, green, blue, 1F); + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(5, 21, 5, minu, minv); + tessellator.addVertexWithUV(-5, 21, 5, maxu, minv); + tessellator.addVertexWithUV(-5, 21, -5, maxu, maxv); + tessellator.addVertexWithUV(5, 21, -5, minu, maxv); + tessellator.draw(); + GL11.glColor4f(1, 1F, 1F, 1.0F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + } if (me.hasMold) { String name = me.mold.getDisplayName().substring(0, 1).toLowerCase() + me.mold.getDisplayName().trim().substring(1).replace(" M", "M"); @@ -52,7 +92,7 @@ public class TileEntityMolderRender extends TileEntitySpecialRenderer GL11.glPushMatrix(); GL11.glScalef(1f / 16f, 1f / 16f, 1f / 16f); GL11.glDisable(GL11.GL_LIGHTING); - + for (float f = 0; f <= 2; f += 0.01) { tessellator.startDrawingQuads(); @@ -69,7 +109,7 @@ public class TileEntityMolderRender extends TileEntitySpecialRenderer GL11.glPopMatrix(); GL11.glPopMatrix(); } - + public void adjustLightFixture(World world, int i, int j, int k, Block block) { Tessellator tess = Tessellator.instance; @@ -80,5 +120,5 @@ public class TileEntityMolderRender extends TileEntitySpecialRenderer tess.setColorOpaque_F(brightness, brightness, brightness); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) modulousModifier, divModifier); } - + } diff --git a/common/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java b/common/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java index c46d7e3..920aef9 100644 --- a/common/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java +++ b/common/darkknight/jewelrycraft/tileentity/TileEntityJewelrsCraftingTable.java @@ -12,7 +12,7 @@ public class TileEntityJewelrsCraftingTable extends TileEntity public boolean hasJewel, hasModifier, hasEndItem, isDirty; public ItemStack jewel, modifier, endItem; public int timer; - + public TileEntityJewelrsCraftingTable() { this.jewel = new ItemStack(0, 0, 0); @@ -24,7 +24,7 @@ public class TileEntityJewelrsCraftingTable extends TileEntity this.timer = 0; this.isDirty = false; } - + @Override public void writeToNBT(NBTTagCompound nbt) { @@ -43,7 +43,7 @@ public class TileEntityJewelrsCraftingTable extends TileEntity this.endItem.writeToNBT(tag2); nbt.setCompoundTag("endItem", tag2); } - + @Override public void readFromNBT(NBTTagCompound nbt) { @@ -59,7 +59,7 @@ public class TileEntityJewelrsCraftingTable extends TileEntity this.endItem = new ItemStack(0, 0, 0); this.endItem.readFromNBT(nbt.getCompoundTag("endItem")); } - + @Override public void updateEntity() { @@ -71,20 +71,29 @@ public class TileEntityJewelrsCraftingTable extends TileEntity if (this.hasJewel && this.hasModifier && !this.hasEndItem) { if (timer > 0) + { timer--; + for (int l = 0; l < 2000/(timer + 2); ++l) + { + if(this.getBlockMetadata() == 0) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.2F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 1) this.worldObj.spawnParticle("witchMagic", xCoord + 0.8F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 2) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.8F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 3) this.worldObj.spawnParticle("witchMagic", xCoord + 0.2F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + } + } System.out.println(timer); if (timer == 0) { this.hasEndItem = true; this.endItem = jewel.copy(); this.hasJewel = false; - // this.jewel = new ItemStack(0, 0, 0); + this.jewel = new ItemStack(0, 0, 0); this.hasModifier = false; - // this.modifier = new ItemStack(0, 0, 0); + this.modifier = new ItemStack(0, 0, 0); } } } - + @Override public Packet getDescriptionPacket() { -- cgit v1.2.3