• 0

    posted a message on AmbientSounds v1.2.1 - Biomes O Plenty support - #ListentoNature

    Will you be back porting your latest release with separate sound configs to 1.10.2 at all? I love this mod but some of the sounds I feel are a bit too much for me and I'm not quite ready to make the jump to 1.11 given that some of my favorite mods are not 1.11 compatible yet.

    Posted in: Minecraft Mods
  • 0

    posted a message on False Fire - Decorative Fire - 16 Colors!
    Quote from Xombiekilla»

    I'm really getting tired of you guys hyping this mod up, making it sound so amazing. But then I can never download and play on my minecraft due to it being "Not found". Can someone please fix it, i'm serious.


    This mod was made specifically upon my request on one of the OP's threads a couple of years ago. I'm not even sure if this user is even active on the forums any longer to even update it. This mod is for all intents and purposes dead for the time being, unless someone is willing to carry the torch and update it or recreate it.
    Posted in: WIP Mods
  • 0

    posted a message on Crash on Right Clicking Custom Furnace
    Quote from Spyeedy»

    at com.mcdigger.dmo.containers.ContainerOvenBrick.detectAndSendChanges(ContainerOvenBrick.java:64)



    Line 64 in your ContainerOvenBrick is causing the nullpointerexception to be thrown.

    In future, please use Gist or Pastebin to post logs/crash reports (if applicable) and code with syntax highlighting. To get syntax highlighting on Gist, give each file the appropriate extension (.java for Java code). To get syntax highlighting on Pastebin, select the language from the dropdown at the bottom of the page.


    It's much easier to read code with proper formatting and syntax highlighting.


    Thanks, I will take note of that for next time!

    As for your response, I should have been more clear. I saw in the crash report right away where the Exception was being thrown, I am just not sure what is causing it. As far as I can tell there is nothing wrong in that line of code. I've been looking through my code and just not seeing the problem. That is what I was asking for help with.
    Posted in: Modification Development
  • 0

    posted a message on Replacing Fluid Block with a Solid Block
    Quote from Alpvax»

    Override the update, call super to keep flowing, and keep track of a counter, once count > number of ticks, solidify.


    Thank for the reply, but I'm not sure that I understand what you mean.. So don't set a delay on it and just set an additional counter instead? I'm a little confused at what you are suggesting I do.
    Posted in: Modification Development
  • 0

    posted a message on Crash on Right Clicking Custom Furnace

    Hello,


    So I have a custom furnace and when I right-click it in game, I get a null pointer exception that seems to point towards something in my Container class, but for the life of me I cannot see what is wrong. I was wondering if someone would be willing to take a look at my code and see if I am missing something very obvious or if there is an actual problem that I am also not seeing. Here is what I feel is all the relevant code, if you think it may be somewhere else, just let me know and I can post more.


    Crash Report:


    ---- Minecraft Crash Report ----
    // But it works on my machine.
    
    Time: 3/23/17 1:24 AM
    Description: Ticking player
    
    java.lang.NullPointerException: Ticking player
    	at net.minecraft.inventory.Slot.getStack(Slot.java:83)
    	at net.minecraft.inventory.Container.detectAndSendChanges(Container.java:85)
    	at com.mcdigger.dmo.containers.ContainerOvenBrick.detectAndSendChanges(ContainerOvenBrick.java:64)
    	at net.minecraft.entity.player.EntityPlayerMP.onUpdate(EntityPlayerMP.java:292)
    	at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2111)
    	at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:874)
    	at net.minecraft.world.World.updateEntity(World.java:2078)
    	at net.minecraft.world.WorldServer.tickPlayers(WorldServer.java:675)
    	at net.minecraft.world.World.updateEntities(World.java:1867)
    	at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:646)
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:783)
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:687)
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:536)
    	at java.lang.Thread.run(Unknown Source)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Thread: Server thread
    Stacktrace:
    	at net.minecraft.inventory.Slot.getStack(Slot.java:83)
    	at net.minecraft.inventory.Container.detectAndSendChanges(Container.java:85)
    	at com.mcdigger.dmo.containers.ContainerOvenBrick.detectAndSendChanges(ContainerOvenBrick.java:64)
    	at net.minecraft.entity.player.EntityPlayerMP.onUpdate(EntityPlayerMP.java:292)
    	at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2111)
    	at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:874)
    	at net.minecraft.world.World.updateEntity(World.java:2078)
    
    -- Player being ticked --
    Details:
    	Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
    	Entity ID: 313
    	Entity Name: Player810
    	Entity's Exact location: 224.66, 79.00, 210.32
    	Entity's Block location: World: (224,79,210), Chunk: (at 0,4,2 in 14,13; contains blocks 224,0,208 to 239,255,223), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    	Entity's Momentum: 0.00, -0.08, 0.00
    	Entity's Passengers: []
    	Entity's Vehicle: ~~ERROR~~ NullPointerException: null
    Stacktrace:
    	at net.minecraft.world.WorldServer.tickPlayers(WorldServer.java:675)
    	at net.minecraft.world.World.updateEntities(World.java:1867)
    	at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:646)
    
    -- Affected level --
    Details:
    	Level name: New World
    	All players: 1 total; [EntityPlayerMP['Player810'/313, l='New World', x=224.66, y=79.00, z=210.32]]
    	Chunk stats: ServerChunkCache: 625 Drop: 0
    	Level seed: -4037465817571765268
    	Level generator: ID 00 - default, ver 1. Features enabled: true
    	Level generator options: 
    	Level spawn location: World: (256,64,188), Chunk: (at 0,4,12 in 16,11; contains blocks 256,0,176 to 271,255,191), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    	Level time: 1566 game time, 1566 day time
    	Level dimension: 0
    	Level storage version: 0x04ABD - Anvil
    	Level weather: Rain time: 100396 (now: false), thunder time: 44024 (now: false)
    	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
    Stacktrace:
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:783)
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:687)
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:536)
    	at java.lang.Thread.run(Unknown Source)
    
    -- System Details --
    Details:
    	Minecraft Version: 1.10.2
    	Operating System: Windows 10 (amd64) version 10.0
    	Java Version: 1.8.0_121, Oracle Corporation
    	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    	Memory: 7712495256 bytes (7355 MB) / 8520204288 bytes (8125 MB) up to 8520204288 bytes (8125 MB)
    	JVM Flags: 3 total; -Xincgc -Xmx8192M -Xms8192M
    	IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
    	FML: MCP 9.32 Powered by Forge 12.18.3.2254 5 mods loaded, 5 mods active
    	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    	UCHIJAAAA	mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
    	UCHIJAAAA	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2254.jar) 
    	UCHIJAAAA	Forge{12.18.3.2254} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2254.jar) 
    	UCHIJAAAA	dmo{1.0} [Dustin's Minecraft Overhaul] (bin) 
    	UCHIJAAAA	Waila{1.7.0} [Waila] (Waila-1.7.0-B3_1.9.4.jar) 
    	Loaded coremods (and transformers): 
    	GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
    	Profiler Position: N/A (disabled)
    	Player Count: 1 / 8; [EntityPlayerMP['Player810'/313, l='New World', x=224.66, y=79.00, z=210.32]]
    	Type: Integrated Server (map_client.txt)
    	Is Modded: Definitely; Client brand changed to 'fml,forge'


    Block Class (BlockOvenBrick):


    package com.mcdigger.dmo.blocks;
    
    import java.util.Random;
    
    import com.mcdigger.dmo.handlers.GuiHandler;
    import com.mcdigger.dmo.init.ModBlocks;
    import com.mcdigger.dmo.reference.Reference;
    import com.mcdigger.dmo.tileentity.TileEntityOvenBrick;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.SoundType;
    import net.minecraft.block.material.Material;
    import net.minecraft.block.properties.IProperty;
    import net.minecraft.block.properties.PropertyDirection;
    import net.minecraft.block.state.BlockStateContainer;
    import net.minecraft.block.state.IBlockState;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.SoundEvents;
    import net.minecraft.inventory.InventoryHelper;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityFurnace;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.util.EnumHand;
    import net.minecraft.util.EnumParticleTypes;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.SoundCategory;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    public class BlockOvenBrick extends Block
    {
     private final boolean isBurning;
    
     public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
     
     public BlockOvenBrick(String unlocalizedName, String registryName, boolean isBurning)
     {
     super(Material.ROCK);
     this.isBurning = isBurning;
     this.setHardness(2.0f);
     this.setResistance(30.0f);
     this.setSoundType(SoundType.STONE);
     this.setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
     this.setUnlocalizedName(unlocalizedName);
     this.setRegistryName(new ResourceLocation(Reference.MODID, registryName));
     }
     
     public IBlockState getStateForEntityRender(IBlockState state)
     {
     return getDefaultState().withProperty(FACING, EnumFacing.SOUTH);
     }
    
     @Override
     public IBlockState getStateFromMeta(int meta)
     {
     EnumFacing facing = EnumFacing.getFront(meta);
    
     if(facing.getAxis()==EnumFacing.Axis.Y) 
     {
     facing=EnumFacing.NORTH;
     }
    
     return getDefaultState().withProperty(FACING, facing);
     }
     
     private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
     {
     if (!worldIn.isRemote)
     {
     IBlockState iblockstate = worldIn.getBlockState(pos.north());
     IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
     IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
     IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
     EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
    
     if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock())
     {
     enumfacing = EnumFacing.SOUTH;
     }
     else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock())
     {
     enumfacing = EnumFacing.NORTH;
     }
     else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock())
     {
     enumfacing = EnumFacing.EAST;
     }
     else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock())
     {
     enumfacing = EnumFacing.WEST;
     }
    
     worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
     }
     }
     
     @Override
     public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
     {
     this.setDefaultFacing(worldIn, pos, state);
     }
     
     public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ)
     {
     if(!world.isRemote)
     {
     player.openGui(Reference.MODID, GuiHandler.MACHINE_OVEN_BRICK, world, pos.getX(), pos.getY(), pos.getZ());
     }
     return true;
     }
     
     public void breakBlock(World worldIn, BlockPos pos, IBlockState state)
     {
     TileEntity tileentity = worldIn.getTileEntity(pos);
    
     if (tileentity instanceof TileEntityOvenBrick)
     {
     InventoryHelper.dropInventoryItems(worldIn, pos, (TileEntityOvenBrick)tileentity);
     worldIn.updateComparatorOutputLevel(pos, this);
     }
    
     super.breakBlock(worldIn, pos, state);
     }
     
     @SideOnly(Side.CLIENT)
     @SuppressWarnings("incomplete-switch")
     public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand)
     {
     if (this.isBurning)
     {
     EnumFacing enumfacing = (EnumFacing)stateIn.getValue(FACING);
     double d0 = (double)pos.getX() + 0.5D;
     double d1 = (double)pos.getY() + rand.nextDouble() * 6.0D / 16.0D;
     double d2 = (double)pos.getZ() + 0.5D;
     double d3 = 0.52D;
     double d4 = rand.nextDouble() * 0.6D - 0.3D;
    
     if (rand.nextDouble() < 0.1D)
     {
     worldIn.playSound((double)pos.getX() + 0.5D, (double)pos.getY(), (double)pos.getZ() + 0.5D, SoundEvents.BLOCK_FURNACE_FIRE_CRACKLE, SoundCategory.BLOCKS, 1.0F, 1.0F, false);
     }
    
     switch (enumfacing)
     {
     case WEST:
     worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 - 0.52D, d1, d2 + d4, 0.0D, 0.0D, 0.0D, new int[0]);
     worldIn.spawnParticle(EnumParticleTypes.FLAME, d0 - 0.52D, d1, d2 + d4, 0.0D, 0.0D, 0.0D, new int[0]);
     break;
     case EAST:
     worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + 0.52D, d1, d2 + d4, 0.0D, 0.0D, 0.0D, new int[0]);
     worldIn.spawnParticle(EnumParticleTypes.FLAME, d0 + 0.52D, d1, d2 + d4, 0.0D, 0.0D, 0.0D, new int[0]);
     break;
     case NORTH:
     worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 - 0.52D, 0.0D, 0.0D, 0.0D, new int[0]);
     worldIn.spawnParticle(EnumParticleTypes.FLAME, d0 + d4, d1, d2 - 0.52D, 0.0D, 0.0D, 0.0D, new int[0]);
     break;
     case SOUTH:
     worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, d0 + d4, d1, d2 + 0.52D, 0.0D, 0.0D, 0.0D, new int[0]);
     worldIn.spawnParticle(EnumParticleTypes.FLAME, d0 + d4, d1, d2 + 0.52D, 0.0D, 0.0D, 0.0D, new int[0]);
     }
     }
     }
     
     public static void setState(boolean active, World worldIn, BlockPos pos)
     {
     IBlockState iblockstate = worldIn.getBlockState(pos);
     TileEntity tileentity = worldIn.getTileEntity(pos);
    
     if (active)
     {
     worldIn.setBlockState(pos, ModBlocks.ovenBrickActive.getDefaultState().withProperty(FACING, iblockstate.getValue(FACING)), 3);
     worldIn.setBlockState(pos, ModBlocks.ovenBrickActive.getDefaultState().withProperty(FACING, iblockstate.getValue(FACING)), 3);
     }
     else
     {
     worldIn.setBlockState(pos, ModBlocks.ovenBrickIdle.getDefaultState().withProperty(FACING, iblockstate.getValue(FACING)), 3);
     worldIn.setBlockState(pos, ModBlocks.ovenBrickIdle.getDefaultState().withProperty(FACING, iblockstate.getValue(FACING)), 3);
     }
    
     if (tileentity != null)
     {
     tileentity.validate();
     worldIn.setTileEntity(pos, tileentity);
     }
     }
     
     @Override
     public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
     {
     return getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
     }
    
     @Override
     public int getMetaFromState(IBlockState state)
     {
     return ((EnumFacing) state.getValue(FACING)).getIndex();
     }
    
     @Override
     protected BlockStateContainer createBlockState()
     {
     return new BlockStateContainer(this, new IProperty[]{FACING});
     }
     
     @Override
     public Item getItemDropped(IBlockState state, Random rand, int fortune)
     {
     return Item.getItemFromBlock(ModBlocks.ovenBrickIdle);
     }
     
     public TileEntity createNewTileEntity(World worldIn, IBlockState state)
     {
     return new TileEntityOvenBrick();
     }
    }

    TileEntity (TileEntityOvenBrick):



    package com.mcdigger.dmo.tileentity;
    
    import com.mcdigger.dmo.blocks.BlockOvenBrick;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.Blocks;
    import net.minecraft.init.Items;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.inventory.SlotFurnaceFuel;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemBlock;
    import net.minecraft.item.ItemHoe;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.ItemSword;
    import net.minecraft.item.ItemTool;
    import net.minecraft.item.crafting.FurnaceRecipes;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.util.ITickable;
    import net.minecraft.util.math.MathHelper;
    import net.minecraft.util.text.ITextComponent;
    import net.minecraft.util.text.TextComponentString;
    import net.minecraft.util.text.TextComponentTranslation;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    public class TileEntityOvenBrick extends TileEntity implements IInventory, ITickable
    {
    	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};
        /** The ItemStacks that hold the items currently being used in the furnace */
        private ItemStack[] furnaceItemStacks = new ItemStack[3];
        /** The number of ticks that the furnace will keep burning */
        private int furnaceBurnTime;
        /** The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for */
        private int currentItemBurnTime;
        private int cookTime;
        private int totalCookTime;
        private String furnaceCustomName;
    
        /**
         * Returns the number of slots in the inventory.
         */
        public int getSizeInventory()
        {
            return this.furnaceItemStacks.length;
        }
    
        /**
         * Returns the stack in the given slot.
         */
        public ItemStack getStackInSlot(int index)
        {
            return this.furnaceItemStacks[index];
        }
    
        /**
         * Removes up to a specified number of items from an inventory slot and returns them in a new stack.
         */
        public ItemStack decrStackSize(int index, int count)
        {
            if (this.furnaceItemStacks[index] != null)
            {
                if (this.furnaceItemStacks[index].stackSize <= count)
                {
                    ItemStack itemstack1 = this.furnaceItemStacks[index];
                    this.furnaceItemStacks[index] = null;
                    return itemstack1;
                }
                else
                {
                    ItemStack itemstack = this.furnaceItemStacks[index].splitStack(count);
    
                    if (this.furnaceItemStacks[index].stackSize == 0)
                    {
                        this.furnaceItemStacks[index] = null;
                    }
    
                    return itemstack;
                }
            }
            else
            {
                return null;
            }
        }
    
        /**
         * Removes a stack from the given slot and returns it.
         */
        public ItemStack removeStackFromSlot(int index)
        {
            if (this.furnaceItemStacks[index] != null)
            {
                ItemStack itemstack = this.furnaceItemStacks[index];
                this.furnaceItemStacks[index] = null;
                return itemstack;
            }
            else
            {
                return null;
            }
        }
    
        /**
         * Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
         */
        public void setInventorySlotContents(int index, ItemStack stack)
        {
            boolean flag = stack != null && stack.isItemEqual(this.furnaceItemStacks[index]) && ItemStack.areItemStackTagsEqual(stack, this.furnaceItemStacks[index]);
            this.furnaceItemStacks[index] = stack;
    
            if (stack != null && stack.stackSize > this.getInventoryStackLimit())
            {
                stack.stackSize = this.getInventoryStackLimit();
            }
    
            if (index == 0 && !flag)
            {
                this.totalCookTime = this.getCookTime(stack);
                this.cookTime = 0;
                this.markDirty();
            }
        }
    
        /**
         * Get the name of this object. For players this returns their username
         */
        public String getName()
        {
            return this.hasCustomName() ? this.furnaceCustomName : "container.ovenBrick";
        }
    
        /**
         * Returns true if this thing is named
         */
        public boolean hasCustomName()
        {
            return this.furnaceCustomName != null && this.furnaceCustomName.length() > 0;
        }
    
        public void setCustomInventoryName(String customName)
        {
            this.furnaceCustomName = customName;
        }
    
        public void readFromNBT(NBTTagCompound compound)
        {
            super.readFromNBT(compound);
            NBTTagList nbttaglist = compound.getTagList("Items", 10);
            this.furnaceItemStacks = new ItemStack[this.getSizeInventory()];
    
            for (int i = 0; i < nbttaglist.tagCount(); ++i)
            {
                NBTTagCompound nbttagcompound = nbttaglist.getCompoundTagAt(i);
                int j = nbttagcompound.getByte("Slot");
    
                if (j >= 0 && j < this.furnaceItemStacks.length)
                {
                    this.furnaceItemStacks[j] = ItemStack.loadItemStackFromNBT(nbttagcompound);
                }
            }
    
            this.furnaceBurnTime = compound.getShort("BurnTime");
            this.cookTime = compound.getShort("CookTime");
            this.totalCookTime = compound.getShort("CookTimeTotal");
            this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);
    
            if (compound.hasKey("CustomName", 8))
            {
                this.furnaceCustomName = compound.getString("CustomName");
            }
        }
    
        public NBTTagCompound writeToNBT(NBTTagCompound compound)
        {
            super.writeToNBT(compound);
            compound.setInteger("BurnTime", this.furnaceBurnTime);
            compound.setInteger("CookTime", this.cookTime);
            compound.setInteger("CookTimeTotal", this.totalCookTime);
            NBTTagList nbttaglist = new NBTTagList();
    
            for (int i = 0; i < this.furnaceItemStacks.length; ++i)
            {
                if (this.furnaceItemStacks[i] != null)
                {
                    NBTTagCompound nbttagcompound = new NBTTagCompound();
                    nbttagcompound.setByte("Slot", (byte)i);
                    this.furnaceItemStacks[i].writeToNBT(nbttagcompound);
                    nbttaglist.appendTag(nbttagcompound);
                }
            }
    
            compound.setTag("Items", nbttaglist);
    
            if (this.hasCustomName())
            {
                compound.setString("CustomName", this.furnaceCustomName);
            }
    
            return compound;
        }
    
        /**
         * Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended.
         */
        public int getInventoryStackLimit()
        {
            return 64;
        }
    
        /**
         * Furnace isBurning
         */
        public boolean isBurning()
        {
            return this.furnaceBurnTime > 0;
        }
    
        @SideOnly(Side.CLIENT)
        public static boolean isBurning(IInventory inventory)
        {
            return inventory.getField(0) > 0;
        }
    
        /**
         * Like the old updateEntity(), except more generic.
         */
        public void update()
        {
            boolean flag = this.isBurning();
            boolean flag1 = false;
    
            if (this.isBurning())
            {
                --this.furnaceBurnTime;
            }
    
            if (!this.worldObj.isRemote)
            {
                if (this.isBurning() || this.furnaceItemStacks[1] != null && this.furnaceItemStacks[0] != null)
                {
                    if (!this.isBurning() && this.canSmelt())
                    {
                        this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);
    
                        if (this.isBurning())
                        {
                            flag1 = true;
    
                            if (this.furnaceItemStacks[1] != null)
                            {
                                --this.furnaceItemStacks[1].stackSize;
    
                                if (this.furnaceItemStacks[1].stackSize == 0)
                                {
                                    this.furnaceItemStacks[1] = furnaceItemStacks[1].getItem().getContainerItem(furnaceItemStacks[1]);
                                }
                            }
                        }
                    }
    
                    if (this.isBurning() && this.canSmelt())
                    {
                        ++this.cookTime;
    
                        if (this.cookTime == this.totalCookTime)
                        {
                            this.cookTime = 0;
                            this.totalCookTime = this.getCookTime(this.furnaceItemStacks[0]);
                            this.smeltItem();
                            flag1 = true;
                        }
                    }
                    else
                    {
                        this.cookTime = 0;
                    }
                }
                else if (!this.isBurning() && this.cookTime > 0)
                {
                    this.cookTime = MathHelper.clamp_int(this.cookTime - 2, 0, this.totalCookTime);
                }
    
                if (flag != this.isBurning())
                {
                    flag1 = true;
                    BlockOvenBrick.setState(this.isBurning(), this.worldObj, this.pos);
                }
            }
    
            if (flag1)
            {
                this.markDirty();
            }
        }
    
        public int getCookTime(ItemStack stack)
        {
            return 150; //Change this to make it faster or slower
        }
    
        /**
         * Returns true if the furnace can smelt an item, i.e. has a source item, destination stack isn't full, etc.
         */
        private boolean canSmelt()
        {
            if (this.furnaceItemStacks[0] == null)
            {
                return false;
            }
            else
            {                                                                                      //Output Slot
                ItemStack itemstack = FurnaceRecipes.instance().getSmeltingResult(this.furnaceItemStacks[0]);
                if (itemstack == null) return false;
                if (this.furnaceItemStacks[2] == null) return true;
                if (!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false;
                int result = furnaceItemStacks[2].stackSize + itemstack.stackSize;
                return result <= getInventoryStackLimit() && result <= this.furnaceItemStacks[2].getMaxStackSize(); //Forge BugFix: Make it respect stack sizes properly.
            }
        }
    
        /**
         * Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
         */
        public void smeltItem()
        {
            if (this.canSmelt())
            {                                                                                      //Output Slot
                ItemStack itemstack = FurnaceRecipes.instance().getSmeltingResult(this.furnaceItemStacks[0]);
    
                if (this.furnaceItemStacks[2] == null)
                {
                    this.furnaceItemStacks[2] = itemstack.copy();
                }
                else if (this.furnaceItemStacks[2].getItem() == itemstack.getItem())
                {
                    this.furnaceItemStacks[2].stackSize += itemstack.stackSize; // Forge BugFix: Results may have multiple items
                }
    
                if (this.furnaceItemStacks[0].getItem() == Item.getItemFromBlock(Blocks.SPONGE) && this.furnaceItemStacks[0].getMetadata() == 1 && this.furnaceItemStacks[1] != null && this.furnaceItemStacks[1].getItem() == Items.BUCKET)
                {
                    this.furnaceItemStacks[1] = new ItemStack(Items.WATER_BUCKET);
                }
    
                --this.furnaceItemStacks[0].stackSize;
    
                if (this.furnaceItemStacks[0].stackSize <= 0)
                {
                    this.furnaceItemStacks[0] = null;
                }
            }
        }
    
        /**
         * Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
         * fuel
         */
        public static int getItemBurnTime(ItemStack stack)
        {
            if (stack == null)
            {
                return 0;
            }
            else
            {
                Item item = stack.getItem();
    
                if (item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.AIR)
                {
                    Block block = Block.getBlockFromItem(item);
    
                    if (block == Blocks.WOODEN_SLAB)
                    {
                        return 150;
                    }
    
                    if (block.getDefaultState().getMaterial() == Material.WOOD)
                    {
                        return 300;
                    }
    
                    if (block == Blocks.COAL_BLOCK)
                    {
                        return 16000;
                    }
                }
    
                if (item instanceof ItemTool && "WOOD".equals(((ItemTool)item).getToolMaterialName())) return 200;
                if (item instanceof ItemSword && "WOOD".equals(((ItemSword)item).getToolMaterialName())) return 200;
                if (item instanceof ItemHoe && "WOOD".equals(((ItemHoe)item).getMaterialName())) return 200;
                if (item == Items.STICK) return 100;
                if (item == Items.COAL) return 1600;
                if (item == Items.LAVA_BUCKET) return 20000;
                if (item == Item.getItemFromBlock(Blocks.SAPLING)) return 100;
                if (item == Items.BLAZE_ROD) return 2400;
                return net.minecraftforge.fml.common.registry.GameRegistry.getFuelValue(stack);
            }
        }
    
        public static boolean isItemFuel(ItemStack stack)
        {
            /**
             * Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't
             * fuel
             */
            return getItemBurnTime(stack) > 0;
        }
    
        /**
         * Do not make give this method the name canInteractWith because it clashes with Container
         */
        public boolean isUseableByPlayer(EntityPlayer player)
        {
            return this.worldObj.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
        }
    
        public void openInventory(EntityPlayer player)
        {
        }
    
        public void closeInventory(EntityPlayer player)
        {
        }
    
        /**
         * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
         */
        public boolean isItemValidForSlot(int index, ItemStack stack)
        {
            return index == 2 ? false : (index != 1 ? true : isItemFuel(stack) || SlotFurnaceFuel.isBucket(stack));
        }
    
        public int[] getSlotsForFace(EnumFacing side)
        {
            return side == EnumFacing.DOWN ? slotsBottom : (side == EnumFacing.UP ? slotsTop : slotsSides);
        }
    
        /**
         * Returns true if automation can insert the given item in the given slot from the given side. Args: slot, item,
         * side
         */
        public boolean canInsertItem(int index, ItemStack itemStackIn, EnumFacing direction)
        {
            return this.isItemValidForSlot(index, itemStackIn);
        }
    
        /**
         * Returns true if automation can extract the given item in the given slot from the given side. Args: slot, item,
         * side
         */
        public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction)
        {
            if (direction == EnumFacing.DOWN && index == 1)
            {
                Item item = stack.getItem();
    
                if (item != Items.WATER_BUCKET && item != Items.BUCKET)
                {
                    return false;
                }
            }
    
            return true;
        }
    
        public int getField(int id)
        {
            switch (id)
            {
                case 0:
                    return this.furnaceBurnTime;
                case 1:
                    return this.currentItemBurnTime;
                case 2:
                    return this.cookTime;
                case 3:
                    return this.totalCookTime;
                default:
                    return 0;
            }
        }
    
        public void setField(int id, int value)
        {
            switch (id)
            {
                case 0:
                    this.furnaceBurnTime = value;
                    break;
                case 1:
                    this.currentItemBurnTime = value;
                    break;
                case 2:
                    this.cookTime = value;
                    break;
                case 3:
                    this.totalCookTime = value;
            }
        }
    
        public int getFieldCount()
        {
            return 4;
        }
    
        public void clear()
        {
            for (int i = 0; i < this.furnaceItemStacks.length; ++i)
            {
                this.furnaceItemStacks[i] = null;
            }
        }
    
        @Override
    	public ITextComponent getDisplayName()
    	{
    		return this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName());
    	}
    
    	@Override
    	public void markDirty() {
    		// TODO Auto-generated method stub
    		
    	}
    }
    




    Container (ContainerOvenBrick):


    package com.mcdigger.dmo.containers;
    
    import javax.annotation.Nullable;
    
    import com.mcdigger.dmo.tileentity.TileEntityOvenBrick;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.IContainerListener;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.inventory.Slot;
    import net.minecraft.inventory.SlotFurnaceFuel;
    import net.minecraft.inventory.SlotFurnaceOutput;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.crafting.FurnaceRecipes;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    public class ContainerOvenBrick extends Container
    {
     private final IInventory tileFurnace;
     private int cookTime;
     private int totalCookTime;
     private int furnaceBurnTime;
     private int currentItemBurnTime;
    
     public ContainerOvenBrick(InventoryPlayer playerInventory, IInventory furnaceInventory)
     {
     this.tileFurnace = furnaceInventory;
     this.addSlotToContainer(new Slot(furnaceInventory, 0, 56, 17));
     this.addSlotToContainer(new SlotFurnaceFuel(furnaceInventory, 1, 56, 53));
     this.addSlotToContainer(new SlotFurnaceOutput(playerInventory.player, furnaceInventory, 2, 116, 35));
    
     for (int y = 0; y < 3; ++y)
     {
     for (int x = 0; x < 9; ++x)
     {
     this.addSlotToContainer(new Slot(playerInventory, x + y * 9 + 9,
     8 + x * 18,
     84 + y * 18));
     }
     }
    
     for (int x = 0; x < 9; ++x)
     {
     this.addSlotToContainer(new Slot(playerInventory, x,
     8 + x * 18,
     142));
     }
     }
    
     public void addListener(IContainerListener listener)
     {
     super.addListener(listener);
     listener.sendAllWindowProperties(this, this.tileFurnace);
     }
    
     /**
     * Looks for changes made in the container, sends them to every listener.
     */
     public void detectAndSendChanges()
     {
     super.detectAndSendChanges();
    
     for (int i = 0; i < this.listeners.size(); ++i)
     {
     IContainerListener icontainerlistener = (IContainerListener)this.listeners.get(i);
    
     if (this.cookTime != this.tileFurnace.getField(2))
     {
     icontainerlistener.sendProgressBarUpdate(this, 2, this.tileFurnace.getField(2));
     }
    
     if (this.furnaceBurnTime != this.tileFurnace.getField(0))
     {
     icontainerlistener.sendProgressBarUpdate(this, 0, this.tileFurnace.getField(0));
     }
    
     if (this.currentItemBurnTime != this.tileFurnace.getField(1))
     {
     icontainerlistener.sendProgressBarUpdate(this, 1, this.tileFurnace.getField(1));
     }
    
     if (this.totalCookTime != this.tileFurnace.getField(3))
     {
     icontainerlistener.sendProgressBarUpdate(this, 3, this.tileFurnace.getField(3));
     }
     }
    
     this.cookTime = this.tileFurnace.getField(2);
     this.furnaceBurnTime = this.tileFurnace.getField(0);
     this.currentItemBurnTime = this.tileFurnace.getField(1);
     this.totalCookTime = this.tileFurnace.getField(3);
     }
    
     @SideOnly(Side.CLIENT)
     public void updateProgressBar(int id, int data)
     {
     this.tileFurnace.setField(id, data);
     }
    
     /**
     * Determines whether supplied player can use this container
     */
     public boolean canInteractWith(EntityPlayer playerIn)
     {
     return this.tileFurnace.isUseableByPlayer(playerIn);
     }
    
     /**
     * Take a stack from the specified inventory slot.
     */
     @Nullable
     public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
     {
     ItemStack itemstack = null;
     Slot slot = (Slot)this.inventorySlots.get(index);
    
     if (slot != null && slot.getHasStack())
     {
     ItemStack itemstack1 = slot.getStack();
     itemstack = itemstack1.copy();
    
     if (index == 2)
     {
     if (!this.mergeItemStack(itemstack1, 3, 39, true))
     {
     return null;
     }
    
     slot.onSlotChange(itemstack1, itemstack);
     }
     else if (index != 1 && index != 0)
     {
     if (FurnaceRecipes.instance().getSmeltingResult(itemstack1) != null)
     {
     if (!this.mergeItemStack(itemstack1, 0, 1, false))
     {
     return null;
     }
     }
     else if (TileEntityOvenBrick.isItemFuel(itemstack1))
     {
     if (!this.mergeItemStack(itemstack1, 1, 2, false))
     {
     return null;
     }
     }
     else if (index >= 3 && index < 30)
     {
     if (!this.mergeItemStack(itemstack1, 30, 39, false))
     {
     return null;
     }
     }
     else if (index >= 30 && index < 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(playerIn, itemstack1);
     }
    
     return itemstack;
     }
    }

    GUI (GuiOvenBrick):


    package com.mcdigger.dmo.gui;
    
    import com.mcdigger.dmo.containers.ContainerOvenBrick;
    import com.mcdigger.dmo.reference.Reference;
    
    import net.minecraft.client.gui.inventory.GuiContainer;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.inventory.ContainerFurnace;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.tileentity.TileEntityFurnace;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    @SideOnly(Side.CLIENT)
    public class GuiOvenBrick extends GuiContainer
    {
     /** The player inventory bound to this GUI. */
     private final InventoryPlayer playerInventory;
     private final IInventory tileFurnace;
    
     public GuiOvenBrick(InventoryPlayer playerInv, IInventory furnaceInv)
     {
     super(new ContainerOvenBrick(playerInv, furnaceInv));
     this.playerInventory = playerInv;
     this.tileFurnace = furnaceInv;
     }
    
     /**
     * Draw the foreground layer for the GuiContainer (everything in front of the items)
     */
     protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
     {
     String s = this.tileFurnace.getDisplayName().getUnformattedText();
     this.fontRendererObj.drawString(s, this.xSize / 2 - this.fontRendererObj.getStringWidth(s) / 2, 6, 4210752);
     this.fontRendererObj.drawString(this.playerInventory.getDisplayName().getUnformattedText(), 8, this.ySize - 96 + 2, 4210752);
     }
    
     /**
     * Draws the background layer of this container (behind the items).
     */
     protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
     {
     GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
     this.mc.getTextureManager().bindTexture(new ResourceLocation(Reference.MODID + ":" + "textures/gui/machines/guiOvenBrick.png"));
     int i = (this.width - this.xSize) / 2;
     int j = (this.height - this.ySize) / 2;
     this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.ySize);
    
     if (TileEntityFurnace.isBurning(this.tileFurnace))
     {
     int k = this.getBurnLeftScaled(13);
     this.drawTexturedModalRect(i + 56, j + 36 + 12 - k, 176, 12 - k, 14, k + 1);
     }
    
     int l = this.getCookProgressScaled(24);
     this.drawTexturedModalRect(i + 79, j + 34, 176, 14, l + 1, 16);
     }
    
     private int getCookProgressScaled(int pixels)
     {
     int i = this.tileFurnace.getField(2);
     int j = this.tileFurnace.getField(3);
     return j != 0 && i != 0 ? i * pixels / j : 0;
     }
    
     private int getBurnLeftScaled(int pixels)
     {
     int i = this.tileFurnace.getField(1);
    
     if (i == 0)
     {
     i = 200;
     }
    
     return this.tileFurnace.getField(0) * pixels / i;
     }
    }

    GuiHandler:


    package com.mcdigger.dmo.handlers;
    
    import com.mcdigger.dmo.containers.ContainerOvenBrick;
    import com.mcdigger.dmo.containers.ContainerStorageBarrel;
    import com.mcdigger.dmo.containers.ContainerStorageCabinetMetal;
    import com.mcdigger.dmo.containers.ContainerStorageCabinetStone;
    import com.mcdigger.dmo.containers.ContainerStorageCabinetWood;
    import com.mcdigger.dmo.containers.ContainerStorageCrate;
    import com.mcdigger.dmo.containers.ContainerStorageLumber;
    import com.mcdigger.dmo.containers.ContainerStorageSafe;
    import com.mcdigger.dmo.gui.GuiOvenBrick;
    import com.mcdigger.dmo.gui.GuiStorageBarrel;
    import com.mcdigger.dmo.gui.GuiStorageCabinetMetal;
    import com.mcdigger.dmo.gui.GuiStorageCabinetStone;
    import com.mcdigger.dmo.gui.GuiStorageCabinetWood;
    import com.mcdigger.dmo.gui.GuiStorageCrate;
    import com.mcdigger.dmo.gui.GuiStorageLumber;
    import com.mcdigger.dmo.gui.GuiStorageSafe;
    import com.mcdigger.dmo.tileentity.TileEntityOvenBrick;
    import com.mcdigger.dmo.tileentity.TileEntityStorageBarrel;
    import com.mcdigger.dmo.tileentity.TileEntityStorageCabinetMetal;
    import com.mcdigger.dmo.tileentity.TileEntityStorageCabinetStone;
    import com.mcdigger.dmo.tileentity.TileEntityStorageCabinetWood;
    import com.mcdigger.dmo.tileentity.TileEntityStorageCrate;
    import com.mcdigger.dmo.tileentity.TileEntityStorageLumber;
    import com.mcdigger.dmo.tileentity.TileEntityStorageSafe;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.common.network.IGuiHandler;
    
    public class GuiHandler implements IGuiHandler
    {
     //Storage ID's 201-300
     public static final int STORAGE_BARREL = 201;
     public static final int STORAGE_CRATE = 202;
     public static final int STORAGE_LUMBER = 203;
     public static final int STORAGE_CABINET_WOOD = 204;
     public static final int STORAGE_CABINET_STONE = 205;
     public static final int STORAGE_CABINET_METAL = 206;
     public static final int STORAGE_SAFE = 207;
    
     //Workbench ID's 301-400
     public static final int WORKBENCH_CRAFTING_MAT = 301;
     
     //Machine ID's 401-500
     public static final int MACHINE_OVEN_BRICK = 401;
     
     @Override
     public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
     {
     
     //Storage Containers
     if(ID == STORAGE_BARREL){return new ContainerStorageBarrel(player.inventory, (TileEntityStorageBarrel)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CRATE){return new ContainerStorageCrate(player.inventory, (TileEntityStorageCrate)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_LUMBER){return new ContainerStorageLumber(player.inventory, (TileEntityStorageLumber)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_WOOD){return new ContainerStorageCabinetWood(player.inventory, (TileEntityStorageCabinetWood)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_STONE){return new ContainerStorageCabinetStone(player.inventory, (TileEntityStorageCabinetStone)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_METAL){return new ContainerStorageCabinetMetal(player.inventory, (TileEntityStorageCabinetMetal)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_SAFE){return new ContainerStorageSafe(player.inventory, (TileEntityStorageSafe)world.getTileEntity(new BlockPos(x, y, z)));}
     
     //Workbench Containers
     
     //Machine Containers
     if(ID == MACHINE_OVEN_BRICK){return new ContainerOvenBrick(player.inventory, (TileEntityOvenBrick)world.getTileEntity(new BlockPos(x, y, z)));}
     
     return null;
     
     }
    
     @Override
     public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z)
     {
    
     //Storage Gui's
     if(ID == STORAGE_BARREL){return new GuiStorageBarrel(player.inventory, (TileEntityStorageBarrel)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CRATE){return new GuiStorageCrate(player.inventory, (TileEntityStorageCrate)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_LUMBER){return new GuiStorageLumber(player.inventory, (TileEntityStorageLumber)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_WOOD){return new GuiStorageCabinetWood(player.inventory, (TileEntityStorageCabinetWood)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_STONE){return new GuiStorageCabinetStone(player.inventory, (TileEntityStorageCabinetStone)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_CABINET_METAL){return new GuiStorageCabinetMetal(player.inventory, (TileEntityStorageCabinetMetal)world.getTileEntity(new BlockPos(x, y, z)));}
     if(ID == STORAGE_SAFE){return new GuiStorageSafe(player.inventory, (TileEntityStorageSafe)world.getTileEntity(new BlockPos(x, y, z)));}
     
     //Workbench Gui's
     
     //Machine Gui's
     if(ID == MACHINE_OVEN_BRICK){return new GuiOvenBrick(player.inventory, (TileEntityOvenBrick)world.getTileEntity(new BlockPos(x, y, z)));}
     
     return null;
     
     }
    
    }
    
    Posted in: Modification Development
  • 0

    posted a message on Replacing Fluid Block with a Solid Block

    Hello,


    Is there a way to replace the source block of a fluid with another solid block after a certain amount of time? For example I have an idea of a fluid where after a specific amount of ticks, the source block would solidify. The obvious problems with delaying the block update method would be that the fluid never updates and spreads, which kind of makes the idea pointless, but I was wondering if there was another way to go about doing this or if anyone has made a tutorial of sorts on this kind of thing.

    Posted in: Modification Development
  • 0

    posted a message on Custom storage block displaying name above block

    Hello,


    I've created a custom storage block Barrel with 9 inventory slots. I got everything working fine, but in game I noticed that the name of the block is displaying above the block like a player when you look at it. Does anyone know what sets this to display this way for a tile entity and how to prevent this? Not wanting every tile entity I make to have it's name displayed above it like that.

    Posted in: Modification Development
  • 0

    posted a message on Milk bucket to empty on right click

    Hello,


    I have created a milk fluid using the new fluid system (last time I updated my mod was 1.7 so I had some catching up/learning to do) and I was wondering what the best way would be to get the vanilla milk bucket to instead of be drinkable, pour my custom milk fluid out just like the other fluid buckets.

    I understand that I need to do two things:


    1. stop the vanilla bucket from doing it's vanilla functionality

    2. implement a new setBlockState method similar to the vanilla ItemBucket


    I would imagine I would need to use an event to do this, but not sure which one(s) would be useful or what the best way to go about doing this would be.

    Posted in: Modification Development
  • 0

    posted a message on AmbientSounds v1.2.1 - Biomes O Plenty support - #ListentoNature

    Just curious.. have you had any luck getting a proper config file for Biomes O' Plenty? I would love to use this mod in my modpack in place of MAtmos, but I am not sure I will have the time to set all the configs right for all of the biomes.

    Posted in: Minecraft Mods
  • 0

    posted a message on Custom container acting funky :P

    I am having this strange issue with my custom crate container where items in the left or right slot will also appear in the slot on the opposite side, either up one or down one respectively. For example, I have a 4x4 container and if I place an item on one of the left hand slots, it will also appear in the right hand slot, but up one row. The funny thing is that it is not actually duplicating the item. I can remove the item from either slot and it goes away in the other one too. It is as if it is treating the last slot on each row and the first slot on the next row as the same slot.


    Does anyone know what would cause this? I have another barrel container that I made as a 3x3 and I am not having this issue. This is an exact copy of the code from the 3x3 container except with the number of container slots set to 16 from 9 and the rows set to 4x4.


    I have attached a couple images for a better look at what I am talking about.

    Posted in: Modification Development
  • 0

    posted a message on Not sure if Windows 10 Edition is installing correctly..

    Hello,


    I reserved my copy of Windows 10 Edition, but when I click the install button it goes to downloading for a split second and then changed back to the install button. If I click it again, it says Completed, but I cannot find the game anywhere on my machine. Did this install correctly and if so, where does it install to? If I go back to the store, it just has the Install button again and does the same thing. Any help would be appreciated.


    Thanks!

    Posted in: Minecraft (Bedrock) Support
  • 0

    posted a message on False Fire - Decorative Fire - 16 Colors!

    Any chance you could update this to 1.8? Thanks again for making this mod!

    Posted in: WIP Mods
  • 0

    posted a message on [Forge] [1.6.4] Cray Tokens - A Simple Currency For Your Server (API Included!)
    Also looking forward to this mod for 1.7.10. Best currency mod I have used so far!
    Posted in: Minecraft Mods
  • 0

    posted a message on Custom NPCs
    Hey Noppes,



    Not sure if this is something that you have any interest in adding to your mod or if it is even possible, but it would be really cool if you could make a block that allows you to restrict natural mob spawning for hostiles within a specified radius. It would be really nice to be able to have a survival world with safe zones or NPC towns that don't have hostile mobs, but could still look nice without torch spamming the place.
    Posted in: Minecraft Mods
  • 0

    posted a message on Mod Request - Aesthetic Fire + Mob Spawn Blocker

    You sir, are amazing! I posted on your thread about it! Now the other one sounds like it might be tricky to do but would be fantastic if it's possible.
    Posted in: Requests / Ideas For Mods
  • To post a comment, please .