Fixed MCP mappings again. Fixed the Entity NBT code.

Added a new hook to support custom enchantments.
This commit is contained in:
Eloraam 2012-01-11 18:39:42 +00:00
parent 61d9b78704
commit bdda88d74e
8 changed files with 72 additions and 14 deletions

View file

@ -35,7 +35,7 @@
+ */ + */
+ public int quantityDropped(int meta, int fortune, Random random) + public int quantityDropped(int meta, int fortune, Random random)
+ { + {
+ return func_40198_a(fortune, random); + return quantityDroppedWithBonus(fortune, random);
+ } + }
+ +
+ /* FORGE: Metadata-sensitive version. + /* FORGE: Metadata-sensitive version.

View file

@ -0,0 +1,16 @@
--- ../src_base/minecraft/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
@@ -109,6 +109,13 @@
return (new StringBuilder()).append(s).append(" ").append(StatCollector.translateToLocal((new StringBuilder()).append("enchantment.level.").append(i).toString())).toString();
}
+ /* FORGE: Can enchantment be applied to item. Redirected to allow users to
+ * override it in their Enchantment class.
+ */
+ public boolean canEnchantItem(ItemStack ist) {
+ return type.canEnchantItem(ist.getItem());
+ }
+
static
{
looting = new EnchantmentLootBonus(21, 2, EnumEnchantmentType.weapon);

View file

@ -0,0 +1,11 @@
--- ../src_base/minecraft/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
@@ -271,7 +271,7 @@
for(int k = 0; k < j; k++)
{
Enchantment enchantment = aenchantment[k];
- if(enchantment == null || !enchantment.type.canEnchantItem(item))
+ if(enchantment == null || !enchantment.canEnchantItem(itemstack))
{
continue;
}

View file

@ -31,21 +31,23 @@
public DataWatcher getDataWatcher() public DataWatcher getDataWatcher()
{ {
@@ -955,6 +972,7 @@ @@ -955,6 +972,10 @@
nbttagcompound.setShort("Fire", (short)fire); nbttagcompound.setShort("Fire", (short)fire);
nbttagcompound.setShort("Air", (short)getAir()); nbttagcompound.setShort("Air", (short)getAir());
nbttagcompound.setBoolean("OnGround", onGround); nbttagcompound.setBoolean("OnGround", onGround);
+ nbttagcompound.setCompoundTag("ForgeEntityData", customEntityData); + if(customEntityData!=null) {
+ nbttagcompound.setCompoundTag("ForgeData",
+ customEntityData);
+ }
writeEntityToNBT(nbttagcompound); writeEntityToNBT(nbttagcompound);
} }
@@ -989,6 +1007,10 @@ @@ -989,6 +1010,9 @@
onGround = nbttagcompound.getBoolean("OnGround"); onGround = nbttagcompound.getBoolean("OnGround");
setPosition(posX, posY, posZ); setPosition(posX, posY, posZ);
setRotation(rotationYaw, rotationPitch); setRotation(rotationYaw, rotationPitch);
+ if (nbttagcompound.hasKey("ForgeEntityData")) + if(nbttagcompound.hasKey("ForgeData")) {
+ { + customEntityData=nbttagcompound.getCompoundTag("ForgeData");
+ customEntityData.getCompoundTag("ForgeEntityData");
+ } + }
readEntityFromNBT(nbttagcompound); readEntityFromNBT(nbttagcompound);
} }

View file

@ -16,7 +16,7 @@
+ */ + */
+ public int quantityDropped(int meta, int fortune, Random random) + public int quantityDropped(int meta, int fortune, Random random)
+ { + {
+ return func_40162_a(fortune, random); + return quantityDroppedWithBonus(fortune, random);
+ } + }
+ +
+ /* FORGE: Metadata-sensitive version. + /* FORGE: Metadata-sensitive version.

View file

@ -0,0 +1,16 @@
--- ../src_base/minecraft_server/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/net/minecraft/src/Enchantment.java 0000-00-00 00:00:00.000000000 -0000
@@ -98,6 +98,13 @@
return this;
}
+ /* FORGE: Can enchantment be applied to item. Redirected to allow users to
+ * override it in their Enchantment class.
+ */
+ public boolean canEnchantItem(ItemStack ist) {
+ return type.canEnchantItem(ist.getItem());
+ }
+
static
{
looting = new EnchantmentLootBonus(21, 2, EnumEnchantmentType.weapon);

View file

@ -0,0 +1,11 @@
--- ../src_base/minecraft_server/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
+++ ../src_work/minecraft_server/net/minecraft/src/EnchantmentHelper.java 0000-00-00 00:00:00.000000000 -0000
@@ -271,7 +271,7 @@
for(int k = 0; k < j; k++)
{
Enchantment enchantment = aenchantment[k];
- if(enchantment == null || !enchantment.type.canEnchantItem(item))
+ if(enchantment == null || !enchantment.canEnchantItem(itemstack))
{
continue;
}

View file

@ -23,21 +23,23 @@
public DataWatcher getDataWatcher() public DataWatcher getDataWatcher()
{ {
return dataWatcher; return dataWatcher;
@@ -873,6 +889,7 @@ @@ -873,6 +889,10 @@
nbttagcompound.setShort("Fire", (short)fire); nbttagcompound.setShort("Fire", (short)fire);
nbttagcompound.setShort("Air", (short)getAir()); nbttagcompound.setShort("Air", (short)getAir());
nbttagcompound.setBoolean("OnGround", onGround); nbttagcompound.setBoolean("OnGround", onGround);
+ nbttagcompound.setCompoundTag("ForgeEntityData", customEntityData); + if(customEntityData!=null) {
+ nbttagcompound.setCompoundTag("ForgeData",
+ customEntityData);
+ }
writeEntityToNBT(nbttagcompound); writeEntityToNBT(nbttagcompound);
} }
@@ -907,6 +924,10 @@ @@ -907,6 +927,9 @@
onGround = nbttagcompound.getBoolean("OnGround"); onGround = nbttagcompound.getBoolean("OnGround");
setPosition(posX, posY, posZ); setPosition(posX, posY, posZ);
setRotation(rotationYaw, rotationPitch); setRotation(rotationYaw, rotationPitch);
+ if (nbttagcompound.hasKey("ForgeEntityData")) + if(nbttagcompound.hasKey("ForgeData")) {
+ { + customEntityData=nbttagcompound.getCompoundTag("ForgeData");
+ customEntityData.getCompoundTag("ForgeEntityData");
+ } + }
readEntityFromNBT(nbttagcompound); readEntityFromNBT(nbttagcompound);
} }