Jump to content

Recommended Posts

Posted

Hello, I recently decided to create a sort of furnace for my mod named Ore Crusher. Every thing works very well except when I leave the save I am on, the items from the bottom and the output goes back into where the blocks smelt and I lose every thing that was into this slot. I hope it's clear.. But here is my classes: 

OreCrusher

package ca.thecow.morecontent.blocks;

import java.util.Random;

import ca.thecow.morecontent.MoreContent;
import ca.thecow.morecontent.Ref;
import ca.thecow.morecontent.init.Blocks;
import ca.thecow.morecontent.tile_entity.TileEntityOreCrusher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

public class OreCrusher extends BlockContainer{
	
	@SideOnly(Side.CLIENT)
	private IIcon top;
	@SideOnly(Side.CLIENT)
	private IIcon front;
	
	private static boolean isBurning;
	private final boolean isBurning2;
	private final Random random = new Random();

	public OreCrusher(boolean isActive) {
		super(Material.rock);
		isBurning2 = isActive;
	}
	
	@SideOnly(Side.CLIENT)
	public void registerBlockIcons(IIconRegister iconregister){
		this.blockIcon = iconregister.registerIcon(Ref.MOD_ID + ":ore_crusher_side");
		this.front = iconregister.registerIcon(this.isBurning2 ? Ref.MOD_ID + ":ore_crusher_active" : Ref.MOD_ID + ":ore_crusher_inactive");
		this.top = iconregister.registerIcon(Ref.MOD_ID + ":ore_crusher_top");
	}
	
	public IIcon getIcon(int side, int meta){
		return meta == 0 && side == 3 ? this.front : (side == 1 ? this.top : (side == 0 ? this.top : (side == meta ? this.front : this.blockIcon)));
	}
	
