-
-
Save anonymous/02d9317c652875188e0ab8aca99585d8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.koopamillion.tile_entity; | |
import com.koopamillion.blocks.BlockType; | |
import com.koopamillion.energy.EnergyBar; | |
import com.koopamillion.energy.IEnergy; | |
import com.koopamillion.item.Mitems; | |
import com.koopamillion.util.InventoryUtil; | |
import com.koopamillion.util.MachineUtil; | |
import com.koopamillion.util.NBTUtil; | |
import cpw.mods.fml.relauncher.Side; | |
import cpw.mods.fml.relauncher.SideOnly; | |
import net.minecraft.entity.player.EntityPlayer; | |
import net.minecraft.inventory.ICrafting; | |
import net.minecraft.inventory.IInventory; | |
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.S35PacketUpdateTileEntity; | |
import net.minecraft.world.World; | |
import net.minecraftforge.common.util.ForgeDirection; | |
public class TileEntityMatter extends TileEntityBasicBlock implements IEnergy, IInventory{ | |
private int amount; | |
private EnergyBar energyBar = new EnergyBar(720000); | |
private ItemStack[] inventory = new ItemStack[18]; | |
private int energyUsePerSmelt = 1200000; | |
private int defaultEnergyPerSmelt = 1200000; | |
public int progress = 0; | |
public int rotation = 3; | |
public boolean isSmelting; | |
public boolean update = true; | |
private int hasBefore; | |
private int smeltStatus; | |
private int smeltTime = 3600; | |
private int defaultSmeltTime = 3600; | |
public void updateEntity(){ | |
updateBatteryDisCharge(); | |
updateSmelting(); | |
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); | |
} | |
private void updateBatteryDisCharge(){ //ITEM COUNT META | |
ItemStack itemstack = this.getStackInSlot(2); | |
if(itemstack != null && itemstack.getItem() == Mitems.basicBattery && itemstack.getItemDamage() != 0 && energyBar.getEnergyLevel() <= energyBar.getMaxEnergyLevel() - 2000){ | |
this.setInventorySlotContents(2, new ItemStack(Mitems.basicBattery, 1, itemstack.getItemDamage() - 1)); | |
energyBar.addEnergy(2000); | |
} | |
//ADVANCED BATTERY | |
if(itemstack != null && itemstack.getItem() == Mitems.advancedBattery && itemstack.getItemDamage() != 0 && energyBar.getEnergyLevel() <= energyBar.getMaxEnergyLevel() - 2000){ | |
this.setInventorySlotContents(2, new ItemStack(Mitems.advancedBattery, 1, itemstack.getItemDamage() - 1)); | |
energyBar.addEnergy(4000); | |
} | |
//Tier 3 | |
if(itemstack != null && itemstack.getItem() == Mitems.energyStar && itemstack.getItemDamage() != 0 && energyBar.getEnergyLevel() <= energyBar.getMaxEnergyLevel() - 2000){ | |
this.setInventorySlotContents(2, new ItemStack(Mitems.energyStar, 1, itemstack.getItemDamage() - 1)); | |
energyBar.addEnergy(4000); | |
} | |
} | |
private void updateSmelting(){ | |
ItemStack matterstack = this.getStackInSlot(1); | |
ItemStack scrapstack = this.getStackInSlot(0); | |
if(scrapstack != null && scrapstack.getItem() == Mitems.mixedDebris && energyBar.getEnergyLevel() >= 200){ | |
progress = progress + 1200; | |
if(scrapstack.stackSize == 1){ | |
this.setInventorySlotContents(0, null); | |
}else{ | |
this.setInventorySlotContents(0, new ItemStack(scrapstack.getItem(), scrapstack.stackSize - 1)); | |
} | |
} | |
if(energyBar.getEnergyLevel() >= 200){ | |
energyBar.removeEnergy(200); | |
progress = progress + 200; | |
if(progress >= 1200000){ | |
progress = 0; | |
if(matterstack != null){ | |
this.setInventorySlotContents(1, new ItemStack(Mitems.darkMatter, matterstack.stackSize + 1)); | |
}else{ | |
this.setInventorySlotContents(1, new ItemStack(Mitems.darkMatter, 1)); | |
} | |
} | |
} | |
} | |
@Override | |
public boolean canAddEnergyOnSide(ForgeDirection direction){ | |
return true; | |
} | |
@Override | |
public boolean canConnect(ForgeDirection direction){ | |
return true; | |
} | |
@Override | |
public EnergyBar getEnergyBar(){ | |
return energyBar; | |
} | |
@Override | |
public void setLastReceivedDirection(ForgeDirection direction){ | |
} | |
@Override | |
public int getEnergyTransferRate(){ | |
return 100; | |
} | |
@Override | |
public int getSizeInventory(){ | |
return InventoryUtil.getSizeInventory(inventory); | |
} | |
@Override | |
public ItemStack getStackInSlot(int slot){ | |
return InventoryUtil.getStackInSlot(inventory, slot); | |
} | |
@Override | |
public ItemStack decrStackSize(int slot, int count){ | |
return InventoryUtil.decrStackSize(inventory, slot, count); | |
} | |
@Override | |
public ItemStack getStackInSlotOnClosing(int slot){ | |
return InventoryUtil.getStackInSlotOnClosing(inventory, slot); | |
} | |
@Override | |
public void setInventorySlotContents(int slot, ItemStack itemstack){ | |
InventoryUtil.setInventorySlotContents(this, inventory, slot, itemstack); | |
} | |
@Override | |
public String getInventoryName(){ | |
return "container.matter"; | |
} | |
@Override | |
public boolean hasCustomInventoryName(){ | |
return false; | |
} | |
@Override | |
public int getInventoryStackLimit(){ | |
return 64; | |
} | |
@Override | |
public boolean isUseableByPlayer(EntityPlayer player){ | |
return true; | |
} | |
@Override | |
public void openInventory(){ | |
} | |
@Override | |
public void closeInventory(){ | |
} | |
@Override | |
public boolean isItemValidForSlot(int slot, ItemStack itemstack){ | |
return true; | |
} | |
public int getCookProgress(int scale){ | |
return this.smeltStatus * scale / smeltTime; | |
} | |
@Override | |
public BlockType getTypeOfBlock(){ | |
return BlockType.MACHINE; | |
} | |
public Packet getDescriptionPacket(){ | |
NBTTagCompound tag = new NBTTagCompound(); | |
writeToNBT(tag); | |
return new S35PacketUpdateTileEntity(); | |
} | |
public void onDataPacket(NetworkManager manager, S35PacketUpdateTileEntity packet){ | |
readFromNBT(packet.func_148857_g()); | |
} | |
public void writeToNBT(NBTTagCompound tag){ | |
super.writeToNBT(tag); | |
energyBar.writeToNBT(tag); | |
tag.setInteger("rotation", rotation); | |
tag.setInteger("smeltStatus", smeltStatus); | |
NBTUtil.writeItemStackArrayToNBT(inventory, tag); | |
} | |
public void readFromNBT(NBTTagCompound tag){ | |
super.readFromNBT(tag); | |
energyBar.readFromNBT(tag); | |
rotation = tag.getInteger("rotation"); | |
smeltStatus = tag.getInteger("smeltStatus"); | |
NBTUtil.readItemStackArrayFromNBT(inventory, tag); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment