so i started playing 1.8 prerelease, and i loved it. i had stayed alive for quite a while, at least 3 hours, collecting xp etc. when suddenly i died from a creeper. i instantly lagged and thought "well thats weird, im running an i7 with amazing system specs." i follow the lag to where i died. my fps goes down to 1, and my cpu is going crazy. i finally reach the spot where i died and low and behold, a million xp orbs LAGGING MY GAME LIKE CRAZY. i have screen shots of the massive amounts of xp orbs, and a video of me collecting xp for 2 mins and 35 seconds while standing in one place (my screen is completely green). however i figured i wouldnt need to post them, as any1 can try this for themselves :tongue.gif:. my plan to fix it? easy. when you die, you drop 1 orb that has all ur xp and tadaaa lag problem fixed. its easy to code, and a very quick and easy fix. i hope notch reads this and puts this in the game :biggrin.gif: otherwise 1.8 is amazing!
-thanks
TaVeren
- Mr_Crayfish
- Curse Premium
-
Member for 12 years, 7 months, and 28 days
Last active Thu, Apr, 27 2017 07:17:06
- 173 Followers
- 1,325 Total Posts
- 787 Thanks
-
15
TaVerenOVerlord posted a message on XP BUGGED AND BROKENPosted in: 1.8 Update Discussion -
14
Sacheverell posted a message on 1.8 Updates: Features from the Pre-Release!
The 1.8 Pre-Release is available for testing right now! We've done some extensive testing, and discovered the following features:
- Biomes are MUCH larger and uniform than before
-Swamp biome was added to the list of existing biomes - look for vines on trees!
- Vines
Can be collected with shears, in the manner of leaf blocks. Vines will grow on any surface they are placed on
- Beef and Chicken added
- Strongholds - spawn once per world
- Ruins (basically strongholds on the ground)
- Giant mushrooms (Do not generate yet)
- Silverfish
- Creative mode
Allows flying, insta-break, unlimited items from an item palette, no damage, and more
- Abandoned mine shafts
- Endermen
Normally passive, these night-spawning mobs will teleport to (and attack) you if you look directly at them. When defeated, they can drop Ender Pearls, which presently do nothing
- Bow charging
Variable damage with charge, can also land critical hits. Additionally, attacks can crit if you hit a player or mob when descending from a jump
- Sprinting
Run faster, knock mobs back that are hit during a sprint - appears to deplete the hunger bar faster
- New high-quality Main Menu
- Chest animation (lids open, close)
- Player list on SMP; Server listings
- Setting gamemode on SMP "/gamemode username 0/1", 1 being Creative and 0 being Survival
- Hunger
Depletes slowly over time, can be filled by eating food. At 9 more more bars, you will regenerate health slowly.
- Eating animation
- Arrows stick to mobs
- Xp bar (Gain xp from killing mobs and other players)
- New lighting engine (Colored lights, smoother lighting)
- Clouds are now at the ceiling of the world
- Cave spiders
- Zombies drop rotten flesh, which can be consumed
- Watermelons (as well as watermelon and pumpkin seeds)
- Glass panes
These can be crafted at a crafting table by making a 3x2 grid of Glass Blocks - makes 16 panes. These panes can be placed in lines, corners and crosses, and they will adjoin with the nearest adjacent block.
- Iron Bars
Created by making a 3x2 grid of iron ingots at a crafting table. Can be placed in the same manner as glass panes
- Brick, Stone Brick stairs
- Smooth stone brick
Can be crafted by placing Stone in a 2x2 grid, makes 4 Stone Bricks
- F6 & F7 Adjust the time of day when pressed/held
New features and discoveries will be added as they are found. Stay tuned! -
63
StrongJoshua posted a message on [ModLoader] StrongJoshua's Advanced Tutorials(25/09/11)Posted in: TutorialsTutorial List-New Furnace
-Mob Evolve On Item Use
-Spawn Entity Block
-Multiple Output Furnace
-Custom Block Rendering (by MC_DucksAreBest)
Post any suggestions for future tutorials!
What to remember when posting errors
- Use code tags [ code][ /code] (without the space)
- Post the class file(s) that the error is pointing to
New Furnace
This is my first tutorial, hope it goes well :smile.gif:!
Like the title suggest, in this tutorial I will teach you how to make a new furnace (just a basic one, you can add the fancy stuff yourself). If you are using this tutorial I assume that you already know how to make a block and make it have different textures on the sides!
What you will need:
1.Your mod_XXX file
2.A BlockYOURFURNACE file
3.A GuiYOURFURNACE file
4.A SlotYOURFURNACE file
5.A ContainerYOURFURNACE file
6.A TileEntityYOURFURNACE file
7.A YOURFURNACERecipies file
(For all these files reference the furnace equivalent)
In this tutorial I will be showing you how to make a freezer, but you can modify any of the code to fit your needs. In all of the finished codes I renamed all fields and methods from burn/cook/smelt to freeze/cool/solidify you can use whatever fits your furnace-block, but remember to stay consistent.
BlockFreezer:
What you don't need from the furnace version is the randomDisplayTick method(keep this if you want smoke and flames to appear when the block is activated) and the updateFurnaceBlockState method (keep this if you want the block to look different when activated). Otherwise just change furnace to freezer wherever it occurs. In Eclipse an easy way to do this is to click the variable you want to change and press Alt-Shift-R to rename all instances of those variables. For the freezer I am only useing 2 textures, 1 from the front, and 1 for the other sides, if you want to add more then look at the chest block or some other to see how to add the other textures. Another thing you have to be aware of is in the onBlockActivated method instead of sayingentityPlayer.displayGuiFreezer(tileentityfreezer)
(because this would mean modifying some source code) useModLoader.OpenGui(entityplayer, new GuiFreezer(entityplayer.inventory, tileentityfreezer));
Finished Code
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; import java.util.Random; // Referenced classes of package net.minecraft.src: // BlockContainer, Material, Block, World, // IBlockAccess, TileEntityFurnace, EntityPlayer, TileEntity, // EntityLiving, MathHelper, IInventory, ItemStack, // EntityItem public class BlockFreezer extends BlockContainer { protected BlockFreezer(int i, boolean flag) { super(i, Material.ground); freezerRand = new Random(); isActive = flag; } public int idDropped(int i, Random random) { return mod_IronBars.freezer.blockID; } public void onBlockAdded(World world, int i, int j, int k) { super.onBlockAdded(world, i, j, k); setDefaultDirection(world, i, j, k); } private void setDefaultDirection(World world, int i, int j, int k) { if(world.multiplayerWorld) { return; } int l = world.getBlockId(i, j, k - 1); int i1 = world.getBlockId(i, j, k + 1); int j1 = world.getBlockId(i - 1, j, k); int k1 = world.getBlockId(i + 1, j, k); byte byte0 = 3; if(Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1]) { byte0 = 3; } if(Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l]) { byte0 = 2; } if(Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1]) { byte0 = 5; } if(Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1]) { byte0 = 4; } world.setBlockMetadataWithNotify(i, j, k, byte0); } public int getBlockTexture(IBlockAccess iblockaccess, int i, int j, int k, int l) { if(l == 1) { return mod_XXX.freezSide; } if(l == 0) { return mod_XXX.freezSide; } int i1 = iblockaccess.getBlockMetadata(i, j, k); if(l != i1) { return mod_XXX.freezSide; } else { return mod_XXX.freezFront; } } public int getBlockTextureFromSide(int side) { if (side == 3) { return mod_XXX.freezFront; } else { return mod_XXX.freezSide; } } public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer) { if(world.multiplayerWorld) { return true; } else { TileEntityFreezer tileentityfreezer = (TileEntityFreezer)world.getBlockTileEntity(i, j, k); ModLoader.OpenGUI(entityplayer, new GuiFreezer(entityplayer.inventory, tileentityfreezer)); return true; } } public TileEntity getBlockEntity() { return new TileEntityFreezer(); } public void onBlockPlacedBy(World world, int i, int j, int k, EntityLiving entityliving) { int l = MathHelper.floor_double((double)((entityliving.rotationYaw * 4F) / 360F) + 0.5D) & 3; if(l == 0) { world.setBlockMetadataWithNotify(i, j, k, 2); } if(l == 1) { world.setBlockMetadataWithNotify(i, j, k, 5); } if(l == 2) { world.setBlockMetadataWithNotify(i, j, k, 3); } if(l == 3) { world.setBlockMetadataWithNotify(i, j, k, 4); } } public void onBlockRemoval(World world, int i, int j, int k) { if(!keepFreezerInventory) { TileEntityFreezer tileentityfreezer = (TileEntityFreezer)world.getBlockTileEntity(i, j, k); label0: for(int l = 0; l < tileentityfreezer.getSizeInventory(); l++) { ItemStack itemstack = tileentityfreezer.getStackInSlot(l); if(itemstack == null) { continue; } float f = freezerRand.nextFloat() * 0.8F + 0.1F; float f1 = freezerRand.nextFloat() * 0.8F + 0.1F; float f2 = freezerRand.nextFloat() * 0.8F + 0.1F; do { if(itemstack.stackSize <= 0) { continue label0; } int i1 = freezerRand.nextInt(21) + 10; if(i1 > itemstack.stackSize) { i1 = itemstack.stackSize; } itemstack.stackSize -= i1; EntityItem entityitem = new EntityItem(world, (float)i + f, (float)j + f1, (float)k + f2, new ItemStack(itemstack.itemID, i1, itemstack.getItemDamage())); float f3 = 0.05F; entityitem.motionX = (float)freezerRand.nextGaussian() * f3; entityitem.motionY = (float)freezerRand.nextGaussian() * f3 + 0.2F; entityitem.motionZ = (float)freezerRand.nextGaussian() * f3; world.entityJoinedWorld(entityitem); } while(true); } } super.onBlockRemoval(world, i, j, k); } private Random freezerRand; private final boolean isActive; private static boolean keepFreezerInventory = false; }
GuiFreezer:
Do the same as for the BlockFreezer, rename all instances of Furnace to Freezer. In this file all you need to be aware of is this line:int i = mc.renderEngine.getTexture("/gui/furnace.png");
This is the location of the gui image. Change it if you want, but keep the slots in the same place because in this tutorial I will not be showing how to make new slots and stuff. If you want the fire to be a different color then copy the current furnace gui and recolor the flame, then save it with a different name(should resemble your furnace block) in the gui folder or your own folder (the same rules apply as for ModLoader.addOverride) then just change the argument in the mc.renderEngine.getTexture method to match your image location.
Finished Code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; import net.minecraft.client.Minecraft; import org.lwjgl.opengl.GL11; // Referenced classes of package net.minecraft.src: // GuiContainer, ContainerFurnace, FontRenderer, RenderEngine, // TileEntityFurnace, InventoryPlayer public class GuiFreezer extends GuiContainer { public GuiFreezer(InventoryPlayer inventoryplayer, TileEntityFreezer tileentityfreezer) { super(new ContainerFreezer(inventoryplayer, tileentityfreezer)); freezerInventory = tileentityfreezer; } protected void drawGuiContainerForegroundLayer() { fontRenderer.drawString("Freezer", 60, 6, 0x404040); fontRenderer.drawString("Inventory", 8, (ySize - 96) + 2, 0x404040); } protected void drawGuiContainerBackgroundLayer(float f) { int i = mc.renderEngine.getTexture("/gui/furnace.png"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.renderEngine.bindTexture(i); int j = (width - xSize) / 2; int k = (height - ySize) / 2; drawTexturedModalRect(j, k, 0, 0, xSize, ySize); if(freezerInventory.isFreezing()) { int l = freezerInventory.getFreezeTimeRemainingScaled(12); drawTexturedModalRect(j + 56, (k + 36 + 12) - l, 176, 12 - l, 14, l + 2); } int i1 = freezerInventory.getCoolProgressScaled(24); drawTexturedModalRect(j + 79, k + 34, 176, 14, i1 + 1, 16); } private TileEntityFreezer freezerInventory; }
SlotFreezer:
This is probably the smallest file that you will have. If you copied the furnace one then you can just delete the stuff about achievements because you probably wouldn't be able to get those things from your furnace anyway. Don't forget to rename everything.
Finished code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; // Referenced classes of package net.minecraft.src: // Slot, EntityPlayer, ItemStack, Item, // AchievementList, ModLoader, IInventory public class SlotFreezer extends Slot { public SlotFreezer(EntityPlayer entityplayer, IInventory iinventory, int i, int j, int k) { super(iinventory, i, j, k); } public boolean isItemValid(ItemStack itemstack) { return false; } public void onPickupFromSlot(ItemStack itemstack) { super.onPickupFromSlot(itemstack); } }
ContainerFreezer:
This is where you, if you know how, add more slots. Again, I won't be going over this in this tutorial. There isn't much else important here so just rename everything and then will move on to the next file.
Finished Code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; import java.util.List; // Referenced classes of package net.minecraft.src: // Container, Slot, SlotFurnace, InventoryPlayer, // ICrafting, TileEntityFurnace, ItemStack, EntityPlayer public class ContainerFreezer extends Container { public ContainerFreezer(InventoryPlayer inventoryplayer, TileEntityFreezer tileentityfreezer) { coolTime = 0; freezeTime = 0; itemFreezeTime = 0; freezer = tileentityfreezer; addSlot(new Slot(tileentityfreezer, 0, 56, 17)); addSlot(new Slot(tileentityfreezer, 1, 56, 53)); addSlot(new SlotFreezer(inventoryplayer.player, tileentityfreezer, 2, 116, 35)); for(int i = 0; i < 3; i++) { for(int k = 0; k < 9; k++) { addSlot(new Slot(inventoryplayer, k + i * 9 + 9, 8 + k * 18, 84 + i * 18)); } } for(int j = 0; j < 9; j++) { addSlot(new Slot(inventoryplayer, j, 8 + j * 18, 142)); } } public void updateCraftingResults() { super.updateCraftingResults(); for(int i = 0; i < inventorySlots.size(); i++) { ICrafting icrafting = (ICrafting)inventorySlots.get(i); if(coolTime != freezer.freezerCoolTime) { icrafting.updateCraftingInventoryInfo(this, 0, freezer.freezerCoolTime); } if(freezeTime != freezer.freezerFreezeTime) { icrafting.updateCraftingInventoryInfo(this, 1, freezer.freezerFreezeTime); } if(itemFreezeTime != freezer.currentItemCoolTime) { icrafting.updateCraftingInventoryInfo(this, 2, freezer.currentItemCoolTime); } } coolTime = freezer.freezerCoolTime; freezeTime = freezer.freezerFreezeTime; itemFreezeTime = freezer.currentItemCoolTime; } public void func_20112_a(int i, int j) { if(i == 0) { freezer.freezerCoolTime = j; } if(i == 1) { freezer.freezerFreezeTime = j; } if(i == 2) { freezer.currentItemCoolTime = j; } } public boolean canInteractWith(EntityPlayer entityplayer) { return freezer.canInteractWith(entityplayer); } public ItemStack getStackInSlot(int i) { ItemStack itemstack = null; Slot slot = (Slot)inventorySlots.get(i); if(slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if(i == 2) { if(!mergeItemStack(itemstack1, 3, 39, true)) { return null; } } else if(i >= 3 && i < 30) { if(!mergeItemStack(itemstack1, 30, 39, false)) { return null; } } else if(i >= 30 && i < 39) { if(!mergeItemStack(itemstack1, 3, 30, false)) { return null; } } else if(!mergeItemStack(itemstack1, 3, 39, false)) { return null; } if(itemstack1.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } if(itemstack1.stackSize != itemstack.stackSize) { slot.onPickupFromSlot(itemstack1); } else { return null; } } return itemstack; } private TileEntityFreezer freezer; private int coolTime; private int freezeTime; private int itemFreezeTime; }
TileEntityFreezer:
This is one of the more important files because this is where you define the items that power your furnace and how long they last. This is also where you decide how long things take to smelt, but I'm not sure what value you have to change (I will probably cover that in a later tutorial). In the method getItemBurnTime is where you specify the items that do the burning remove all the current items that are there now (unless you want to use some of them for fuel in your furnace) and change the statement in the else block fromreturn ModLoader.AddAllFuel(i);
toreturn 0
so that you don't have the furnace have constant fuel without anything in the fuel slot. For your fuel just copy an if block from TileEntityFurnace and change the item to your own item. The value it returns is how long the fuel lasts, coal lasts 1600 and wood lasts 300. I used redstone because, how do you power your freezer? Electricity, and redstone is the closest thing to electricity in Minecraft. Another thing you should remove is in the updateEntity method. In the second last if block where it saysBlockFurnace.updateFurnaceBlockState(furnaceBurnTime > 0, worldObj, xCoord, yCoord, zCoord);
remove that one line of code (unless you want your furnace to change states when activated).
Finished code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; // Referenced classes of package net.minecraft.src: // TileEntity, IInventory, ItemStack, NBTTagCompound, // NBTTagList, World, Item, BlockFurnace, // FurnaceRecipes, Block, Material, ModLoader, // EntityPlayer public class TileEntityFreezer extends TileEntity implements IInventory { public TileEntityFreezer() { freezerItemStacks = new ItemStack[3]; freezerFreezeTime = 0; currentItemCoolTime = 0; freezerCoolTime = 0; } public int getSizeInventory() { return freezerItemStacks.length; } public ItemStack getStackInSlot(int i) { return freezerItemStacks[i]; } public ItemStack decrStackSize(int i, int j) { if(freezerItemStacks[i] != null) { if(freezerItemStacks[i].stackSize <= j) { ItemStack itemstack = freezerItemStacks[i]; freezerItemStacks[i] = null; return itemstack; } ItemStack itemstack1 = freezerItemStacks[i].splitStack(j); if(freezerItemStacks[i].stackSize == 0) { freezerItemStacks[i] = null; } return itemstack1; } else { return null; } } public void setInventorySlotContents(int i, ItemStack itemstack) { freezerItemStacks[i] = itemstack; if(itemstack != null && itemstack.stackSize > getInventoryStackLimit()) { itemstack.stackSize = getInventoryStackLimit(); } } public String getInvName() { return "Freezer"; } public void readFromNBT(NBTTagCompound nbttagcompound) { super.readFromNBT(nbttagcompound); NBTTagList nbttaglist = nbttagcompound.getTagList("Items"); freezerItemStacks = new ItemStack[getSizeInventory()]; for(int i = 0; i < nbttaglist.tagCount(); i++) { NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); byte byte0 = nbttagcompound1.getByte("SlotFreezer"); if(byte0 >= 0 && byte0 < freezerItemStacks.length) { freezerItemStacks[byte0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } freezerFreezeTime = nbttagcompound.getShort("FreezeTime"); freezerCoolTime = nbttagcompound.getShort("CoolTime"); currentItemCoolTime = getItemFreezeTime(freezerItemStacks[1]); } public void writeToNBT(NBTTagCompound nbttagcompound) { super.writeToNBT(nbttagcompound); nbttagcompound.setShort("FreezeTime", (short)freezerFreezeTime); nbttagcompound.setShort("CoolTime", (short)freezerCoolTime); NBTTagList nbttaglist = new NBTTagList(); for(int i = 0; i < freezerItemStacks.length; i++) { if(freezerItemStacks[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("SlotFreezer", (byte)i); freezerItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.setTag(nbttagcompound1); } } nbttagcompound.setTag("Items", nbttaglist); } public int getInventoryStackLimit() { return 64; } public int getCoolProgressScaled(int i) { return (freezerCoolTime * i) / 200; } public int getFreezeTimeRemainingScaled(int i) { if(currentItemCoolTime == 0) { currentItemCoolTime = 200; } return (freezerFreezeTime * i) / currentItemCoolTime; } public boolean isFreezing() { return freezerFreezeTime > 0; } public void updateEntity() { boolean flag = freezerFreezeTime > 0; boolean flag1 = false; if(freezerFreezeTime > 0) { freezerFreezeTime--; } if(!worldObj.multiplayerWorld) { if(freezerFreezeTime == 0 && canSolidify()) { currentItemCoolTime = freezerFreezeTime = getItemFreezeTime(freezerItemStacks[1]); if(freezerFreezeTime > 0) { flag1 = true; if(freezerItemStacks[1] != null) { if(freezerItemStacks[1].getItem().hasContainerItem()) { freezerItemStacks[1] = new ItemStack(freezerItemStacks[1].getItem().getContainerItem()); } else { freezerItemStacks[1].stackSize--; } if(freezerItemStacks[1].stackSize == 0) { freezerItemStacks[1] = null; } } } } if(isFreezing() && canSolidify()) { freezerCoolTime++; if(freezerCoolTime == 200) { freezerCoolTime = 0; solidifyItem(); flag1 = true; } } else { freezerCoolTime = 0; } } if(flag != (freezerFreezeTime > 0)) { flag1 = true; } if(flag1) { onInventoryChanged(); } } private boolean canSolidify() { if(freezerItemStacks[0] == null) { return false; } ItemStack itemstack = FreezerRecipes.solidifying().getSolidifyingResult(freezerItemStacks[0].getItem().shiftedIndex); if(itemstack == null) { return false; } if(freezerItemStacks[2] == null) { return true; } if(!freezerItemStacks[2].isItemEqual(itemstack)) { return false; } if(freezerItemStacks[2].stackSize < getInventoryStackLimit() && freezerItemStacks[2].stackSize < freezerItemStacks[2].getMaxStackSize()) { return true; } return freezerItemStacks[2].stackSize < itemstack.getMaxStackSize(); } public void solidifyItem() { if(!canSolidify()) { return; } ItemStack itemstack = FreezerRecipes.solidifying().getSolidifyingResult(freezerItemStacks[0].getItem().shiftedIndex); if(freezerItemStacks[2] == null) { freezerItemStacks[2] = itemstack.copy(); } else if(freezerItemStacks[2].itemID == itemstack.itemID) { freezerItemStacks[2].stackSize += itemstack.stackSize; } if(freezerItemStacks[0].getItem().hasContainerItem()) { freezerItemStacks[0] = new ItemStack(freezerItemStacks[0].getItem().getContainerItem()); } else { freezerItemStacks[0].stackSize--; } if(freezerItemStacks[0].stackSize <= 0) { freezerItemStacks[0] = null; } } private int getItemFreezeTime(ItemStack itemstack) { if(itemstack == null) { return 0; } int i = itemstack.getItem().shiftedIndex; if (i == Item.redstone.shiftedIndex) { return 400; } else { return 0; } } public boolean canInteractWith(EntityPlayer entityplayer) { if(worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this) { return false; } return entityplayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64D; } public void openChest() { } public void closeChest() { } private ItemStack freezerItemStacks[]; public int freezerFreezeTime; public int currentItemCoolTime; public int freezerCoolTime; }
FreezerRecipes:
This is another important file because this is the one where you have all the recipes. First rename everything. Then remove the furnace recipes except one which you will modify for your furnace and use it to model your other recipes (so that you don't have to check back to the furnace file all the time). For the freezer I could only think of 2 recipes, a bucket of water to a block of ice and a bucket of lava to a block of obsidian.
Finished code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) braces deadcode package net.minecraft.src; import java.util.HashMap; import java.util.Map; // Referenced classes of package net.minecraft.src: // Block, ItemStack, Item public class FreezerRecipes { public static final FreezerRecipes solidifying() { return solidifyingBase; } private FreezerRecipes() { solidifyingList = new HashMap(); addSolidifying(Item.bucketLava.shiftedIndex, new ItemStack(Block.obsidian)); addSolidifying(Item.bucketWater.shiftedIndex, new ItemStack(Block.ice)); } public void addSolidifying(int i, ItemStack itemstack) { solidifyingList.put(Integer.valueOf(i), itemstack); } public ItemStack getSolidifyingResult(int i) { return (ItemStack)solidifyingList.get(Integer.valueOf(i)); } public Map getSolidifyingList() { return solidifyingList; } private static final FreezerRecipes solidifyingBase = new FreezerRecipes(); private Map solidifyingList; }
mod_XXX
Your almost done, the last thing you have to do is add this line to your mod fileModLoader.RegisterTileEntity(net.minecraft.src.TileEntityFreezer.class, "Freezer");
inside the public mod_XXX constructor. If you forget to add this then if you leave any items inside the furnace and you leave the game, they will be gone. In the finished code I left out the recipe because I'm not sure what the recipe should be like myself!
Finished code:
package net.minecraft.src; public class mod_XXX extends BaseMod{ public mod_XXX() { ModLoader.RegisterBlock(freezer); ModLoader.AddName(freezer, "Freezer"); ModLoader.RegisterTileEntity(net.minecraft.src.TileEntityFreezer.class, "Freezer"); } public static final Block freezer; public static int freezSide = ModLoader.addOverride("/terrain.png", "/StrongJoshua/Freezer.png"); public static int freezFront = ModLoader.addOverride("/terrain.png", "/StrongJoshua/FreezerFront.png"); static { freezer = new BlockFreezer(165, false).setHardness(0F).setResistance(0F).setStepSound(Block.soundMetalFootstep).setBlockName("freezer"); } }
I hope this tutorial helped you! Seeing as this is my first tutorial, if you have any suggestions on what I could have done differently, feel free to post them!
If any of my tutorials helped you and you want to thank/support me then please either donate
or copy a banner code into your signature!
If you want me to write a tutorial for making your furnace block spawn random particles when on the please post that you want it and, if enough people do, I will try to figure it out and write a tutorial about it!
Banner Codes:
By me:
[URL=http://www.minecraftforum.net/topic/602390-modloader-strongjoshuas-advanced-tutorials50911/][IMG]http://img6.imageshack.us/img6/463/tutorialbanner.png[/IMG][/URL]
By Blakeonacoaster:
[URL=http://www.minecraftforum.net/topic/602390-modloader-strongjoshuas-advanced-tutorials50911/][IMG]http://i.imgur.com/lUZJk.png[/IMG][/URL]
By Blakeoncoaster (with some editing by me):
[URL=http://www.minecraftforum.net/topic/602390-modloader-strongjoshuas-advanced-tutorials50911/][img]http://i.imgur.com/zbJUf.png[/img][/url]
-
147
Smashingzwan posted a message on How 1.8 has affect my views of MojangConcerning potential future moderation of this thread, Mods please read spoiler.Posted in: 1.8 Update Discussion
To any Moderators concerned with the location of this thread. I wasn't sure where it belonged since it could easily be put in both the "discussion" forum and the "1.8 discussion" forum (and I can just as easily see it being deleted for not being in the right one). If I have put this thread in an improper forum/subforum, I would really appreciate it if it could be moved to the proper place. If it for some reason breaks forum guidelines and you decide it should be deleted, please let me know what about it is inappropriate so I can refrain from repeating the same mistake in the future. I say this because I've had a number of posts deleted recently and I've received zero notifications or warnings letting me know why. If a post I make is deleted it should be because it breaks a forum guideline/rule and I should therefore receive a warning detailing why, correct?
I spent a good deal of time writing and rewriting this thread (I started pretty enraged, so the first draft was pretty inappropriate) so that it was as to the point and polite (as much as a thread like this can be polite anyway) as I could make it.
UPDATE: I've added some comments concerning the release of the 1.8 pre-release of the leaked beta test version of the beta (I think I said that right) at the end of the post
Summary:
-Notch takes 2 week break from Minecraft development during crunch time of 1.8 release to work on another game.
-Notch details why his cash shop would destroy the Minecraft community if those who played the game on steam couldn't access it.
-1.8 is arriving later than expected, and it doesn't appear that we'll be getting a "complete" 1.8 for some time to come. (Lets not forgot we've still got bugfixes and promises from previous updates that haven't materialized yet)
Because of these and other issues, I have lost a great deal of respect for Mojang and will avoid purchasing any of their products in the future.
[ WALLOFTEXT/ACTUALPOST : INCOMING ]
It is *CLEARLY* obvious that the eFame and millions of dollars Minecraft has made for Mojang has gotten to Notchs head, and by extension, the companies. He catches the most flak (and also, not to be forgotten or taken lightly, the most praise and worship) because he has set himself up as the face of Mojang/Minecraft. He is, to the average Minecrafter, the dude who made/developed/invented the game (regardless of whether it's true). This is in part due to the mindless zealotry with which some of the community speak of him on the forums here and all over the internet, and also due to Notchs own inability to put his ego aside and set people straight about the true nature of the games development.
Having said that.. Here are a few things about 1.8 and things that have come to light recently that have really soured my opinion of Mojang/Notch.
From Notchs twitter~
Jens will be the lead minecraft dev for a while because of a super secret project I will be working on for two weeks.
Yes, you read that correct. Notch is "taking a break" (as if he hasn't had enough) from Minecraft to work on an entirely different project... I'd imagine Notch is wealthy enough from Minecraft sales alone that he doesn't *need* to produce a new game right away from any sort of financial point of view. Let's not forget he's involved in the development of the more recently announced Mojang title "Scrolls" as well.
So to clarify: Even though Minecraft development seems slow and unsatisfying these days, Notch is of the opinion that he has no real obligation to help speed the progress along. Instead he chooses to enter weekend long game contests and work on his other (non-minecraft) game projects.
To any person with a conscious, that mountain of wealth (earned from Minecraft sales) would be an incredible motivator to complete the project that so many millions have paid him in good faith to complete. Yes, we knowingly purchased a product that was incomplete, but that purchase also included a promise of continued development for an unnamed period of time. Unfortunately we were never given any sort of development schedule and the guys at Mojang seem to be cool with a decidedly lazy approach to pretty much everything concerning Minecraft.
Where's the customer appreciation?
It doesn't exist, and I'll tell you why.
The mindless fanbase of Minecraft (No i'm not implying that everyone other than me, or that everyone who disagrees with me, is mindless. But I'd like you to tell me with a straight face that a large part of the community isn't infatuated with Notch to the point of overlooking any shortcomings he or the game might have) seems to see no evil in their dear old leader. They have been caught up in a great social tidal wave of euphoric eCelebrity worship not unlike the "two minutes hate" in the book by George Orwell, "1984". They will take whatever Notch and co. give them and they will rant and rave about how it's the greatest thing ever without even stopping to consider if it's actually any good. It is, I'm sure to some degree, this very idol-worship behavior which has gotten to the mans head and made him think he can behave however he wants without consequence.
Wait, 1.8 is delayed, is probably going to come to us in incomplete chunks, and there's no mention of resolving any of the longstanding bugs/issues that we've been dealing with? (pistons pushing pistons, redstone wiring circuit-autocomplete, etc)
I'm not sure I really need to expand on that. At least Notch is somewhat consistent in that he promises greatness and pretty much never actually delivers.
Lastly, this is another quote from Notch, concerning Minecraft being available on Steam:
"Being on Steam limits a lot of what we’re allowed to do with the game, and how we’re allowed to talk to our users. We (probably?) wouldn’t be able to, say, sell capes or have a map market place on minecraft.net that works with steam customers in a way that keeps Valve happy. It would effectively split the Minecraft community into two parts, where only some of the players can access all of the weird content we want to add to the game." ~Notch
If the thought of Notch considering a minecraft cash shop while the game itself is still incomplete doesn't get your blood boiling... Then his pathetic excuse about why he can't bring himself (We should be thankful he's so diligently trying to protect his cash shop for us, right?) to let the community be torn asunder because some people might not have access to virtual items for cash... This man has gotten *RICH* off of an incomplete game and is not only content to just let it putter along while the money keeps pouring in, he's trying to figure out ways to make MORE money from it.
Shame on you Notch.
Shame on you Mojang.
You suckered me in with an interesting game and all sorts of wild promises that never seem to fully materialize.
Won't happen again!
Was fun while it lasted.
If you made it this far, thank you for taking the time to read my thread. Feel free to post and tell me why you think I'm wrong or overreacting. Also feel free to chime in if you feel similarly to me and are rather let down.
Please try to keep discussion civil and orderly. I realize it can be an emotional subject for some (myself included), but let's try and argue with our brains, not our hearts. My disgust is pointed directly at Mojang, and not at any individual of the community, so please refrain from making personal attacks towards me or anyone else who posts in this thread and the favor will be returned.
I've read through this post about 20 times just to make sure I've toned down anything that could be considered insulting (except I guess towards Notch *rage*). If I somehow missed something or you take offense at something I've said, please let me know and I will try to promptly make the necessary changes.
It's not my intention to lash out at the community, it is my intention to express my disgust at Mojang/Notchs business practices in a place that they are most likely to see it.
Thanks again if you actual read my novel. Happy posting!
Leaked 1.8 Pre-release beta test version of beta impressions:
Firstly, I wonder what Jeb was thinking when he gave his original 8th of September release date guess. If it wasn't before, it's obvious now that 1.8 isn't anywhere near completion. This sort of poor communication is exactly what I was trying to bring up with this thread.
How did they NOT figure out that XP orbs lag the hell out of the server whenever someone that has a few levels worth dies?
How did they NOT figure out the furnace bug?
These kinds of blatantly obvious bugs/design flaws making it through their debugging/coding process is kind of amateurish and embarrassing in my opinion.
I'd also like to take a moment to point out that within a number of hours of the leaked 1.8 pre-release beta test version of the beta being released there were COMMUNITY MADE bugfixes for these issues. Again, kind of embarrassing (for Mojang).
Why is it that a company raking in $200,000 a day is unable to produce a stable update after months (since 1.8 has been in the works since the June/July time frame according to Notch and Co.) of development. Why is it that they're unable to properly communicate?
I could go on about multiple other aspects of 1.8 that are ridiculously buggy or just flat out poorly implemented (mineshafts/fortresses/ravines, limited visibility at lower altitudes, outrageous amount of crashing, etc), but I feel like I've already made my point and further reinforced my original argument.
Believe what you will, but 1.8 has been nothing but one fiasco after another since it was conceived.
Thanks for your time.
-
138
Sacheverell posted a message on PAX Party!PAX is going on all weekend long! Here, we will be providing updates to all the various Minecraft and Mojang-related goings-on, with on-site access by MCF's own WedTM! Check this thread (and our Twitter) frequently for updates!Posted in: Minecraft News
Notch spoke about the upcoming 1.8 Adventure Update, and more! We will have
Confirmed so far:
- cobwebs
- endermen
- new lighting
- experience orbs
- rivers
- oceans
- food-eating animation
- variable-strength bow (hold it longer for more damage)
- new (and expanded) biomes
- 1.8 will add Creative Mode
- Creative Mode will have flight
Click here to see photos from PAX!
Photos (these will update constantly, check back frequently!):
-
1
Jube0965 posted a message on [Classic] WALMART REPLICA IN MINECRAFT [AWESOME 10 PICS]I think the shelf mod would go perfect with thisPosted in: Screenshots -
1
Lithuen posted a message on The Mines of Moria (WIP)I started this project about a week ago and I think I've made enough progress to merit posting it here now, although it is far from done. This is not going to be a to-scale exact recreation of Moria for 2 reasons. 1. You do not get to see the entirety of the mines in the movie, nor do you get a full description in the books, and 2. I wanted to add my own creative flair to it. I have therefor rearranged some of the areas and am adding things I think are necessary while still keeping to the feel from the movie and including important areas. This is meant to look like the mines as I imagine they were in the glory days, when the dwarves still lived there, not the goblin-infested ruins of the movie.Posted in: Screenshots
I have been using SPC to create this because even with that this is going to take an enormous amount of time to finish. I am destroying and placing all blocks by hand, just using the convenience of flying and infinite items/single-click destroying of blocks.
Latest Download: http://www.mediafire.com/?qwa4wdh1f0u4a7b
List of areas: Completed( ) In Progress( ) Planning( )
Hall of Pillars:
Housing/Residence Halls:
Great Forge room:
Main Mining area with narrow path and pit to bedrock:
Tomb of Balin:
Durin's Bridge:
Treasure Halls:
Dungeons:
And now some pictures
Here is the door as seen from across the lake (I may be expanding the lake, at this time it's a bit small) A lever to the right activates the hidden piston door.
A view of the Hall of Pillars as seen from the top of the stairs.
A small workroom located under the stairs
The start of the passage that will lead to the mines, forge, dungeon/treasure rooms, and Durin's bridge
One of six halls that will lead off the Hall of Pillars. These contain the houses of the dwarves, and may also have common eating areas and libraries and such.
The Doorway to a dwarven home. Each home is a relatively simple 9x10 room with 2 floors.
An overall view of each home as seen from the right of the doorway. Living area straight ahead and bedroom up top.
And a top view of the home to show the bedroom.
Hope you guys like what I have done so far, and I would love some critique/comments! -
29
Cryect posted a message on [1.7.3] Diagonal Fences [v1]Fairly simple mod that just alters the rendering code for fences so they can be connected diagonally. If there is a post in either of the corners then it shouldn't connect diagonally. Note currently in this version the lighting isn't quite perfect.Posted in: Minecraft Mods
Installing
1. Download the file below
2. Open up your minecraft.jar
3. Ensure your META-INF is gone
4. Insert the cv.class from the download
Download (adf.ly)
Link Removed
-
1
ThePlatypus posted a message on Skyland! (turning into Sky Town!)I like what you did with the bottom of the island. :smile.gif:Posted in: Screenshots -
1
anton12350 posted a message on Skyland! (turning into Sky Town!)AwesomePosted in: Screenshots - To post a comment, please login.
5
1
Do not use blocks from mods!
Send me this file. ".minecraft/ForgeModLoader-client-0.log"
For it to work on a server, the client and server must be running the mods.
1
No. They are a part of the mod.
1
What bugs?
All fixed
1
Thanks but please don't quote the main post next time.
2
Change Log:
Nothing. Just a port.
Bathroom update coming soon!
Sure, go ahead
Sure. Go ahead!
1
I have a fix coming out soon! Sorry for the inconvenience.
1
Change Log:
~ Changed how the oven checks if it can cook the item. Hopefully clears up issues some users are having as I can't seem to reproduce errors some of them are having.
- Removed debug code from door bell.
1
Thanks. Will be removed in 3.2.9.2
1
Thanks for the suggestion. I have taken it into consideration but I cant guarantee it will be added.