Added metadata sensitve experience to furnace recipies and added Item callback to determine experience gain.
This commit is contained in:
parent
9aca08557d
commit
705509054a
|
@ -1,21 +1,24 @@
|
|||
--- ../src_base/common/net/minecraft/src/FurnaceRecipes.java
|
||||
+++ ../src_work/common/net/minecraft/src/FurnaceRecipes.java
|
||||
@@ -1,5 +1,6 @@
|
||||
@@ -1,6 +1,8 @@
|
||||
package net.minecraft.src;
|
||||
|
||||
+import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
+import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -10,6 +11,7 @@
|
||||
public class FurnaceRecipes
|
||||
@@ -10,6 +12,8 @@
|
||||
/** The list of smelting results. */
|
||||
private Map smeltingList = new HashMap();
|
||||
private Map experienceList = new HashMap();
|
||||
+ private Map metaSmeltingList = new HashMap();
|
||||
+ private HashMap<List<Integer>, ItemStack> metaSmeltingList = new HashMap<List<Integer>, ItemStack>();
|
||||
+ private HashMap<List<Integer>, Float> metaExperience = new HashMap<List<Integer>, Float>();
|
||||
|
||||
/**
|
||||
* Used to call methods addSmelting and getSmeltingResult.
|
||||
@@ -51,7 +53,9 @@
|
||||
@@ -51,7 +55,9 @@
|
||||
|
||||
/**
|
||||
* Returns the smelting result of an item.
|
||||
|
@ -25,7 +28,12 @@
|
|||
public ItemStack getSmeltingResult(int par1)
|
||||
{
|
||||
return (ItemStack)this.smeltingList.get(Integer.valueOf(par1));
|
||||
@@ -66,4 +70,34 @@
|
||||
@@ -62,8 +68,70 @@
|
||||
return this.smeltingList;
|
||||
}
|
||||
|
||||
+ @Deprecated //In favor of ItemStack sensitive version
|
||||
public float getExperience(int par1)
|
||||
{
|
||||
return this.experienceList.containsKey(Integer.valueOf(par1)) ? ((Float)this.experienceList.get(Integer.valueOf(par1))).floatValue() : 0.0F;
|
||||
}
|
||||
|
@ -36,11 +44,21 @@
|
|||
+ * @param metadata The Item Metadata
|
||||
+ * @param itemstack The ItemStack for the result
|
||||
+ */
|
||||
+ @Deprecated //In favor of the exp version, will remove next major MC version.
|
||||
+ public void addSmelting(int itemID, int metadata, ItemStack itemstack)
|
||||
+ {
|
||||
+ metaSmeltingList.put(Arrays.asList(itemID, metadata), itemstack);
|
||||
+ addSmelting(itemID, metadata, itemstack, 0.0f);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ /**
|
||||
+ * A metadata sensitive version of adding a furnace recipe.
|
||||
+ */
|
||||
+ public void addSmelting(int itemID, int metadata, ItemStack itemstack, float experience)
|
||||
+ {
|
||||
+ metaSmeltingList.put(Arrays.asList(itemID, metadata), itemstack);
|
||||
+ metaExperience.put(Arrays.asList(itemID, metadata), experience);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Used to get the resulting ItemStack form a source ItemStack
|
||||
+ * @param item The Source ItemStack
|
||||
|
@ -58,5 +76,26 @@
|
|||
+ return ret;
|
||||
+ }
|
||||
+ return (ItemStack)smeltingList.get(Integer.valueOf(item.itemID));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Grabs the amount of base experience for this item to give when pulled from the furnace slot.
|
||||
+ */
|
||||
+ public float getExperience(ItemStack item)
|
||||
+ {
|
||||
+ if (item == null || item.getItem() == null)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ float ret = item.getItem().getSmeltingExperience(item);
|
||||
+ if (ret < 0 && metaExperience.containsKey(Arrays.asList(item.itemID, item.getItemDamage())))
|
||||
+ {
|
||||
+ ret = metaExperience.get(Arrays.asList(item.itemID, item.getItemDamage()));
|
||||
+ }
|
||||
+ if (ret < 0 && experienceList.containsKey(item.itemID))
|
||||
+ {
|
||||
+ ret = ((Float)experienceList.get(item.itemID)).floatValue();
|
||||
+ }
|
||||
+ return (ret < 0 ? 0 : ret);
|
||||
+ }
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
Vec3 var23 = var13.addVector((double)var18 * var21, (double)var17 * var21, (double)var20 * var21);
|
||||
return par1World.rayTraceBlocks_do_do(var13, var23, par3, !par3);
|
||||
}
|
||||
@@ -674,4 +686,252 @@
|
||||
@@ -674,4 +686,265 @@
|
||||
{
|
||||
StatList.initStats();
|
||||
}
|
||||
|
@ -288,5 +288,18 @@
|
|||
+ public CreativeTabs[] getCreativeTabs()
|
||||
+ {
|
||||
+ return new CreativeTabs[]{ getCreativeTab() };
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Determines the base experience for a player when they remove this item from a furnace slot.
|
||||
+ * This number must be between 0 and 1 for it to be valid.
|
||||
+ * This number will be multiplied by the stack size to get the total experience.
|
||||
+ *
|
||||
+ * @param item The item stack the player is picking up.
|
||||
+ * @return The amount to award for each item.
|
||||
+ */
|
||||
+ public float getSmeltingExperience(ItemStack item)
|
||||
+ {
|
||||
+ return -1; //-1 will default to the old lookups.
|
||||
+ }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
--- ../src_base/common/net/minecraft/src/SlotFurnace.java
|
||||
+++ ../src_work/common/net/minecraft/src/SlotFurnace.java
|
||||
@@ -62,7 +62,7 @@
|
||||
if (!this.thePlayer.worldObj.isRemote)
|
||||
{
|
||||
int var2 = this.field_75228_b;
|
||||
- float var3 = FurnaceRecipes.smelting().getExperience(par1ItemStack.itemID);
|
||||
+ float var3 = FurnaceRecipes.smelting().getExperience(par1ItemStack);
|
||||
int var4;
|
||||
|
||||
if (var3 == 0.0F)
|
Loading…
Reference in New Issue