hassansyyid

Untitled

Jul 6th, 2015
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.26 KB | None | 0 0
  1. package com.arisux.avp.entities.tile;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.ListIterator;
  7. import java.util.Set;
  8.  
  9. import net.minecraft.nbt.NBTTagCompound;
  10. import net.minecraft.network.NetworkManager;
  11. import net.minecraft.network.Packet;
  12. import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
  13. import net.minecraft.tileentity.TileEntity;
  14. import net.minecraft.util.EnumFacing;
  15.  
  16. import com.arisux.avp.interfaces.IPowerDevice;
  17. import com.google.common.collect.Lists;
  18.  
  19. public abstract class PoweredTileEntity extends TileEntity implements IPowerDevice
  20. {
  21.     public double voltage, amps;
  22.     public boolean state = false;
  23.    
  24.     @Override
  25.     public void updateEntity()
  26.     {
  27.         super.updateEntity();
  28.        
  29.         if (this.isVoltageInOperatingRange())
  30.         {
  31.             this.onVoltageTick();
  32.         }
  33.        
  34.         if (this.voltage > this.getMaxOperatingVoltage())
  35.         {
  36.             this.onOverloadTick();
  37.         }
  38.            
  39.         if(!this.state)
  40.         {
  41.             this.voltage = 0;
  42.         }
  43.        
  44.         if (this.voltage <= this.getMinOperatingVoltage())
  45.         {
  46.             this.onUnderloadTick();
  47.         }
  48.        
  49.         if (this.canOutputPower())
  50.         {
  51.             this.outputPower();
  52.         }
  53.     }
  54.    
  55.     private boolean isConnectedToAnything(PoweredTileEntity poweredTileEntity) {
  56.         List<PoweredTileEntity> list = new ArrayList<PoweredTileEntity>();
  57.         list.add(poweredTileEntity.getTop());
  58.         list.add(poweredTileEntity.getBack());
  59.         list.add(poweredTileEntity.getBottom());
  60.         list.add(poweredTileEntity.getLeft());
  61.         list.add(poweredTileEntity.getRight());
  62.         list.add(poweredTileEntity.getFront());
  63.         for(PoweredTileEntity te : list)
  64.         {
  65.             if(te instanceof TileEntitySolarPanel || te instanceof TileEntityRepulsionGenerator || te instanceof TileEntityPowerline || te instanceof TileEntityR2PConvertor){
  66.                 if(te instanceof TileEntityR2PConvertor)
  67.                 {
  68.                     TileEntityR2PConvertor ter = (TileEntityR2PConvertor) te;
  69.                     if(ter.isActiveRedstoneWireAttached)
  70.                     {
  71.                         return true;
  72.                     }
  73.                     else
  74.                     {
  75.                         return false;
  76.                     }
  77.                 }
  78.                 return true;
  79.             }
  80.         }
  81.         return false;
  82.     }
  83.  
  84.     public boolean isPowerSource(){
  85.         if(this.canOutputPower() && getPowerSourceTile(this) == this){
  86.             return true;
  87.         }
  88.         return false;
  89.     }
  90.     public void outputPower()
  91.     {
  92.         double voltage = this.getVoltageAfterApplyingResistance();
  93.         List<PoweredTileEntity> list = Lists.newArrayList(this.children);
  94.         for(PoweredTileEntity e : list)
  95.         {
  96.             this.outputPowerToTile(e, voltage);
  97.         }
  98.     }
  99.    
  100.     public void outputPowerToTile(PoweredTileEntity tile, double voltage)
  101.     {
  102.         if (tile != null && tile.getPowerSourceTile(tile) == this)
  103.         {
  104.             tile.setVoltage(voltage);
  105.         }
  106.         else if(tile != null && tile instanceof TileEntityPowerline && tile.getVoltage() == 0)
  107.         {
  108.             tile.setVoltage(this.getVoltage());
  109.         }
  110.     }
  111.  
  112.     @Override
  113.     public abstract void onVoltageTick();
  114.  
  115.     @Override
  116.     public abstract void onOverloadTick();
  117.  
  118.     @Override
  119.     public abstract void onUnderloadTick();
  120.    
  121.     @Override
  122.     public void updateChildren()
  123.     {
  124.         if(this.children.size() > 0)
  125.         {
  126.             if(this.children.contains(this))
  127.             {
  128.                 this.children.remove(this);
  129.             }
  130.             if(this.children.size() > 0)
  131.             {
  132.                 List <PoweredTileEntity> list = Lists.newArrayList(this.children);
  133.                 for(PoweredTileEntity te : list)
  134.                 {
  135.                     if(te == null);
  136.                     else
  137.                     {
  138.                         te.state = this.state;
  139.                         te.updateChildren();
  140.                     }
  141.                 }
  142.             }
  143.         }
  144.     }
  145.    
  146.     @Override
  147.     public Packet getDescriptionPacket()
  148.     {
  149.         NBTTagCompound nbtTag = new NBTTagCompound();
  150.         this.writeToNBT(nbtTag);
  151.         return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbtTag);
  152.     }
  153.  
  154.     @Override
  155.     public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
  156.     {
  157.         readFromNBT(packet.func_148857_g());
  158.     }
  159.  
  160.     @Override
  161.     public void writeToNBT(NBTTagCompound tag)
  162.     {
  163.         super.writeToNBT(tag);
  164.  
  165.         tag.setDouble("Volts", this.voltage);
  166.         tag.setDouble("Amps", this.amps);
  167.     }
  168.  
  169.     @Override
  170.     public void readFromNBT(NBTTagCompound tag)
  171.     {
  172.         super.readFromNBT(tag);
  173.  
  174.         this.voltage = tag.getDouble("Volts");
  175.         this.amps = tag.getDouble("Amps");
  176.     }
  177.  
  178.     public void setVoltage(double voltageIn)
  179.     {
  180.         this.voltage = voltageIn;
  181.     }
  182.  
  183.     public double getVoltageAfterApplyingResistance()
  184.     {
  185.         return this.getVoltage() - this.getResistance() <= 0 ? 0 : this.getVoltage() - this.getResistance();
  186.     }
  187.  
  188.     public void setAmps(double ampsIn)
  189.     {
  190.         this.amps = ampsIn;
  191.     }
  192.  
  193.     public PoweredTileEntity getPoweredTileAt(int x, int y, int z)
  194.     {
  195.         return this.worldObj.getTileEntity(x, y, z) instanceof PoweredTileEntity ? (PoweredTileEntity) this.worldObj.getTileEntity(x, y, z) : null;
  196.     }
  197.  
  198.     public PoweredTileEntity getPowerSourceTile(PoweredTileEntity e){
  199.         if (getTop() != null && getTop().isOutputVoltageHigherThan(this) && getTop().canOutputPower())
  200.         {
  201.             return getTop();
  202.         }
  203.         if (getBottom() != null && getBottom().isOutputVoltageHigherThan(this) && getBottom().canOutputPower())
  204.         {
  205.             return getBottom();
  206.         }
  207.         if (getFront() != null && getFront().isOutputVoltageHigherThan(this) && getFront().canOutputPower())
  208.         {
  209.             return getFront();
  210.         }
  211.         if (getBack() != null && getBack().isOutputVoltageHigherThan(this) && getBack().canOutputPower())
  212.         {
  213.             return getBack();
  214.         }
  215.         if (getLeft() != null && getLeft().isOutputVoltageHigherThan(this) && getLeft().canOutputPower())
  216.         {
  217.             return getLeft();
  218.         }
  219.         if (getRight() != null && getRight().isOutputVoltageHigherThan(this) && getRight().canOutputPower())
  220.         {
  221.             return getRight();
  222.         }
  223.         if (getTop() instanceof TileEntityTransformer)
  224.         {
  225.             TileEntityTransformer t = (TileEntityTransformer)getTop();
  226.             if(!t.isOriginalPowerSourceAttached()){
  227.                 return null;
  228.             }
  229.             return (PoweredTileEntity) t.getPowerSource();
  230.         }
  231.         if (getBottom() instanceof TileEntityTransformer)
  232.         {
  233.             TileEntityTransformer t = (TileEntityTransformer)getBottom();
  234.             if(!t.isOriginalPowerSourceAttached()){
  235.                 return null;
  236.             }
  237.             return (PoweredTileEntity) t.getPowerSource();
  238.         }
  239.         if (getFront() instanceof TileEntityTransformer)
  240.         {
  241.             TileEntityTransformer t = (TileEntityTransformer)getFront();
  242.             if(!t.isOriginalPowerSourceAttached()){
  243.                 return null;
  244.             }
  245.             return (PoweredTileEntity) t.getPowerSource();
  246.         }
  247.         if (getBack() instanceof TileEntityTransformer)
  248.         {
  249.             TileEntityTransformer t = (TileEntityTransformer)getBack();
  250.             if(!t.isOriginalPowerSourceAttached()){
  251.                 return null;
  252.             }
  253.             return (PoweredTileEntity) t.getPowerSource();
  254.         }
  255.         if (getLeft() instanceof TileEntityTransformer)
  256.         {
  257.             TileEntityTransformer t = (TileEntityTransformer)getLeft();
  258.             if(!t.isOriginalPowerSourceAttached()){
  259.                 return null;
  260.             }
  261.             return (PoweredTileEntity) t.getPowerSource();
  262.         }
  263.         if (getRight() instanceof TileEntityTransformer)
  264.         {
  265.             TileEntityTransformer t = (TileEntityTransformer)getRight();
  266.             if(!t.isOriginalPowerSourceAttached()){
  267.                 return null;
  268.             }
  269.             return (PoweredTileEntity) t.getPowerSource();
  270.         }
  271.         if (getTop() instanceof TileEntityNegativeTransformer)
  272.         {
  273.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getTop();
  274.             if(!t.isOriginalPowerSourceAttached()){
  275.                 return null;
  276.             }
  277.             return (PoweredTileEntity) t.getPowerSource();
  278.         }
  279.         if (getBottom() instanceof TileEntityNegativeTransformer)
  280.         {
  281.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBottom();
  282.             if(!t.isOriginalPowerSourceAttached()){
  283.                 return null;
  284.             }
  285.             return (PoweredTileEntity) t.getPowerSource();
  286.         }
  287.         if (getFront() instanceof TileEntityNegativeTransformer)
  288.         {
  289.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getFront();
  290.             if(!t.isOriginalPowerSourceAttached()){
  291.                 return null;
  292.             }
  293.             return (PoweredTileEntity) t.getPowerSource();
  294.         }
  295.         if (getBack() instanceof TileEntityNegativeTransformer)
  296.         {
  297.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBack();
  298.             if(!t.isOriginalPowerSourceAttached()){
  299.                 return null;
  300.             }
  301.             return (PoweredTileEntity) t.getPowerSource();
  302.         }
  303.         if (getLeft() instanceof TileEntityNegativeTransformer)
  304.         {
  305.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getLeft();
  306.             if(!t.isOriginalPowerSourceAttached()){
  307.                 return null;
  308.             }
  309.             return (PoweredTileEntity) t.getPowerSource();
  310.         }
  311.         if (getRight() instanceof TileEntityNegativeTransformer)
  312.         {
  313.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getRight();
  314.             if(!t.isOriginalPowerSourceAttached()){
  315.                 return null;
  316.             }
  317.             return (PoweredTileEntity) t.getPowerSource();
  318.         }
  319.         return null;
  320.     }
  321.    
  322.     public boolean isVoltageInOperatingRange()
  323.     {
  324.         return this.getVoltage() < this.getMaxOperatingVoltage() && this.getVoltage() > this.getMinOperatingVoltage();
  325.     }
  326.  
  327.     public boolean isPowered()
  328.     {
  329.         return this.getVoltage() != 0;
  330.     }
  331.  
  332.     public boolean isOutputVoltageLessThan(PoweredTileEntity device)
  333.     {
  334.         return this.getVoltage() < device.getVoltage();
  335.     }
  336.  
  337.     public boolean isOutputVoltageHigherThan(PoweredTileEntity device)
  338.     {
  339.         return this.getVoltage() > device.getVoltage();
  340.     }
  341.  
  342.     public PoweredTileEntity getTop()
  343.     {
  344.         return this.getPoweredTileAt(this.xCoord, this.yCoord + 1, this.zCoord);
  345.     }
  346.  
  347.     public PoweredTileEntity getBottom()
  348.     {
  349.         return this.getPoweredTileAt(this.xCoord, this.yCoord - 1, this.zCoord);
  350.     }
  351.  
  352.     public PoweredTileEntity getFront()
  353.     {
  354.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord - 1);
  355.     }
  356.  
  357.     public PoweredTileEntity getBack()
  358.     {
  359.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord + 1);
  360.     }
  361.  
  362.     public PoweredTileEntity getRight()
  363.     {
  364.         return this.getPoweredTileAt(this.xCoord - 1, this.yCoord, this.zCoord);
  365.     }
  366.  
  367.     public PoweredTileEntity getLeft()
  368.     {
  369.         return this.getPoweredTileAt(this.xCoord + 1, this.yCoord, this.zCoord);
  370.     }
  371.  
  372.     @Override
  373.     public double getVoltage()
  374.     {
  375.         return this.voltage;
  376.     }
  377.  
  378.     @Override
  379.     public double getMaxOperatingVoltage()
  380.     {
  381.         return 140;
  382.     }
  383.  
  384.     @Override
  385.     public double getMinOperatingVoltage()
  386.     {
  387.         return 110;
  388.     }
  389.  
  390.     @Override
  391.     public double getAmperage()
  392.     {
  393.         return this.amps;
  394.     }
  395.  
  396.     @Override
  397.     public double getMaxOperatingAmps()
  398.     {
  399.         return 4;
  400.     }
  401.  
  402.     @Override
  403.     public double getMinOperatingAmps()
  404.     {
  405.         return 1;
  406.     }
  407.  
  408.     @Override
  409.     public double getResistance()
  410.     {
  411.         return 0.1;
  412.     }
  413.  
  414.     @Override
  415.     public boolean canOutputPower()
  416.     {
  417.         return false;
  418.     }
  419. }
Advertisement
Add Comment
Please, Sign In to add comment