Infusion Repair supports OreDictionary entries. Also fixes #126.

master
sealedinterface 2016-05-31 18:27:41 -07:00
parent 1c78aed706
commit 37de46033c
8 changed files with 196 additions and 123 deletions

View File

@ -1,6 +1,5 @@
package net.einsteinsci.betterbeginnings.client;
import net.einsteinsci.betterbeginnings.ModMain;
import net.einsteinsci.betterbeginnings.tileentity.TileEntityInfusionRepair;
import net.einsteinsci.betterbeginnings.util.LogUtil;
import net.minecraft.client.Minecraft;
@ -8,6 +7,7 @@ import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.relauncher.Side;
@ -185,7 +185,16 @@ public class InfusionRender extends TileEntitySpecialRenderer
return;
}
ItemStack stack = new ItemStack(ing.item, ing.count, ing.damage);
ItemStack stack = new ItemStack(Blocks.barrier);
if (ing.ore.getValidItems().size() > 0)
{
int maxOreItem = ing.ore.getValidItems().size();
int det = te.getTicksAge() / 30;
int oreItem = det % maxOreItem;
stack = ing.ore.getValidItems().get(oreItem).copy();
}
GlStateManager.pushMatrix();
GlStateManager.color(1F, 1F, 1F, 1F);

View File

@ -2,6 +2,7 @@ package net.einsteinsci.betterbeginnings.config.json;
import net.einsteinsci.betterbeginnings.config.json.recipe.JsonRepairInfusionAssociation;
import net.einsteinsci.betterbeginnings.config.json.recipe.JsonRepairInfusionHandler;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.einsteinsci.betterbeginnings.util.FileUtil;
import net.einsteinsci.betterbeginnings.util.LogUtil;
import net.minecraft.item.ItemStack;
@ -24,7 +25,7 @@ public class RepairInfusionConfig implements IJsonConfig
private List<JsonRepairInfusionHandler> includes = new ArrayList<>();
public static void registerEnchantment(int enchID, ItemStack associatedItem)
public static void registerEnchantment(int enchID, OreRecipeElement associatedItem)
{
initialAssociations.getEnchantmentAssociations().add(new JsonRepairInfusionAssociation(enchID, associatedItem));
}

View File

@ -1,6 +1,7 @@
package net.einsteinsci.betterbeginnings.config.json.recipe;
import net.einsteinsci.betterbeginnings.config.json.JsonLoadedItemStack;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.einsteinsci.betterbeginnings.util.InfusionRepairUtil;
import net.minecraft.item.ItemStack;
@ -9,15 +10,30 @@ public class JsonRepairInfusionAssociation
private int enchantmentID;
private JsonLoadedItemStack associatedItem;
public JsonRepairInfusionAssociation(int enchID, ItemStack stack)
public JsonRepairInfusionAssociation(int enchID, OreRecipeElement stack)
{
enchantmentID = enchID;
associatedItem = new JsonLoadedItemStack(stack);
if (!stack.getOreDictionaryEntry().isEmpty())
{
associatedItem = JsonLoadedItemStack.makeOreDictionary(stack.getOreDictionaryEntry());
}
else
{
associatedItem = new JsonLoadedItemStack(stack.getFirst());
}
}
public void register()
{
InfusionRepairUtil.registerEnchantment(enchantmentID, associatedItem.getFirstItemStackOrNull());
if (associatedItem.isOreDictionary())
{
InfusionRepairUtil.registerEnchantment(enchantmentID, new OreRecipeElement(associatedItem.getItemName()));
}
else
{
InfusionRepairUtil.registerEnchantment(enchantmentID, new OreRecipeElement(associatedItem.getFirstItemStackOrNull()));
}
}
public int getEnchantmentID()

View File

