Skip to content

Instantly share code, notes, and snippets.

Created April 23, 2016 18:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/02d9317c652875188e0ab8aca99585d8 to your computer and use it in GitHub Desktop.
Save anonymous/02d9317c652875188e0ab8aca99585d8 to your computer and use it in GitHub Desktop.
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