Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.jolteffect.teslaindustryexpansion.blocks.washplant;
- import javax.annotation.Nonnull;
- import javax.annotation.Nullable;
- import com.jolteffect.teslaindustryexpansion.container.PowerContainerBase;
- import com.jolteffect.teslaindustryexpansion.init.Config;
- import com.jolteffect.teslaindustryexpansion.init.ModItems;
- import com.jolteffect.teslaindustryexpansion.tileentity.TileEntityBaseMachine;
- import net.darkhax.tesla.capability.TeslaCapabilities;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.client.gui.Gui;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.Container;
- import net.minecraft.item.ItemStack;
- import net.minecraft.item.crafting.FurnaceRecipes;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.network.NetworkManager;
- import net.minecraft.network.Packet;
- import net.minecraft.network.play.server.SPacketUpdateTileEntity;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.EnumFacing;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.util.SoundCategory;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.IBlockAccess;
- import net.minecraft.world.World;
- import net.minecraftforge.common.capabilities.Capability;
- import net.minecraftforge.fluids.Fluid;
- import net.minecraftforge.fluids.FluidStack;
- import net.minecraftforge.fluids.FluidTank;
- import net.minecraftforge.fluids.FluidTankInfo;
- import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
- import net.minecraftforge.fluids.capability.IFluidHandler;
- import net.minecraftforge.fluids.capability.IFluidTankProperties;
- import net.minecraftforge.items.ItemStackHandler;
- public class TileEntityWashPlant extends TileEntityBaseMachine implements IFluidHandler {
- protected FluidTank tank = new FluidTank(10000);
- private long lastTickFluidLevel = 0;
- private long lastTickPowerLevel = 0;
- public long processTime = Config.machineProcessTime;
- private int burnTime = 0;
- private int overClockMultiplier = 4;
- private int overClockNegative = 8;
- private long powerUpgrade= Config.machinePowerUse;
- private static long PowerCap = Config.machineCap;
- private static int SLOTS = 6; //1 Input 1 Output 4 Upgrade
- private static int soundTimer = 0;
- public TileEntityWashPlant() {
- super(new ContainerWashPlant(PowerCap), new ItemStackHandler(6));
- }
- @Override
- public IFluidTankProperties[] getTankProperties() {
- return null;
- }
- @Override
- public int fill(FluidStack resource, boolean doFill) {
- return tank.fill(resource, doFill);
- }
- @Override
- public FluidStack drain(FluidStack resource, boolean doDrain) {
- return tank.drain(resource, doDrain);
- }
- @Override
- public FluidStack drain(int maxDrain, boolean doDrain) {
- return tank.drain(maxDrain, doDrain);
- }
- @Override
- public void update() {
- if(!worldObj.isRemote)
- {
- //using this to check Client/Server Sync until Gui implemented
- System.out.println("TeslaIndustryExpansion NOW PROCESSING. SERVER Fluid amount=" + tank.getFluidAmount());
- }
- if(worldObj.isRemote)
- {
- //using this to check Client/Server Sync until Gui implemented
- System.out.println("TeslaIndustryExpansion NOW PROCESSING. CLIENT Fluid amount=" + tank.getFluidAmount());
- }
- checkUpgrade();
- if (canSmelt() && getContainer().consumePower(true))
- {
- this.setIsRunning(true);
- getContainer().setUsePower(powerUpgrade);
- getContainer().consumePower(false);
- burnTime++;
- soundTimer++;
- if (soundTimer > 10)
- {
- worldObj.playSound((EntityPlayer) null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D,
- (net.minecraft.util.SoundEvent) net.minecraft.util.SoundEvent.REGISTRY.getObject(new ResourceLocation(("block.fire.extinguish"))),
- SoundCategory.NEUTRAL, 1.0F, 1.0F);
- soundTimer =0;
- }
- if (burnTime >= processTime)
- {
- smeltItem();
- burnTime = 0;
- }
- this.markDirty();
- }
- else if (this.getIsRunning())
- {
- this.setIsRunning(false);
- }
- if(inventory.getStackInSlot(0) == null)
- {
- burnTime = 0;
- this.setIsRunning(false);
- this.markDirty();
- }
- if (this.getStoredPower() != lastTickPowerLevel) this.markDirty();
- if (this.tank.getFluidAmount() != lastTickFluidLevel) this.markDirty();
- lastTickPowerLevel = this.getStoredPower();
- lastTickFluidLevel = this.tank.getFluidAmount();
- }
- @Override
- public NBTTagCompound getUpdateTag() {
- return writeToNBT(new NBTTagCompound());
- }
- @Override
- public void readFromNBT(NBTTagCompound compound)
- {
- super.readFromNBT(compound);
- tank.readFromNBT(compound);
- if (compound.hasKey("BurnTime")) burnTime = compound.getInteger("BurnTime");
- }
- @Override
- public NBTTagCompound writeToNBT (NBTTagCompound compound)
- {
- compound.setInteger("BurnTime", burnTime);
- tank.writeToNBT(compound);
- return super.writeToNBT(compound);
- }
- @Nullable
- @Override
- public SPacketUpdateTileEntity getUpdatePacket()
- {
- NBTTagCompound tag = new NBTTagCompound();
- writeToNBT(tag);
- return new SPacketUpdateTileEntity(getPos(), 0, getUpdateTag());
- }
- @Override
- public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt)
- {
- readFromNBT(pkt.getNbtCompound());
- }
- @Override
- public Gui getClientGuiElement(int id, EntityPlayer player, World worldIn, BlockPos pos) {
- return new GuiWashPlant(player.inventory, this);
- }
- @Override
- public Container getServerGuiElement(int id, EntityPlayer player, World worldIn, BlockPos pos) {
- return new GuiContainerWashPlant(player.inventory, this);
- }
- @Override
- public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) {
- if(capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) {
- return true;
- }
- if (capability == TeslaCapabilities.CAPABILITY_CONSUMER)
- {
- return true;
- }
- return super.hasCapability(capability, facing);
- }
- @SuppressWarnings("unchecked")
- @Nonnull
- @Override
- public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) {
- if(capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) {
- return (T) tank;
- }
- if (capability == TeslaCapabilities.CAPABILITY_CONSUMER)
- {
- return (T) containerPower;
- }
- return super.getCapability(capability, facing);
- }
- public boolean containsFluid() {
- return tank.getFluid() != null;
- }
- private void smeltItem()
- {
- if (this.worldObj.isRemote) return;
- ItemStack inputStack = inventory.getStackInSlot(0);
- ItemStack outputStack = inventory.getStackInSlot(1);
- ItemStack result = FurnaceRecipes.instance().getSmeltingResult(inputStack).copy();
- inventory.extractItem(0, 1, false);
- inventory.insertItem(1, result, false);
- }
- private boolean canSmelt()
- {
- ItemStack inputStack = inventory.getStackInSlot(0);
- ItemStack outputStack = inventory.getStackInSlot(1);
- ItemStack result;
- if (inputStack != null && (result = FurnaceRecipes.instance().getSmeltingResult(inputStack)) != null)
- {
- if (outputStack == null) return true;
- if (ItemStack.areItemsEqual(result, outputStack) && (outputStack.stackSize + result.stackSize) <= 64)
- {
- return true;
- }
- }
- return false;
- }
- public double getProgress()
- {
- return (double)burnTime / (double)processTime;
- }
- public ContainerWashPlant getContainer()
- {
- return (ContainerWashPlant)this.containerPower;
- }
- public FluidTank getTank()
- {
- return (FluidTank)this.tank;
- }
- private void checkUpgrade() {
- ItemStack upgradeSlot1 = inventory.getStackInSlot(2);
- ItemStack upgradeSlot2 = inventory.getStackInSlot(3);
- ItemStack upgradeSlot3 = inventory.getStackInSlot(4);
- ItemStack upgradeSlot4 = inventory.getStackInSlot(5);
- processTime = Config.machineProcessTime;
- powerUpgrade = Config.machinePowerUse;
- if(upgradeSlot1 !=null)
- {
- if(upgradeSlot1.getItem() == ModItems.itemOverclocker)
- {
- processTime -= upgradeSlot1.stackSize * overClockMultiplier;
- powerUpgrade += upgradeSlot1.stackSize * overClockNegative;
- }
- else if (upgradeSlot1.getItem() == ModItems.itemEfficiency)
- {
- powerUpgrade -= upgradeSlot1.stackSize * overClockMultiplier;;
- }
- }
- if(upgradeSlot2 !=null)
- {
- if(upgradeSlot2.getItem() == ModItems.itemOverclocker)
- {
- processTime -= upgradeSlot2.stackSize * overClockMultiplier;;
- powerUpgrade += upgradeSlot2.stackSize * overClockNegative;
- }
- else if (upgradeSlot2.getItem() == ModItems.itemEfficiency)
- {
- powerUpgrade -= upgradeSlot2.stackSize * overClockMultiplier;;
- }
- }
- if(upgradeSlot3 !=null)
- {
- if(upgradeSlot3.getItem() == ModItems.itemOverclocker)
- {
- processTime -= upgradeSlot3.stackSize * overClockMultiplier;;
- powerUpgrade += upgradeSlot3.stackSize * overClockNegative;
- }
- else if (upgradeSlot3.getItem() == ModItems.itemEfficiency)
- {
- powerUpgrade -= upgradeSlot3.stackSize * overClockMultiplier;;
- }
- }
- if(upgradeSlot4 !=null)
- {
- if(upgradeSlot4.getItem() == ModItems.itemOverclocker)
- {
- processTime -= upgradeSlot4.stackSize * overClockMultiplier;;
- powerUpgrade += upgradeSlot4.stackSize * overClockNegative;
- }
- else if (upgradeSlot4.getItem() == ModItems.itemEfficiency)
- {
- powerUpgrade -= upgradeSlot4.stackSize * overClockMultiplier;;
- }
- }
- getContainer().setUsePower(powerUpgrade);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement