hassansyyid

Baaaa

Jun 24th, 2015
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.79 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.  
  18. public abstract class PoweredTileEntity extends TileEntity implements IPowerDevice
  19. {
  20.     public double voltage, amps;
  21.     public ArrayList<PoweredTileEntity> arrayAdded = new ArrayList<PoweredTileEntity>();
  22.     @Override
  23.     public void updateEntity()
  24.     {
  25.         super.updateEntity();
  26.        
  27.         if (this.isVoltageInOperatingRange())
  28.         {
  29.             this.onVoltageTick();
  30.         }
  31.        
  32.         if (this.voltage > this.getMaxOperatingVoltage())
  33.         {
  34.             this.onOverloadTick();
  35.         }
  36.        
  37.         if (this.voltage <= this.getMinOperatingVoltage())
  38.         {
  39.             this.onUnderloadTick();
  40.         }
  41.  
  42.         if (this.getPowerSourceTile(this) == null)
  43.         {
  44.             this.voltage = 0;
  45.         }
  46.        
  47.         if (this.canOutputPower())
  48.         {
  49.             this.outputPower();
  50.         }
  51.    
  52.     }
  53.    
  54.     public void outputPower()
  55.     {
  56.         double voltage = this.getVoltageAfterApplyingResistance();
  57.        
  58.         this.outputPowerToTile(this.getTop(), voltage);
  59.         this.outputPowerToTile(this.getBottom(), voltage);
  60.         this.outputPowerToTile(this.getFront(), voltage);
  61.         this.outputPowerToTile(this.getBack(), voltage);
  62.         this.outputPowerToTile(this.getLeft(), voltage);
  63.         this.outputPowerToTile(this.getRight(), voltage);
  64.     }
  65.    
  66.     public void outputPowerToTile(PoweredTileEntity tile, double voltage)
  67.     {
  68.         if (tile != null && tile.getPowerSourceTile(tile) == this)
  69.         {
  70.             tile.setVoltage(voltage);
  71.         }
  72.         else if(tile != null && tile instanceof TileEntityPowerline && tile.getVoltage() == 0){
  73.             tile.setVoltage(this.getVoltage());
  74.         }
  75.     }
  76.  
  77.     @Override
  78.     public abstract void onVoltageTick();
  79.  
  80.     @Override
  81.     public abstract void onOverloadTick();
  82.  
  83.     @Override
  84.     public abstract void onUnderloadTick();
  85.  
  86.     @Override
  87.     public Packet getDescriptionPacket()
  88.     {
  89.         NBTTagCompound nbtTag = new NBTTagCompound();
  90.         this.writeToNBT(nbtTag);
  91.         return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbtTag);
  92.     }
  93.  
  94.     @Override
  95.     public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
  96.     {
  97.         readFromNBT(packet.func_148857_g());
  98.     }
  99.  
  100.     @Override
  101.     public void writeToNBT(NBTTagCompound tag)
  102.     {
  103.         super.writeToNBT(tag);
  104.  
  105.         tag.setDouble("Volts", this.voltage);
  106.         tag.setDouble("Amps", this.amps);
  107.     }
  108.  
  109.     @Override
  110.     public void readFromNBT(NBTTagCompound tag)
  111.     {
  112.         super.readFromNBT(tag);
  113.  
  114.         this.voltage = tag.getDouble("Volts");
  115.         this.amps = tag.getDouble("Amps");
  116.     }
  117.  
  118.     public void setVoltage(double voltageIn)
  119.     {
  120.         this.voltage = voltageIn;
  121.     }
  122.  
  123.     public double getVoltageAfterApplyingResistance()
  124.     {
  125.         return this.getVoltage() - this.getResistance() <= 0 ? 0 : this.getVoltage() - this.getResistance();
  126.     }
  127.  
  128.     public void setAmps(double ampsIn)
  129.     {
  130.         this.amps = ampsIn;
  131.     }
  132.  
  133.     public PoweredTileEntity getPoweredTileAt(int x, int y, int z)
  134.     {
  135.         return this.worldObj.getTileEntity(x, y, z) instanceof PoweredTileEntity ? (PoweredTileEntity) this.worldObj.getTileEntity(x, y, z) : null;
  136.     }
  137.  
  138.     public PoweredTileEntity getPowerSourceTile(PoweredTileEntity e)
  139.     {      
  140.         double addedVoltage = 24;
  141.         List<PoweredTileEntity> list = new ArrayList<PoweredTileEntity>();
  142.         list.add(e.getTop());
  143.         list.add(e.getBack());
  144.         list.add(e.getBottom());
  145.         list.add(e.getLeft());
  146.         list.add(e.getRight());
  147.         list.add(e.getFront());
  148.         for(PoweredTileEntity te : list){
  149.             if(te instanceof TileEntityRepulsionGenerator || te instanceof TileEntitySolarPanel){
  150.                 arrayAdded.add(te);
  151.                 return te;
  152.             }
  153.             else if(te == null || arrayAdded.contains(te)){
  154.                 continue;
  155.             }
  156.             else{
  157.                 arrayAdded.add(te);
  158.                 getPowerSourceTile(e);
  159.             }
  160.            
  161.         }
  162.        
  163.         //Transformer Stuff
  164.         if (getTop() instanceof TileEntityTransformer)
  165.         {
  166.             TileEntityTransformer t = (TileEntityTransformer)getTop();
  167.             if(!t.isOriginalPowerSourceAttached()){
  168.                 return null;
  169.             }
  170.             return (PoweredTileEntity) t.getPowerSource();
  171.         }
  172.         if (getBottom() instanceof TileEntityTransformer)
  173.         {
  174.             TileEntityTransformer t = (TileEntityTransformer)getBottom();
  175.             if(!t.isOriginalPowerSourceAttached()){
  176.                 return null;
  177.             }
  178.             return (PoweredTileEntity) t.getPowerSource();
  179.         }
  180.         if (getFront() instanceof TileEntityTransformer)
  181.         {
  182.             TileEntityTransformer t = (TileEntityTransformer)getFront();
  183.             if(!t.isOriginalPowerSourceAttached()){
  184.                 return null;
  185.             }
  186.             return (PoweredTileEntity) t.getPowerSource();
  187.         }
  188.         if (getBack() instanceof TileEntityTransformer)
  189.         {
  190.             TileEntityTransformer t = (TileEntityTransformer)getBack();
  191.             if(!t.isOriginalPowerSourceAttached()){
  192.                 return null;
  193.             }
  194.             return (PoweredTileEntity) t.getPowerSource();
  195.         }
  196.         if (getLeft() instanceof TileEntityTransformer)
  197.         {
  198.             TileEntityTransformer t = (TileEntityTransformer)getLeft();
  199.             if(!t.isOriginalPowerSourceAttached()){
  200.                 return null;
  201.             }
  202.             return (PoweredTileEntity) t.getPowerSource();
  203.         }
  204.         if (getRight() instanceof TileEntityTransformer)
  205.         {
  206.             TileEntityTransformer t = (TileEntityTransformer)getRight();
  207.             if(!t.isOriginalPowerSourceAttached()){
  208.                 return null;
  209.             }
  210.             return (PoweredTileEntity) t.getPowerSource();
  211.         }
  212.         if (getTop() instanceof TileEntityNegativeTransformer)
  213.         {
  214.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getTop();
  215.             if(!t.isOriginalPowerSourceAttached()){
  216.                 return null;
  217.             }
  218.             return (PoweredTileEntity) t.getPowerSource();
  219.         }
  220.         if (getBottom() instanceof TileEntityNegativeTransformer)
  221.         {
  222.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBottom();
  223.             if(!t.isOriginalPowerSourceAttached()){
  224.                 return null;
  225.             }
  226.             return (PoweredTileEntity) t.getPowerSource();
  227.         }
  228.         if (getFront() instanceof TileEntityNegativeTransformer)
  229.         {
  230.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getFront();
  231.             if(!t.isOriginalPowerSourceAttached()){
  232.                 return null;
  233.             }
  234.             return (PoweredTileEntity) t.getPowerSource();
  235.         }
  236.         if (getBack() instanceof TileEntityNegativeTransformer)
  237.         {
  238.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getBack();
  239.             if(!t.isOriginalPowerSourceAttached()){
  240.                 return null;
  241.             }
  242.             return (PoweredTileEntity) t.getPowerSource();
  243.         }
  244.         if (getLeft() instanceof TileEntityNegativeTransformer)
  245.         {
  246.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getLeft();
  247.             if(!t.isOriginalPowerSourceAttached()){
  248.                 return null;
  249.             }
  250.             return (PoweredTileEntity) t.getPowerSource();
  251.         }
  252.         if (getRight() instanceof TileEntityNegativeTransformer)
  253.         {
  254.             TileEntityNegativeTransformer t = (TileEntityNegativeTransformer)getRight();
  255.             if(!t.isOriginalPowerSourceAttached()){
  256.                 return null;
  257.             }
  258.             return (PoweredTileEntity) t.getPowerSource();
  259.         }
  260.         return null;
  261.     }
  262.    
  263.     public boolean isVoltageInOperatingRange()
  264.     {
  265.         return this.getVoltage() < this.getMaxOperatingVoltage() && this.getVoltage() > this.getMinOperatingVoltage();
  266.     }
  267.  
  268.     public boolean isPowered()
  269.     {
  270.         return this.getVoltage() != 0;
  271.     }
  272.  
  273.     public boolean isOutputVoltageLessThan(PoweredTileEntity device)
  274.     {
  275.         return this.getVoltage() < device.getVoltage();
  276.     }
  277.  
  278.     public boolean isOutputVoltageHigherThan(PoweredTileEntity device)
  279.     {
  280.         return this.getVoltage() > device.getVoltage();
  281.     }
  282.  
  283.     public PoweredTileEntity getTop()
  284.     {
  285.         return this.getPoweredTileAt(this.xCoord, this.yCoord + 1, this.zCoord);
  286.     }
  287.  
  288.     public PoweredTileEntity getBottom()
  289.     {
  290.         return this.getPoweredTileAt(this.xCoord, this.yCoord - 1, this.zCoord);
  291.     }
  292.  
  293.     public PoweredTileEntity getFront()
  294.     {
  295.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord - 1);
  296.     }
  297.  
  298.     public PoweredTileEntity getBack()
  299.     {
  300.         return this.getPoweredTileAt(this.xCoord, this.yCoord, this.zCoord + 1);
  301.     }
  302.  
  303.     public PoweredTileEntity getRight()
  304.     {
  305.         return this.getPoweredTileAt(this.xCoord - 1, this.yCoord, this.zCoord);
  306.     }
  307.  
  308.     public PoweredTileEntity getLeft()
  309.     {
  310.         return this.getPoweredTileAt(this.xCoord + 1, this.yCoord, this.zCoord);
  311.     }
  312.  
  313.     @Override
  314.     public double getVoltage()
  315.     {
  316.         return this.voltage;
  317.     }
  318.  
  319.     @Override
  320.     public double getMaxOperatingVoltage()
  321.     {
  322.         return 140;
  323.     }
  324.  
  325.     @Override
  326.     public double getMinOperatingVoltage()
  327.     {
  328.         return 110;
  329.     }
  330.  
  331.     @Override
  332.     public double getAmperage()
  333.     {
  334.         return this.amps;
  335.     }
  336.  
  337.     @Override
  338.     public double getMaxOperatingAmps()
  339.     {
  340.         return 4;
  341.     }
  342.  
  343.     @Override
  344.     public double getMinOperatingAmps()
  345.     {
  346.         return 1;
  347.     }
  348.  
  349.     @Override
  350.     public double getResistance()
  351.     {
  352.         return 0.1;
  353.     }
  354.  
  355.     @Override
  356.     public boolean canOutputPower()
  357.     {
  358.         return false;
  359.     }
  360. }
Advertisement
Add Comment
Please, Sign In to add comment