Advertisement
hassansyyid

Untitled

Jul 6th, 2015
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.21 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.             tile.setVoltage(this.getVoltage());
  108.         }
  109.     }
  110.  
  111.     @Override
  112.     public abstract void onVoltageTick();
  113.  
  114.     @Override
  115.     public abstract void onOverloadTick();
  116.  
  117.     @Override
  118.     public abstract void onUnderloadTick();
  119.    
  120.     @Override
  121.     public void updateChildren()
  122.     {
  123.         if(this.children.size() > 0)
  124.         {
  125.             if(this.children.contains(this))
  126.             {
  127.                 this.children.remove(this);
  128.             }
  129.             if(this.children.size() > 0)
  130.             {
  131.                 List <PoweredTileEntity> list = Lists.newArrayList(this.children);
  132.                 for(PoweredTileEntity te : list)
  133.                 {
  134.                     te.state = this.state;
  135.                     te.updateChildren();
  136.                 }
  137.             }
  138.         }
  139.     }
  140.    
  141.     @Override
  142.     public Packet getDescriptionPacket()
  143.     {
  144.         NBTTagCompound nbtTag = new NBTTagCompound();
  145.         this.writeToNBT(nbtTag);
  146.         return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbtTag);
  147.     }
  148.  
  149.     @Override
  150.     public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
  151.     {
  152.         readFromNBT(packet.func_148857_g());
  153.     }
  154.  
  155.     @Override
  156.     public void writeToNBT(NBTTagCompound tag)
  157.     {
  158.         super.writeToNBT(tag);
  159.  
  160.         tag.setDouble("Volts", this.voltage);
  161.         tag.setDouble("Amps", this.amps);
  162.     }
  163.  
  164.     @Override
  165.     public void readFromNBT(NBTTagCompound tag)
  166.     {
  167.         super.readFromNBT(tag);
  168.  
  169.         this.voltage = tag.getDouble("Volts");
  170.         this.amps = tag.getDouble("Amps");
  171.     }
  172.  
  173.     public void setVoltage(double voltageIn)
  174.     {
  175.         this.voltage = voltageIn;
  176.     }
  177.  
  178.     public double getVoltageAfterApplyingResistance()
  179.     {
  180.         return this.getVoltage() - this.getResistance() <= 0 ? 0 : this.getVoltage() - this.getResistance();
  181.     }
  182.  
  183.     public void setAmps(double ampsIn)
  184.     {
  185.         this.amps = ampsIn;
  186.     }
  187.  
  188.     public PoweredTileEntity getPoweredTileAt(int x, int y, int z)
  189.     {
  190.         return this.worldObj.getTileEntity(x, y, z) instanceof PoweredTileEntity ? (PoweredTileEntity) this.worldObj.getTileEntity(x, y, z) : null;
  191.     }
  192.  
  193.     public PoweredTileEntity getPowerSourceTile(PoweredTileEntity e){
  194.         if (getTop() != null && getTop().isOutputVoltageHigherThan(this) && getTop().canOutputPower())
  195.         {
  196.             return getTop();
  197.         }
  198.         if (getBottom() != null && getBottom().isOutputVoltageHigherThan(this) && getBottom().canOutputPower())
  199.         {
  200.             return getBottom();
  201.         }
  202.         if (getFront() != null && getFront().isOutputVoltageHigherThan(this) && getFront().canOutputPower())
  203.         {
  204.             return getFront();
  205.         }
  206.         if (getBack() != null && getBack().isOutputVoltageHigherThan(this) && getBack().canOutputPower())
  207.         {
  208.             return getBack();
  209.         }
  210.         if (getLeft() != null && getLeft().isOutputVoltageHigherThan(this) && getLeft().canOutputPower())
  211.         {
  212.             return getLeft();
  213.         }
  214.         if (getRight() != null && getRight().isOutputVoltageHigherThan(this) && getRight().canOutputPower())
  215.         {
  216.             return getRight();
  217.         }
  218.         if (getTop() instanceof TileEntityTransformer)
  219.         {
  220.             TileEntityTransformer t = (TileEntityTransformer)getTop();
  221.             if(!t.isOriginalPowerSourceAttached()){
  222.                 return null;
  223.             }
  224.             return (PoweredTileEntity) t.getPowerSource();
  225.         }
  226.         if (getBottom() instanceof TileEntityTransformer)
  227.         {
  228.             TileEntityTransformer t = (TileEntityTransformer)getBottom();
  229.             if(!t.isOriginalPowerSourceAttached()){
  230.                 return null;
  231.             }
  232.             return (PoweredTileEntity) t.getPowerSource();
  233.         }
  234.         if (getFront() instanceof TileEntityTransformer)
  235.         {
  236.             TileEntityTransformer t = (TileEntityTransformer)getFront();
  237.             if(!t.isOriginalPowerSourceAttached()){
  238.                 return null;
  239.             }
  240.             return (PoweredTileEntity) t.getPowerSource();
  241.         }
  242.         if (getBack() instanceof TileEntityTransformer)
  243.         {
  244.             TileEntityTransformer t = (TileEntityTransformer)getBack();
  245.             if(!t.isOriginalPowerSourceAttached()){
  246.                 return null;
  247.             }
  248.             return (PoweredTileEntity) t.getPowerSource();
  249.         }
  250.         if (getLeft() instanceof TileEntityTransformer)
  251.         {
  252.             TileEntityTransformer t = (TileEntityTransformer)getLeft();
  253.             if(!t.isOriginalPowerSourceAttached()){
  254.                 return null;
  255.             }
  256.             return (PoweredTileEntity) t.getPowerSource();
  257.         }
  258.         if (getRight() instanceof TileEntityTransformer)
  259.         {
  260.             TileEntityTransformer t = (TileEntityTransformer)getRight();
  261.             if(!t.isOriginalPowerSourceAttached()){
  262.                 return null;
  263.             }
  264.             return (PoweredTileEntity) t.getPowerSource();
  265.         }
  266.         if (getTop() instanceof TileEntityNegativeTransformer)
  267.         {
  268.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getTop();
  269.             if(!t.isOriginalPowerSourceAttached()){
  270.                 return null;
  271.             }
  272.             return (PoweredTileEntity) t.getPowerSource();
  273.         }
  274.         if (getBottom() instanceof TileEntityNegativeTransformer)
  275.         {
  276.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBottom();
  277.             if(!t.isOriginalPowerSourceAttached()){
  278.                 return null;
  279.             }
  280.             return (PoweredTileEntity) t.getPowerSource();
  281.         }
  282.         if (getFront() instanceof TileEntityNegativeTransformer)
  283.         {
  284.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getFront();
  285.             if(!t.isOriginalPowerSourceAttached()){
  286.                 return null;
  287.             }
  288.             return (PoweredTileEntity) t.getPowerSource();
  289.         }
  290.         if (getBack() instanceof TileEntityNegativeTransformer)
  291.         {
  292.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBack();
  293.             if(!t.isOriginalPowerSourceAttached()){
  294.                 return null;
  295.             }
  296.             return (PoweredTileEntity) t.getPowerSource();
  297.         }
  298.         if (getLeft() instanceof TileEntityNegativeTransformer)
  299.         {
  300.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getLeft();
  301.             if(!t.isOriginalPowerSourceAttached()){
  302.                 return null;
  303.             }
  304.             return (PoweredTileEntity) t.getPowerSource();
  305.         }
  306.         if (getRight() instanceof TileEntityNegativeTransformer)
  307.         {
  308.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getRight();
  309.             if(!t.isOriginalPowerSourceAttached()){
  310.                 return null;
  311.             }
  312.             return (PoweredTileEntity) t.getPowerSource();
  313.         }
  314.         return null;
  315.     }
  316.    
  317.     public boolean isVoltageInOperatingRange()
  318.     {
  319.         return this.getVoltage() < this.getMaxOperatingVoltage() && this.getVoltage() > this.getMinOperatingVoltage();
  320.     }
  321.  
  322.     public boolean isPowered()
  323.     {
  324.         return this.getVoltage() != 0;
  325.     }
  326.  
  327.     public boolean isOutputVoltageLessThan(PoweredTileEntity device)
  328.     {
  329.         return this.getVoltage() < device.getVoltage();
  330.     }
  331.  
  332.     public boolean isOutputVoltageHigherThan(PoweredTileEntity device)
  333.     {
  334.         return this.getVoltage() > device.getVoltage();
  335.     }
  336.  
  337.     public PoweredTileEntity getTop()
  338.     {
  339.         return this.getPoweredTileAt(this.xCoord, this.yCoord + 1, this.zCoord);
  340.     }
  341.  
  342.     public PoweredTileEntity getBottom()
  343.     {
  344.         return this.getPoweredTileAt(this.xCoord, this.yCoord - 1, this.zCoord);
  345.     }
  346.  
  347.     public PoweredTileEntity getFront()
  348.     {
  349.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord - 1);
  350.     }
  351.  
  352.     public PoweredTileEntity getBack()
  353.     {
  354.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord + 1);
  355.     }
  356.  
  357.     public PoweredTileEntity getRight()
  358.     {
  359.         return this.getPoweredTileAt(this.xCoord - 1, this.yCoord, this.zCoord);
  360.     }
  361.  
  362.     public PoweredTileEntity getLeft()
  363.     {
  364.         return this.getPoweredTileAt(this.xCoord + 1, this.yCoord, this.zCoord);
  365.     }
  366.  
  367.     @Override
  368.     public double getVoltage()
  369.     {
  370.         return this.voltage;
  371.     }
  372.  
  373.     @Override
  374.     public double getMaxOperatingVoltage()
  375.     {
  376.         return 140;
  377.     }
  378.  
  379.     @Override
  380.     public double getMinOperatingVoltage()
  381.     {
  382.         return 110;
  383.     }
  384.  
  385.     @Override
  386.     public double getAmperage()
  387.     {
  388.         return this.amps;
  389.     }
  390.  
  391.     @Override
  392.     public double getMaxOperatingAmps()
  393.     {
  394.         return 4;
  395.     }
  396.  
  397.     @Override
  398.     public double getMinOperatingAmps()
  399.     {
  400.         return 1;
  401.     }
  402.  
  403.     @Override
  404.     public double getResistance()
  405.     {
  406.         return 0.1;
  407.     }
  408.  
  409.     @Override
  410.     public boolean canOutputPower()
  411.     {
  412.         return false;
  413.     }
  414. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement