Advertisement
Guest User

ChargerTileEntity

a guest
May 21st, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.79 KB | None | 0 0
  1. package me.onVoid.helpfuladdons.charger;
  2.  
  3. import cofh.api.energy.EnergyStorage;
  4. import cofh.api.energy.IEnergyContainerItem;
  5. import cofh.api.energy.IEnergyHandler;
  6. import cofh.api.energy.IEnergyReceiver;
  7. import cofh.api.energy.IEnergyStorage;
  8. import cofh.api.energy.ItemEnergyContainer;
  9. import cofh.api.energy.TileEnergyHandler;
  10. import cpw.mods.fml.common.FMLCommonHandler;
  11. import ic2.api.item.ElectricItem;
  12. import ic2.api.item.IElectricItem;
  13. import ic2.api.item.IElectricItemManager;
  14. import ic2.api.item.ISpecialElectricItem;
  15. import net.minecraft.block.Block;
  16. import net.minecraft.entity.player.EntityPlayer;
  17. import net.minecraft.init.Blocks;
  18. import net.minecraft.init.Items;
  19. import net.minecraft.inventory.ISidedInventory;
  20. import net.minecraft.item.ItemStack;
  21. import net.minecraft.nbt.NBTTagCompound;
  22. import net.minecraft.server.gui.IUpdatePlayerListBox;
  23. import net.minecraft.tileentity.TileEntity;
  24. import net.minecraft.util.ChatComponentText;
  25. import net.minecraft.util.IChatComponent;
  26. import net.minecraftforge.common.util.ForgeDirection;
  27. import ic2.api.item.IElectricItem;
  28. import ic2.api.item.IElectricItemManager;
  29.  
  30. public class ChargerTileEntity extends TileEnergyHandler implements ISidedInventory, IEnergyReceiver, IEnergyStorage, IEnergyHandler {
  31.  
  32.     private String localizedName;
  33.    
  34.     public static int OneEUEquals_RF = 4; //1 EU = 4 RF
  35.    
  36.     public static int RFChargeAmt = 7000;
  37.     public static int EUChargeAmt = RFChargeAmt / OneEUEquals_RF;
  38.    
  39.     public static int charging;
  40.     public static int chargingDC;
  41.     public static int chargingDC2;
  42.    
  43.     private ItemStack[] slots = new ItemStack[11];
  44.    
  45.     private static final int[] slots_top = new int[]{0,1,2,3,4,5,6,7,8};
  46.     private static final int[] slots_bottom = new int[]{9};
  47.     private static final int[] slots_side = new int[]{9};
  48.    
  49.     public static EnergyStorage storage;
  50.     public static int MAX_RECEIVE = 15000;
  51.     public static int CAPACITY = 600000;
  52.    
  53.    
  54.     public ChargerTileEntity(){
  55.         storage = new EnergyStorage(CAPACITY, MAX_RECEIVE);
  56.     }
  57.  
  58.     @Override
  59.     public int getEnergyStored() {
  60.         return storage.getEnergyStored();
  61.     }
  62.    
  63.     @Override
  64.     public void readFromNBT(NBTTagCompound nbt) {
  65.         super.readFromNBT(nbt);
  66.         storage.readFromNBT(nbt);
  67.     }
  68.  
  69.     @Override
  70.     public void writeToNBT(NBTTagCompound nbt) {
  71.         super.writeToNBT(nbt);
  72.         storage.writeToNBT(nbt);
  73.     }
  74.    
  75.     public void setGuiDisplayName(String displayName){
  76.         this.localizedName = displayName;
  77.     }
  78.  
  79.     public String getInventoryName() {
  80.         return this.hasCustomInventoryName() ? this.localizedName : "container.multiCharger";
  81.     }
  82.  
  83.     public boolean hasCustomInventoryName() {
  84.         return this.localizedName != null && this.localizedName.length() > 0;
  85.     }
  86.    
  87.     public int getSizeInventory() {
  88.         return this.slots.length;
  89.     }
  90.    
  91.     public void openInventory() {
  92.     }
  93.    
  94.     public void closeInventory() {
  95.     }
  96.  
  97.     @Override
  98.     public boolean canInsertItem(int i, ItemStack is, int j) {
  99.         return this.isItemValidForSlot(j, is);
  100.     }
  101.    
  102.     @Override
  103.     public boolean canExtractItem(int i, ItemStack is, int j) {
  104.         if (j == 9 || j == 10){
  105.             return true;
  106.         } else {
  107.             return false;
  108.         }
  109.     }
  110.    
  111.     @Override
  112.     public int[] getAccessibleSlotsFromSide(int var1) {
  113.         if (var1 == 0){
  114.             return slots_bottom;
  115.         } else if (var1 == 1){
  116.             return slots_top;
  117.         } else {
  118.             return slots_side;
  119.         }
  120.     }
  121.    
  122.     @Override
  123.     public boolean isItemValidForSlot(int i, ItemStack is) {
  124.         if (i == 9 || i == 10){
  125.             return false;
  126.         } else {
  127.             return true;
  128.         }
  129.     }
  130.    
  131.     @Override
  132.     public ItemStack getStackInSlot(int arg0) {
  133.         return this.slots[arg0];
  134.     }
  135.    
  136.     @Override
  137.     public ItemStack decrStackSize(int arg0, int arg1) {
  138.         if (this.slots[arg0] != null){
  139.             ItemStack is;
  140.              if (this.slots[arg0].stackSize <= arg1){
  141.                  is = this.slots[arg0];
  142.                  this.slots[arg0] = null;
  143.                  return is;
  144.              } else {
  145.                  is = this.slots[arg0].splitStack(arg1);
  146.                  
  147.                  if (this.slots[arg0].stackSize == 0){
  148.                      this.slots[arg0] = null;
  149.                  }
  150.              }
  151.         }
  152.         return null;
  153.     }
  154.  
  155.     @Override
  156.     public ItemStack getStackInSlotOnClosing(int i) {
  157.         if (this.slots[i] != null){
  158.             ItemStack is = this.slots[i];
  159.             this.slots[i] = null;
  160.             return is;
  161.          }
  162.         return null;
  163.     }
  164.    
  165.     @Override
  166.     public void setInventorySlotContents(int i, ItemStack is) {
  167.         this.slots[i] = is;
  168.         if (is != null && is.stackSize > this.getInventoryStackLimit()){
  169.             is.stackSize = this.getInventoryStackLimit();
  170.         }
  171.     }
  172.    
  173.     @Override
  174.     public int getInventoryStackLimit() {
  175.         return 1;
  176.     }
  177.  
  178.     @Override
  179.     public boolean isUseableByPlayer(EntityPlayer p) {
  180.         return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false :
  181.             p.getDistanceSq((double) this.xCoord + 0.5D, (double) this.yCoord + 0.5D, (double) this.zCoord + 0.5D) <= 64.0D;
  182.     }
  183.  
  184.     @Override
  185.     public boolean canConnectEnergy(ForgeDirection from) {
  186.         return true;
  187.     }
  188.  
  189.     @Override
  190.     public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
  191.         return storage.receiveEnergy(maxReceive, simulate);
  192.     }
  193.  
  194.     @Override
  195.     public int getEnergyStored(ForgeDirection from) {
  196.         return storage.getEnergyStored();
  197.     }
  198.  
  199.     @Override
  200.     public int getMaxEnergyStored(ForgeDirection from) {
  201.         return storage.getMaxEnergyStored();
  202.     }
  203.  
  204.     @Override
  205.     public int extractEnergy(int maxExtract, boolean simulate) {
  206.         return storage.extractEnergy(maxExtract, simulate);
  207.     }
  208.  
  209.     @Override
  210.     public int receiveEnergy(int maxReceive, boolean simulate) {
  211.         return storage.receiveEnergy(maxReceive, simulate);
  212.     }
  213.  
  214.     @Override
  215.     public int getMaxEnergyStored() {
  216.         return storage.getMaxEnergyStored();
  217.     }
  218.  
  219.     @Override
  220.     public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
  221.         return storage.extractEnergy(maxExtract, simulate);
  222.     }
  223.    
  224.     public void checkTen(){
  225.         chargingDC = 0;
  226.         if (slots[10].getItem() instanceof ItemEnergyContainer){
  227.             chargingDC = ((ItemEnergyContainer)slots[10].getItem()).getEnergyStored(slots[10]);
  228.         } else if (slots[10].getItem() instanceof IEnergyContainerItem){
  229.             chargingDC = ((IEnergyContainerItem)slots[10].getItem()).getEnergyStored(slots[10]);
  230.         }
  231.     }
  232.    
  233.     public void chargeRFItemEnergyContainer(){
  234.         if (((ItemEnergyContainer)slots[10].getItem()).getEnergyStored(slots[10])
  235.                 == ((ItemEnergyContainer)slots[10].getItem()).getMaxEnergyStored(slots[10])){
  236.             slots[9] = slots[10].copy();
  237.             this.setInventorySlotContents(10, null);
  238.         } else {
  239.             int x = 0;
  240.             if (storage.getEnergyStored() >= RFChargeAmt){
  241.         x = ((ItemEnergyContainer)slots[10].getItem()).receiveEnergy(slots[10], RFChargeAmt, false);
  242.             } else {
  243.                 x = ((ItemEnergyContainer)slots[10].getItem()).receiveEnergy(slots[10], storage.getEnergyStored(), false);
  244.             }
  245.         extractEnergy(x, false);
  246.         }
  247.     }
  248.    
  249.     public void chargeRFIEnergyContainerItem(){
  250.         if (((IEnergyContainerItem)slots[10].getItem()).getEnergyStored(slots[10])
  251.                 == ((IEnergyContainerItem)slots[10].getItem()).getMaxEnergyStored(slots[10])){
  252.             slots[9] = slots[10].copy();
  253.             this.setInventorySlotContents(10, null);
  254.     } else {
  255.         int x = 0;
  256.             if (storage.getEnergyStored() >= RFChargeAmt){
  257.         x = ((IEnergyContainerItem)slots[10].getItem()).receiveEnergy(slots[10], RFChargeAmt, false);
  258.             } else {
  259.                 x = ((IEnergyContainerItem)slots[10].getItem()).receiveEnergy(slots[10], storage.getEnergyStored(), false);
  260.             }
  261.         extractEnergy(x, false);
  262.         }
  263.     }
  264.    
  265.     public void chargeEUIElectricItem(){
  266.         if (ElectricItem.manager.getCharge(slots[10]) == ((IElectricItem)slots[10].getItem()).getMaxCharge(slots[10])){
  267.             slots[9] = slots[10].copy();
  268.             this.setInventorySlotContents(10, null);
  269.         } else {
  270.             if (storage.getEnergyStored() >= EUChargeAmt * OneEUEquals_RF){
  271.         ElectricItem.manager.charge(slots[10],
  272.                 (double)EUChargeAmt, ((IElectricItem)slots[10].getItem()).getTier(slots[10]), false, false);
  273.             } else {
  274.                 ElectricItem.manager.charge(slots[10],
  275.                         (double)(storage.getEnergyStored() / OneEUEquals_RF), ((IElectricItem)slots[10].getItem()).getTier(slots[10]), false, false);
  276.             }
  277.             charging = ((int)ElectricItem.manager.getCharge(slots[10]) * OneEUEquals_RF) - chargingDC;
  278.             extractEnergy(charging, false);
  279.             chargingDC = chargingDC + charging;
  280.             charging = 0;
  281.         }
  282.     }
  283.    
  284.     public void chargeEUISpecialElectricItem(){
  285.         if (ElectricItem.manager.getCharge(slots[10]) == ((ISpecialElectricItem)slots[10].getItem()).getMaxCharge(slots[10])){
  286.             slots[9] = slots[10].copy();
  287.             this.setInventorySlotContents(10, null);
  288.         } else {
  289.             if (storage.getEnergyStored() >= EUChargeAmt * OneEUEquals_RF){
  290.         ElectricItem.manager.charge(slots[10],
  291.                 (double)EUChargeAmt, ((ISpecialElectricItem)slots[10].getItem()).getTier(slots[10]), false, false);
  292.             } else {
  293.                 ElectricItem.manager.charge(slots[10],
  294.                         (double)(storage.getEnergyStored() / OneEUEquals_RF), ((IElectricItem)slots[10].getItem()).getTier(slots[10]), false, false);
  295.             }
  296.             charging = ((int)ElectricItem.manager.getCharge(slots[10]) * OneEUEquals_RF) - chargingDC;
  297.             extractEnergy(charging, false);
  298.             chargingDC = chargingDC + charging;
  299.             charging = 0;
  300.         }
  301.     }
  302.    
  303.     @Override
  304.     public void updateEntity(){
  305.         if (slots[10] == null){
  306.             charging = 0;
  307.             chargingDC = 0;
  308.             if (slots[0] != null){
  309.                 slots[10] = slots[0].copy();
  310.                 checkTen();
  311.                 this.setInventorySlotContents(0, null);
  312.             } else if (slots[1] != null){
  313.                 slots[10] = slots[1].copy();
  314.                 checkTen();
  315.                 this.setInventorySlotContents(1, null);
  316.             } else if (slots[2] != null){
  317.                 slots[10] = slots[2].copy();
  318.                 checkTen();
  319.                 this.setInventorySlotContents(2, null);
  320.             } else if (slots[3] != null){
  321.                 slots[10] = slots[3].copy();
  322.                 checkTen();
  323.                 this.setInventorySlotContents(3, null);
  324.             } else if (slots[4] != null){
  325.                 slots[10] = slots[4].copy();
  326.                 checkTen();
  327.                 this.setInventorySlotContents(4, null);
  328.             } else if (slots[5] != null){
  329.                 slots[10] = slots[5].copy();
  330.                 checkTen();
  331.                 this.setInventorySlotContents(5, null);
  332.             } else if (slots[6] != null){
  333.                 slots[10] = slots[6].copy();
  334.                 checkTen();
  335.                 this.setInventorySlotContents(6, null);
  336.             } else if (slots[7] != null){
  337.                 slots[10] = slots[7].copy();
  338.                 checkTen();
  339.                 this.setInventorySlotContents(7, null);
  340.             } else if (slots[8] != null){
  341.                 slots[10] = slots[8].copy();
  342.                 checkTen();
  343.                 this.setInventorySlotContents(8, null);
  344.             }
  345.         } else {
  346.             if (storage.getEnergyStored() > 0){
  347.                     if (slots[10].getItem() instanceof ItemEnergyContainer){
  348.                         chargeRFItemEnergyContainer();
  349.                     } else if (slots[10].getItem() instanceof IEnergyContainerItem){
  350.                         chargeRFIEnergyContainerItem();
  351.                     } else if (slots[10].getItem() instanceof IElectricItem){
  352.                         chargeEUIElectricItem();
  353.                     } else if (slots[10].getItem() instanceof ISpecialElectricItem){
  354.                         chargeEUISpecialElectricItem();
  355.                     }
  356.             }
  357.         }
  358.     }
  359.    
  360. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement