I'm slightly curious how this will effect things like pistons and such that need the meta data to determine what direction their facing. Other examples would be Wheat, doors, furnaces, beds, etc.
(and for those looking for where the quote came from it's in one of the spoilers on the OP about the 4096 block IDs mod.)
Wheat, pistons, doors, furnaces, beds, etc. would have multiple block ids.
Good Morning/day/afternoon/eve (depending on your time zone...LOL)
I've been playing around with the 4096 BlockID standalone and have a working installation using the minecraftForge 1.2.1 so I'm a bit puzzled with people saying that it doesn't work, as I haven't yet run into any problem with it. Of course a quick look at the text file for IDResolver shows that I apparently don't have any blockID's above 256 so that may be the reason. However Check the spoiler below for the installation order of the Mods that I have currently installed. The numbers represent the order that I installed.
Please note that I always start with a fresh Minecraft.Jar and that the first thing I always do is to delete the Meta.Inf folder.
01 ModLoader
02 ModLoaderMp 1.0.0
03 GuiAPI-0.12.0-1.0.0
04 SinglePlayerCommands-MC1.0.0_V3.0.1
05 TooManyItems2011_11_29
06 mod_IDList 1.0.0.1
07 IDResolver_1.0.0-Update-1-Minecraft_Forge_Edition
08 minecraftforge-client-1.2.1
09 MC1.0.0_4096IDs_V1.0_Standalone
10 MC1.0.0_4096IDs_V1.0_Standalone_IDResolverPatch
11 buildcraft-client-A-core-2.2.8
12 buildcraft-client-B-builders-2.2.8
13 buildcraft-client-B-energy-2.2.8
14 buildcraft-client-B-factory-2.2.8
15 buildcraft-client-B-transport-2.2.8
16 RedPowerCore-2.0pr4
17 RedPowerWiring-2.0pr4
18 RedPowerLogic-2.0pr4
19 RedPowerArray-2.0pr4
20 RedPowerLighting-2.0pr4
21 RedPowerMachine-2.0pr4
22 RedPowerWorld-2.0pr4
23 Railcraft_Client-2.0.2
24 Minecart_Compatibility_Layer_Client-3.0 (Required part of Railcraft)
25 WirelessRedstone
26 MC Rotator Mod v1.0
27 [1.0] Elevator (v1.9) (Exanadu only good for 128 block height…sigh…)
28 [1.0.0]ReiMinimap_v2.9
29 MoreStorageV1.2.2
30 zAdditionalPipesv31-1
31 DoubleDoorModsv3-1.0.0
After I installed these I installed/ran mcpatcher-2.2.3 and defscape-64x-1.7 Texture Pack
Hope this helps some of you.
On another note, Kaeveator Super Slopes and Better Than Wolves I've had no luck with...sigh....
Cheers to all and my thanks go to Robington and Minecrack for their work.
...I got this in TMI: image
the block ID's are: 373, 373:16, 373:16384 and a lot of other :.... (so only block ID 373)
Is think this is some kind of an incompatibility.
Marglyph coded TooManyItems to show all the useful potions with their damage values of item id 373. It's not really an incompatibility, but i wonder what would happen if someone assigned a block with that value...
Robinton: It looks like the hook I requested turned out to be a different beast entirely. The hook that made it in is quite useful, but not what I need, lol. When you get around to updating for Forge 1.2.2... well, here's the whole "prevent block-item spawn" hook code. I just figured out how to use the new hook. It's high level stuff; twas about 3 levels above where I am. A merge won't be necessary once I update in a couple days.
Item.java
[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 fieldsfirst
package net.minecraft.src;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
// Referenced classes of package net.minecraft.src:
// ItemStack, StatCollector, EnumAction, StringTranslate,
// EnumRarity, EntityPlayer, Vec3D, MathHelper,
// World, ItemSpade, EnumToolMaterial, ItemPickaxe,
// ItemAxe, ItemFlintAndSteel, ItemFood, ItemBow,
// ItemCoal, ItemSword, ItemSoup, PotionHelper,
// ItemHoe, ItemSeeds, Block, ItemArmor,
// EnumArmorMaterial, ItemPainting, ItemAppleGold, Potion,
// ItemSign, ItemDoor, Material, ItemBucket,
// ItemMinecart, ItemSaddle, ItemRedstone, ItemSnowball,
// ItemBoat, ItemBucketMilk, ItemReed, ItemEgg,
// ItemFishingRod, ItemDye, ItemBed, ItemMap,
// ItemShears, ItemEnderPearl, ItemPotion, ItemGlassBottle,
// ItemEnderEye, ItemRecord, StatList, EntityLiving,
// Entity, MovingObjectPosition
public class Item
{
protected static Random itemRand = new Random();
public static Item itemsList[] = new Item[32000];
public static Item shovelSteel;
public static Item pickaxeSteel;
public static Item axeSteel;
public static Item flintAndSteel = (new ItemFlintAndSteel(3)).setIconCoord(5, 0).setItemName("flintAndSteel");
public static Item appleRed = (new ItemFood(4, 4, 0.3F, false)).setIconCoord(10, 0).setItemName("apple");
public static Item bow = (new ItemBow(5)).setIconCoord(5, 1).setItemName("bow");
public static Item arrow = (new Item(6)).setIconCoord(5, 2).setItemName("arrow");
public static Item coal = (new ItemCoal(7)).setIconCoord(7, 0).setItemName("coal");
public static Item diamond = (new Item(8)).setIconCoord(7, 3).setItemName("emerald");
public static Item ingotIron = (new Item(9)).setIconCoord(7, 1).setItemName("ingotIron");
public static Item ingotGold = (new Item(10)).setIconCoord(7, 2).setItemName("ingotGold");
public static Item swordSteel;
public static Item swordWood;
public static Item shovelWood;
public static Item pickaxeWood;
public static Item axeWood;
public static Item swordStone;
public static Item shovelStone;
public static Item pickaxeStone;
public static Item axeStone;
public static Item swordDiamond;
public static Item shovelDiamond;
public static Item pickaxeDiamond;
public static Item axeDiamond;
public static Item stick = (new Item(24)).setIconCoord(5, 3).setFull3D().setItemName("stick");
public static Item bowlEmpty = (new Item(25)).setIconCoord(7, 4).setItemName("bowl");
public static Item bowlSoup = (new ItemSoup(26, 8)).setIconCoord(8, 4).setItemName("mushroomStew");
public static Item swordGold;
public static Item shovelGold;
public static Item pickaxeGold;
public static Item axeGold;
public static Item silk = (new Item(31)).setIconCoord(8, 0).setItemName("string");
public static Item feather = (new Item(32)).setIconCoord(8, 1).setItemName("feather");
public static Item gunpowder;
public static Item hoeWood;
public static Item hoeStone;
public static Item hoeSteel;
public static Item hoeDiamond;
public static Item hoeGold;
public static Item seeds;
public static Item wheat = (new Item(40)).setIconCoord(9, 1).setItemName("wheat");
public static Item bread = (new ItemFood(41, 5, 0.6F, false)).setIconCoord(9, 2).setItemName("bread");
public static Item helmetLeather;
public static Item plateLeather;
public static Item legsLeather;
public static Item bootsLeather;
public static Item helmetChain;
public static Item plateChain;
public static Item legsChain;
public static Item bootsChain;
public static Item helmetSteel;
public static Item plateSteel;
public static Item legsSteel;
public static Item bootsSteel;
public static Item helmetDiamond;
public static Item plateDiamond;
public static Item legsDiamond;
public static Item bootsDiamond;
public static Item helmetGold;
public static Item plateGold;
public static Item legsGold;
public static Item bootsGold;
public static Item flint = (new Item(62)).setIconCoord(6, 0).setItemName("flint");
public static Item porkRaw = (new ItemFood(63, 3, 0.3F, true)).setIconCoord(7, 5).setItemName("porkchopRaw");
public static Item porkCooked = (new ItemFood(64, 8, 0.8F, true)).setIconCoord(8, 5).setItemName("porkchopCooked");
public static Item painting = (new ItemPainting(65)).setIconCoord(10, 1).setItemName("painting");
public static Item appleGold;
public static Item sign = (new ItemSign(67)).setIconCoord(10, 2).setItemName("sign");
public static Item doorWood;
public static Item bucketEmpty;
public static Item bucketWater;
public static Item bucketLava;
public static Item minecartEmpty = (new ItemMinecart(72, 0)).setIconCoord(7, 8).setItemName("minecart");
public static Item saddle = (new ItemSaddle(73)).setIconCoord(8, 6).setItemName("saddle");
public static Item doorSteel;
public static Item redstone;
public static Item snowball = (new ItemSnowball(76)).setIconCoord(14, 0).setItemName("snowball");
public static Item boat = (new ItemBoat(77)).setIconCoord(8, 8).setItemName("boat");
public static Item leather = (new Item(78)).setIconCoord(7, 6).setItemName("leather");
public static Item bucketMilk;
public static Item brick = (new Item(80)).setIconCoord(6, 1).setItemName("brick");
public static Item clay = (new Item(81)).setIconCoord(9, 3).setItemName("clay");
public static Item reed;
public static Item paper = (new Item(83)).setIconCoord(10, 3).setItemName("paper");
public static Item book = (new Item(84)).setIconCoord(11, 3).setItemName("book");
public static Item slimeBall = (new Item(85)).setIconCoord(14, 1).setItemName("slimeball");
public static Item minecartCrate = (new ItemMinecart(86, 1)).setIconCoord(7, 9).setItemName("minecartChest");
public static Item minecartPowered = (new ItemMinecart(87, 2)).setIconCoord(7, 10).setItemName("minecartFurnace");
public static Item egg = (new ItemEgg(88)).setIconCoord(12, 0).setItemName("egg");
public static Item compass = (new Item(89)).setIconCoord(6, 3).setItemName("compass");
public static Item fishingRod = (new ItemFishingRod(90)).setIconCoord(5, 4).setItemName("fishingRod");
public static Item pocketSundial = (new Item(91)).setIconCoord(6, 4).setItemName("clock");
public static Item lightStoneDust;
public static Item fishRaw = (new ItemFood(93, 2, 0.3F, false)).setIconCoord(9, 5).setItemName("fishRaw");
public static Item fishCooked = (new ItemFood(94, 5, 0.6F, false)).setIconCoord(10, 5).setItemName("fishCooked");
public static Item dyePowder = (new ItemDye(95)).setIconCoord(14, 4).setItemName("dyePowder");
public static Item bone = (new Item(96)).setIconCoord(12, 1).setItemName("bone").setFull3D();
public static Item sugar;
public static Item cake;
public static Item bed = (new ItemBed(99)).setMaxStackSize(1).setIconCoord(13, 2).setItemName("bed");
public static Item redstoneRepeater;
public static Item cookie = (new ItemFood(101, 1, 0.1F, false)).setIconCoord(12, 5).setItemName("cookie");
public static ItemMap map = (ItemMap)(new ItemMap(102)).setIconCoord(12, 3).setItemName("map");
public static ItemShears shears = (ItemShears)(new ItemShears(103)).setIconCoord(13, 5).setItemName("shears");
public static Item melon = (new ItemFood(104, 2, 0.3F, false)).setIconCoord(13, 6).setItemName("melon");
public static Item pumpkinSeeds;
public static Item melonSeeds;
public static Item beefRaw = (new ItemFood(107, 3, 0.3F, true)).setIconCoord(9, 6).setItemName("beefRaw");
public static Item beefCooked = (new ItemFood(108, 8, 0.8F, true)).setIconCoord(10, 6).setItemName("beefCooked");
public static Item chickenRaw;
public static Item chickenCooked = (new ItemFood(110, 6, 0.6F, true)).setIconCoord(10, 7).setItemName("chickenCooked");
public static Item rottenFlesh;
public static Item enderPearl = (new ItemEnderPearl(112)).setIconCoord(11, 6).setItemName("enderPearl");
public static Item blazeRod = (new Item(113)).setIconCoord(12, 6).setItemName("blazeRod");
public static Item ghastTear;
public static Item goldNugget = (new Item(115)).setIconCoord(12, 7).setItemName("goldNugget");
public static Item netherStalkSeeds;
public static ItemPotion potion = (ItemPotion)(new ItemPotion(117)).setIconCoord(13, 8).setItemName("potion");
public static Item glassBottle = (new ItemGlassBottle(118)).setIconCoord(12, 8).setItemName("glassBottle");
public static Item spiderEye;
public static Item fermentedSpiderEye;
public static Item blazePowder;
public static Item magmaCream;
public static Item brewingStand;
public static Item cauldron;
public static Item eyeOfEnder = (new ItemEnderEye(125)).setIconCoord(11, 9).setItemName("eyeOfEnder");
public static Item speckledMelon;
public static Item record13 = (new ItemRecord(2000, "13")).setIconCoord(0, 15).setItemName("record");
public static Item recordCat = (new ItemRecord(2001, "cat")).setIconCoord(1, 15).setItemName("record");
public static Item recordBlocks = (new ItemRecord(2002, "blocks")).setIconCoord(2, 15).setItemName("record");
public static Item recordChirp = (new ItemRecord(2003, "chirp")).setIconCoord(3, 15).setItemName("record");
public static Item recordFar = (new ItemRecord(2004, "far")).setIconCoord(4, 15).setItemName("record");
public static Item recordMall = (new ItemRecord(2005, "mall")).setIconCoord(5, 15).setItemName("record");
public static Item recordMellohi = (new ItemRecord(2006, "mellohi")).setIconCoord(6, 15).setItemName("record");
public static Item recordStal = (new ItemRecord(2007, "stal")).setIconCoord(7, 15).setItemName("record");
public static Item recordStrad = (new ItemRecord(2008, "strad")).setIconCoord(8, 15).setItemName("record");
public static Item recordWard = (new ItemRecord(2009, "ward")).setIconCoord(9, 15).setItemName("record");
public static Item record11 = (new ItemRecord(2010, "11")).setIconCoord(10, 15).setItemName("record");
public final int shiftedIndex;
protected int maxStackSize;
private int maxDamage;
protected int iconIndex;
protected boolean bFull3D;
protected boolean hasSubtypes;
private Item containerItem;
private String field_39010_c;
private String itemName;
// FORGE: To disable repair recipes.
protected boolean canRepair=true;
protected Item(int i)
{
maxStackSize = 64;
maxDamage = 0;
bFull3D = false;
hasSubtypes = false;
containerItem = null;
field_39010_c = null;
shiftedIndex = 256 + i;
if(itemsList[256 + i] != null)
{
System.out.println((new StringBuilder()).append("CONFLICT @ ").append(i).toString());
}
itemsList[256 + i] = this;
}
public Item setIconIndex(int i)
{
iconIndex = i;
return this;
}
public Item setMaxStackSize(int i)
{
maxStackSize = i;
return this;
}
public Item setIconCoord(int i, int j)
{
iconIndex = i + j * 16;
return this;
}
public int getIconFromDamage(int i)
{
return iconIndex;
}
public final int getIconIndex(ItemStack itemstack)
{
return getIconFromDamage(itemstack.getItemDamage());
}
public boolean onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, int i, int j, int k, int l)
{
return false;
}
public float getStrVsBlock(ItemStack itemstack, Block block)
{
return 1.0F;
}
/* FORGE: Metadata-sensitive version of getStrVsBlock
*/
public float getStrVsBlock(ItemStack itemstack, Block block, int md)
{
return getStrVsBlock(itemstack,block);
}
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
return itemstack;
}
public ItemStack onFoodEaten(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
return itemstack;
}
public int getItemStackLimit()
{
return maxStackSize;
}
public int getPlacedBlockMetadata(int i)
{
return 0;
}
public boolean getHasSubtypes()
{
return hasSubtypes;
}
protected Item setHasSubtypes(boolean flag)
{
hasSubtypes = flag;
return this;
}
public int getMaxDamage()
{
return maxDamage;
}
protected Item setMaxDamage(int i)
{
maxDamage = i;
return this;
}
public boolean isDamageable()
{
return maxDamage > 0 && !hasSubtypes;
}
/* FORGE: Called by CraftingManager to determine if an item is repairable.
*/
public boolean isRepairable() {
return canRepair && isDamageable();
}
/* FORGE: Call to disable repair recipes.
*/
public Item setNoRepair() {
canRepair=false;
return this;
}
/* FORGE: Called before a block is broken. Return true to prevent default
* block harvesting.
*
* Note: In SMP, this is called on both client and server sides!
*/
//mDiyo note: This stops the block from breaking entirely.
public boolean onBlockStartBreak(ItemStack itemstack, int i, int j, int k,
EntityPlayer player) {
return false;
}
public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1)
{
return false;
}
public boolean onBlockDestroyed(ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving)
{
return false;
}
public boolean onBlockDestroyed(ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving, int md)
{ //mDiyo add, metadata sensitive
return false;
}
public boolean canDropItems(ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving)
{ //mDiyo add, intercept hook
return true;
}
public int getDamageVsEntity(Entity entity)
{
return 1;
}
public boolean canHarvestBlock(Block block)
{
return false;
}
public void useItemOnEntity(ItemStack itemstack, EntityLiving entityliving)
{
}
public Item setFull3D()
{
bFull3D = true;
return this;
}
public boolean isFull3D()
{
return bFull3D;
}
public boolean shouldRotateAroundWhenRendering()
{
return false;
}
public Item setItemName(String s)
{
itemName = (new StringBuilder()).append("item.").append(s).toString();
return this;
}
public String getLocalItemName(ItemStack itemstack)
{
String s = getItemNameIS(itemstack);
if(s == null)
{
return "";
} else
{
return StatCollector.translateToLocal(s);
}
}
public String getItemName()
{
return itemName;
}
public String getItemNameIS(ItemStack itemstack)
{
return itemName;
}
public Item setContainerItem(Item item)
{
if(maxStackSize > 1)
{
throw new IllegalArgumentException("Max stack size must be 1 for items with crafting results");
} else
{
containerItem = item;
return this;
}
}
public Item getContainerItem()
{
return containerItem;
}
public boolean hasContainerItem()
{
return containerItem != null;
}
public String getStatName()
{
return StatCollector.translateToLocal((new StringBuilder()).append(getItemName()).append(".name").toString());
}
public int getColorFromDamage(int i)
{
return 0xffffff;
}
public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag)
{
}
public void onCreated(ItemStack itemstack, World world, EntityPlayer entityplayer)
{
}
public EnumAction getItemUseAction(ItemStack itemstack)
{
return EnumAction.none;
}
public int getMaxItemUseDuration(ItemStack itemstack)
{
return 0;
}
public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer entityplayer, int i)
{
}
protected Item func_40407_b(String s)
{
field_39010_c = s;
return this;
}
public String func_40405_m()
{
return field_39010_c;
}
public boolean isValidBrewingIngredient()
{
return field_39010_c != null;
}
public void addInformation(ItemStack itemstack, List list)
{
}
public String getItemDisplayName(ItemStack itemstack)
{
String s = (new StringBuilder()).append("").append(StringTranslate.getInstance().translateNamedKey(getLocalItemName(itemstack))).toString().trim();
return s;
}
public boolean hasEffect(ItemStack itemstack)
{
return itemstack.func_40711_u();
}
public EnumRarity func_40398_f(ItemStack itemstack)
{
if(itemstack.func_40711_u())
{
return EnumRarity.rare;
} else
{
return EnumRarity.common;
}
}
public boolean func_40401_i(ItemStack itemstack)
{
return getItemStackLimit() == 1 && isDamageable();
}
protected MovingObjectPosition func_40402_a(World world, EntityPlayer entityplayer, boolean flag)
{
float f = 1.0F;
float f1 = entityplayer.prevRotationPitch + (entityplayer.rotationPitch - entityplayer.prevRotationPitch) * f;
float f2 = entityplayer.prevRotationYaw + (entityplayer.rotationYaw - entityplayer.prevRotationYaw) * f;
double d = entityplayer.prevPosX + (entityplayer.posX - entityplayer.prevPosX) * (double)f;
double d1 = (entityplayer.prevPosY + (entityplayer.posY - entityplayer.prevPosY) * (double)f + 1.6200000000000001D) - (double)entityplayer.yOffset;
double d2 = entityplayer.prevPosZ + (entityplayer.posZ - entityplayer.prevPosZ) * (double)f;
Vec3D vec3d = Vec3D.createVector(d, d1, d2);
float f3 = MathHelper.cos(-f2 * 0.01745329F - 3.141593F);
float f4 = MathHelper.sin(-f2 * 0.01745329F - 3.141593F);
float f5 = -MathHelper.cos(-f1 * 0.01745329F);
float f6 = MathHelper.sin(-f1 * 0.01745329F);
float f7 = f4 * f5;
float f8 = f6;
float f9 = f3 * f5;
double d3 = 5D;
Vec3D vec3d1 = vec3d.addVector((double)f7 * d3, (double)f8 * d3, (double)f9 * d3);
MovingObjectPosition movingobjectposition = world.rayTraceBlocks_do_do(vec3d, vec3d1, flag, !flag);
return movingobjectposition;
}
public int getItemEnchantability()
{
return 0;
}
/* FORGE: Called when a new CreativeContainer is opened, populate the list
* with all of the items for this item you want a player in creative mode
* to have access to.
*/
public void addCreativeItems(ArrayList itemList)
{
if (this.shiftedIndex != Item.potion.shiftedIndex)
{
itemList.add(new ItemStack(this, 1));
}
}
static
{
shovelSteel = (new ItemSpade(0, EnumToolMaterial.IRON)).setIconCoord(2, 5).setItemName("shovelIron");
pickaxeSteel = (new ItemPickaxe(1, EnumToolMaterial.IRON)).setIconCoord(2, 6).setItemName("pickaxeIron");
axeSteel = (new ItemAxe(2, EnumToolMaterial.IRON)).setIconCoord(2, 7).setItemName("hatchetIron");
swordSteel = (new ItemSword(11, EnumToolMaterial.IRON)).setIconCoord(2, 4).setItemName("swordIron");
swordWood = (new ItemSword(12, EnumToolMaterial.WOOD)).setIconCoord(0, 4).setItemName("swordWood");
shovelWood = (new ItemSpade(13, EnumToolMaterial.WOOD)).setIconCoord(0, 5).setItemName("shovelWood");
pickaxeWood = (new ItemPickaxe(14, EnumToolMaterial.WOOD)).setIconCoord(0, 6).setItemName("pickaxeWood");
axeWood = (new ItemAxe(15, EnumToolMaterial.WOOD)).setIconCoord(0, 7).setItemName("hatchetWood");
swordStone = (new ItemSword(16, EnumToolMaterial.STONE)).setIconCoord(1, 4).setItemName("swordStone");
shovelStone = (new ItemSpade(17, EnumToolMaterial.STONE)).setIconCoord(1, 5).setItemName("shovelStone");
pickaxeStone = (new ItemPickaxe(18, EnumToolMaterial.STONE)).setIconCoord(1, 6).setItemName("pickaxeStone");
axeStone = (new ItemAxe(19, EnumToolMaterial.STONE)).setIconCoord(1, 7).setItemName("hatchetStone");
swordDiamond = (new ItemSword(20, EnumToolMaterial.EMERALD)).setIconCoord(3, 4).setItemName("swordDiamond");
shovelDiamond = (new ItemSpade(21, EnumToolMaterial.EMERALD)).setIconCoord(3, 5).setItemName("shovelDiamond");
pickaxeDiamond = (new ItemPickaxe(22, EnumToolMaterial.EMERALD)).setIconCoord(3, 6).setItemName("pickaxeDiamond");
axeDiamond = (new ItemAxe(23, EnumToolMaterial.EMERALD)).setIconCoord(3, 7).setItemName("hatchetDiamond");
swordGold = (new ItemSword(27, EnumToolMaterial.GOLD)).setIconCoord(4, 4).setItemName("swordGold");
shovelGold = (new ItemSpade(28, EnumToolMaterial.GOLD)).setIconCoord(4, 5).setItemName("shovelGold");
pickaxeGold = (new ItemPickaxe(29, EnumToolMaterial.GOLD)).setIconCoord(4, 6).setItemName("pickaxeGold");
axeGold = (new ItemAxe(30, EnumToolMaterial.GOLD)).setIconCoord(4, 7).setItemName("hatchetGold");
gunpowder = (new Item(33)).setIconCoord(8, 2).setItemName("sulphur").func_40407_b(PotionHelper.field_40373_k);
hoeWood = (new ItemHoe(34, EnumToolMaterial.WOOD)).setIconCoord(0, 8).setItemName("hoeWood");
hoeStone = (new ItemHoe(35, EnumToolMaterial.STONE)).setIconCoord(1, 8).setItemName("hoeStone");
hoeSteel = (new ItemHoe(36, EnumToolMaterial.IRON)).setIconCoord(2, 8).setItemName("hoeIron");
hoeDiamond = (new ItemHoe(37, EnumToolMaterial.EMERALD)).setIconCoord(3, 8).setItemName("hoeDiamond");
hoeGold = (new ItemHoe(38, EnumToolMaterial.GOLD)).setIconCoord(4, 8).setItemName("hoeGold");
seeds = (new ItemSeeds(39, Block.crops.blockID, Block.tilledField.blockID)).setIconCoord(9, 0).setItemName("seeds");
helmetLeather = (new ItemArmor(42, EnumArmorMaterial.CLOTH, 0, 0)).setIconCoord(0, 0).setItemName("helmetCloth");
plateLeather = (new ItemArmor(43, EnumArmorMaterial.CLOTH, 0, 1)).setIconCoord(0, 1).setItemName("chestplateCloth");
legsLeather = (new ItemArmor(44, EnumArmorMaterial.CLOTH, 0, 2)).setIconCoord(0, 2).setItemName("leggingsCloth");
bootsLeather = (new ItemArmor(45, EnumArmorMaterial.CLOTH, 0, 3)).setIconCoord(0, 3).setItemName("bootsCloth");
helmetChain = (new ItemArmor(46, EnumArmorMaterial.CHAIN, 1, 0)).setIconCoord(1, 0).setItemName("helmetChain");
plateChain = (new ItemArmor(47, EnumArmorMaterial.CHAIN, 1, 1)).setIconCoord(1, 1).setItemName("chestplateChain");
legsChain = (new ItemArmor(48, EnumArmorMaterial.CHAIN, 1, 2)).setIconCoord(1, 2).setItemName("leggingsChain");
bootsChain = (new ItemArmor(49, EnumArmorMaterial.CHAIN, 1, 3)).setIconCoord(1, 3).setItemName("bootsChain");
helmetSteel = (new ItemArmor(50, EnumArmorMaterial.IRON, 2, 0)).setIconCoord(2, 0).setItemName("helmetIron");
plateSteel = (new ItemArmor(51, EnumArmorMaterial.IRON, 2, 1)).setIconCoord(2, 1).setItemName("chestplateIron");
legsSteel = (new ItemArmor(52, EnumArmorMaterial.IRON, 2, 2)).setIconCoord(2, 2).setItemName("leggingsIron");
bootsSteel = (new ItemArmor(53, EnumArmorMaterial.IRON, 2, 3)).setIconCoord(2, 3).setItemName("bootsIron");
helmetDiamond = (new ItemArmor(54, EnumArmorMaterial.DIAMOND, 3, 0)).setIconCoord(3, 0).setItemName("helmetDiamond");
plateDiamond = (new ItemArmor(55, EnumArmorMaterial.DIAMOND, 3, 1)).setIconCoord(3, 1).setItemName("chestplateDiamond");
legsDiamond = (new ItemArmor(56, EnumArmorMaterial.DIAMOND, 3, 2)).setIconCoord(3, 2).setItemName("leggingsDiamond");
bootsDiamond = (new ItemArmor(57, EnumArmorMaterial.DIAMOND, 3, 3)).setIconCoord(3, 3).setItemName("bootsDiamond");
helmetGold = (new ItemArmor(58, EnumArmorMaterial.GOLD, 4, 0)).setIconCoord(4, 0).setItemName("helmetGold");
plateGold = (new ItemArmor(59, EnumArmorMaterial.GOLD, 4, 1)).setIconCoord(4, 1).setItemName("chestplateGold");
legsGold = (new ItemArmor(60, EnumArmorMaterial.GOLD, 4, 2)).setIconCoord(4, 2).setItemName("leggingsGold");
bootsGold = (new ItemArmor(61, EnumArmorMaterial.GOLD, 4, 3)).setIconCoord(4, 3).setItemName("bootsGold");
appleGold = (new ItemAppleGold(66, 10, 1.2F, false)).setAlwaysEdible().setPotionEffect(Potion.regeneration.id, 30, 0, 1.0F).setIconCoord(11, 0).setItemName("appleGold");
doorWood = (new ItemDoor(68, Material.wood)).setIconCoord(11, 2).setItemName("doorWood");
bucketEmpty = (new ItemBucket(69, 0)).setIconCoord(10, 4).setItemName("bucket");
bucketWater = (new ItemBucket(70, Block.waterMoving.blockID)).setIconCoord(11, 4).setItemName("bucketWater").setContainerItem(bucketEmpty);
bucketLava = (new ItemBucket(71, Block.lavaMoving.blockID)).setIconCoord(12, 4).setItemName("bucketLava").setContainerItem(bucketEmpty);
doorSteel = (new ItemDoor(74, Material.iron)).setIconCoord(12, 2).setItemName("doorIron");
redstone = (new ItemRedstone(75)).setIconCoord(8, 3).setItemName("redstone").func_40407_b(PotionHelper.field_40375_i);
bucketMilk = (new ItemBucketMilk(79)).setIconCoord(13, 4).setItemName("milk").setContainerItem(bucketEmpty);
reed = (new ItemReed(82, Block.reed)).setIconCoord(11, 1).setItemName("reeds");
lightStoneDust = (new Item(92)).setIconCoord(9, 4).setItemName("yellowDust").func_40407_b(PotionHelper.field_40372_j);
sugar = (new Item(97)).setIconCoord(13, 0).setItemName("sugar").func_40407_b(PotionHelper.field_40365_:cool.gif:;
cake = (new ItemReed(98, Block.cake)).setMaxStackSize(1).setIconCoord(13, 1).setItemName("cake");
redstoneRepeater = (new ItemReed(100, Block.redstoneRepeaterIdle)).setIconCoord(6, 5).setItemName("diode");
pumpkinSeeds = (new ItemSeeds(105, Block.pumpkinStem.blockID, Block.tilledField.blockID)).setIconCoord(13, 3).setItemName("seeds_pumpkin");
melonSeeds = (new ItemSeeds(106, Block.melonStem.blockID, Block.tilledField.blockID)).setIconCoord(14, 3).setItemName("seeds_melon");
chickenRaw = (new ItemFood(109, 2, 0.3F, true)).setPotionEffect(Potion.hunger.id, 30, 0, 0.3F).setIconCoord(9, 7).setItemName("chickenRaw");
rottenFlesh = (new ItemFood(111, 4, 0.1F, true)).setPotionEffect(Potion.hunger.id, 30, 0, 0.8F).setIconCoord(11, 5).setItemName("rottenFlesh");
ghastTear = (new Item(114)).setIconCoord(11, 7).setItemName("ghastTear").func_40407_b(PotionHelper.field_40366_c);
netherStalkSeeds = (new ItemSeeds(116, Block.netherStalk.blockID, Block.slowSand.blockID)).setIconCoord(13, 7).setItemName("netherStalkSeeds").func_40407_b("+4");
spiderEye = (new ItemFood(119, 2, 0.8F, false)).setPotionEffect(Potion.poison.id, 5, 0, 1.0F).setIconCoord(11, 8).setItemName("spiderEye").func_40407_b(PotionHelper.field_40363_d);
fermentedSpiderEye = (new Item(120)).setIconCoord(10, 8).setItemName("fermentedSpiderEye").func_40407_b(PotionHelper.field_40364_e);
blazePowder = (new Item(121)).setIconCoord(13, 9).setItemName("blazePowder").func_40407_b(PotionHelper.field_40362_g);
magmaCream = (new Item(122)).setIconCoord(13, 10).setItemName("magmaCream").func_40407_b(PotionHelper.field_40374_h);
brewingStand = (new ItemReed(123, Block.brewingStand)).setIconCoord(12, 10).setItemName("brewingStand");
cauldron = (new ItemReed(124, Block.cauldron)).setIconCoord(12, 9).setItemName("cauldron");
speckledMelon = (new Item(126)).setIconCoord(9, 8).setItemName("speckledMelon").func_40407_b(PotionHelper.field_40361_f);
StatList.initStats();
}
}[/code]
ItemStack.java
[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 fieldsfirst
package net.minecraft.src;
import java.util.*;
// Referenced classes of package net.minecraft.src:
// Block, Item, NBTTagCompound, StatList,
// EntityPlayer, EnchantmentHelper, EntityLiving, World,
// NBTTagList, Enchantment, Entity, EnumAction,
// EnumRarity
public final class ItemStack
{
public int stackSize;
public int animationsToGo;
public int itemID;
public NBTTagCompound stackTagCompound;
private int itemDamage;
public ItemStack(Block block)
{
this(block, 1);
}
public ItemStack(Block block, int i)
{
this(block.blockID, i, 0);
}
public ItemStack(Block block, int i, int j)
{
this(block.blockID, i, j);
}
public ItemStack(Item item)
{
this(item.shiftedIndex, 1, 0);
}
public ItemStack(Item item, int i)
{
this(item.shiftedIndex, i, 0);
}
public ItemStack(Item item, int i, int j)
{
this(item.shiftedIndex, i, j);
}
public ItemStack(int i, int j, int k)
{
stackSize = 0;
itemID = i;
stackSize = j;
itemDamage = k;
}
public static ItemStack loadItemStackFromNBT(NBTTagCompound nbttagcompound)
{
ItemStack itemstack = new ItemStack();
itemstack.readFromNBT(nbttagcompound);
return itemstack.getItem() == null ? null : itemstack;
}
private ItemStack()
{
stackSize = 0;
}
public ItemStack splitStack(int i)
{
ItemStack itemstack = new ItemStack(itemID, i, itemDamage);
if(stackTagCompound != null)
{
itemstack.stackTagCompound = (NBTTagCompound)stackTagCompound.cloneTag();
}
stackSize -= i;
return itemstack;
}
public Item getItem()
{
return Item.itemsList[itemID];
}
public int getIconIndex()
{
return getItem().getIconIndex(this);
}
public boolean useItem(EntityPlayer entityplayer, World world, int i, int j, int k, int l)
{
boolean flag = getItem().onItemUse(this, entityplayer, world, i, j, k, l);
if(flag)
{
entityplayer.addStat(StatList.objectUseStats[itemID], 1);
}
return flag;
}
public float getStrVsBlock(Block block)
{
return getItem().getStrVsBlock(this, block);
}
public ItemStack useItemRightClick(World world, EntityPlayer entityplayer)
{
return getItem().onItemRightClick(this, world, entityplayer);
}
public ItemStack onFoodEaten(World world, EntityPlayer entityplayer)
{
return getItem().onFoodEaten(this, world, entityplayer);
}
public NBTTagCompound writeToNBT(NBTTagCompound nbttagcompound)
{
nbttagcompound.setShort("id", (short)itemID);
nbttagcompound.setByte("Count", (byte)stackSize);
nbttagcompound.setShort("Damage", (short)itemDamage);
if(stackTagCompound != null)
{
nbttagcompound.setTag("tag", stackTagCompound);
}
return nbttagcompound;
}
public void readFromNBT(NBTTagCompound nbttagcompound)
{
itemID = nbttagcompound.getShort("id");
stackSize = nbttagcompound.getByte("Count");
itemDamage = nbttagcompound.getShort("Damage");
if(nbttagcompound.hasKey("tag"))
{
stackTagCompound = nbttagcompound.getCompoundTag("tag");
}
}
public int getMaxStackSize()
{
return getItem().getItemStackLimit();
}
public boolean isStackable()
{
return getMaxStackSize() > 1 && (!isItemStackDamageable() || !isItemDamaged());
}
public boolean isItemStackDamageable()
{
return Item.itemsList[itemID].getMaxDamage() > 0;
}
public boolean getHasSubtypes()
{
return Item.itemsList[itemID].getHasSubtypes();
}
public boolean isItemDamaged()
{
return isItemStackDamageable() && itemDamage > 0;
}
public int getItemDamageForDisplay()
{
return itemDamage;
}
public int getItemDamage()
{
return itemDamage;
}
public void setItemDamage(int i)
{
itemDamage = i;
}
public int getMaxDamage()
{
return Item.itemsList[itemID].getMaxDamage();
}
public void damageItem(int i, EntityLiving entityliving)
{
if(!isItemStackDamageable())
{
return;
}
if(i > 0 && (entityliving instanceof EntityPlayer))
{
int j = EnchantmentHelper.getUnbreakingModifier(((EntityPlayer)entityliving).inventory);
if(j > 0 && entityliving.worldObj.rand.nextInt(j + 1) > 0)
{
return;
}
}
itemDamage += i;
if(itemDamage > getMaxDamage())
{
entityliving.func_41005_b(this);
if(entityliving instanceof EntityPlayer)
{
((EntityPlayer)entityliving).addStat(StatList.objectBreakStats[itemID], 1);
}
stackSize--;
if(stackSize < 0)
{
stackSize = 0;
}
itemDamage = 0;
}
}
public void hitEntity(EntityLiving entityliving, EntityPlayer entityplayer)
{
boolean flag = Item.itemsList[itemID].hitEntity(this, entityliving, entityplayer);
if(flag)
{
entityplayer.addStat(StatList.objectUseStats[itemID], 1);
}
}
public void onDestroyBlock(int i, int j, int k, int l, EntityPlayer entityplayer)
{
boolean flag = Item.itemsList[itemID].onBlockDestroyed(this, i, j, k, l, entityplayer);
if(flag)
{
entityplayer.addStat(StatList.objectUseStats[itemID], 1);
}
}
public void onDestroyBlock(int i, int j, int k, int l, EntityPlayer entityplayer, int md) //mDiyo add, metadata sensitive
{
boolean flag = Item.itemsList[itemID].onBlockDestroyed(this, i, j, k, l, entityplayer, md);
if(flag)
{
entityplayer.addStat(StatList.objectUseStats[itemID], 1);
} else {
onDestroyBlock(i, j, k, l, entityplayer); //Calls if false. Uses metadata insensitive method
}
}
public boolean canSpawnItems(int i, int j, int k, int l, EntityPlayer entityplayer) //mDiyo add, check for spawning items
{
boolean flag = Item.itemsList[itemID].canDropItems(this, i, j, k, l, entityplayer);
return flag;
}
public int getDamageVsEntity(Entity entity)
{
return Item.itemsList[itemID].getDamageVsEntity(entity);
}
public boolean canHarvestBlock(Block block)
{
return Item.itemsList[itemID].canHarvestBlock(block);
}
public void onItemDestroyedByUse(EntityPlayer entityplayer)
{
}
public void useItemOnEntity(EntityLiving entityliving)
{
Item.itemsList[itemID].useItemOnEntity(this, entityliving);
}
public ItemStack copy()
{
ItemStack itemstack = new ItemStack(itemID, stackSize, itemDamage);
if(stackTagCompound != null)
{
itemstack.stackTagCompound = (NBTTagCompound)stackTagCompound.cloneTag();
if(!itemstack.stackTagCompound.equals(stackTagCompound))
{
return itemstack;
}
}
return itemstack;
}
public static boolean areItemStacksEqual(ItemStack itemstack, ItemStack itemstack1)
{
if(itemstack == null && itemstack1 == null)
{
return true;
}
if(itemstack == null || itemstack1 == null)
{
return false;
} else
{
return itemstack.isItemStackEqual(itemstack1);
}
}
private boolean isItemStackEqual(ItemStack itemstack)
{
if(stackSize != itemstack.stackSize)
{
return false;
}
if(itemID != itemstack.itemID)
{
return false;
}
if(itemDamage != itemstack.itemDamage)
{
return false;
}
if(stackTagCompound == null && itemstack.stackTagCompound != null)
{
return false;
}
return stackTagCompound == null || stackTagCompound.equals(itemstack.stackTagCompound);
}
public boolean isItemEqual(ItemStack itemstack)
{
return itemID == itemstack.itemID && itemDamage == itemstack.itemDamage;
}
public static ItemStack copyItemStack(ItemStack itemstack)
{
return itemstack != null ? itemstack.copy() : null;
}
public String toString()
{
return (new StringBuilder()).append(stackSize).append("x").append(Item.itemsList[itemID].getItemName()).append("@").append(itemDamage).toString();
}
public void updateAnimation(World world, Entity entity, int i, boolean flag)
{
if(animationsToGo > 0)
{
animationsToGo--;
}
Item.itemsList[itemID].onUpdate(this, world, entity, i, flag);
}
public void onCrafting(World world, EntityPlayer entityplayer)
{
entityplayer.addStat(StatList.objectCraftStats[itemID], stackSize);
Item.itemsList[itemID].onCreated(this, world, entityplayer);
}
public boolean isStackEqual(ItemStack itemstack)
{
return itemID == itemstack.itemID && stackSize == itemstack.stackSize && itemDamage == itemstack.itemDamage;
}
public int getMaxItemUseDuration()
{
return getItem().getMaxItemUseDuration(this);
}
public EnumAction getItemUseAction()
{
return getItem().getItemUseAction(this);
}
public void onPlayerStoppedUsing(World world, EntityPlayer entityplayer, int i)
{
getItem().onPlayerStoppedUsing(this, world, entityplayer, i);
}
public boolean hasTagCompound()
{
return stackTagCompound != null;
}
public NBTTagCompound getTagCompound()
{
return stackTagCompound;
}
public NBTTagList getEnchantmentTagList()
{
if(stackTagCompound == null)
{
return null;
} else
{
return (NBTTagList)stackTagCompound.getTag("ench");
}
}
public void setTagCompound(NBTTagCompound nbttagcompound)
{
if(Item.itemsList[itemID].getItemStackLimit() != 1)
{
throw new IllegalArgumentException("Cannot add tag data to a stackable item");
} else
{
stackTagCompound = nbttagcompound;
return;
}
}
public List getItemNameandInformation()
{
ArrayList arraylist = new ArrayList();
Item item = Item.itemsList[itemID];
arraylist.add(item.getItemDisplayName(this));
item.addInformation(this, arraylist);
if(hasTagCompound())
{
NBTTagList nbttaglist = getEnchantmentTagList();
if(nbttaglist != null)
{
for(int i = 0; i < nbttaglist.tagCount(); i++)
{
short word0 = ((NBTTagCompound)nbttaglist.tagAt(i)).getShort("id");
short word1 = ((NBTTagCompound)nbttaglist.tagAt(i)).getShort("lvl");
if(Enchantment.enchantmentsList[word0] != null)
{
arraylist.add(Enchantment.enchantmentsList[word0].getTranslatedName(word1));
}
}
}
}
return arraylist;
}
public boolean func_40713_r()
{
return getItem().hasEffect(this);
}
public EnumRarity func_40707_s()
{
return getItem().func_40398_f(this);
}
public boolean func_40708_t()
{
if(!getItem().func_40401_i(this))
{
return false;
}
return !func_40711_u();
}
public void addEnchantment(Enchantment enchantment, int i)
{
if(stackTagCompound == null)
{
setTagCompound(new NBTTagCompound());
}
if(!stackTagCompound.hasKey("ench"))
{
stackTagCompound.setTag("ench", new NBTTagList("ench"));
}
NBTTagList nbttaglist = (NBTTagList)stackTagCompound.getTag("ench");
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setShort("id", (short)enchantment.effectId);
nbttagcompound.setShort("lvl", (byte)i);
nbttaglist.setTag(nbttagcompound);
}
public boolean func_40711_u()
{
return stackTagCompound != null && stackTagCompound.hasKey("ench");
}
}[/code]
PlayerControllerSP.java
// 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 fieldsfirst
public void flipPlayer(EntityPlayer entityplayer)
{
entityplayer.rotationYaw = -180F;
}
public boolean shouldDrawHUD()
{
return true;
}
/* The original intention of my hook was to destroy the block
without spawning any of its items. Other items can be
spawned in their place, or the item can just be destroyed. */
public boolean sendBlockRemoved(int i, int j, int k, int l)
{
ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
if(itemstack!=null && itemstack.getItem().onBlockStartBreak(itemstack,
i,j,k,mc.thePlayer))
return false;
int i1 = mc.theWorld.getBlockId(i, j, k);
int j1 = mc.theWorld.getBlockMetadata(i, j, k);
boolean flag = super.sendBlockRemoved(i, j, k, l);
boolean flag1 = Block.blocksList[i1].canHarvestBlock(mc.thePlayer,j1);
boolean spawn = true;
if(itemstack != null)
{
spawn = itemstack.canSpawnItems(i, j, k, l, mc.thePlayer); //mDiyo add, check if item can harvest
itemstack.onDestroyBlock(i1, i, j, k, mc.thePlayer, j1); //mDiyo add, metadata senstitive harvest
if(itemstack.stackSize == 0)
{
itemstack.onItemDestroyedByUse(mc.thePlayer);
mc.thePlayer.destroyCurrentEquippedItem();
}
}
if(flag && flag1 && spawn)
{
Block.blocksList[i1].harvestBlock(mc.theWorld, mc.thePlayer, i, j, k, j1);
}
return flag;
}
public void clickBlock(int i, int j, int k, int l)
{
if(!mc.thePlayer.func_35190_e(i, j, k))
{
return;
}
mc.theWorld.onBlockHit(mc.thePlayer, i, j, k, l);
int i1 = mc.theWorld.getBlockId(i, j, k);
if(i1 > 0 && curBlockDamage == 0.0F)
{
Block.blocksList[i1].onBlockClicked(mc.theWorld, i, j, k, mc.thePlayer);
}
if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld,mc.thePlayer,i,j,k) >= 1.0F)
{
sendBlockRemoved(i, j, k, l);
}
}
Apparently, throw away the previous method I used to install the mods!
Today I did a few tests and quite some major bugs/glitches occurred!
First of all, breaking any block while holding something on my hand gives me a "Saving Chunks" screen!
Despite that, I tried to install a few more mods(because I wanted to try something with a single mod - Edit: The mods were Crafting Table II, Tale of Kingdoms, Twilight Forest and Equivalent Exchange) with only one of them modifying the k.class!
ava.lang.IllegalStateException: zip file closed
at java.util.zip.ZipFile.ensureOpen(Unknown Source)
at java.util.zip.ZipFile.getInputStream(Unknown Source)
at java.util.zip.ZipFile.getInputStream(Unknown Source)
at com.pclewis.mcpatcher.ExternalMod.openFile(ExternalMod.java:35)
at com.pclewis.mcpatcher.MCPatcher.addFile(MCPatcher.java:594)
at com.pclewis.mcpatcher.MCPatcher.applyMods(MCPatcher.java:586)
at com.pclewis.mcpatcher.MCPatcher.patch(MCPatcher.java:474)
at com.pclewis.mcpatcher.MainForm$11$PatchThread.run(MainForm.java:350)
at java.lang.Thread.run(Unknown Source)
That is a MCPatcher bug. Close MCPatcher and rerun MCPatcher and repatch.
Rollback Post to RevisionRollBack
Too addicted with Counter-Strike: Source for some reason...
I'm not going to be responding much right now, while I get CC updated to 1.0.0.
I'm working alphabetically, and have nearly got ChunkProvider working...
I made a nice little improvement to Chunk, which should reduce memory usage by ~1 MB (depending on how many chunks are loaded; 1 MB assumes ~110 chunks loaded), while either marginally improving or having no effect upon computation speed. It also removes one barrier from having million-block-tall worlds; now all that I'd have to do is make heightMap and precipitationHeightMap int arrays, and switch around a few variables. Million-block-tall-world chunks no longer have to store a ChunkCube pointer array 62500 long (250000 bytes). Now they, like all other Chunks, can use a mere ~220 bytes! :biggrin.gif:
I'm sorry if this has been asked, but there seems to have been updates (or updated information) since the last couple pages back, so I think if I go by any information I find it wouldn't be accurate.
I have a bunch of API mods downloaded that are needed for various mods I want to play, and it seem it's almost all of them: Forge 1.2.2, ScotsTools, Item Sprite API, Modloader, unofficial ModloaderMP, GuiAPI, and I also want to use 4096. I know there are patches out for Forge, Scots and ItemSprite to all work together, but 4096 seem to share a lot of common files with Forge.
So are they incompatible or not (I read above and says yes)? And how would I go about installing Forge with 4096 then? (My concern's on the common files)
I'm sorry if this has been asked, but there seems to have been updates (or updated information) since the last couple pages back, so I think if I go by any information I find it wouldn't be accurate.
I have a bunch of API mods downloaded that are needed for various mods I want to play, and it seem it's almost all of them: Forge 1.2.2, ScotsTools, Item Sprite API, Modloader, unofficial ModloaderMP, GuiAPI, and I also want to use 4096. I know there are patches out for Forge, Scots and ItemSprite to all work together, but 4096 seem to share a lot of common files with Forge.
So are they incompatible or not (I read above and says yes)? And how would I go about installing Forge with 4096 then? (My concern's on the common files)
4096 BlockIDs was made to work with forge, it's a requirement along with modloader, and maybe ModloaderMP. Just install this mod after forge 1.2.0 and then the other patches after that. Out of all those API's you mentioned, Item Sprites is the only one I don't think is compatible.
4096 BlockIDs was made to work with forge, it's a requirement along with modloader, and maybe ModloaderMP. Just install this mod after forge 1.2.0 and then the other patches after that. Out of all those API's you mentioned, Item Sprites is the only one I don't think is compatible.
Oh thanks! I must have missed the part where 4096 is compatible with Forge, so much to read for all the mods I have! Plus I'd not seen one of these utility mods depend on another, so I sort of assumed XD (how's that saying go)
The solution for the problem I have is sort of ironic. I needed Forge and 4096 because I have Premium Wood and it takes up a bunch of terrain indices (and don't use Forge), so I can't install the smaller mods I needed that only used up one or two terrain indices. But Forge and Scokeev9's mods don't match, so in order to use them I'd have to not install Premium Wood (scokee9's mod); and yet, if I don't install it, I wouldn't need Forge and 4096 in the first place :laugh.gif:
But thank you, you've helped me figure out how to make it work. Just to report, I decided to try it anyways (even though you stressed 1.2.0), and 1.2.2 works as well.
Edit for a little more information: Forge v1.2.2 does work. Just need to get a fresh jar, install Modloader, Audiomod (if you need), and then follow Daniel_l94's order - Forge, 4096. The patches for ItemSpriteAPI or ScotsTools are just unnecessary, if you're installing 'em for Nethercraft or Premium Wood, since they're not compatible with Forge anyhow.
I'm not going to be responding much right now, while I get CC updated to 1.0.0.
I'm working alphabetically, and have nearly got ChunkProvider working...
I made a nice little improvement to Chunk, which should reduce memory usage by ~1 MB (depending on how many chunks are loaded; 1 MB assumes ~110 chunks loaded), while either marginally improving or having no effect upon computation speed. It also removes one barrier from having million-block-tall worlds; now all that I'd have to do is make heightMap and precipitationHeightMap int arrays, and switch around a few variables. Million-block-tall-world chunks no longer have to store a ChunkCube pointer array 62500 long (250000 bytes). Now they, like all other Chunks, can use a mere ~220 bytes! :biggrin.gif:
Sounds like a breakthrough to me. Hello MineCraft Solar-System! :smile.gif:
Rollback Post to RevisionRollBack
- The Cubic Chunks Mod is back! Be a part of it's rebirth and Development.
-- Robinton's Mods: [ Mirror ] for some of his Mods incl Cubic Chunks Mod, due to DropBox broken links.
Oh thanks! I must have missed the part where 4096 is compatible with Forge, so much to read for all the mods I have! Plus I'd not seen one of these utility mods depend on another, so I sort of assumed XD (how's that saying go)
The solution for the problem I have is sort of ironic. I needed Forge and 4096 because I have Premium Wood and it takes up a bunch of terrain indices (and don't use Forge), so I can't install the smaller mods I needed that only used up one or two terrain indices. But Forge and Scokeev9's mods don't match, so in order to use them I'd have to not install Premium Wood (scokee9's mod); and yet, if I don't install it, I wouldn't need Forge and 4096 in the first place :laugh.gif:
But thank you, you've helped me figure out how to make it work. Just to report, I decided to try it anyways (even though you stressed 1.2.0), and 1.2.2 works as well.
Edit for a little more information: Forge v1.2.2 does work. Just need to get a fresh jar, install Modloader, Audiomod (if you need), and then follow Daniel_l94's order - Forge, 4096. The patches for ItemSpriteAPI or ScotsTools are just unnecessary, if you're installing 'em for Nethercraft or Premium Wood, since they're not compatible with Forge anyhow.
It was made to work with Forge 1.2.0, and although it "works" with 1.2.2 you will only be able to play in creative. As soon as you break a block in survival minecraft crashes.
I have a problem:
The mods I have are(Intalled in this order):
-Modloader
-Minecraft Forge API 1.2.2
-Pam's Harvestcraft
-GUI API
-4096 Block ID's
-ID Resolver Extended ID's
My problem is, when ever i punch tall grass my game crashes and closes automatiquely.
Can you please try to help me.
(Sorry for my grammar)
I have a problem:
The mods I have are(Intalled in this order):
-Modloader
-Minecraft Forge API 1.2.2
-Pam's Harvestcraft
-GUI API
-4096 Block ID's
-ID Resolver Extended ID's
My problem is, when ever i punch tall grass my game crashes and closes automatiquely.
Can you please try to help me.
(Sorry for my grammar)
4096 doesn't get along with forge after 1.2.0. I know this from reading the last two pages. I also saw a fix for it mentioned. Go look.
Wheat, pistons, doors, furnaces, beds, etc. would have multiple block ids.
I've been playing around with the 4096 BlockID standalone and have a working installation using the minecraftForge 1.2.1 so I'm a bit puzzled with people saying that it doesn't work, as I haven't yet run into any problem with it. Of course a quick look at the text file for IDResolver shows that I apparently don't have any blockID's above 256 so that may be the reason. However Check the spoiler below for the installation order of the Mods that I have currently installed. The numbers represent the order that I installed.
Please note that I always start with a fresh Minecraft.Jar and that the first thing I always do is to delete the Meta.Inf folder.
01 ModLoader
02 ModLoaderMp 1.0.0
03 GuiAPI-0.12.0-1.0.0
04 SinglePlayerCommands-MC1.0.0_V3.0.1
05 TooManyItems2011_11_29
06 mod_IDList 1.0.0.1
07 IDResolver_1.0.0-Update-1-Minecraft_Forge_Edition
08 minecraftforge-client-1.2.1
09 MC1.0.0_4096IDs_V1.0_Standalone
10 MC1.0.0_4096IDs_V1.0_Standalone_IDResolverPatch
11 buildcraft-client-A-core-2.2.8
12 buildcraft-client-B-builders-2.2.8
13 buildcraft-client-B-energy-2.2.8
14 buildcraft-client-B-factory-2.2.8
15 buildcraft-client-B-transport-2.2.8
16 RedPowerCore-2.0pr4
17 RedPowerWiring-2.0pr4
18 RedPowerLogic-2.0pr4
19 RedPowerArray-2.0pr4
20 RedPowerLighting-2.0pr4
21 RedPowerMachine-2.0pr4
22 RedPowerWorld-2.0pr4
23 Railcraft_Client-2.0.2
24 Minecart_Compatibility_Layer_Client-3.0 (Required part of Railcraft)
25 WirelessRedstone
26 MC Rotator Mod v1.0
27 [1.0] Elevator (v1.9) (Exanadu only good for 128 block height…sigh…)
28 [1.0.0]ReiMinimap_v2.9
29 MoreStorageV1.2.2
30 zAdditionalPipesv31-1
31 DoubleDoorModsv3-1.0.0
After I installed these I installed/ran mcpatcher-2.2.3 and defscape-64x-1.7 Texture Pack
Hope this helps some of you.
On another note, Kaeveator Super Slopes and Better Than Wolves I've had no luck with...sigh....
Cheers to all and my thanks go to Robington and Minecrack for their work.
Marglyph coded TooManyItems to show all the useful potions with their damage values of item id 373. It's not really an incompatibility, but i wonder what would happen if someone assigned a block with that value...
He is making it right now. Him making estimates would only slow him down.
It looks like the hook I requested turned out to be a different beast entirely. The hook that made it in is quite useful, but not what I need, lol. When you get around to updating for Forge 1.2.2... well, here's the whole "prevent block-item spawn" hook code.
I just figured out how to use the new hook. It's high level stuff; twas about 3 levels above where I am. A merge won't be necessary once I update in a couple days.Item.java
ItemStack.java
PlayerControllerSP.java
// 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 fieldsfirst
package net.minecraft.src;
import net.minecraft.src.forge.IUseItemFirst;
import net.minecraft.src.forge.ForgeHooks;
import net.minecraft.client.Minecraft;
// Referenced classes of package net.minecraft.src:
// PlayerController, EntityPlayer, World, EntityPlayerSP,
// Block, ItemStack, StepSound, SoundManager,
// GuiIngame, RenderGlobal
public class PlayerControllerSP extends PlayerController
{
private int curBlockX;
private int curBlockY;
private int curBlockZ;
private float curBlockDamage;
private float prevBlockDamage;
private float field_1069_h;
private int blockHitWait;
public PlayerControllerSP(Minecraft minecraft)
{
super(minecraft);
curBlockX = -1;
curBlockY = -1;
curBlockZ = -1;
curBlockDamage = 0.0F;
prevBlockDamage = 0.0F;
field_1069_h = 0.0F;
blockHitWait = 0;
}
public void flipPlayer(EntityPlayer entityplayer)
{
entityplayer.rotationYaw = -180F;
}
public boolean shouldDrawHUD()
{
return true;
}
/* The original intention of my hook was to destroy the block
without spawning any of its items. Other items can be
spawned in their place, or the item can just be destroyed. */
public boolean sendBlockRemoved(int i, int j, int k, int l)
{
ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem();
if(itemstack!=null && itemstack.getItem().onBlockStartBreak(itemstack,
i,j,k,mc.thePlayer))
return false;
int i1 = mc.theWorld.getBlockId(i, j, k);
int j1 = mc.theWorld.getBlockMetadata(i, j, k);
boolean flag = super.sendBlockRemoved(i, j, k, l);
boolean flag1 = Block.blocksList[i1].canHarvestBlock(mc.thePlayer,j1);
boolean spawn = true;
if(itemstack != null)
{
spawn = itemstack.canSpawnItems(i, j, k, l, mc.thePlayer); //mDiyo add, check if item can harvest
itemstack.onDestroyBlock(i1, i, j, k, mc.thePlayer, j1); //mDiyo add, metadata senstitive harvest
if(itemstack.stackSize == 0)
{
itemstack.onItemDestroyedByUse(mc.thePlayer);
mc.thePlayer.destroyCurrentEquippedItem();
}
}
if(flag && flag1 && spawn)
{
Block.blocksList[i1].harvestBlock(mc.theWorld, mc.thePlayer, i, j, k, j1);
}
return flag;
}
public void clickBlock(int i, int j, int k, int l)
{
if(!mc.thePlayer.func_35190_e(i, j, k))
{
return;
}
mc.theWorld.onBlockHit(mc.thePlayer, i, j, k, l);
int i1 = mc.theWorld.getBlockId(i, j, k);
if(i1 > 0 && curBlockDamage == 0.0F)
{
Block.blocksList[i1].onBlockClicked(mc.theWorld, i, j, k, mc.thePlayer);
}
if(i1 > 0 && Block.blocksList[i1].blockStrength(mc.theWorld,mc.thePlayer,i,j,k) >= 1.0F)
{
sendBlockRemoved(i, j, k, l);
}
}
public void resetBlockRemoving()
{
curBlockDamage = 0.0F;
blockHitWait = 0;
}
public void sendBlockRemoving(int i, int j, int k, int l)
{
if(blockHitWait > 0)
{
blockHitWait--;
return;
}
if(i == curBlockX && j == curBlockY && k == curBlockZ)
{
int i1 = mc.theWorld.getBlockId(i, j, k);
if(!mc.thePlayer.func_35190_e(i, j, k))
{
return;
}
if(i1 == 0)
{
return;
}
Block block = Block.blocksList[i1];
curBlockDamage += block.blockStrength(mc.theWorld,mc.thePlayer,i,j,k);
if(field_1069_h % 4F == 0.0F && block != null)
{
mc.sndManager.playSound(block.stepSound.stepSoundDir2(), (float)i + 0.5F, (float)j + 0.5F, (float)k + 0.5F, (block.stepSound.getVolume() + 1.0F) / 8F, block.stepSound.getPitch() * 0.5F);
}
field_1069_h++;
if(curBlockDamage >= 1.0F)
{
sendBlockRemoved(i, j, k, l);
curBlockDamage = 0.0F;
prevBlockDamage = 0.0F;
field_1069_h = 0.0F;
blockHitWait = 5;
}
} else
{
curBlockDamage = 0.0F;
prevBlockDamage = 0.0F;
field_1069_h = 0.0F;
curBlockX = i;
curBlockY = j;
curBlockZ = k;
}
}
public void setPartialTime(float f)
{
if(curBlockDamage <= 0.0F)
{
mc.ingameGUI.damageGuiPartialTime = 0.0F;
mc.renderGlobal.damagePartialTime = 0.0F;
} else
{
float f1 = prevBlockDamage + (curBlockDamage - prevBlockDamage) * f;
mc.ingameGUI.damageGuiPartialTime = f1;
mc.renderGlobal.damagePartialTime = f1;
}
}
public float getBlockReachDistance()
{
return 4F;
}
public void onWorldChange(World world)
{
super.onWorldChange(world);
}
public EntityPlayer createPlayer(World world)
{
EntityPlayer entityplayer = super.createPlayer(world);
return entityplayer;
}
public void updateController()
{
prevBlockDamage = curBlockDamage;
mc.sndManager.playRandomMusicIfReady();
}
public boolean sendPlaceBlock(EntityPlayer entityplayer, World world, ItemStack itemstack, int i, int j, int k, int l)
{
if (itemstack != null && itemstack.getItem() instanceof IUseItemFirst) {
IUseItemFirst iuif = (IUseItemFirst) itemstack.getItem();
if (iuif.onItemUseFirst(itemstack, entityplayer, world, i, j, k, l)) {
return true;
}
}
int i1 = world.getBlockId(i, j, k);
if(i1 > 0 && Block.blocksList[i1].blockActivated(world, i, j, k, entityplayer))
{
return true;
}
if(itemstack == null)
{
return false;
} else
{
if(!itemstack.useItem(entityplayer, world, i, j, k, l))
return false;
if(itemstack.stackSize == 0)
ForgeHooks.onDestroyCurrentItem(entityplayer,itemstack);
return true;
}
}
public boolean func_35642_f()
{
return true;
}
}
[/code]
Today I did a few tests and quite some major bugs/glitches occurred!
First of all, breaking any block while holding something on my hand gives me a "Saving Chunks" screen!
Despite that, I tried to install a few more mods(because I wanted to try something with a single mod - Edit: The mods were Crafting Table II, Tale of Kingdoms, Twilight Forest and Equivalent Exchange) with only one of them modifying the k.class!
And I also used one of my 1.8.1 saves!
And there, three more bugs occurred!
1: Swiftwolf's Rending Gale's flying wouldn't work!
2: I log off and when I log in again, all the items in my inventory had disappeared!
3: I log off AGAIN and when I log in AGAIN, I find myself being inside a cave!("What the cr@p???" I said to myself)
So, yeah, that was one hell of a cr@pstorm of bugs!
Back to square one!
That is a MCPatcher bug. Close MCPatcher and rerun MCPatcher and repatch.
I'm working alphabetically, and have nearly got ChunkProvider working...
I made a nice little improvement to Chunk, which should reduce memory usage by ~1 MB (depending on how many chunks are loaded; 1 MB assumes ~110 chunks loaded), while either marginally improving or having no effect upon computation speed. It also removes one barrier from having million-block-tall worlds; now all that I'd have to do is make heightMap and precipitationHeightMap int arrays, and switch around a few variables. Million-block-tall-world chunks no longer have to store a ChunkCube pointer array 62500 long (250000 bytes). Now they, like all other Chunks, can use a mere ~220 bytes! :biggrin.gif:
I have a bunch of API mods downloaded that are needed for various mods I want to play, and it seem it's almost all of them: Forge 1.2.2, ScotsTools, Item Sprite API, Modloader, unofficial ModloaderMP, GuiAPI, and I also want to use 4096. I know there are patches out for Forge, Scots and ItemSprite to all work together, but 4096 seem to share a lot of common files with Forge.
So are they incompatible or not (I read above and says yes)? And how would I go about installing Forge with 4096 then? (My concern's on the common files)
ok thanks, can't wait :smile.gif:
4096 BlockIDs was made to work with forge, it's a requirement along with modloader, and maybe ModloaderMP. Just install this mod after forge 1.2.0 and then the other patches after that. Out of all those API's you mentioned, Item Sprites is the only one I don't think is compatible.
Oh thanks! I must have missed the part where 4096 is compatible with Forge, so much to read for all the mods I have! Plus I'd not seen one of these utility mods depend on another, so I sort of assumed XD (how's that saying go)
The solution for the problem I have is sort of ironic. I needed Forge and 4096 because I have Premium Wood and it takes up a bunch of terrain indices (and don't use Forge), so I can't install the smaller mods I needed that only used up one or two terrain indices. But Forge and Scokeev9's mods don't match, so in order to use them I'd have to not install Premium Wood (scokee9's mod); and yet, if I don't install it, I wouldn't need Forge and 4096 in the first place :laugh.gif:
But thank you, you've helped me figure out how to make it work. Just to report, I decided to try it anyways (even though you stressed 1.2.0), and 1.2.2 works as well.
Edit for a little more information: Forge v1.2.2 does work. Just need to get a fresh jar, install Modloader, Audiomod (if you need), and then follow Daniel_l94's order - Forge, 4096. The patches for ItemSpriteAPI or ScotsTools are just unnecessary, if you're installing 'em for Nethercraft or Premium Wood, since they're not compatible with Forge anyhow.
Sounds like a breakthrough to me. Hello MineCraft Solar-System! :smile.gif:
- The Cubic Chunks Mod is back! Be a part of it's rebirth and Development.
-- Robinton's Mods: [ Mirror ] for some of his Mods incl Cubic Chunks Mod, due to DropBox broken links.
- Dungeon Generator for the Open Cubic Chunks Mod
- QuickSAVE-QuickLOAD for the Open Cubic Chunks Mod
It was made to work with Forge 1.2.0, and although it "works" with 1.2.2 you will only be able to play in creative. As soon as you break a block in survival minecraft crashes.
It should be compatible now without any merge!
Unfortunately, I'm too tired right now to do any tests!
The mods I have are(Intalled in this order):
-Modloader
-Minecraft Forge API 1.2.2
-Pam's Harvestcraft
-GUI API
-4096 Block ID's
-ID Resolver Extended ID's
My problem is, when ever i punch tall grass my game crashes and closes automatiquely.
Can you please try to help me.
(Sorry for my grammar)
4096 doesn't get along with forge after 1.2.0. I know this from reading the last two pages. I also saw a fix for it mentioned. Go look.
"Wake up."