@ -1,5 +1,6 @@
package net.einsteinsci.betterbeginnings.inventory;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.einsteinsci.betterbeginnings.util.InfusionRepairUtil;
import net.einsteinsci.betterbeginnings.register.RegisterItems;
import net.einsteinsci.betterbeginnings.register.achievement.RegisterAchievements;
@ -14,9 +15,6 @@ import net.minecraftforge.oredict.OreDictionary;
import java.util.ArrayList;
/**
* Created by einsteinsci on 8/20/2014.
*/
public class SlotInfusionRepairResult extends Slot
{
IInventory inputSlots;
@ -39,17 +37,15 @@ public class SlotInfusionRepairResult extends Slot
InventoryInfusionRepair inputs = (InventoryInfusionRepair)inputSlots;
ArrayList<ItemStack> required = InfusionRepairUtil.getRequiredStacks(inputs);
ArrayList<OreRecipeElement> required = InfusionRepairUtil.getRequiredStacks(inputs);
for (ItemStack requiredStack : required)
for (OreRecipeElement requiredStack : required)
{
for (int i = 0; i < inputSlots.getSizeInventory(); ++i)
{
if (requiredStack != null && inputSlots.getStackInSlot(i) != null)
{
if (requiredStack.getItem() == inputSlots.getStackInSlot(i).getItem() &&
(requiredStack.getItemDamage() == OreDictionary.WILDCARD_VALUE ||
requiredStack.getItemDamage() == inputSlots.getStackInSlot(i).getItemDamage()))
if (requiredStack.matches(inputSlots.getStackInSlot(i)))
{
inputSlots.decrStackSize(i, requiredStack.stackSize);
@ -64,8 +60,7 @@ public class SlotInfusionRepairResult extends Slot
if (containerStack != null && containerStack.isItemStackDamageable() && containerStack
.getItemDamage() > containerStack.getMaxDamage())
{
MinecraftForge.EVENT_BUS
.post(new PlayerDestroyItemEvent(entityPlayer, containerStack));
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(entityPlayer, containerStack));
continue;
}

View File

@ -4,6 +4,7 @@ import net.einsteinsci.betterbeginnings.ModMain;
import net.einsteinsci.betterbeginnings.blocks.BlockInfusionRepairStation;
import net.einsteinsci.betterbeginnings.config.BBConfig;
import net.einsteinsci.betterbeginnings.register.IBBName;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.einsteinsci.betterbeginnings.tileentity.TileEntityInfusionRepair;
import net.einsteinsci.betterbeginnings.util.ChatUtil;
import net.minecraft.block.Block;
@ -65,13 +66,13 @@ public class ItemInfusionScroll extends Item implements IBBName
}
else if (ingredient.isXP)
{
ChatUtil.sendChatToPlayer(player, I18n.format("scroll.xp", ingredient.count));
ChatUtil.sendChatToPlayer(player, I18n.format("scroll.xp", ingredient.xp));
}
else
{
ItemStack ingredientStack = new ItemStack(ingredient.item, ingredient.count, ingredient.damage);
ChatUtil.sendChatToPlayer(player, I18n.format("scroll.item", ingredient.count,
ingredientStack.getDisplayName()));
OreRecipeElement ingredientStack = ingredient.ore;
ChatUtil.sendChatToPlayer(player, I18n.format("scroll.item", ingredient.ore.stackSize,
ingredientStack.getFirst().getDisplayName()));
}
}
else

View File

@ -1,5 +1,7 @@
package net.einsteinsci.betterbeginnings.register.recipe;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
@ -20,6 +22,32 @@ public class OreRecipeElement
stackSize = stack.stackSize;
}
public OreRecipeElement(Item item)
{
this(new ItemStack(item));
}
public OreRecipeElement(Item item, int count)
{
this(new ItemStack(item, count));
}
public OreRecipeElement(Item item, int count, int meta)
{
this(new ItemStack(item, count, meta));
}
public OreRecipeElement(Block block)
{
this(new ItemStack(block));
}
public OreRecipeElement(Block block, int count)
{
this(new ItemStack(block, count));
}
public OreRecipeElement(Block block, int count, int meta)
{
this(new ItemStack(block, count, meta));
}
public OreRecipeElement(String dictionaryEntry, int size)
{
validItems = new ArrayList<>();
@ -28,6 +56,11 @@ public class OreRecipeElement
stackSize = size;
}
public OreRecipeElement(String dictionaryEntry)
{
this(dictionaryEntry, 1);
}
public OreRecipeElement(List<ItemStack> valid, String entry, int size)
{
validItems = valid;

View File

@ -1,10 +1,9 @@
package net.einsteinsci.betterbeginnings.tileentity;
import io.netty.handler.logging.LogLevel;
import net.einsteinsci.betterbeginnings.ModMain;
import net.einsteinsci.betterbeginnings.config.BBConfig;
import net.einsteinsci.betterbeginnings.event.DamageSourceDiffusion;
import net.einsteinsci.betterbeginnings.items.*;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.einsteinsci.betterbeginnings.util.ChatUtil;
import net.einsteinsci.betterbeginnings.util.InfusionRepairUtil;
import net.einsteinsci.betterbeginnings.util.LogUtil;
@ -24,7 +23,6 @@ import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.server.gui.IUpdatePlayerListBox;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*;
import net.minecraftforge.oredict.OreDictionary;
import org.apache.logging.log4j.Level;
import java.util.*;
@ -427,9 +425,9 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
if (next.isXP)
{
if (levelsToFill != next.count)
if (levelsToFill != next.xp)
{
levelsToFill = (short)next.count;
levelsToFill = (short)next.xp;
worldObj.markBlockForUpdate(pos);
markDirty();
@ -463,24 +461,31 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
markDirty();
}
}
for (EntityItem ei : entitiesOnTop)
else
{
ItemStack stack = ei.getEntityItem();
if (stack.getItem() == next.item && stack.stackSize >= next.count &&
stack.getItemDamage() == next.damage || next.damage == OreDictionary.WILDCARD_VALUE)
for (EntityItem ei : entitiesOnTop)
{
stack.stackSize -= next.count;
addInput(new ItemStack(next.item, next.count, next.damage));
ItemStack stack = ei.getEntityItem();
if (stack.stackSize <= 0)
if (next.ore == null)
{
ei.setDead();
LogUtil.logDebug(Level.ERROR, "next.ore is null!");
continue;
}
worldObj.markBlockForUpdate(pos);
markDirty();
if (next.ore.matches(stack) && stack.stackSize >= next.ore.stackSize)
{
stack.stackSize -= next.ore.stackSize;
addInput(new ItemStack(stack.getItem(), next.ore.stackSize, stack.getMetadata()));
if (stack.stackSize <= 0)
{
ei.setDead();
}
worldObj.markBlockForUpdate(pos);
markDirty();
}
}
}
}
@ -606,7 +611,8 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
Item item = stack.getItem();
return item instanceof ItemTool || item instanceof ItemSword || item instanceof ItemArmor;
return item instanceof ItemTool || item instanceof ItemSword || item instanceof ItemArmor ||
item instanceof ItemBow || item instanceof ItemFishingRod || item instanceof ItemFlintAndSteel;
}
// when TE is clicked by player
@ -641,7 +647,7 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
return null;
}
List<ItemStack> req = InfusionRepairUtil.getRequiredStacks(stackTool());
List<OreRecipeElement> req = InfusionRepairUtil.getRequiredStacks(stackTool());
if (req == null || req.isEmpty())
{
@ -655,11 +661,10 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
continue;
}
ItemStack needs = null;
for (ItemStack s : req)
OreRecipeElement needs = null;
for (OreRecipeElement s : req)
{
if (s.getItem().equals(sHas.getItem()) && sHas.stackSize >= s.stackSize &&
(s.getItemDamage() == sHas.getItemDamage() || s.getItemDamage() == OreDictionary.WILDCARD_VALUE))
if (s.matches(sHas))
{
needs = s;
break;
@ -677,8 +682,8 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
return new InfusionIngredient(InfusionRepairUtil.getTakenLevels(stackTool()));
}
ItemStack stack = req.get(0);
return new InfusionIngredient(stack.getItem(), stack.stackSize, stack.getItemDamage());
OreRecipeElement ore = req.get(0);
return new InfusionIngredient(ore);
}
public boolean diffusionHasTool()
@ -759,24 +764,27 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
public static class InfusionIngredient
{
public Item item;
public int count;
public int damage;
public OreRecipeElement ore;
public boolean isXP;
public int xp;
public InfusionIngredient(Item _item, int _count, int _damage)
public InfusionIngredient(Item item, int _count, int meta)
{
isXP = false;
item = _item;
count = _count;
damage = _damage;
ore = new OreRecipeElement(new ItemStack(item, _count, meta));
}
public InfusionIngredient(OreRecipeElement _ore)
{
ore = _ore;
isXP = false;
}
public InfusionIngredient(int levelCount)
{
isXP = true;
count = levelCount;
xp = levelCount;
}
@Override
@ -784,10 +792,17 @@ public class TileEntityInfusionRepair extends TileEntity implements IUpdatePlaye
{
if (isXP)
{
return "XP: " + count + "L";
return "XP: " + xp + "L";
}
return count + "x" + item.getUnlocalizedName() + "@" + damage;
if (ore.getOreDictionaryEntry().isEmpty())
{
return ore.stackSize + "x" + ore.getFirst().getUnlocalizedName() + "@" + ore.getFirst().getItemDamage();
}
else
{
return ore.stackSize + "x" + ore.getOreDictionaryEntry();
}
}
}
}

