From f4ea33db4e196e094373eee261c2b49790a756f0 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Sun, 12 Jul 2015 02:21:59 -0400 Subject: [PATCH] Fix conversion rate bug in compacting drawers for some descending lookups; add more debug logging. --- build.gradle | 2 +- .../block/tile/TileEntityDrawersComp.java | 27 ++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 0bb356e..38ec380 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-1.5.11" +version = "1.7.10-1.5.12" group= "com.jaquadro.minecraft.storagedrawers" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "StorageDrawers" diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java index a55eb19..6b37560 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java @@ -9,6 +9,7 @@ import com.jaquadro.minecraft.storagedrawers.config.CompTierRegistry; import com.jaquadro.minecraft.storagedrawers.config.ConfigManager; import com.jaquadro.minecraft.storagedrawers.network.CountUpdateMessage; import com.jaquadro.minecraft.storagedrawers.storage.*; +import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.registry.GameData; @@ -19,9 +20,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; +import org.apache.logging.log4j.Level; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class TileEntityDrawersComp extends TileEntityDrawers { @@ -181,6 +185,9 @@ public class TileEntityDrawersComp extends TileEntityDrawers ItemStack lTier1 = findLowerTier(stack); if (lTier1 != null) { + if (!worldObj.isRemote && StorageDrawers.config.cache.debugTrace) + FMLLog.log(StorageDrawers.MOD_ID, Level.INFO, "Picked candidate " + lTier1.toString() + " with conv=" + lookupSizeResult); + populateSlot(index++, lTier1, 1); for (int i = 0; i < index - 1; i++) convRate[i] *= lookupSizeResult; @@ -191,6 +198,9 @@ public class TileEntityDrawersComp extends TileEntityDrawers ItemStack lTier2 = findLowerTier(lTier1); if (lTier2 != null) { + if (!worldObj.isRemote && StorageDrawers.config.cache.debugTrace) + FMLLog.log(StorageDrawers.MOD_ID, Level.INFO, "Picked candidate " + lTier2.toString() + " with conv=" + lookupSizeResult); + populateSlot(index++, lTier2, 1); for (int i = 0; i < index - 1; i++) convRate[i] *= lookupSizeResult; @@ -246,6 +256,7 @@ public class TileEntityDrawersComp extends TileEntityDrawers List recipeList = cm.getRecipeList(); List candidates = new ArrayList(); + Map candidatesRate = new HashMap(); for (int i = 0, n = recipeList.size(); i < n; i++) { IRecipe recipe = (IRecipe) recipeList.get(i); @@ -278,16 +289,26 @@ public class TileEntityDrawersComp extends TileEntityDrawers if (DrawerData.areItemsEqual(match, comp) && comp.stackSize == recipe.getRecipeSize()) { lookupSizeResult = recipe.getRecipeSize(); candidates.add(match); + candidatesRate.put(match, lookupSizeResult); + + if (!worldObj.isRemote && StorageDrawers.config.cache.debugTrace) + FMLLog.log(StorageDrawers.MOD_ID, Level.INFO, "Found descending candidate for " + stack.toString() + ": " + match.toString() + " size=" + lookupSizeResult + ", inverse=" + comp.toString()); } } } ItemStack modMatch = findMatchingModCandidate(stack, candidates); - if (modMatch != null) + if (modMatch != null) { + lookupSizeResult = candidatesRate.get(modMatch); return modMatch; + } - if (candidates.size() > 0) - return candidates.get(0); + if (candidates.size() > 0) { + ItemStack match = candidates.get(0); + lookupSizeResult = candidatesRate.get(match); + + return match; + } return null; }