From 0427ab89f1753a44b30cbc35ce021cbbdc845109 Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Thu, 10 Aug 2017 18:52:45 +0300 Subject: fix missing source folder --- .../FlexibleCableHolderBaseTileEntity.java | 237 +++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 src/main/java/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java (limited to 'src/main/java/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java') diff --git a/src/main/java/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java b/src/main/java/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java new file mode 100644 index 0000000..919e130 --- /dev/null +++ b/src/main/java/ihl/flexible_cable/FlexibleCableHolderBaseTileEntity.java @@ -0,0 +1,237 @@ +package ihl.flexible_cable; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import ic2.core.block.TileEntityInventory; +import ihl.IHLMod; +import ihl.interfaces.IEnergyNetNode; +import ihl.utils.IHLUtils; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.AxisAlignedBB; + +public abstract class FlexibleCableHolderBaseTileEntity extends TileEntityInventory implements IEnergyNetNode{ + + protected double connectionX; + protected double connectionY; + protected double connectionZ; + protected int gridID=-1; + protected final Set cableList; + public boolean checkCables=true; + + public FlexibleCableHolderBaseTileEntity() + { + super(); + cableList=new HashSet(); + } + + @Override + public void onLoaded() + { + super.onLoaded(); + if(gridID!=-1) + { + IHLGrid grid = IHLMod.enet.getGrid(gridID); + grid.add(this); + } + } + + @Override + public void onUnloaded() + { + super.onUnloaded(); + if(gridID!=-1) + { + IHLGrid grid = IHLMod.enet.getGrid(gridID); + grid.remove(this); + } + } + + + @SuppressWarnings("unchecked") + @Override + public void setFacing(short facing1) + { + short facing2 = (short) Math.max(facing1, 2); + double range = 2D; + AxisAlignedBB searchArea = AxisAlignedBB.getBoundingBox(connectionX-range,connectionY-range,connectionZ-range,connectionX+range,connectionY+range,connectionZ+range); + List nodeList = worldObj.getEntitiesWithinAABB(NodeEntity.class, searchArea); + super.setFacing(facing2); + setConnectionX(this.xCoord+0.5D); + setConnectionY(this.yCoord+1.5D); + setConnectionZ(this.zCoord+0.5D); + if(!nodeList.isEmpty()) + { + Iterator ei = nodeList.iterator(); + while(ei.hasNext()) + { + NodeEntity ne=(NodeEntity) ei.next(); + if((ne.prevAnchorEntity==null||ne.nextAnchorEntity==null) && this.cableListContains(ne.getChainUniqueID())) + { + ne.setVirtualNodePos(connectionX, connectionY, connectionZ); + } + } + } + } + + protected boolean cableListContains(int chainUniqueID) { + Iterator cli = this.getCableList().iterator(); + while(cli.hasNext()) + { + IHLCable c = cli.next(); + if(c.chainUID==chainUniqueID) + { + return true; + } + } + return false; + } + + @Override + public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) + { + return this.getFacing()!=(short)side; + } + + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList cableNBTList = new NBTTagList(); + for(IHLCable cable:this.cableList) + { + cableNBTList.appendTag(cable.toNBT()); + } + nbt.setTag("cableList", cableNBTList); + nbt.setDouble("connectionX", this.connectionX); + nbt.setDouble("connectionY", this.connectionY); + nbt.setDouble("connectionZ", this.connectionZ); + nbt.setInteger("gridID", this.gridID); + nbt.setBoolean("checkCables", this.checkCables); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList cableNBTList=nbt.getTagList("cableList", 10); + for(int i=0;i getCableList() { + return cableList; + } + + @Override + public void setGrid(int newGridID) + { + if(newGridID!=-1) + { + this.gridID=newGridID; + IHLMod.enet.getGrid(newGridID).add(this); + } + else + { + this.gridID=-1; + } + } + + @Override + public int getGridID() + { + return this.gridID; + } + + @Override + public IHLGrid getGrid() + { + return IHLMod.enet.getGrid(gridID); + } + + @Override + public boolean shouldRenderInPass(int pass) + { + return pass==0; + } + + @Override + public void remove(IHLCable cable) + { + if(this.cableList.remove(cable)) + { + IHLUtils.removeChain(cable, this); + } + } + + + @Override + public boolean isCableRemoved(int chainUniqueID) + { + if(!checkCables) + { + return false; + } + for(IHLCable cable:this.cableList) + { + if(cable.chainUID==chainUniqueID) + { + return false; + } + } + return true; + } + + @Override + public void setCableCheck(boolean b) + { + this.checkCables=b; + } + + @Override + public boolean isTileEntityBaseInvalid(){ + return this.tileEntityInvalid; + } +} -- cgit v1.2.3