View File

@ -3,6 +3,7 @@ package net.einsteinsci.betterbeginnings.util;
import net.einsteinsci.betterbeginnings.config.json.RepairInfusionConfig;
import net.einsteinsci.betterbeginnings.inventory.InventoryInfusionRepair;
import net.einsteinsci.betterbeginnings.register.RegisterItems;
import net.einsteinsci.betterbeginnings.register.recipe.OreRecipeElement;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@ -19,42 +20,42 @@ import java.util.Map;
public class InfusionRepairUtil
{
public static Map<Integer, ItemStack> enchantmentMapping = new HashMap<>();
public static Map<Integer, OreRecipeElement> enchantmentMapping = new HashMap<>();
public static void registerVanillaEnchantsConfig()
{
RepairInfusionConfig.registerEnchantment(0, new ItemStack(Blocks.iron_bars, 2));
RepairInfusionConfig.registerEnchantment(1, new ItemStack(Items.bucket));
RepairInfusionConfig.registerEnchantment(2, new ItemStack(Items.feather, 2));
RepairInfusionConfig.registerEnchantment(3, new ItemStack(Blocks.cobblestone, 8));
RepairInfusionConfig.registerEnchantment(4, new ItemStack(Items.snowball, 4));
RepairInfusionConfig.registerEnchantment(5, new ItemStack(Items.glass_bottle));
RepairInfusionConfig.registerEnchantment(6, new ItemStack(Blocks.clay));
RepairInfusionConfig.registerEnchantment(7, new ItemStack(Blocks.cactus, 4));
RepairInfusionConfig.registerEnchantment(8, new ItemStack(Blocks.prismarine));
RepairInfusionConfig.registerEnchantment(0, new OreRecipeElement(Blocks.iron_bars, 2));
RepairInfusionConfig.registerEnchantment(1, new OreRecipeElement(Items.bucket));
RepairInfusionConfig.registerEnchantment(2, new OreRecipeElement(Items.feather, 2));
RepairInfusionConfig.registerEnchantment(3, new OreRecipeElement("cobblestone", 8));
RepairInfusionConfig.registerEnchantment(4, new OreRecipeElement(Items.snowball, 4));
RepairInfusionConfig.registerEnchantment(5, new OreRecipeElement(Items.glass_bottle));
RepairInfusionConfig.registerEnchantment(6, new OreRecipeElement(Blocks.clay));
RepairInfusionConfig.registerEnchantment(7, new OreRecipeElement(Blocks.cactus, 4));
RepairInfusionConfig.registerEnchantment(8, new OreRecipeElement(Blocks.prismarine));
RepairInfusionConfig.registerEnchantment(16, new ItemStack(Items.quartz, 4));
RepairInfusionConfig.registerEnchantment(17, new ItemStack(Blocks.soul_sand, 2));
RepairInfusionConfig.registerEnchantment(18, new ItemStack(Items.fermented_spider_eye));
RepairInfusionConfig.registerEnchantment(19, new ItemStack(Blocks.piston));
RepairInfusionConfig.registerEnchantment(20, new ItemStack(Items.blaze_powder, 2));
RepairInfusionConfig.registerEnchantment(21, new ItemStack(Items.gold_ingot, 2));
RepairInfusionConfig.registerEnchantment(16, new OreRecipeElement("gemQuartz", 4));
RepairInfusionConfig.registerEnchantment(17, new OreRecipeElement(Blocks.soul_sand, 2));
RepairInfusionConfig.registerEnchantment(18, new OreRecipeElement(Items.fermented_spider_eye));
RepairInfusionConfig.registerEnchantment(19, new OreRecipeElement(Blocks.piston));
RepairInfusionConfig.registerEnchantment(20, new OreRecipeElement(Items.blaze_powder, 2));
RepairInfusionConfig.registerEnchantment(21, new OreRecipeElement("ingotGold", 2));
RepairInfusionConfig.registerEnchantment(32, new ItemStack(Items.sugar, 4));
RepairInfusionConfig.registerEnchantment(33, new ItemStack(RegisterItems.cloth, 8));
RepairInfusionConfig.registerEnchantment(34, new ItemStack(Blocks.obsidian));
RepairInfusionConfig.registerEnchantment(35, new ItemStack(Items.dye, 4, 4));
RepairInfusionConfig.registerEnchantment(32, new OreRecipeElement(Items.sugar, 4));
RepairInfusionConfig.registerEnchantment(33, new OreRecipeElement(RegisterItems.cloth, 8));
RepairInfusionConfig.registerEnchantment(34, new OreRecipeElement(Blocks.obsidian));
RepairInfusionConfig.registerEnchantment(35, new OreRecipeElement("gemLapis", 4));
RepairInfusionConfig.registerEnchantment(48, new ItemStack(RegisterItems.leatherStrip));
RepairInfusionConfig.registerEnchantment(49, new ItemStack(Items.gunpowder));
RepairInfusionConfig.registerEnchantment(50, new ItemStack(Items.fire_charge));
RepairInfusionConfig.registerEnchantment(51, new ItemStack(Items.arrow, 16));
RepairInfusionConfig.registerEnchantment(48, new OreRecipeElement(RegisterItems.leatherStrip));
RepairInfusionConfig.registerEnchantment(49, new OreRecipeElement(Items.gunpowder));
RepairInfusionConfig.registerEnchantment(50, new OreRecipeElement(Items.fire_charge));
RepairInfusionConfig.registerEnchantment(51, new OreRecipeElement(Items.arrow, 16));
RepairInfusionConfig.registerEnchantment(61, new ItemStack(Blocks.waterlily));
RepairInfusionConfig.registerEnchantment(62, new ItemStack(Items.fish, 1, 3));
RepairInfusionConfig.registerEnchantment(61, new OreRecipeElement(Blocks.waterlily));
RepairInfusionConfig.registerEnchantment(62, new OreRecipeElement(Items.fish, 1, 3));
}
public static void registerEnchantment(int enchID, ItemStack stack)
public static void registerEnchantment(int enchID, OreRecipeElement stack)
{
enchantmentMapping.put(enchID, stack);
}
@ -66,7 +67,7 @@ public class InfusionRepairUtil
public static boolean canRepairIgnoreXp(InventoryInfusionRepair repairTable)
{
ArrayList<ItemStack> requiredItems = getRequiredStacks(repairTable);
ArrayList<OreRecipeElement> requiredItems = getRequiredStacks(repairTable);
if (repairTable.getStackInSlot(0) == null)
{
@ -78,7 +79,7 @@ public class InfusionRepairUtil
return false;
}
for (ItemStack needed : requiredItems)
for (OreRecipeElement needed : requiredItems)
{
boolean foundIt = false;
for (int j = 1; j < repairTable.getSizeInventory(); ++j)
@ -86,10 +87,7 @@ public class InfusionRepairUtil
if (repairTable.getStackInSlot(j) != null)
{
ItemStack tested = repairTable.getStackInSlot(j);
if (tested.getItem() == needed.getItem() &&
(tested.getItemDamage() == needed.getItemDamage() || needed
.getItemDamage() == OreDictionary.WILDCARD_VALUE) &&
tested.stackSize >= needed.stackSize)
if (needed.matches(tested))
{
foundIt = true;
break;
@ -225,14 +223,14 @@ public class InfusionRepairUtil
return 0;
}
public static ArrayList<ItemStack> getRequiredStacks(InventoryInfusionRepair repairTable)
public static ArrayList<OreRecipeElement> getRequiredStacks(InventoryInfusionRepair repairTable)
{
return getRequiredStacks(repairTable.getStackInSlot(0));
}
public static ArrayList<ItemStack> getRequiredStacks(ItemStack repaired)
public static ArrayList<OreRecipeElement> getRequiredStacks(ItemStack repaired)
{
ArrayList<ItemStack> requiredItems = new ArrayList<>();
ArrayList<OreRecipeElement> requiredItems = new ArrayList<>();
if (repaired == null)
{
@ -246,25 +244,25 @@ public class InfusionRepairUtil
if (repaired.getItem() instanceof ItemBow)
{
requiredItems.add(new ItemStack(Items.stick, 2));
requiredItems.add(new ItemStack(Items.string, 2));
requiredItems.add(new OreRecipeElement("stickWood", 2));
requiredItems.add(new OreRecipeElement("itemString", 2));
}
if (repaired.getItem() == RegisterItems.noobWoodSword)
{
requiredItems.add(new ItemStack(Blocks.planks, 1, OreDictionary.WILDCARD_VALUE));
requiredItems.add(new OreRecipeElement("plankWood"));
}
else if (repaired.getItem() == RegisterItems.flintKnife || repaired.getItem() == RegisterItems.flintHatchet)
{
requiredItems.add(new ItemStack(Items.flint));
requiredItems.add(new OreRecipeElement(Items.flint));
}
else if (repaired.getItem() == RegisterItems.boneKnife)
{
requiredItems.add(new ItemStack(Items.bone));
requiredItems.add(new OreRecipeElement(Items.bone));
}
else if (repaired.getItem() == RegisterItems.bonePickaxe)
{
requiredItems.add(new ItemStack(RegisterItems.boneShard));
requiredItems.add(new OreRecipeElement(RegisterItems.boneShard));
}
else if (repaired.getItem() instanceof ItemTool)
{
@ -274,22 +272,22 @@ public class InfusionRepairUtil
switch (material)
{
case WOOD:
requiredItems.add(new ItemStack(Blocks.planks, 1, OreDictionary.WILDCARD_VALUE));
requiredItems.add(new OreRecipeElement("plankWood"));
break;
case STONE:
requiredItems.add(new ItemStack(Blocks.stone, 1));
requiredItems.add(new OreRecipeElement("stone"));
break;
case IRON:
requiredItems.add(new ItemStack(Items.iron_ingot));
requiredItems.add(new OreRecipeElement("ingotIron"));
break;
case GOLD:
requiredItems.add(new ItemStack(Items.gold_nugget, 2));
requiredItems.add(new OreRecipeElement("nuggetGold", 2));
break;
case EMERALD: // See "WTF" below.
requiredItems.add(new ItemStack(Items.redstone, 24));
requiredItems.add(new OreRecipeElement("dustRedstone", 24));
break;
default:
requiredItems.add(new ItemStack(Items.emerald, 4));
requiredItems.add(new OreRecipeElement("gemEmerald", 4));
break;
}
}
@ -301,27 +299,27 @@ public class InfusionRepairUtil
switch (material)
{
case WOOD:
requiredItems.add(new ItemStack(Blocks.planks, 1, OreDictionary.WILDCARD_VALUE));
requiredItems.add(new OreRecipeElement("plankWood"));
break;
case STONE:
requiredItems.add(new ItemStack(Blocks.stone, 1));
requiredItems.add(new OreRecipeElement("stone"));
case IRON:
requiredItems.add(new ItemStack(Items.iron_ingot));
requiredItems.add(new OreRecipeElement("ingotIron"));
break;
case GOLD:
requiredItems.add(new ItemStack(Items.gold_nugget, 2));
requiredItems.add(new OreRecipeElement("nuggetGold", 2));
break;
case EMERALD: // See "WTF" below.
requiredItems.add(new ItemStack(Items.redstone, 16));
requiredItems.add(new OreRecipeElement("dustRedstone", 16));
break;
default:
if (material == RegisterItems.NOOBWOOD)
{
requiredItems.add(new ItemStack(Blocks.planks, 1, OreDictionary.WILDCARD_VALUE));
requiredItems.add(new OreRecipeElement("plankWood"));
}
else
{
requiredItems.add(new ItemStack(Items.emerald, 4));
requiredItems.add(new OreRecipeElement("gemEmerald", 4));
}
break;
}
@ -333,36 +331,36 @@ public class InfusionRepairUtil
switch (armor.getArmorMaterial())
{
case LEATHER:
requiredItems.add(new ItemStack(Items.leather));
requiredItems.add(new OreRecipeElement(Items.leather));
break;
case CHAIN:
requiredItems.add(new ItemStack(RegisterItems.ironNugget, 6));
requiredItems.add(new OreRecipeElement("nuggetIron", 6));
break;
case IRON:
requiredItems.add(new ItemStack(Items.iron_ingot, 3));
requiredItems.add(new OreRecipeElement("ingotIron", 3));
break;
case GOLD:
requiredItems.add(new ItemStack(Items.gold_nugget, 2));
requiredItems.add(new OreRecipeElement("nuggetGold", 2));
break;
case DIAMOND: // WTF MOJANG?! (See above)
requiredItems.add(new ItemStack(Items.redstone, 24));
requiredItems.add(new OreRecipeElement("dustRedstone", 24));
break;
default:
requiredItems.add(new ItemStack(Items.emerald, 4));
requiredItems.add(new OreRecipeElement("gemEmerald", 4));
break;
}
}
else if (repaired.getItem() == Items.shears)
{
requiredItems.add(new ItemStack(Items.iron_ingot));
requiredItems.add(new OreRecipeElement("ingotIron"));
}
else if (repaired.getItem() == Items.fishing_rod)
{
requiredItems.add(new ItemStack(Items.string, 4));
requiredItems.add(new OreRecipeElement("itemString", 4));
}
else if (repaired.getItem() == Items.flint_and_steel)
{
requiredItems.add(new ItemStack(Items.flint));
requiredItems.add(new OreRecipeElement(Items.flint));
}
if (repaired.isItemEnchanted())
@ -380,9 +378,9 @@ public class InfusionRepairUtil
return requiredItems;
}
public static List<ItemStack> getEnchantmentItems(NBTTagList enchants)
public static List<OreRecipeElement> getEnchantmentItems(NBTTagList enchants)
{
List<ItemStack> requiredItems = new ArrayList<>();
List<OreRecipeElement> requiredItems = new ArrayList<>();
for (int i = 0; i < enchants.tagCount(); i++)
{
@ -390,11 +388,12 @@ public class InfusionRepairUtil
int enchId = enchant.getInteger("id");
int level = enchant.getInteger("lvl");
ItemStack associated = enchantmentMapping.get(enchId);
OreRecipeElement associated = enchantmentMapping.get(enchId);
if (associated != null)
{
ItemStack req = new ItemStack(associated.getItem(), associated.stackSize * level, associated.getMetadata());
OreRecipeElement req = associated.copy();
req.stackSize *= level;
requiredItems.add(req);
}
else
@ -555,6 +554,10 @@ public class InfusionRepairUtil
{
return 1;
}
else if (infusedItem.getItem() == Items.bow)
{
return 5;
}
return 0;
}