Infusion Repair supports OreDictionary entries. Also fixes #126.
parent
1c78aed706
commit
37de46033c
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue