From a688f25511d9dbb527ce6bb7a73c67388bd59936 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Fri, 7 Dec 2012 13:09:27 -0500 Subject: [PATCH] Change how Pipe Guage works Changed it so that the block being clicked on now supplies the custom readout message. This way each block can have its own message instead of a general one for the TE type. --- .../dark/BasicUtilities/Items/ItemGuage.java | 105 +++----- common/dark/BasicUtilities/api/IReadOut.java | 17 ++ .../mechanical/TileEntityGen.java | 13 +- .../mechanical/TileEntityRod.java | 252 ++++++++++-------- .../BasicUtilities/pipes/TileEntityPipe.java | 9 +- .../BasicUtilities/tanks/TileEntityLTank.java | 8 +- 6 files changed, 221 insertions(+), 183 deletions(-) create mode 100644 common/dark/BasicUtilities/api/IReadOut.java diff --git a/common/dark/BasicUtilities/Items/ItemGuage.java b/common/dark/BasicUtilities/Items/ItemGuage.java index 9fde1e5f..8ba5dc6f 100644 --- a/common/dark/BasicUtilities/Items/ItemGuage.java +++ b/common/dark/BasicUtilities/Items/ItemGuage.java @@ -8,8 +8,10 @@ import net.minecraft.src.Item; import net.minecraft.src.ItemStack; import net.minecraft.src.TileEntity; import net.minecraft.src.World; +import net.minecraftforge.common.ForgeDirection; import dark.BasicUtilities.BasicUtilitiesMain; import dark.BasicUtilities.api.IForce; +import dark.BasicUtilities.api.IReadOut; import dark.BasicUtilities.api.Liquid; import dark.BasicUtilities.pipes.TileEntityPipe; import dark.BasicUtilities.tanks.TileEntityLTank; @@ -28,88 +30,65 @@ public class ItemGuage extends Item this.setCreativeTab(CreativeTabs.tabTools); this.setMaxStackSize(1); } + @Override public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) { - par3List.add(new ItemStack(this, 1, 0)); + par3List.add(new ItemStack(this, 1, 0)); } + @Override public int getIconFromDamage(int par1) { - switch(par1) - { - case 0: return 24; - } + switch (par1) + { + case 0: + return 24; + } return this.iconIndex; } - public String getTextureFile() { - return BasicUtilitiesMain.ITEM_PNG; - } + + public String getTextureFile() + { + return BasicUtilitiesMain.ITEM_PNG; + } + @Override - public String getItemName() + public String getItemName() { return "guage"; } + @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) + public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World par3World, int x, int y, int z, int side, float par8, float par9, float par10) { - if(!par3World.isRemote) - { - if(itemStack.getItemDamage() == 0) - { - TileEntity blockEntity = par3World.getBlockTileEntity(par4, par5, par6); - if(blockEntity instanceof TileEntityPipe) - { - TileEntityPipe pipeEntity = (TileEntityPipe) blockEntity; - Liquid type = pipeEntity.getType(); - int steam = pipeEntity.getStoredLiquid(type); - int pressure = pipeEntity.presure; - String typeName = type.lName; - String print = "Error"; - - print = typeName +" " + steam +" @ "+pressure+"PSI"; - - player.sendChatToPlayer(print); - return true; - } - if(blockEntity instanceof TileEntityLTank) - { - TileEntityLTank pipeEntity = (TileEntityLTank) blockEntity; - Liquid type = pipeEntity.getType(); - int steam = pipeEntity.getStoredLiquid(type); - String typeName = type.lName; - String print = "Error"; - - print = typeName +" " + steam; - - player.sendChatToPlayer(print); - return true; - } - if(blockEntity instanceof IForce) - { - IForce rod = (IForce) blockEntity; - int steam = rod.getForce(); - int pressure = rod.getAnimationPos(); - String print = "Error"; - - print = " " + steam +"N "+pressure*45+"degrees"; - - player.sendChatToPlayer(print); - return true; - } - } - - } + if (!par3World.isRemote) + { + if (itemStack.getItemDamage() == 0) + { + TileEntity blockEntity = par3World.getBlockTileEntity(x, y, z); + if(blockEntity instanceof IReadOut) + { + String output = ((IReadOut) blockEntity).getMeterReading(player,ForgeDirection.getOrientation(side)); + if(output.length() > 100) output = output.substring(0, 100); + output.trim(); + player.sendChatToPlayer("ReadOut: "+output); + } + } + + } return false; } - public String getItemNameIS(ItemStack par1ItemStack) + + public String getItemNameIS(ItemStack par1ItemStack) { - int var3 = par1ItemStack.getItemDamage(); - switch(var3) - { - case 0: return "PipeGuage"; - } + int var3 = par1ItemStack.getItemDamage(); + switch (var3) + { + case 0: + return "PipeGuage"; + } return this.getItemName(); } } diff --git a/common/dark/BasicUtilities/api/IReadOut.java b/common/dark/BasicUtilities/api/IReadOut.java new file mode 100644 index 00000000..cc898e2b --- /dev/null +++ b/common/dark/BasicUtilities/api/IReadOut.java @@ -0,0 +1,17 @@ +package dark.BasicUtilities.api; + +import net.minecraft.src.EntityPlayer; +import net.minecraftforge.common.ForgeDirection; + +public interface IReadOut +{ + /** + * Grabs the message displayed to the user + * on right click of the machine with the + * pipe gauge + * @param user + * @param side - may not work correctly yet but should give you a side + * @return - a string to be displayed to the player for a reading. automatically adds ReadOut: to the beginning + */ + public String getMeterReading(EntityPlayer user, ForgeDirection side); +} diff --git a/common/dark/BasicUtilities/mechanical/TileEntityGen.java b/common/dark/BasicUtilities/mechanical/TileEntityGen.java index f4f4c0de..538b64ea 100644 --- a/common/dark/BasicUtilities/mechanical/TileEntityGen.java +++ b/common/dark/BasicUtilities/mechanical/TileEntityGen.java @@ -14,10 +14,11 @@ import com.google.common.io.ByteArrayDataInput; import dark.BasicUtilities.BasicUtilitiesMain; import dark.BasicUtilities.api.IForce; -import dark.Library.Util.MetaData; +import dark.BasicUtilities.api.IReadOut; +import dark.Library.Util.MetaGroupingHelper; import dark.Library.prefab.TileEntityMachine; -public class TileEntityGen extends TileEntityMachine implements IPacketReceiver, IForce, IElectricityProducer +public class TileEntityGen extends TileEntityMachine implements IPacketReceiver, IForce, IElectricityProducer,IReadOut { ForgeDirection facing = ForgeDirection.DOWN; @@ -42,7 +43,7 @@ public class TileEntityGen extends TileEntityMachine implements IPacketReceiver, this.genAmmount = force / this.getVoltage(); int wireCount = 0; - facing = ForgeDirection.getOrientation(MetaData.getMeta(worldObj.getBlockMetadata(xCoord, yCoord, zCoord))).getOpposite(); + facing = ForgeDirection.getOrientation(MetaGroupingHelper.getMeta(worldObj.getBlockMetadata(xCoord, yCoord, zCoord))).getOpposite(); if (!this.isDisabled()) { @@ -224,4 +225,10 @@ public class TileEntityGen extends TileEntityMachine implements IPacketReceiver, return 0; } + @Override + public String getMeterReading(EntityPlayer user, ForgeDirection side) + { + return this.force+"N Input "+this.genAmmount+"W output"; + } + } diff --git a/common/dark/BasicUtilities/mechanical/TileEntityRod.java b/common/dark/BasicUtilities/mechanical/TileEntityRod.java index 8998d27f..44d6ee7e 100644 --- a/common/dark/BasicUtilities/mechanical/TileEntityRod.java +++ b/common/dark/BasicUtilities/mechanical/TileEntityRod.java @@ -14,125 +14,147 @@ import com.google.common.io.ByteArrayDataInput; import dark.BasicUtilities.BasicUtilitiesMain; import dark.BasicUtilities.api.IForce; +import dark.BasicUtilities.api.IReadOut; -public class TileEntityRod extends TileEntity implements IPacketReceiver,IForce { +public class TileEntityRod extends TileEntity implements IPacketReceiver, IForce, IReadOut +{ - public int pos = 0; - private int force = 0; - private int pForce = 0; - public int aForce = 0; - public int forceMax = 1000; - private int tickCount = 0; - private int posCount = 0; - - private ForgeDirection frontDir; - private ForgeDirection backDir; - - private TileEntity bb; - private TileEntity ff; - @Override - public void updateEntity() - { - super.updateEntity(); - if(tickCount++ >=10) - { tickCount = 0; - int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - frontDir = ForgeDirection.getOrientation(meta); - backDir = ForgeDirection.getOrientation(meta).getOpposite(); - bb = worldObj.getBlockTileEntity(xCoord+backDir.offsetX, yCoord, zCoord+backDir.offsetZ); - ff = worldObj.getBlockTileEntity(xCoord+frontDir.offsetX, yCoord, zCoord+frontDir.offsetZ); - if(force > 0) - { - int posCountA = (forceMax/force) & 10; - if(posCount++ >= posCountA) - { - pos ++;if(pos > 7){pos = 0;}; - } - } - if(bb instanceof TileEntityRod) - { - this.pos = ((IForce)bb).getAnimationPos(); - } - if(!worldObj.isRemote) - { - - if(ff instanceof IForce) - { - if(((IForce) ff).canInputSide(backDir)) - { - ((IForce) ff).applyForce(aForce); - } - } - if(bb instanceof IForce) - { - if(((IForce) bb).canOutputSide(frontDir)) - { - this.force = ((IForce) bb).getForce(); - } - }else - { - this.force -=Math.max(force/10, 0); - } - aForce = Math.max(force - 10,0); - if(this.force != this.pForce) - { - Packet packet = PacketManager.getPacket(BasicUtilitiesMain.CHANNEL,this, new Object[]{force}); - PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 40); - } - this.pForce = this.force; - } - } - } - @Override - public int getForceSide(ForgeDirection side) { - return aForce; - } + public int pos = 0; + private int force = 0; + private int pForce = 0; + public int aForce = 0; + public int forceMax = 1000; + private int tickCount = 0; + private int posCount = 0; - @Override - public boolean canOutputSide(ForgeDirection side) { - if(side == frontDir) - { - return true; - } - return false; - } + private ForgeDirection frontDir; + private ForgeDirection backDir; - @Override - public boolean canInputSide(ForgeDirection side) { - if(side == backDir) - { - return true; - } - return false; - } + private TileEntity bb; + private TileEntity ff; - @Override - public int applyForce(int force) { - this.force = force; - return force; - } + @Override + public void updateEntity() + { + super.updateEntity(); + if (tickCount++ >= 10) + { + tickCount = 0; + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + frontDir = ForgeDirection.getOrientation(meta); + backDir = ForgeDirection.getOrientation(meta).getOpposite(); + bb = worldObj.getBlockTileEntity(xCoord + backDir.offsetX, yCoord, zCoord + backDir.offsetZ); + ff = worldObj.getBlockTileEntity(xCoord + frontDir.offsetX, yCoord, zCoord + frontDir.offsetZ); + if (force > 0) + { + int posCountA = (forceMax / force) & 10; + if (posCount++ >= posCountA) + { + pos++; + if (pos > 7) + { + pos = 0; + } + ; + } + } + if (bb instanceof TileEntityRod) + { + this.pos = ((IForce) bb).getAnimationPos(); + } + if (!worldObj.isRemote) + { - @Override - public void handlePacketData(INetworkManager network, int packetType, - Packet250CustomPayload packet, EntityPlayer player, - ByteArrayDataInput data) { - try - { - this.force = data.readInt(); - }catch(Exception e) - { - e.printStackTrace(); - System.out.print("MechRodDataFailure \n"); - } - - } - @Override - public int getAnimationPos() { - return this.pos; - } - @Override - public int getForce() { - // TODO Auto-generated method stub - return this.force; - } + if (ff instanceof IForce) + { + if (((IForce) ff).canInputSide(backDir)) + { + ((IForce) ff).applyForce(aForce); + } + } + if (bb instanceof IForce) + { + if (((IForce) bb).canOutputSide(frontDir)) + { + this.force = ((IForce) bb).getForce(); + } + } + else + { + this.force -= Math.max(force / 10, 0); + } + aForce = Math.max(force - 10, 0); + if (this.force != this.pForce) + { + Packet packet = PacketManager.getPacket(BasicUtilitiesMain.CHANNEL, this, new Object[] + { force }); + PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 40); + } + this.pForce = this.force; + } + } + } + + @Override + public int getForceSide(ForgeDirection side) + { + return aForce; + } + + @Override + public boolean canOutputSide(ForgeDirection side) + { + if (side == frontDir) { return true; } + return false; + } + + @Override + public boolean canInputSide(ForgeDirection side) + { + if (side == backDir) { return true; } + return false; + } + + @Override + public int applyForce(int force) + { + this.force = force; + return force; + } + + @Override + public void handlePacketData(INetworkManager network, int packetType, + Packet250CustomPayload packet, EntityPlayer player, + ByteArrayDataInput data) + { + try + { + this.force = data.readInt(); + } + catch (Exception e) + { + e.printStackTrace(); + System.out.print("MechRodDataFailure \n"); + } + + } + + @Override + public int getAnimationPos() + { + return this.pos; + } + + @Override + public int getForce() + { + // TODO Auto-generated method stub + return this.force; + } + + @Override + public String getMeterReading(EntityPlayer user, ForgeDirection side) + { + return this.aForce + "N Out " + this.force + "N In"; + } } diff --git a/common/dark/BasicUtilities/pipes/TileEntityPipe.java b/common/dark/BasicUtilities/pipes/TileEntityPipe.java index dae8a64c..3e42b3e3 100644 --- a/common/dark/BasicUtilities/pipes/TileEntityPipe.java +++ b/common/dark/BasicUtilities/pipes/TileEntityPipe.java @@ -16,10 +16,11 @@ import com.google.common.io.ByteArrayDataInput; import dark.BasicUtilities.BasicUtilitiesMain; import dark.BasicUtilities.api.IConsumer; import dark.BasicUtilities.api.IProducer; +import dark.BasicUtilities.api.IReadOut; import dark.BasicUtilities.api.Liquid; import dark.BasicUtilities.api.MHelper; -public class TileEntityPipe extends TileEntity implements IConsumer, IPacketReceiver +public class TileEntityPipe extends TileEntity implements IConsumer, IPacketReceiver,IReadOut { protected Liquid type = Liquid.DEFUALT; @@ -225,4 +226,10 @@ public class TileEntityPipe extends TileEntity implements IConsumer, IPacketRece par1NBTTagCompound.setInteger("liquid", this.liquidStored); par1NBTTagCompound.setInteger("type", this.type.ordinal()); } + + @Override + public String getMeterReading(EntityPlayer user, ForgeDirection side) + { + return this.liquidStored+" "+this.type.name()+" @ "+this.presure+"PSI"; + } } diff --git a/common/dark/BasicUtilities/tanks/TileEntityLTank.java b/common/dark/BasicUtilities/tanks/TileEntityLTank.java index 58eda073..d71b50ab 100644 --- a/common/dark/BasicUtilities/tanks/TileEntityLTank.java +++ b/common/dark/BasicUtilities/tanks/TileEntityLTank.java @@ -15,11 +15,12 @@ import com.google.common.io.ByteArrayDataInput; import dark.BasicUtilities.BasicUtilitiesMain; import dark.BasicUtilities.api.IProducer; +import dark.BasicUtilities.api.IReadOut; import dark.BasicUtilities.api.IStorageTank; import dark.BasicUtilities.api.Liquid; import dark.BasicUtilities.api.MHelper; -public class TileEntityLTank extends TileEntity implements IStorageTank, IProducer, IPacketReceiver +public class TileEntityLTank extends TileEntity implements IStorageTank, IProducer, IPacketReceiver,IReadOut { public TileEntity[] cc = { null, null, null, null, null, null }; @@ -196,4 +197,9 @@ public class TileEntityLTank extends TileEntity implements IStorageTank, IProduc this.type = dm; } + @Override + public String getMeterReading(EntityPlayer user, ForgeDirection side) + { + return this.LStored+" "+"/"+this.LMax+" "+this.type.name()+" Stored"; + } }