package com.harry9137.ct.tileentity; import com.harry9137.ct.energy.IEnergyContainer; import com.harry9137.ct.utillity.ListHelper; import com.harry9137.ct.utillity.TileHelper; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.oredict.OreDictionary; import java.util.ArrayList; import java.util.List; import java.util.Random; public class TileEntityOreGen extends TileEntity implements IEnergyContainer, ITickUpdater { private int Tick = 0; public int PowerStored = 0; private boolean end = false; private boolean generatedOre = false; @Override public void updateEntity(){ ArrayList<ItemStack> ores = new ArrayList<ItemStack>(1); for(String oreName : OreDictionary.getOreNames()){ if(oreName.toLowerCase().startsWith("ore")) { ores = ListHelper.combine2(new ArrayList<ItemStack>(OreDictionary.getOres(oreName)), ores); } } if(Tick == 40 && PowerStored > 0){ Tick = 0; int randomInt = 0; Random randomGenerator = new Random(); if(ores.size() > 0) { randomInt = randomGenerator.nextInt(ores.size()); } ItemStack oreToGen = ores.get(randomInt); for(TileEntity entity : TileHelper.getBlockSides(this)){ if(entity instanceof IInventory && end == false){ int size = ((IInventory) entity).getSizeInventory(); for(int i = 0; i < size; i++){ if(generatedOre == false) { try { if (((IInventory) entity).getStackInSlot(i) != null) { if (((IInventory) entity).getStackInSlot(i).getItem().equals(oreToGen.getItem()) && ((IInventory) entity).getStackInSlot(i).stackSize < ((IInventory) entity).getInventoryStackLimit()) { if(!worldObj.isRemote) { ((IInventory) entity).getStackInSlot(i).stackSize++; this.setPowerLevel(this.getEnergyLevel() - 50); } generatedOre = true; } } else if (((IInventory) entity).getStackInSlot(i) == null) { if(!worldObj.isRemote) { ((IInventory) entity).setInventorySlotContents(i, oreToGen); this.setPowerLevel(this.getEnergyLevel() - 50); } generatedOre = true; } } catch (NullPointerException e) { e.printStackTrace(); } } } this.generatedOre = false; this.end = true; } } this.end = false; } Tick++; } @Override public int getEnergyLevel() { return PowerStored; } @Override public boolean getCanSendPower() { return false; } @Override public boolean getCanReceivePower() { if(PowerStored > this.getEnergyMax()) { return false; } else{ return true; } } @Override public int getEnergyMax() { return 1000; } @Override public void onEnergyUpdate() { } @Override public void setPowerLevel(int powerLevel) { this.PowerStored = powerLevel; } @Override public void readFromNBT(NBTTagCompound tagCompound){ super.readFromNBT(tagCompound); this.PowerStored = tagCompound.getInteger("PowerStored"); } @Override public void writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); tagCompound.setInteger("PowerStored", this.PowerStored); } }