Guest User

Untitled

a guest
Oct 28th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. package greatblitz.testmod.tileentity;
  2.  
  3. import cofh.api.energy.EnergyStorage;
  4. import cofh.api.energy.IEnergyReceiver;
  5. import mekanism.api.gas.Gas;
  6. import mekanism.api.gas.GasStack;
  7. import mekanism.api.gas.GasTank;
  8. import mekanism.api.gas.IGasHandler;
  9. import mekanism.api.gas.ITubeConnection;
  10. import mekanism.common.capabilities.Capabilities;
  11. import net.minecraft.entity.player.EntityPlayer;
  12. import net.minecraft.nbt.NBTTagCompound;
  13. import net.minecraft.network.NetworkManager;
  14. import net.minecraft.network.play.server.SPacketUpdateTileEntity;
  15. import net.minecraft.tileentity.TileEntity;
  16. import net.minecraft.util.EnumFacing;
  17. import net.minecraftforge.common.capabilities.Capability;
  18. import net.minecraftforge.items.CapabilityItemHandler;
  19. import net.minecraftforge.items.ItemStackHandler;
  20.  
  21. public class TileEntityTestBlock extends TileEntity implements IEnergyReceiver, IGasHandler, ITubeConnection{
  22.  
  23. public GasTank gastank = new GasTank(2400);
  24.  
  25. public EnergyStorage es = new EnergyStorage(32000, 20);
  26. ItemStackHandler inv = new ItemStackHandler(3) {
  27. @Override
  28. protected void onContentsChanged(int slot) {
  29. TileEntityTestBlock.this.markDirty();
  30. }
  31. };
  32.  
  33. public boolean canInteractWith(EntityPlayer p) {
  34. return this.worldObj.getTileEntity(this.getPos()) == this && p.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64;
  35. }
  36.  
  37. @Override
  38. public int getEnergyStored(EnumFacing from) {
  39. return es.getEnergyStored();
  40. }
  41.  
  42. @Override
  43. public int getMaxEnergyStored(EnumFacing from) {
  44. return es.getMaxEnergyStored();
  45. }
  46.  
  47. @Override
  48. public boolean canConnectEnergy(EnumFacing from) {
  49. return true;
  50. }
  51.  
  52. @Override
  53. public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate) {
  54. worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 3);
  55. return es.receiveEnergy(maxReceive, simulate);
  56. }
  57.  
  58. @Override
  59. public void readFromNBT(NBTTagCompound nbt) {
  60. super.readFromNBT(nbt);
  61. es.readFromNBT(nbt);
  62. if (nbt.hasKey("item")) inv.deserializeNBT((NBTTagCompound) nbt.getTag("item"));
  63. if (nbt.hasKey("gas")) gastank.read((NBTTagCompound) nbt.getTag("gas"));
  64. }
  65.  
  66. @Override
  67. public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
  68. super.writeToNBT(nbt);
  69. es.writeToNBT(nbt);
  70. nbt.setTag("item", inv.serializeNBT());
  71. nbt.setTag("gas", gastank.write(new NBTTagCompound()));
  72. return nbt;
  73. }
  74.  
  75. @Override
  76. public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
  77. if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true;
  78. else if(capability == Capabilities.GAS_HANDLER_CAPABILITY) return true;
  79. else if(capability == Capabilities.TUBE_CONNECTION_CAPABILITY && facing == EnumFacing.UP) return true;
  80. return super.hasCapability(capability, facing);
  81. }
  82.  
  83. @Override
  84. public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
  85. if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T) inv;
  86. else if (capability == Capabilities.GAS_HANDLER_CAPABILITY) return (T) this;
  87. else if (capability == Capabilities.TUBE_CONNECTION_CAPABILITY && facing == EnumFacing.UP) return (T) this;
  88. return super.getCapability(capability, facing);
  89. }
  90.  
  91. @Override
  92. public NBTTagCompound getUpdateTag() {
  93. NBTTagCompound nbt = super.getUpdateTag();
  94. writeToNBT(nbt);
  95. return nbt;
  96. }
  97.  
  98. @Override
  99. public void handleUpdateTag(NBTTagCompound tag) {
  100. super.handleUpdateTag(tag);
  101. }
  102.  
  103. @Override
  104. public SPacketUpdateTileEntity getUpdatePacket() {
  105. NBTTagCompound nbt = new NBTTagCompound();
  106. this.writeToNBT(nbt);
  107.  
  108. return new SPacketUpdateTileEntity(getPos(), 0, nbt);
  109. }
  110.  
  111. @Override
  112. public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
  113. this.readFromNBT(pkt.getNbtCompound());
  114. }
  115.  
  116. @Override
  117. public boolean canReceiveGas(EnumFacing side, Gas type) {
  118. return true;
  119. }
  120.  
  121. @Override
  122. public int receiveGas(EnumFacing side, GasStack stack, boolean doTransfer) {
  123. if (side == EnumFacing.UP) {
  124. worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 3);
  125. return gastank.receive(stack, doTransfer);
  126. }
  127. return 0;
  128. }
  129.  
  130. @Override
  131. public boolean canDrawGas(EnumFacing side, Gas type) {
  132. return false;
  133. }
  134.  
  135. @Override
  136. public GasStack drawGas(EnumFacing side, int amount, boolean doTransfer) {
  137. return null;
  138. }
  139.  
  140. @Override
  141. public boolean canTubeConnect(EnumFacing side) {
  142. if (side == EnumFacing.UP) return true;
  143. return false;
  144. }
  145.  
  146. }
Add Comment
Please, Sign In to add comment