From ae565e9ee83747d9a4f080264b6aea3f7a162fa5 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Mon, 12 Dec 2016 00:36:54 -0500 Subject: [PATCH] From 1.10 branch: Fix comp drawers allowing invalid material transformation; fix comp drawers mishandling some items like snowballs; fix controller range config sync; fix possible crash if controller asked to find null item. --- build.gradle | 2 +- .../block/tile/TileEntityController.java | 3 +++ .../block/tile/TileEntityDrawersComp.java | 4 ++-- .../storagedrawers/config/ConfigManager.java | 2 ++ .../config/OreDictRegistry.java | 21 ++++++++++--------- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 3527c20..9d67833 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-1.10.7" +version = "1.7.10-1.10.8" 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/TileEntityController.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java index ac129a7..4775b81 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityController.java @@ -921,6 +921,9 @@ public class TileEntityController extends TileEntity implements IDrawerGroup, IP @Override public Iterator iterator () { + if (this.stack == null) + return new ArrayList(0).iterator(); + return new Iterator () { List primaryRecords = drawerPrimaryLookup.getEntries(stack.getItem(), stack.getItemDamage()); diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java index 864a0aa..889e370 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawersComp.java @@ -323,7 +323,7 @@ public class TileEntityDrawersComp extends TileEntityDrawers ItemStack match = null; ItemStack output = recipe.getRecipeOutput(); - if (!DrawerData.areItemsEqual(stack, output, false)) + if (!DrawerData.areItemsEqual(stack, output, true)) continue; IRecipeHandler handler = StorageDrawers.recipeHandlerRegistry.getRecipeHandler(recipe.getClass()); @@ -594,7 +594,7 @@ public class TileEntityDrawersComp extends TileEntityDrawers return Integer.MAX_VALUE / convRate[slot]; } - return protoStack[slot].getItem().getItemStackLimit(protoStack[slot]) * getStackCapacity(slot); + return protoStack[0].getItem().getItemStackLimit(protoStack[0]) * getStackCapacity(0) * getConversionRate(slot); } @Override diff --git a/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java b/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java index adbd688..be22169 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java +++ b/src/com/jaquadro/minecraft/storagedrawers/config/ConfigManager.java @@ -304,6 +304,8 @@ public class ConfigManager cache.addonShowVanilla = config.get(sectionAddons.getQualifiedName(), "showBlocksInCreative", true).setLanguageKey(LANG_PREFIX + "addons.showCreative").setRequiresWorldRestart(true).getBoolean(); cache.addonSeparateVanilla = config.get(sectionAddons.getQualifiedName(), "useSeparateCreativeTabs", true).setLanguageKey(LANG_PREFIX + "addons.separateTabs").setRequiresMcRestart(true).getBoolean(); + getControllerRange(); + if (config.hasChanged()) config.save(); } diff --git a/src/com/jaquadro/minecraft/storagedrawers/config/OreDictRegistry.java b/src/com/jaquadro/minecraft/storagedrawers/config/OreDictRegistry.java index 1f1b450..ae62733 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/config/OreDictRegistry.java +++ b/src/com/jaquadro/minecraft/storagedrawers/config/OreDictRegistry.java @@ -48,20 +48,21 @@ public class OreDictRegistry addBlacklist("resourceTaint"); addBlacklist("slimeball"); + addBlacklist("blockMetal"); + addBlacklist("ingotMetal"); + addBlacklist("nuggetMetal"); + addBlacklistPrefix("list"); addBlacklistPrefix("dye"); - for (String item : new String[] { "oreIron", "oreGold", "oreAluminum", "oreAluminium", "oreTin", "oreCopper", "oreLead", "oreSilver", "orePlatinum", "oreNickel" }) - addWhitelist(item); + String[] oreTypes = { "ore", "block", "ingot", "nugget" }; + String[] oreMaterials = { "Iron", "Gold", "Diamond", "Emerald", "Aluminum", "Aluminium", "Tin", "Copper", "Lead", + "Silver", "Platinum", "Nickel", "Osmium", "Invar", "Bronze", "Electrum", "Enderium" }; - for (String item : new String[] { "blockIron", "blockGold", "blockAluminum", "blockAluminium", "blockTin", "blockCopper", "blockLead", "blockSilver", "blockPlatinum", "blockNickel" }) - addWhitelist(item); - - for (String item : new String[] { "ingotIron", "ingotGold", "ingotAluminum", "ingotAluminium", "ingotTin", "ingotCopper", "ingotLead", "ingotSilver", "ingotPlatinum", "ingotNickel" }) - addWhitelist(item); - - for (String item : new String[] { "nuggetIron", "nuggetGold", "nuggetAluminum", "nuggetAluminium", "nuggetTin", "nuggetCopper", "nuggetLead", "nuggetSilver", "nuggetPlatinum", "nuggetNickel" }) - addWhitelist(item); + for (String ore : oreMaterials) { + for (String type : oreTypes) + addWhitelist(type + ore); + } } public boolean addBlacklist (String entry) {