	@Override
	public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9){
		player.openGui(MoreContent.modInstance, 0, world, x, y, z);
		return true;
		
	}
	
	public Item getItemDropped(int par1, Random random, int par3){
		return Item.getItemFromBlock(Blocks.ore_crusher);
	}
	
	public Item getItem(World world, int par2, int par3, int par4){
		return Item.getItemFromBlock(Blocks.ore_crusher);
	}
	
	@SideOnly(Side.CLIENT)
	public void onBlockAdded(World world, int x, int y, int z){
		super.onBlockAdded(world, x, y, z);
		this.direction(world, x, y, z);
	}
	
	private void direction(World world, int x, int y, int z){
		if(!world.isRemote){
			Block direction1 = world.getBlock(x, y, z - 1);
			Block direction2 = world.getBlock(x, y, z + 1);
			Block direction3 = world.getBlock(x - 1, y, z);
			Block direction4 = world.getBlock(x + 1, y, z);
			byte byte0 = 3;
			
			if(direction1.func_149730_j() && direction1.func_149730_j()){
				byte0 = 3;
			}
			if(direction2.func_149730_j() && direction2.func_149730_j()){
				byte0 = 2;
			}
			if(direction3.func_149730_j() && direction3.func_149730_j()){
				byte0 = 5;
			}
			if(direction4.func_149730_j() && direction4.func_149730_j()){
				byte0 = 4;
			}
			
			world.setBlockMetadataWithNotify(x, y, z, byte0, 2);
		}
	}
	
	public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemstack){
		int direction = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
		
		if(direction == 0){
			world.setBlockMetadataWithNotify(x, y, z, 2, 2);
		}
		if(direction == 1){
			world.setBlockMetadataWithNotify(x, y, z, 5, 2);
		}
		if(direction == 2){
			world.setBlockMetadataWithNotify(x, y, z, 3, 2);
		}
		if(direction == 3){
			world.setBlockMetadataWithNotify(x, y, z, 4, 2);
		}
		
		if(itemstack.hasDisplayName()){
			((TileEntityOreCrusher) world.getTileEntity(x, y, z)).oreCrusherName(itemstack.getDisplayName());
		}
	}
	
	public static void updateBlockState(boolean burning, World world, int x, int y, int z){
		int direction = world.getBlockMetadata(x, y, z);
		TileEntity tileentity = world.getTileEntity(x, y, z);
		isBurning = true;
		
		if(burning){
			world.setBlock(x, y, z, Blocks.ore_crusher_active);
		}else{
			world.setBlock(x, y, z, Blocks.ore_crusher);
		}
		
		isBurning = false;
		world.setBlockMetadataWithNotify(x, y, z, direction, 2);
		
		if(tileentity != null){
			tileentity.validate();
			world.setTileEntity(x, y, z, tileentity);
		}
	}
	
	public void breakBlock(World world, int x, int y, int z, Block block, int meta){
		if(!isBurning){
			TileEntityOreCrusher tileentityorecrusher = (TileEntityOreCrusher) world.getTileEntity(x, y, z);
			if(tileentityorecrusher != null){
				for(int i = 0; i < tileentityorecrusher.getSizeInventory(); ++i){
					ItemStack itemstack = tileentityorecrusher.getStackInSlot(i);
					
					if(itemstack != null){
						float f = this.random.nextFloat() * 0.6F + 0.1F;
						float f1 = this.random.nextFloat() * 0.6F + 0.1F;
						float f2 = this.random.nextFloat() * 0.6F + 0.1F;
						
						while(itemstack.stackSize > 0){
							int j = this.random.nextInt(21) + 10;
							
							if(j > itemstack.stackSize){
								j = itemstack.stackSize;
							}
							
							itemstack.stackSize -= j;
							EntityItem entityitem = new EntityItem(world, (double) ((float) x + f), (double) ((float) y + f1), (double) ((float) z + f2), new ItemStack(itemstack.getItem(), j, itemstack.getItemDamage()));
						
							if(itemstack.hasTagCompound()){
								entityitem.getEntityItem().setTagCompound(((NBTTagCompound) itemstack.getTagCompound().copy()));
							}
							
							float f3 = 0.025F;
							entityitem.motionX = (double) ((float) this.random.nextGaussian() * f3);
							entityitem.motionY = (double) ((float) this.random.nextGaussian() * f3 + 0.1F);
							entityitem.motionZ = (double) ((float) this.random.nextGaussian() * f3);
							world.spawnEntityInWorld(entityitem);
						}
					}
				}
				world.func_147453_f(x, y, z, block);
			}
		}
		super.breakBlock(world, x, y, z, block, meta);
	}
	
	@SideOnly(Side.CLIENT)
	public void randomDisplayTick(World world, int x, int y, int z, Random random){
		if(this.isBurning2){
			int direction = world.getBlockMetadata(x, y, z);
			float xx = (float) x + 0.5F, yy = (float) y + random.nextFloat() * 6.0F / 16.0F, zz = (float) z + 0.5F, xx2 = random.nextFloat() * 0.3F, zz2 = 0.5F;
			
			if(direction == 4){
				world.spawnParticle("smoke", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
				world.spawnParticle("flame", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
			}else if(direction == 5){
				world.spawnParticle("smoke", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
				world.spawnParticle("flame", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
			}else if(direction == 3){
				world.spawnParticle("smoke", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
				world.spawnParticle("flame", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
			}else if(direction == 2){
				world.spawnParticle("smoke", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
				world.spawnParticle("flame", (double) (xx - zz2), (double) yy, (double) (zz + xx2), 0.0F, 0.0F, 0.0F);
			}
		}
	}

	@Override
	public TileEntity createNewTileEntity(World world, int par2) {
		return new TileEntityOreCrusher();
	}


}

 

ContainerOreCrusher

package ca.thecow.morecontent.inventory;

import ca.thecow.morecontent.tile_entity.TileEntityOreCrusher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.SlotFurnace;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;

public class ContainerOreCrusher extends Container{
	
	private TileEntityOreCrusher tileOreCrusher;
	private int lastCookTime;
	private int lastBurnTime;
	private int lastItemBurnTime;
	
	public ContainerOreCrusher(InventoryPlayer player, TileEntityOreCrusher tileEntityOreCrusher){
		this.tileOreCrusher = tileEntityOreCrusher;
		this.addSlotToContainer(new Slot(tileEntityOreCrusher, 0, 56, 17));
		this.addSlotToContainer(new Slot(tileEntityOreCrusher, 1, 56, 53));
		this.addSlotToContainer(new SlotFurnace(player.player, tileEntityOreCrusher, 2, 116, 35));
		int i;
		
		for(i = 0; i < 3; ++i){
			for(int j = 0; j < 9; ++j){
				this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
			}
		}
		
		for(i = 0; i < 9; ++i){
			this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 142));
		}
		
	}
	
	public void addCraftingToCrafters(ICrafting craft){
		super.addCraftingToCrafters(craft);
		craft.sendProgressBarUpdate(this, 0, this.tileOreCrusher.oreCrusherCookTime);
		craft.sendProgressBarUpdate(this, 1, this.tileOreCrusher.oreCrusherBurnTime);
		craft.sendProgressBarUpdate(this, 2, this.tileOreCrusher.currentBurnTime);
	}
	
	public void detectAndSendChanges(){
		super.detectAndSendChanges();
		for(int i = 0; i < this.crafters.size(); ++i){
			ICrafting craft = (ICrafting) this.crafters.get(i);
			
			if(this.lastCookTime != this.tileOreCrusher.oreCrusherCookTime){
				craft.sendProgressBarUpdate(this, 0, this.tileOreCrusher.oreCrusherCookTime);
			}
			if(this.lastBurnTime != this.tileOreCrusher.oreCrusherBurnTime){
				craft.sendProgressBarUpdate(this, 1, this.tileOreCrusher.oreCrusherBurnTime);
			}
			if(this.lastItemBurnTime != this.tileOreCrusher.currentBurnTime){
				craft.sendProgressBarUpdate(this, 2, this.tileOreCrusher.currentBurnTime);
			}
		}
		
		this.lastBurnTime = this.tileOreCrusher.oreCrusherBurnTime;
		this.lastItemBurnTime = this.tileOreCrusher.currentBurnTime;
		this.lastCookTime = this.tileOreCrusher.oreCrusherCookTime;
	}
	
	@SideOnly(Side.CLIENT)
	public void updateProgressBar(int par1, int par2){
		if(par1 == 0){
			this.tileOreCrusher.oreCrusherCookTime = par2;
		}
		if(par1 == 1){
			this.tileOreCrusher.oreCrusherBurnTime = par2;
		}
		if(par1 == 2){
			this.tileOreCrusher.currentBurnTime = par2;
		}
	}
	
	@Override
	public boolean canInteractWith(EntityPlayer player) {
		return this.tileOreCrusher.isUseableByPlayer(player);
	}
	
	public ItemStack transferStackInSlot(EntityPlayer player, int par2){
		ItemStack itemStack = null;
		Slot slot = (Slot) this.inventorySlots.get(par2);
		
		if(slot != null && slot.getHasStack()){
			ItemStack itemStack1 = slot.getStack();
			itemStack = itemStack1.copy();
			
			if(par2 == 2){
				if(!this.mergeItemStack(itemStack1, 3, 39, true)){
					return null;
				}
				slot.onSlotChange(itemStack1, itemStack);
			}else if(par2 != 1 && par2 != 0){
				if(FurnaceRecipes.smelting().getSmeltingResult(itemStack1) != null){
					if(!this.mergeItemStack(itemStack1, 0, 1, false)){
						return null;
					}
				}else if(TileEntityOreCrusher.isItemFuel(itemStack1)){
					if(!this.mergeItemStack(itemStack1, 1, 2, false)){
						return null;
					}
				}else if(par2 >= 3 && par2 < 30){
					if(!this.mergeItemStack(itemStack1, 30, 39, false)){
						return null;
					}
				}else if(par2 >= 30 && par2 < 39 && !this.mergeItemStack(itemStack1, 3, 30, false)){
					return null;
				}
			}else if(!this.mergeItemStack(itemStack1, 3, 39, false)){
				return null;
			}
			if(itemStack1.stackSize == 0){
				slot.putStack((ItemStack) null);
			}else{
				slot.onSlotChanged();
			}
			if(itemStack1.stackSize == itemStack.stackSize){
				return null;
			}
			slot.onPickupFromSlot(player, itemStack1);
		}
		return itemStack;
	}

}

 

GuiOreCrusher

package ca.thecow.morecontent.gui;

import org.lwjgl.opengl.GL11;

import ca.thecow.morecontent.Ref;
import ca.thecow.morecontent.inventory.ContainerOreCrusher;
import ca.thecow.morecontent.tile_entity.TileEntityOreCrusher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;

@SideOnly(Side.CLIENT)
public class GuiOreCrusher extends GuiContainer{
	
	private static final ResourceLocation oreCrusherGuiTextures = new ResourceLocation(Ref.MOD_ID + ":textures/gui/container/orecrusher.png");
	private TileEntityOreCrusher tileOreCrusher;

	public GuiOreCrusher(InventoryPlayer invPlayer, TileEntityOreCrusher tile) {
		super(new ContainerOreCrusher(invPlayer, tile));
		this.tileOreCrusher = tile;
	}
	
	protected void drawGuiContainerForegroundLayer(int par1, int par2){
		String string = this.tileOreCrusher.hasCustomInventoryName() ? this.tileOreCrusher.getInventoryName() : I18n.format(this.tileOreCrusher.getInventoryName(), new Object[0]);
		this.fontRendererObj.drawString(string, this.xSize / 2 - this.fontRendererObj.getStringWidth(string), 6, 4210752);
		this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 4210752);
	}

	@Override
	protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
		this.mc.getTextureManager().bindTexture(oreCrusherGuiTextures);
		int k = (this.width - this.xSize) / 2;
		int l = (this.height - this.ySize) / 2;
		this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
		int il;
		if(this.tileOreCrusher.isBurning()){
			il = this.tileOreCrusher.getBurnTimeRemainingScaled(12);
			this.drawTexturedModalRect(k + 56, l + 36 + 12 - il, 176, 12 - il, 14, il + 1);
		}
		
		il = this.tileOreCrusher.getCookProgressScaled(24);
		this.drawTexturedModalRect(k + 79, l + 34, 176, 14, il + 1, 16);
	}

}

 

TileEntityOreCrusher

package ca.thecow.morecontent.tile_entity;

import ca.thecow.morecontent.blocks.OreCrusher;
import ca.thecow.morecontent.init.Items;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;

public class TileEntityOreCrusher extends TileEntity implements ISidedInventory{
	
	private static final int[] slotsTop = new int[]{ 0 };
	private static final int[] slotsBottom = new int[]{ 2, 1 };
	private static final int[] slotsSides = new int[]{ 1 };
	
	private ItemStack[] oreCrusherItemStacks = new ItemStack[3];
	
	public int oreCrusherBurnTime;
	public int currentBurnTime;
	public int oreCrusherCookTime;
	public int furnaceSpeed = 300;
	
	private String oreCrusherName;
	
	public void oreCrusherName(String string){
		this.oreCrusherName = string;
	}

	@Override
	public int getSizeInventory() {
		return this.oreCrusherItemStacks.length;
	}

	@Override
	public ItemStack getStackInSlot(int slot) {
		return this.oreCrusherItemStacks[slot];
	}

	@Override
	public ItemStack decrStackSize(int var1, int var2) {
		if(this.oreCrusherItemStacks[var1] != null){
			ItemStack itemStack;
			if(this.oreCrusherItemStacks[var1].stackSize <= var2){
				itemStack = this.oreCrusherItemStacks[var1];
				this.oreCrusherItemStacks[var1] = null;
				return itemStack;
			}else{
				itemStack = this.oreCrusherItemStacks[var1].splitStack(var2);
				
				if(this.oreCrusherItemStacks[var1].stackSize == 0){
					this.oreCrusherItemStacks[var1] = null;
				}
				return itemStack;
			}
		}else{
			return null;
		}
	}

	@Override
	public ItemStack getStackInSlotOnClosing(int slot) {
		if(this.oreCrusherItemStacks[slot] != null){
			ItemStack itemStack = this.oreCrusherItemStacks[slot];
			this.oreCrusherItemStacks[slot] = null;
			return itemStack;
		}else{
			return null;
		}
	}

	@Override
	public void setInventorySlotContents(int slot, ItemStack itemStack) {
		this.oreCrusherItemStacks[slot] = itemStack;
		
		if(itemStack != null && itemStack.stackSize > this.getInventoryStackLimit()){
			itemStack.stackSize = this.getInventoryStackLimit();
			
		}
		
	}

	@Override
	public String getInventoryName() {
		return this.hasCustomInventoryName() ? this.oreCrusherName : "Ore Crusher";
	}

	@Override
	public boolean hasCustomInventoryName() {
		return this.oreCrusherName != null && this.oreCrusherName.length() > 0;
	}

	@Override
	public int getInventoryStackLimit() {
		return 64;
	}
	
	public void readFromNBT(NBTTagCompound tagCompound){
		super.readFromNBT(tagCompound);
		NBTTagList tagList = tagCompound.getTagList("Items", 10);
		this.oreCrusherItemStacks = new ItemStack[this.getSizeInventory()];
		
		for(int i = 0; i < tagList.tagCount(); i++){
			NBTTagCompound tagCompound1 = tagList.getCompoundTagAt(i);
			byte byte0 = tagCompound1.getByte("Slot");
			
			if(byte0 >= 0 && byte0 < this.oreCrusherItemStacks.length){
				this.oreCrusherItemStacks[byte0] = ItemStack.loadItemStackFromNBT(tagCompound1);
			}
		}
		
		this.oreCrusherBurnTime = (int)tagCompound.getShort("BurnTime");
		this.oreCrusherCookTime = (int)tagCompound.getShort("CookTime");
		this.currentBurnTime = getItemBurnTime(this.oreCrusherItemStacks[1]);
		
		if(tagCompound.hasKey("CustomName", 8)){
			this.oreCrusherName = tagCompound.getString("CustomName");
		}
	}
	
	public void writeToNBT(NBTTagCompound tagCompound){
		super.writeToNBT(tagCompound);
		
		tagCompound.setShort("BurnTime", (short) this.oreCrusherBurnTime);
		tagCompound.setShort("CookTime", (short) this.oreCrusherCookTime);
		NBTTagList tagList = new NBTTagList();
		
		for(int i = 0; i < this.oreCrusherItemStacks.length; ++i){
			if(this.oreCrusherItemStacks[i] != null){
				NBTTagCompound tagCompound1 = new NBTTagCompound();
				tagCompound1.setByte("slot", (byte) i);
				this.oreCrusherItemStacks[i].writeToNBT(tagCompound1);
				tagList.appendTag(tagCompound1);
			}
		}
		
		tagCompound.setTag("Items", tagList);
		
		if(this.hasCustomInventoryName()){
			tagCompound.setString("CustomName", this.oreCrusherName);
		}
	}
	
	@SideOnly(Side.CLIENT)
	public int getCookProgressScaled(int par1){
		return this.oreCrusherCookTime * par1 / this.furnaceSpeed;
	}
	
	@SideOnly(Side.CLIENT)
	public int getBurnTimeRemainingScaled(int par1){
		if(this.currentBurnTime == 0){
			this.currentBurnTime = 200;
		}
		return this.oreCrusherBurnTime * par1 / this.currentBurnTime;
	}
	
	public boolean isBurning(){
		return this.oreCrusherBurnTime > 0;
	}
	
	public void updateEntity(){
		boolean flag = this.oreCrusherBurnTime > 0;
		boolean flag1 = false;
		
		if(this.oreCrusherBurnTime > 0){
			--this.oreCrusherBurnTime;
		}
		
		if(!this.worldObj.isRemote){
			if(this.oreCrusherBurnTime != 0 || this.oreCrusherItemStacks[1] != null && this.oreCrusherItemStacks[0] != null){
			if(this.oreCrusherBurnTime == 0 && this.canSmelt()){
				this.currentBurnTime = this.oreCrusherBurnTime = getItemBurnTime(this.oreCrusherItemStacks[1]);
				
				if(this.oreCrusherBurnTime > 0){
					flag1 = true;
					if(this.oreCrusherItemStacks[1] != null){
						--this.oreCrusherItemStacks[1].stackSize;
						
						if(this.oreCrusherItemStacks[1].stackSize == 0){
							this.oreCrusherItemStacks[1] = oreCrusherItemStacks[1].getItem().getContainerItem(this.oreCrusherItemStacks[1]);
						}
					}
				}
			}
			
			if(this.isBurning() && this.canSmelt()){
				++this.oreCrusherCookTime;
				if(this.oreCrusherCookTime == 200){
					this.oreCrusherCookTime = 0;
					this.smeltItem();
					flag1 = true;
				}
			}else{
				this.oreCrusherCookTime = 0;
			}
		}
		
		if(flag != this.oreCrusherBurnTime > 0){
			flag1 = true;
			OreCrusher.updateBlockState(this.oreCrusherBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
		}
		
		if(flag1){
			this.markDirty();
		}
		}
	}
	
	private boolean canSmelt(){
		if(this.oreCrusherItemStacks[0] == null){
			return false;
		}else{
			ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.oreCrusherItemStacks[0]);
			if(itemStack == null) return false;
			if(this.oreCrusherItemStacks[2] == null) return true;
			if(!this.oreCrusherItemStacks[2].isItemEqual(itemStack)) return false;
			int result = oreCrusherItemStacks[2].stackSize + itemStack.stackSize;
			return result <= getInventoryStackLimit() && result <= this.oreCrusherItemStacks[2].getMaxStackSize();
		}
	}
	
	public void smeltItem(){
		if(this.canSmelt()){
			ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.oreCrusherItemStacks[0]);
			
			if(this.oreCrusherItemStacks[2] == null){
				this.oreCrusherItemStacks[2] = itemStack.copy();
			}else if(this.oreCrusherItemStacks[2].getItem() == itemStack.getItem()){
				this.oreCrusherItemStacks[2].stackSize += itemStack.stackSize;
			}
			
			--this.oreCrusherItemStacks[0].stackSize;
			
			if(this.oreCrusherItemStacks[0].stackSize <= 0){
				this.oreCrusherItemStacks[0] = null;
			}
		}
	}
	
	public static int getItemBurnTime(ItemStack itemStack){
		if(itemStack == null){
			return 0;
		}else{
			Item item = itemStack.getItem();
			
			if(item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air){
				Block block = Block.getBlockFromItem(item);
				
				if(block == ca.thecow.morecontent.init.Blocks.copper_block){
					return 14400;
				}
			}
			
			if(item == Items.copper_ingot){
				return 1600;
			}
			
			return 0;
		}
	}
	
	public static boolean isItemFuel(ItemStack itemStack){
		return getItemBurnTime(itemStack) > 0;
	}

	@Override
	public boolean isUseableByPlayer(EntityPlayer player) {
		return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : player.getDistanceSq((double) this.xCoord + 0.5D, (double) this.yCoord + 0.5D, (double) this.zCoord + 0.5D) <= 64.0D;
	}

	@Override
	public void openInventory() {
		
	}

	@Override
	public void closeInventory() {
		
	}

	@Override
	public boolean isItemValidForSlot(int par1, ItemStack itemStack) {
		return par1 == 2 ? false : (par1 == 1 ? isItemFuel(itemStack) : true);
	}

	@Override
	public int[] getAccessibleSlotsFromSide(int par1) {
		return par1 == 0 ? slotsBottom : (par1 == 1) ? slotsTop : slotsSides;
	}

	@Override
	public boolean canInsertItem(int par1, ItemStack itemStack, int par3) {
		// TODO Auto-generated method stub
		return this.isItemValidForSlot(par1, itemStack);
	}

	@Override
	public boolean canExtractItem(int par1, ItemStack itemStack, int par3) {
		// TODO Auto-generated method stub
		return par3 != 0 || par1 != 1 || itemStack.getItem() == net.minecraft.init.Items.bucket;
	}

}

 

GuiHandler

package ca.thecow.morecontent.handler;

import ca.thecow.morecontent.gui.GuiOreCrusher;
import ca.thecow.morecontent.inventory.ContainerOreCrusher;
import ca.thecow.morecontent.tile_entity.TileEntityOreCrusher;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;

public class GuiHandler implements IGuiHandler{

	@Override
	public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
		if(ID == 0){
			TileEntityOreCrusher tileEntityOreCrusher = (TileEntityOreCrusher) world.getTileEntity(x, y, z);
			return new ContainerOreCrusher(player.inventory, tileEntityOreCrusher);
		}
		return null;
	}

	@Override
	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
		if(ID == 0){
			TileEntityOreCrusher tileEntityOreCrusher = (TileEntityOreCrusher) world.getTileEntity(x, y, z);
			return new GuiOreCrusher(player.inventory, tileEntityOreCrusher);
		}
		return null;
	}

}

 

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I am playing a modpack with the web displays mod and I tried it out and when I logged back into my world i decided to get rid of the display i placed to move it and it started playing the video from last session and crashed my game, when i tried to start the game again it said it could not start becasue it could not delete a debug file that has the link in it that is no longer being displayed but is trying to, here is the debug folder.   [0201/091808.660:WARNING:chrome_browser_cloud_management_controller.cc(88)] Could not create policy manager as CBCM is not enabled. [0201/091930.426:INFO:CONSOLE(0)] "Error with Permissions-Policy header: Unrecognized feature: 'ch-ua-form-factors'.", source:  (0) [0201/091932.869:WARNING:browser_info.cc(309)] Returning a speculative frame for 25769803781 [6,5] [0201/091933.290:INFO:CONSOLE(5047)] "LegacyDataMixin will be applied to all legacy elements. Set `_legacyUndefinedCheck: true` on element class to enable.", source:  [0201/091933.529:WARNING:browser_info.cc(309)] Returning a speculative frame for 25769803781 [6,5] [0201/091933.529:WARNING:browser_info.cc(309)] Returning a speculative frame for 25769803781 [6,5] [0201/091933.530:WARNING:browser_info.cc(309)] Returning a speculative frame for 25769803781 [6,5] [0201/091933.530:WARNING:browser_info.cc(309)] Returning a speculative frame for 25769803781 [6,5] [0201/091933.557:INFO:CONSOLE(0)] "Error with Permissions-Policy header: Unrecognized feature: 'ch-ua-form-factors'.", source:  (0) [0201/091934.376:WARNING:obfuscated_file_util.cc(1410)] Failed to get origin+type directory: { uri: filesystem:https://www.youtube.com/temporary/, storage key: { origin: https://www.youtube.com, top-level site: https://youtube.com, nonce: <null>, ancestor chain bit: Same-Site }, bucket id: 1 } error:-4 [0201/091935.216:INFO:CONSOLE(0)] "Error with Permissions-Policy header: Unrecognized feature: 'ch-ua-form-factors'.", source:  (0) [0201/091935.241:INFO:CONSOLE(7990)] "Blocked script execution in 'about:blank' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.", source: https://www.youtube.com/s/desktop/3df27587/jsbin/desktop_polymer.vflset/desktop_polymer.js (7990) [0201/091936.766:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705669 [9,5] [0201/091936.767:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705669 [9,5] [0201/091936.767:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705669 [9,5] [0201/091936.767:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705669 [9,5] [0201/091937.243:INFO:CONSOLE(5047)] "LegacyDataMixin will be applied to all legacy elements. Set `_legacyUndefinedCheck: true` on element class to enable.", source: https://www.youtube.com/s/desktop/3df27587/jsbin/desktop_polymer.vflset/desktop_polymer.js (5047) [0201/091938.283:INFO:CONSOLE(7990)] "Blocked script execution in 'about:blank' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.", source: https://www.youtube.com/s/desktop/3df27587/jsbin/desktop_polymer.vflset/desktop_polymer.js (7990) [0201/091939.496:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705669 [9,5] [0201/091953.165:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705676 [9,12] [0201/091953.165:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705676 [9,12] [0201/091953.166:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705676 [9,12] [0201/091953.166:WARNING:browser_info.cc(309)] Returning a speculative frame for 38654705676 [9,12] [0201/091959.119:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/091959.119:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/091959.119:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092014.122:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092014.122:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092014.122:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092019.126:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092019.126:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092019.126:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092024.512:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092024.512:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092024.512:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092029.812:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092029.812:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092029.812:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092036.154:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092036.165:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092036.165:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092041.464:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092041.464:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092041.464:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092051.842:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092051.843:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092051.843:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092055.373:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204?conn2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092055.373:INFO:CONSOLE(0)] "The resource https://i.ytimg.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0) [0201/092055.373:INFO:CONSOLE(0)] "The resource https://rr5---sn-o097znsr.googlevideo.com/generate_204 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.", source: https://www.youtube.com/watch?v=gaRSMacERUQ (0)
    • If you are searching for mods, I would not search here, this is more of a support forum for using/creating mods with minecraft Forge. Try https://www.curseforge.com/minecraft if you are looking for mods/modpacks to use.
    • I was trying to find a mod that added something specific, and was unable to find it with what limited memory I had of seeing it. I don't know why there isn't an option to include words in overviews of mods. I could see it being in the sort tab near filters on the app in my opinion. It might help someone trying to find something specific, only based off something from the overview tab, but idk
    • Please read the FAQ and post logs as described there.   Also, do not just add a post onto someone else's thread with your issue, create a new one please.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.