From 23ccd878bd35dc848e4c7b19c2cc8135318e9dcb Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 11 Oct 2017 17:42:27 +0100 Subject: [PATCH] Fix rolling machine CT --- .../compat/crafttweaker/CTRollingMachine.java | 24 ++++++++++++++++++- .../crafttweaker/CraftTweakerCompat.java | 6 ++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/techreborn/compat/crafttweaker/CTRollingMachine.java b/src/main/java/techreborn/compat/crafttweaker/CTRollingMachine.java index 37a166d08..3e3687956 100644 --- a/src/main/java/techreborn/compat/crafttweaker/CTRollingMachine.java +++ b/src/main/java/techreborn/compat/crafttweaker/CTRollingMachine.java @@ -26,6 +26,8 @@ package techreborn.compat.crafttweaker; import crafttweaker.api.item.IIngredient; import crafttweaker.api.item.IItemStack; +import gnu.trove.set.TCharSet; +import gnu.trove.set.hash.TCharHashSet; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import reborncore.common.util.ItemUtils; @@ -64,11 +66,15 @@ public class CTRollingMachine { } } + //Stolen from https://github.com/jaredlll08/MTLib/blob/1.12/src/main/java/com/blamejared/mtlib/helpers/InputHelper.java#L170-L213 + //License as seen here: https://github.com/jaredlll08/MTLib/blob/1.12/LICENSE.md (MIT at time of writing) public static Object[] toShapedObjects(IIngredient[][] ingredients) { if (ingredients == null) return null; else { - ArrayList prep = new ArrayList(); + ArrayList prep = new ArrayList<>(); + TCharSet usedCharSet = new TCharHashSet(); + prep.add("abc"); prep.add("def"); prep.add("ghi"); @@ -78,11 +84,27 @@ public class CTRollingMachine { for (int y = 0; y < ingredients[x].length; y++) { if (ingredients[x][y] != null && x < map.length && y < map[x].length) { prep.add(map[x][y]); + usedCharSet.add(map[x][y]); prep.add(CraftTweakerCompat.toObject(ingredients[x][y])); } } } } + for (int i = 0; i < 3; i++) { + StringBuilder sb = new StringBuilder(); + if (prep.get(i) instanceof String) { + String s = (String) prep.get(i); + for (int j = 0; j < 3; j++) { + char c = s.charAt(j); + if (usedCharSet.contains(c)) { + sb.append(c); + } else { + sb.append(" "); + } + } + prep.set(i, sb.toString()); + } + } return prep.toArray(); } } diff --git a/src/main/java/techreborn/compat/crafttweaker/CraftTweakerCompat.java b/src/main/java/techreborn/compat/crafttweaker/CraftTweakerCompat.java index df4e01fdd..d8bb4be7d 100644 --- a/src/main/java/techreborn/compat/crafttweaker/CraftTweakerCompat.java +++ b/src/main/java/techreborn/compat/crafttweaker/CraftTweakerCompat.java @@ -45,14 +45,14 @@ import static crafttweaker.api.minecraft.CraftTweakerMC.getLiquidStack; public class CraftTweakerCompat implements ICompatModule { public static ItemStack toStack(IItemStack iStack) { if (iStack == null){ - return null; + return ItemStack.EMPTY; } return getItemStack(iStack); } public static Object toObject(IIngredient iStack) { if (iStack == null) - return null; + return ItemStack.EMPTY; else { if (iStack instanceof IOreDictEntry) return ((IOreDictEntry) iStack).getName(); @@ -62,7 +62,7 @@ public class CraftTweakerCompat implements ICompatModule { IIngredient ingr = ReflectionHelper.getPrivateValue(IngredientStack.class, (IngredientStack) iStack, "ingredient"); return toObject(ingr); } else - return null; + return ItemStack.EMPTY; } }