diff options
Diffstat (limited to 'src/Java/gtPlusPlus/api')
-rw-r--r-- | src/Java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java | 69 |
1 files changed, 61 insertions, 8 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java b/src/Java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java index de10c11845..64f486b23e 100644 --- a/src/Java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/ShapedRecipe.java @@ -3,6 +3,7 @@ package gtPlusPlus.api.objects.minecraft; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.data.Pair; +import gtPlusPlus.core.util.reflect.ReflectionUtils; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.ShapedOreRecipe; @@ -24,6 +25,8 @@ public class ShapedRecipe { public ShapedRecipe(Object[] aInputs, ItemStack aOutput) { String aGridWhole = ""; String aGrid[] = new String[3]; + char[] aChar = new char[9]; + String[] aLoggingInfo = new String[9]; //Just to be safe try { @@ -33,24 +36,51 @@ public class ShapedRecipe { Object[] mVarags2 = null; Logger.RECIPE("Generating Shaped Crafting Recipe for "+aOutput.getDisplayName()); + if (aInputs.length < 9 || aInputs.length > 9) { + Logger.RECIPE("[1234abcd] Recipe for "+aOutput.getDisplayName()+" has incorrect number of inputs. Size: "+aInputs.length+"."); + Logger.RECIPE("[1234abcd] Reciped exists at location: "+ReflectionUtils.getMethodName(1)); + Logger.RECIPE("[1234abcd] Reciped exists at location: "+ReflectionUtils.getMethodName(2)); + Logger.RECIPE("[1234abcd] Reciped exists at location: "+ReflectionUtils.getMethodName(3)); + Logger.RECIPE("[1234abcd] Reciped exists at location: "+ReflectionUtils.getMethodName(4)); + //Logger.RECIPE("Reciped exists at location: "+ReflectionUtils.getMethodName(1)); + } + + //Build a Pair for each slot AutoMap<Pair<Character, Object>> aRecipePairs = new AutoMap<Pair<Character, Object>>(); int aCharSlot = 0; + int aMemSlot = 0; + int aInfoSlot = 0; for (Object stack : aInputs) { if (stack != null) { - aRecipePairs.put(new Pair<Character, Object>(CHARS.charAt(aCharSlot++), stack)); + + String mInfo = ""; + if (stack instanceof String) { + mInfo = (String) stack; + } + else if (stack instanceof ItemStack) { + mInfo = ((ItemStack) stack).getDisplayName(); + } + + aRecipePairs.put(new Pair<Character, Object>(CHARS.charAt(aCharSlot), stack)); + Logger.RECIPE("Storing '"+CHARS.charAt(aCharSlot)+"' with an object of type "+stack.getClass().getSimpleName()+" and a value of "+mInfo); + aChar[aMemSlot++] = CHARS.charAt(aCharSlot); + aCharSlot++; + aLoggingInfo[aInfoSlot++] = mInfo; } else { - aRecipePairs.put(new Pair<Character, Object>(' ', (ItemStack) null)); + aRecipePairs.put(new Pair<Character, Object>(' ', (ItemStack) null)); + Logger.RECIPE("Storing ' ' with an object of type null"); + aChar[aMemSlot++] = ' '; + aLoggingInfo[aInfoSlot++] = "Empty"; } } + Logger.RECIPE(aRecipePairs.size()+" Char|Object pairs registered for recipe."); //If we have enough valid slots, iterate them and build a String which represents the entire grid. //If this String is the correct length, we will split it into thirds and build the grid String array. if (aRecipePairs.size() == 9) { - Logger.RECIPE("9 Char|Object pairs registered for recipe."); - for (Pair<Character, Object> h : aRecipePairs) { if (h.getKey() != null) { aGridWhole += String.valueOf(h.getKey()); @@ -74,17 +104,25 @@ public class ShapedRecipe { int counter = 3; for (Object stack : aInputs) { if (stack != null) { + String mInfo = ""; + if (stack instanceof String) { + mInfo = (String) stack; + } + else if (stack instanceof ItemStack) { + mInfo = ((ItemStack) stack).getDisplayName(); + } aRecipePairs.put(new Pair<Character, Object>(CHARS.charAt(aCharSlot), stack)); - Logger.RECIPE("Registering Pair of '"+CHARS.charAt(aCharSlot)+" and a "+stack.getClass().getSimpleName()+" object."); + Logger.RECIPE("Registering Pair of '"+CHARS.charAt(aCharSlot)+"' and a "+stack.getClass().getSimpleName()+" object. Object has a value of "+mInfo); aCharSlot++; counter++; } } - Logger.RECIPE("Counter started at 3, counter is now at "+counter+". Trying to create Varag array with a size of "+((counter-3)*2)); + Logger.RECIPE("Counter started at 3, counter is now at "+counter+". Trying to create Varag array with a size of "+(3+(counter-3)*2)); + //Counter started at 3, counter is now at 4. Trying to create Varag array with a size of 2 //Register the shaped grid straight to the varags - mVarags2 = new Object[((counter-3)*2)]; + mVarags2 = new Object[(3+(counter-3)*2)]; mVarags2[0] = aGrid[0]; mVarags2[1] = aGrid[1]; mVarags2[2] = aGrid[2]; @@ -97,7 +135,22 @@ public class ShapedRecipe { mVarags2[counter2] = (char) c; mVarags2[counter2+1] = o; counter2 += 2; - } + } + + Logger.RECIPE("Recipe Summary"); + Logger.RECIPE("+=+=+=+"); + Logger.RECIPE("="+aChar[0]+"="+aChar[1]+"="+aChar[2]+"="); + Logger.RECIPE("+=+=+=+"); + Logger.RECIPE("="+aChar[3]+"="+aChar[4]+"="+aChar[5]+"="); + Logger.RECIPE("+=+=+=+"); + Logger.RECIPE("="+aChar[6]+"="+aChar[7]+"="+aChar[8]+"="); + Logger.RECIPE("+=+=+=+"); + for (int r=0;r<9;r++) { + if (aChar[r] != ' ') { + Logger.RECIPE(""+aChar[r]+" : "+aLoggingInfo[r]); + } + } + } //Try set the recipe for this object. |