Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package greatblitz.testmod.tileentity;
- import cofh.api.energy.EnergyStorage;
- import cofh.api.energy.IEnergyReceiver;
- import mekanism.api.gas.Gas;
- import mekanism.api.gas.GasStack;
- import mekanism.api.gas.GasTank;
- import mekanism.api.gas.IGasHandler;
- import mekanism.api.gas.ITubeConnection;
- import mekanism.common.capabilities.Capabilities;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.network.NetworkManager;
- import net.minecraft.network.play.server.SPacketUpdateTileEntity;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.EnumFacing;
- import net.minecraftforge.common.capabilities.Capability;
- import net.minecraftforge.items.CapabilityItemHandler;
- import net.minecraftforge.items.ItemStackHandler;
- public class TileEntityTestBlock extends TileEntity implements IEnergyReceiver, IGasHandler, ITubeConnection{
- public GasTank gastank = new GasTank(2400);
- public EnergyStorage es = new EnergyStorage(32000, 20);
- ItemStackHandler inv = new ItemStackHandler(3) {
- @Override
- protected void onContentsChanged(int slot) {
- TileEntityTestBlock.this.markDirty();
- }
- };
- public boolean canInteractWith(EntityPlayer p) {
- return this.worldObj.getTileEntity(this.getPos()) == this && p.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64;
- }
- @Override
- public int getEnergyStored(EnumFacing from) {
- return es.getEnergyStored();
- }
- @Override
- public int getMaxEnergyStored(EnumFacing from) {
- return es.getMaxEnergyStored();
- }
- @Override
- public boolean canConnectEnergy(EnumFacing from) {
- return true;
- }
- @Override
- public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate) {
- worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 3);
- return es.receiveEnergy(maxReceive, simulate);
- }
- @Override
- public void readFromNBT(NBTTagCompound nbt) {
- super.readFromNBT(nbt);
- es.readFromNBT(nbt);
- if (nbt.hasKey("item")) inv.deserializeNBT((NBTTagCompound) nbt.getTag("item"));
- if (nbt.hasKey("gas")) gastank.read((NBTTagCompound) nbt.getTag("gas"));
- }
- @Override
- public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
- super.writeToNBT(nbt);
- es.writeToNBT(nbt);
- nbt.setTag("item", inv.serializeNBT());
- nbt.setTag("gas", gastank.write(new NBTTagCompound()));
- return nbt;
- }
- @Override
- public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
- if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true;
- else if(capability == Capabilities.GAS_HANDLER_CAPABILITY) return true;
- else if(capability == Capabilities.TUBE_CONNECTION_CAPABILITY && facing == EnumFacing.UP) return true;
- return super.hasCapability(capability, facing);
- }
- @Override
- public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
- if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T) inv;
- else if (capability == Capabilities.GAS_HANDLER_CAPABILITY) return (T) this;
- else if (capability == Capabilities.TUBE_CONNECTION_CAPABILITY && facing == EnumFacing.UP) return (T) this;
- return super.getCapability(capability, facing);
- }
- @Override
- public NBTTagCompound getUpdateTag() {
- NBTTagCompound nbt = super.getUpdateTag();
- writeToNBT(nbt);
- return nbt;
- }
- @Override
- public void handleUpdateTag(NBTTagCompound tag) {
- super.handleUpdateTag(tag);
- }
- @Override
- public SPacketUpdateTileEntity getUpdatePacket() {
- NBTTagCompound nbt = new NBTTagCompound();
- this.writeToNBT(nbt);
- return new SPacketUpdateTileEntity(getPos(), 0, nbt);
- }
- @Override
- public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
- this.readFromNBT(pkt.getNbtCompound());
- }
- @Override
- public boolean canReceiveGas(EnumFacing side, Gas type) {
- return true;
- }
- @Override
- public int receiveGas(EnumFacing side, GasStack stack, boolean doTransfer) {
- if (side == EnumFacing.UP) {
- worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 3);
- return gastank.receive(stack, doTransfer);
- }
- return 0;
- }
- @Override
- public boolean canDrawGas(EnumFacing side, Gas type) {
- return false;
- }
- @Override
- public GasStack drawGas(EnumFacing side, int amount, boolean doTransfer) {
- return null;
- }
- @Override
- public boolean canTubeConnect(EnumFacing side) {
- if (side == EnumFacing.UP) return true;
- return false;
- }
- }
Add Comment
Please, Sign In to add comment