diff --git a/bin/com/kitsu/medievalcraft/block/machines/Forge.class b/bin/com/kitsu/medievalcraft/block/machines/Forge.class index aafeb109..beed8883 100644 Binary files a/bin/com/kitsu/medievalcraft/block/machines/Forge.class and b/bin/com/kitsu/medievalcraft/block/machines/Forge.class differ diff --git a/bin/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.class b/bin/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.class index 042304f5..e0efc34e 100644 Binary files a/bin/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.class and b/bin/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.class differ diff --git a/bin/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.class b/bin/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.class index 81b72953..e8d15ec9 100644 Binary files a/bin/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.class and b/bin/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.class differ diff --git a/bin/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.class b/bin/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.class index 8e4d2cba..7449d7c0 100644 Binary files a/bin/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.class and b/bin/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.class differ diff --git a/bin/com/kitsu/medievalcraft/tileents/machine/TileForge.class b/bin/com/kitsu/medievalcraft/tileents/machine/TileForge.class index b64f0fff..ffde24c5 100644 Binary files a/bin/com/kitsu/medievalcraft/tileents/machine/TileForge.class and b/bin/com/kitsu/medievalcraft/tileents/machine/TileForge.class differ diff --git a/src/main/java/com/kitsu/medievalcraft/block/machines/Forge.java b/src/main/java/com/kitsu/medievalcraft/block/machines/Forge.java index 6eb56998..20e5271d 100644 --- a/src/main/java/com/kitsu/medievalcraft/block/machines/Forge.java +++ b/src/main/java/com/kitsu/medievalcraft/block/machines/Forge.java @@ -42,8 +42,8 @@ import cpw.mods.fml.relauncher.SideOnly; public class Forge extends BlockContainer implements TileForgePlaceables{ private final Random random = new Random(); - private int sideMeta; - public static int c; + public static int sideMeta; + private int c; public Forge(String unlocalizedName, Material material) { super(material.rock); @@ -74,12 +74,33 @@ public class Forge extends BlockContainer implements TileForgePlaceables{ super.randomDisplayTick(world, x, y, z, random); } + public static int determineOrientation(World p_150071_0_, int p_150071_1_, int p_150071_2_, int p_150071_3_, EntityLivingBase p_150071_4_) + { + if (MathHelper.abs((float)p_150071_4_.posX - (float)p_150071_1_) < 2.0F && MathHelper.abs((float)p_150071_4_.posZ - (float)p_150071_3_) < 2.0F) + { + double d0 = p_150071_4_.posY + 1.82D - (double)p_150071_4_.yOffset; + + if (d0 - (double)p_150071_2_ > 2.0D) + { + return 1; + } + + if ((double)p_150071_2_ - d0 > 0.0D) + { + return 0; + } + } + + int l = MathHelper.floor_double((double)(p_150071_4_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + return l == 0 ? 2 : (l == 1 ? 5 : (l == 2 ? 3 : (l == 3 ? 4 : 0))); + } + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack p_149689_6_) { - if(!world.isRemote){ - world.setBlockMetadataWithNotify(x, y, z, (MathHelper.floor_double((player.rotationYaw * 4F) / 360F + 0.5D) & 3), 2); - System.out.println(world.getBlockMetadata(x, y, z)); - } + int l = determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + System.out.println(world.getBlockMetadata(x, y, z)); + world.markBlockForUpdate(x, y, z); } @@ -98,35 +119,22 @@ public class Forge extends BlockContainer implements TileForgePlaceables{ if(world.isRemote){ MovingObjectPosition mop = Minecraft.getMinecraft().renderViewEntity.rayTrace(5, 1.0F); c = (int)mop.sideHit; - Main.sNet.sendToServer(new MsgPacketForge((int) c)); - System.out.println("Client"); - System.out.println(c); - System.out.println(world.getBlockMetadata(x, y, z)); - } if(!world.isRemote){ - System.out.println("Server"); - System.out.println(c); - System.out.println(world.getBlockMetadata(x, y, z)); if(player.inventory.getCurrentItem()!=null){ if((player.inventory.getCurrentItem().getItem()==Item.getItemFromBlock(Blocks.torch))|| (player.inventory.getCurrentItem().getItem()==Items.flint_and_steel)|| (player.inventory.getCurrentItem().getItem()==ModItems.fireBow) ){ tileEnt.isOn=true; + System.out.println(tileEnt.isOn); } } - if(c==1){ + if(sideMeta==1){ if(player.inventory.getCurrentItem()!=null){ if(player.inventory.getCurrentItem().getItem()==Items.coal){ - if(tileEnt.getStackInSlot(1)==null){ - if(player.inventory.getCurrentItem()!=null){ - tileEnt.setInventorySlotContents(1, player.inventory.getCurrentItem()); - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - } - } if(tileEnt.getStackInSlot(1)!=null){ ItemStack pStack = player.inventory.getCurrentItem().copy(); ItemStack sStack = tileEnt.getStackInSlot(1).copy(); @@ -139,6 +147,10 @@ public class Forge extends BlockContainer implements TileForgePlaceables{ } } } + if(tileEnt.getStackInSlot(1)==null){ + tileEnt.setInventorySlotContents(1, player.inventory.getCurrentItem()); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } } return true; } @@ -161,7 +173,7 @@ public class Forge extends BlockContainer implements TileForgePlaceables{ return true; } } - if(c!=0 && c!=1){ + if(sideMeta == world.getBlockMetadata(x, y, z)){ if(player.inventory.getCurrentItem()!=null){ if(tileEnt.getStackInSlot(0)==null){ System.out.println(); diff --git a/src/main/java/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.java b/src/main/java/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.java index 9cd5962d..19fec3cc 100644 --- a/src/main/java/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.java +++ b/src/main/java/com/kitsu/medievalcraft/packethandle/forge/MsgHandleForge.java @@ -12,7 +12,7 @@ public class MsgHandleForge implements IMessageHandler @Override public IMessage onMessage(MsgPacketForge message, MessageContext ctx) { - Forge.c = message.caseType; + Forge.sideMeta = message.caseType; return null; } } diff --git a/src/main/java/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.java b/src/main/java/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.java index a0a17618..984b4e11 100644 --- a/src/main/java/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.java +++ b/src/main/java/com/kitsu/medievalcraft/renderer/blocks/machine/ForgeRenderer.java @@ -26,10 +26,8 @@ import cpw.mods.fml.client.FMLClientHandler; public class ForgeRenderer extends TileEntitySpecialRenderer { - private final Random rand = new Random(); - private double r = rand.nextDouble(); EntityItem entItem = null; - EntityItem entCoal = null; + EntityItem entItem1 = null; public static final ResourceLocation MODEL = new ResourceLocation("kitsumedievalcraft:models/SingleForge.obj"); public static final ResourceLocation TEXTURE = new ResourceLocation("kitsumedievalcraft:models/SingleForge.png"); @@ -44,6 +42,31 @@ public class ForgeRenderer extends TileEntitySpecialRenderer { renderBlock(tileEntity, tile.getWorldObj(), tile.xCoord,tile.yCoord, tile.zCoord, ModBlocks.forge); + if(tileEntity.getStackInSlot(1) != null){ + entItem1 = new EntityItem(tileEntity.getWorldObj(), x, y, z, tileEntity.getStackInSlot(1)); + GL11.glPushMatrix(); + this.entItem1.hoverStart = 0.0F; + RenderItem.renderInFrame = true; + GL11.glScalef(0.5f, 0.1f, 0.5f); + GL11.glRotatef(90, 1, 0, 0); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 1.0D, 0.8D, -10.0D, 0.0F, 0.0F); + + RenderManager.instance.renderEntityWithPosYaw(entItem1, 1.25D, 1.0D, -10.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 1.25D, 0.5D, -10.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 0.7D, 0.6D, -10.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 0.7D, 1.0D, -10.0D, 0.0F, 0.0F); + + RenderManager.instance.renderEntityWithPosYaw(entItem1, 1.5D, 0.75D, -10.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 1.0D, 1.2D, -10.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(entItem1, 0.98D, 0.35D, -10.0D, 0.0F, 0.0F); + //RenderManager.instance.renderEntityWithPosYaw(entItem1, 0.5D, 0.7D, -10.0D, 0.0F, 0.0F); + + RenderItem.renderInFrame = false; + GL11.glPopMatrix(); + tileEntity.markForUpdate(); + tileEntity.markDirty(); + } + if(tileEntity.getStackInSlot(0) != null){ entItem = new EntityItem(tileEntity.getWorldObj(), x, y, z, tileEntity.getStackInSlot(0)); GL11.glPushMatrix(); @@ -54,10 +77,13 @@ public class ForgeRenderer extends TileEntitySpecialRenderer { RenderManager.instance.renderEntityWithPosYaw(entItem, 0.55D, 0.25D, 0.5D, 0.0F, 0.0F); RenderItem.renderInFrame = false; GL11.glPopMatrix(); + tileEntity.markForUpdate(); + tileEntity.markDirty(); } - tileEntity.markForUpdate(); - tileEntity.markDirty(); + + //tileEntity.markForUpdate(); + //tileEntity.markDirty(); GL11.glPopMatrix(); @@ -69,16 +95,17 @@ public class ForgeRenderer extends TileEntitySpecialRenderer { GL11.glScalef(scale, scale, scale); GL11.glTranslatef(1.0F, 1.0F, 1.0F); int dir = world.getBlockMetadata(i, j, k); - if(dir == 0){ - GL11.glRotated(90F, 0.0, 1.0F, 0.0F); + //System.out.println(dir); + if(dir == 4){ + GL11.glRotated(-180F, 0.0, 1.0F, 0.0F); } - if(dir == 1){ + if(dir == 5){ } if(dir == 2){ - GL11.glRotated(-90F, 0.0, 1.0F, 0.0F); + GL11.glRotated(90F, 0.0, 1.0F, 0.0F); } if(dir == 3){ - GL11.glRotated(180F, 0.0, 1.0F, 0.0F); + GL11.glRotated(-90F, 0.0, 1.0F, 0.0F); } FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE); diff --git a/src/main/java/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.java b/src/main/java/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.java index cc640398..bcc39c44 100644 --- a/src/main/java/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.java +++ b/src/main/java/com/kitsu/medievalcraft/tileents/ingots/TileIngotBase.java @@ -49,7 +49,7 @@ public class TileIngotBase extends TileEntity { private void coolDown(World world, int x, int y, int z){ if(!world.isRemote){ - if((world.getBlock(x, y-1, z)!=ModBlocks.firebox)&&(this.hot==true)){ + if((world.getBlock(x, y-1, z)!=ModBlocks.forge)&&(this.hot==true)){ coolTicks--; if(coolTicks <= 0){ this.hot=false; diff --git a/src/main/java/com/kitsu/medievalcraft/tileents/machine/TileForge.java b/src/main/java/com/kitsu/medievalcraft/tileents/machine/TileForge.java index 13919160..bf9ca4f3 100644 --- a/src/main/java/com/kitsu/medievalcraft/tileents/machine/TileForge.java +++ b/src/main/java/com/kitsu/medievalcraft/tileents/machine/TileForge.java @@ -1,7 +1,6 @@ package com.kitsu.medievalcraft.tileents.machine; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -12,7 +11,8 @@ import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import com.kitsu.medievalcraft.block.ModBlocks; +import com.kitsu.medievalcraft.block.ingots.IngotBase; +import com.kitsu.medievalcraft.tileents.ingots.TileIngotBase; public class TileForge extends TileEntity implements IInventory{ private String tileForgeName; @@ -193,10 +193,7 @@ public class TileForge extends TileEntity implements IInventory{ int x = this.xCoord; int y = this.yCoord; int z = this.zCoord; - if(!world.isRemote){ - if(!world.isRemote){ - - } + heatIngot(world, x, y, z); /*if(world.getBlock(x, y+1, z).equals(Blocks.air)||this.getStackInSlot(0)==null){ this.isOn = false; } @@ -215,9 +212,22 @@ public class TileForge extends TileEntity implements IInventory{ //isFurnace(world, x, y, z); //isCrucible(world, x, y, z); //isIngot(world, x, y, z); - } + if (worldObj.isRemote) return; } + + private void heatIngot(World world, int x, int y, int z){ + if(!world.isRemote){ + if(world.getBlock(x, y+1, z) instanceof IngotBase){ + TileIngotBase tile = (TileIngotBase) world.getTileEntity(x, y+1, z); + if(tile.hot==false){ + tile.heatTicks--; + System.out.println(tile.hot); + System.out.println(tile.heatTicks); + } + } + } + } }