();
-
- /**
- * Checks to see if the passed item/block already has aspects associated with it.
- *
- * @param id
- * @param meta
- * @return
- */
- public static boolean exists(int id, int meta)
- {
- AspectList tmp = ThaumcraftApi.objectTags.get(Arrays.asList(id, meta));
-
- if (tmp == null)
- {
- tmp = ThaumcraftApi.objectTags.get(Arrays.asList(id, -1));
-
- if (meta == -1 && tmp == null)
- {
- int index = 0;
-
- do
- {
- tmp = ThaumcraftApi.objectTags.get(Arrays.asList(id, index));
- index++;
- }
- while (index < 16 && tmp == null);
- }
-
- if (tmp == null)
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:
- * ThaumcraftApi.registerObjectTag(Block.cobblestone.blockID, -1, (new ObjectTags()).add(EnumTag.ROCK, 1).add(EnumTag.DESTRUCTION, 1));
- *
- * @param id
- * @param meta pass -1 if all damage values of this item/block should have the same aspects
- * @param aspects A ObjectTags object of the associated aspects
- */
- public static void registerObjectTag(int id, int meta, AspectList aspects)
- {
- if (aspects == null)
- {
- aspects = new AspectList();
- }
-
- objectTags.put(Arrays.asList(id, meta), aspects);
- }
-
- /**
- * Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:
- * ThaumcraftApi.registerObjectTag(Block.cobblestone.blockID, new int[]{0,1}, (new ObjectTags()).add(EnumTag.ROCK, 1).add(EnumTag.DESTRUCTION, 1));
- *
- * @param id
- * @param meta A range of meta values if you wish to lump several item meta's together as being the "same" item (i.e. stair orientations)
- * @param aspects A ObjectTags object of the associated aspects
- */
- public static void registerObjectTag(int id, int[] meta, AspectList aspects)
- {
- if (aspects == null)
- {
- aspects = new AspectList();
- }
-
- objectTags.put(Arrays.asList(id, meta), aspects);
- }
-
- /**
- * Used to assign apsects to the given ore dictionary item.
- *
- * @param oreDict the ore dictionary name
- * @param aspects A ObjectTags object of the associated aspects
- */
- public static void registerObjectTag(String oreDict, AspectList aspects)
- {
- if (aspects == null)
- {
- aspects = new AspectList();
- }
-
- ArrayList ores = OreDictionary.getOres(oreDict);
-
- if (ores != null && ores.size() > 0)
- {
- for (ItemStack ore : ores)
- {
- int d = ore.getItemDamage();
-
- if (d == OreDictionary.WILDCARD_VALUE)
- {
- d = -1;
- }
-
- objectTags.put(Arrays.asList(ore.itemID, d), aspects);
- }
- }
- }
-
- /**
- * Used to assign aspects to the given item/block.
- * Attempts to automatically generate aspect tags by checking registered recipes.
- * Here is an example of the declaration for pistons:
- * ThaumcraftApi.registerComplexObjectTag(Block.pistonBase.blockID, 0, (new ObjectTags()).add(EnumTag.MECHANISM, 2).add(EnumTag.MOTION, 4));
- *
- * @param id
- * @param meta pass -1 if all damage values of this item/block should have the same aspects
- * @param aspects A ObjectTags object of the associated aspects
- */
- public static void registerComplexObjectTag(int id, int meta, AspectList aspects)
- {
- if (!exists(id, meta))
- {
- AspectList tmp = ThaumcraftApiHelper.generateTags(id, meta);
-
- if (tmp != null && tmp.size() > 0)
- {
- for (Aspect tag : tmp.getAspects())
- {
- aspects.add(tag, tmp.getAmount(tag));
- }
- }
-
- registerObjectTag(id, meta, aspects);
- } else
- {
- AspectList tmp = ThaumcraftApiHelper.getObjectAspects(new ItemStack(id, 1, meta));
-
- for (Aspect tag : aspects.getAspects())
- {
- tmp.merge(tag, tmp.getAmount(tag));
- }
-
- registerObjectTag(id, meta, tmp);
- }
- }
-
- //CROPS //////////////////////////////////////////////////////////////////////////////////////////
-
- /**
- * To define mod crops you need to use FMLInterModComms in your @Mod.Init method.
- * There are two 'types' of crops you can add. Standard crops and clickable crops.
- *
- * Standard crops work like normal vanilla crops - they grow until a certain metadata
- * value is reached and you harvest them by destroying the block and collecting the blocks.
- * You need to create and ItemStack that tells the golem what block id and metadata represents
- * the crop when fully grown.
- * Example for vanilla wheat:
- * FMLInterModComms.sendMessage("Thaumcraft", "harvestStandardCrop", new ItemStack(Block.crops,1,7));
- *
- * Clickable crops are crops that you right click to gather their bounty instead of destroying them.
- * As for standard crops, you need to create and ItemStack that tells the golem what block id
- * and metadata represents the crop when fully grown. The golem will trigger the blocks onBlockActivated method.
- * Example (this will technically do nothing since clicking wheat does nothing, but you get the idea):
- * FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Block.crops,1,7));
- */
-
- //NATIVE CLUSTERS //////////////////////////////////////////////////////////////////////////////////
-
- /**
- * You can define certain ores that will have a chance to produce native clusters via FMLInterModComms
- * in your @Mod.Init method using the "nativeCluster" string message.
- * The format should be:
- * "[ore item/block id],[ore item/block metadata],[cluster item/block id],[cluster item/block metadata],[chance modifier float]"
- *
- * NOTE: The chance modifier is a multiplier applied to the default chance for that cluster to be produced (27.5% for a pickaxe of the core)
- *
- * Example for vanilla iron ore to produce one of my own native iron clusters (assuming default id's) at double the default chance:
- * FMLInterModComms.sendMessage("Thaumcraft", "nativeCluster","15,0,25016,16,2.0");
- */
-
-}
diff --git a/BM_src/thaumcraft/api/ThaumcraftApiHelper.java b/BM_src/thaumcraft/api/ThaumcraftApiHelper.java
deleted file mode 100644
index ed1f8e84..00000000
--- a/BM_src/thaumcraft/api/ThaumcraftApiHelper.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package thaumcraft.api;
-
-import cpw.mods.fml.common.FMLLog;
-import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.IBlockAccess;
-import net.minecraft.world.World;
-import net.minecraftforge.common.ForgeDirection;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.api.aspects.IEssentiaTransport;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-
-public class ThaumcraftApiHelper
-{
- public static AspectList cullTags(AspectList temp)
- {
- AspectList temp2 = new AspectList();
-
- for (Aspect tag : temp.getAspects())
- {
- if (tag != null)
- {
- temp2.add(tag, temp.getAmount(tag));
- }
- }
-
- while (temp2 != null && temp2.size() > 10)
- {
- Aspect lowest = null;
- int low = Integer.MAX_VALUE;
-
- for (Aspect tag : temp2.getAspects())
- {
- if (tag == null)
- {
- continue;
- }
-
- if (temp2.getAmount(tag) < low)
- {
- low = temp2.getAmount(tag);
- lowest = tag;
- }
- }
-
- temp2.aspects.remove(lowest);
- }
-
- return temp2;
- }
-
- public static boolean areItemsEqual(ItemStack s1, ItemStack s2)
- {
- if (s1.isItemStackDamageable() && s2.isItemStackDamageable())
- {
- return s1.itemID == s2.itemID;
- } else
- {
- return s1.itemID == s2.itemID && s1.getItemDamage() == s2.getItemDamage();
- }
- }
-
- static Method isResearchComplete;
- static Method getObjectTags;
- static Method getBonusTags;
- static Method generateTags;
-
- public static boolean isResearchComplete(String username, String researchkey)
- {
- boolean ot = false;
-
- try
- {
- if (isResearchComplete == null)
- {
- Class fake = Class.forName("thaumcraft.common.lib.research.ResearchManager");
- isResearchComplete = fake.getMethod("isResearchComplete", String.class, String.class);
- }
-
- ot = (Boolean) isResearchComplete.invoke(null, username, researchkey);
- } catch (Exception ex)
- {
- FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.research.ResearchManager method isResearchComplete");
- }
-
- return ot;
- }
-
- public static ItemStack getStackInRowAndColumn(Object instance, int row, int column)
- {
- ItemStack ot = null;
-
- try
- {
- Class fake = Class.forName("thaumcraft.common.tiles.TileMagicWorkbench");
- Method getStackInRowAndColumn = fake.getMethod("getStackInRowAndColumn", int.class, int.class);
- ot = (ItemStack) getStackInRowAndColumn.invoke(instance, row, column);
- } catch (Exception ex)
- {
- FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.tiles.TileMagicWorkbench method getStackInRowAndColumn");
- }
-
- return ot;
- }
-
- public static AspectList getObjectAspects(ItemStack is)
- {
- AspectList ot = null;
-
- try
- {
- if (getObjectTags == null)
- {
- Class fake = Class.forName("thaumcraft.common.lib.ThaumcraftCraftingManager");
- getObjectTags = fake.getMethod("getObjectTags", ItemStack.class);
- }
-
- ot = (AspectList) getObjectTags.invoke(null, is);
- } catch (Exception ex)
- {
- FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.ThaumcraftCraftingManager method getObjectTags");
- }
-
- return ot;
- }
-
- public static AspectList getBonusObjectTags(ItemStack is, AspectList ot)
- {
- try
- {
- if (getBonusTags == null)
- {
- Class fake = Class.forName("thaumcraft.common.lib.ThaumcraftCraftingManager");
- getBonusTags = fake.getMethod("getBonusTags", ItemStack.class, AspectList.class);
- }
-
- ot = (AspectList) getBonusTags.invoke(null, is, ot);
- } catch (Exception ex)
- {
- FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.ThaumcraftCraftingManager method getBonusTags");
- }
-
- return ot;
- }
-
- public static AspectList generateTags(int id, int meta)
- {
- try
- {
- if (generateTags == null)
- {
- Class fake = Class.forName("thaumcraft.common.lib.ThaumcraftCraftingManager");
- generateTags = fake.getMethod("generateTags", int.class, int.class);
- }
-
- return (AspectList) generateTags.invoke(null, id, meta);
- } catch (Exception ex)
- {
- FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.ThaumcraftCraftingManager method generateTags");
- }
-
- return null;
- }
-
- public static boolean containsMatch(boolean strict, ItemStack[] inputs, ItemStack... targets)
- {
- for (ItemStack input : inputs)
- {
- for (ItemStack target : targets)
- {
- if (itemMatches(target, input, strict))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- public static boolean itemMatches(ItemStack target, ItemStack input, boolean strict)
- {
- if (input == null && target != null || input != null && target == null)
- {
- return false;
- }
-
- return (target.itemID == input.itemID && ((target.getItemDamage() == OreDictionary.WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage()));
- }
-
- public static TileEntity getConnectableTile(World world, int x, int y, int z, ForgeDirection face)
- {
- TileEntity te = world.getBlockTileEntity(x + face.offsetX, y + face.offsetY, z + face.offsetZ);
-
- if (te instanceof IEssentiaTransport && ((IEssentiaTransport) te).isConnectable(face.getOpposite()))
- {
- return te;
- } else
- {
- return null;
- }
- }
-
- public static TileEntity getConnectableTile(IBlockAccess world, int x, int y, int z, ForgeDirection face)
- {
- TileEntity te = world.getBlockTileEntity(x + face.offsetX, y + face.offsetY, z + face.offsetZ);
-
- if (te instanceof IEssentiaTransport && ((IEssentiaTransport) te).isConnectable(face.getOpposite()))
- {
- return te;
- } else
- {
- return null;
- }
- }
-
- private static HashMap allAspects = new HashMap();
- private static HashMap allCompoundAspects = new HashMap();
-
- public static AspectList getAllAspects(int amount)
- {
- if (allAspects.get(amount) == null)
- {
- AspectList al = new AspectList();
-
- for (Aspect aspect : Aspect.aspects.values())
- {
- al.add(aspect, amount);
- }
-
- allAspects.put(amount, al);
- }
-
- return allAspects.get(amount);
- }
-
- public static AspectList getAllCompoundAspects(int amount)
- {
- if (allCompoundAspects.get(amount) == null)
- {
- AspectList al = new AspectList();
-
- for (Aspect aspect : Aspect.getCompoundAspects())
- {
- al.add(aspect, amount);
- }
-
- allCompoundAspects.put(amount, al);
- }
-
- return allCompoundAspects.get(amount);
- }
-}
diff --git a/BM_src/thaumcraft/api/aspects/Aspect.java b/BM_src/thaumcraft/api/aspects/Aspect.java
deleted file mode 100644
index cad05355..00000000
--- a/BM_src/thaumcraft/api/aspects/Aspect.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package thaumcraft.api.aspects;
-
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-import org.apache.commons.lang3.text.WordUtils;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-
-public class Aspect
-{
- String tag;
- Aspect[] components;
- int color;
- private String chatcolor;
- ResourceLocation image;
- int blend;
-
- /**
- * Use this constructor to register your own aspects.
- *
- * @param tag the key that will be used to reference this aspect, as well as its latin display name
- * @param color color to display the tag in
- * @param components the aspects this one is formed from
- * @param image ResourceLocation pointing to a 32x32 icon of the aspect
- * @param blend GL11 blendmode (1 or 771). Used for rendering nodes. Default is 1
- */
- public Aspect(String tag, int color, Aspect[] components, ResourceLocation image, int blend)
- {
- if (aspects.containsKey(tag))
- {
- throw new IllegalArgumentException(tag + " already registered!");
- }
-
- this.tag = tag;
- this.components = components;
- this.color = color;
- this.image = image;
- this.blend = blend;
- aspects.put(tag, this);
- }
-
- /**
- * Shortcut constructor I use for the default aspects - you shouldn't be using this.
- */
- public Aspect(String tag, int color, Aspect[] components)
- {
- this(tag, color, components, new ResourceLocation("thaumcraft", "textures/aspects/" + tag.toLowerCase() + ".png"), 1);
- }
-
- /**
- * Shortcut constructor I use for the default aspects - you shouldn't be using this.
- */
- public Aspect(String tag, int color, Aspect[] components, int blend)
- {
- this(tag, color, components, new ResourceLocation("thaumcraft", "textures/aspects/" + tag.toLowerCase() + ".png"), blend);
- }
-
- /**
- * Shortcut constructor I use for the primal aspects -
- * you shouldn't use this as making your own primal aspects will break all the things.
- */
- public Aspect(String tag, int color, String chatcolor, int blend)
- {
- this(tag, color, (Aspect[]) null, blend);
- this.setChatcolor(chatcolor);
- }
-
- public int getColor()
- {
- return color;
- }
-
- public String getName()
- {
- return WordUtils.capitalizeFully(tag);
- }
-
- public String getLocalizedDescription()
- {
- return StatCollector.translateToLocal("tc.aspect." + tag);
- }
-
- public String getTag()
- {
- return tag;
- }
-
- public void setTag(String tag)
- {
- this.tag = tag;
- }
-
- public Aspect[] getComponents()
- {
- return components;
- }
-
- public void setComponents(Aspect[] components)
- {
- this.components = components;
- }
-
- public ResourceLocation getImage()
- {
- return image;
- }
-
- public static Aspect getAspect(String tag)
- {
- return aspects.get(tag);
- }
-
- public int getBlend()
- {
- return blend;
- }
-
- public void setBlend(int blend)
- {
- this.blend = blend;
- }
-
- public boolean isPrimal()
- {
- return getComponents() == null || getComponents().length != 2;
- }
-
- ///////////////////////////////
- public static ArrayList getPrimalAspects()
- {
- ArrayList primals = new ArrayList();
- Collection pa = aspects.values();
-
- for (Aspect aspect : pa)
- {
- if (aspect.isPrimal())
- {
- primals.add(aspect);
- }
- }
-
- return primals;
- }
-
- public static ArrayList getCompoundAspects()
- {
- ArrayList compounds = new ArrayList();
- Collection pa = aspects.values();
-
- for (Aspect aspect : pa)
- {
- if (!aspect.isPrimal())
- {
- compounds.add(aspect);
- }
- }
-
- return compounds;
- }
-
- public String getChatcolor()
- {
- return chatcolor;
- }
-
- public void setChatcolor(String chatcolor)
- {
- this.chatcolor = chatcolor;
- }
-
- ///////////////////////////////
- public static LinkedHashMap aspects = new LinkedHashMap();
-
- //PRIMAL
- public static final Aspect AIR = new Aspect("aer", 0xffff7e, "e", 1);
- public static final Aspect EARTH = new Aspect("terra", 0x56c000, "2", 1);
- public static final Aspect FIRE = new Aspect("ignis", 0xff5a01, "c", 1);
- public static final Aspect WATER = new Aspect("aqua", 0x3cd4fc, "3", 1);
- public static final Aspect ORDER = new Aspect("ordo", 0xd5d4ec, "7", 1);
- public static final Aspect ENTROPY = new Aspect("perditio", 0x404040, "8", 771);
-
- //SECONDARY TODO
- public static final Aspect VOID = new Aspect("vacuos", 0x888888, new Aspect[]{AIR, ENTROPY}, 771);
- public static final Aspect LIGHT = new Aspect("lux", 0xfff663, new Aspect[]{AIR, FIRE});
- public static final Aspect ENERGY = new Aspect("potentia", 0xc0ffff, new Aspect[]{ORDER, FIRE});
- public static final Aspect MOTION = new Aspect("motus", 0xcdccf4, new Aspect[]{AIR, ORDER});
- public static final Aspect STONE = new Aspect("saxum", 0x808080, new Aspect[]{EARTH, EARTH});
- public static final Aspect LIFE = new Aspect("victus", 0xde0005, new Aspect[]{WATER, EARTH});
- public static final Aspect WEATHER = new Aspect("tempestas", 0xFFFFFF, new Aspect[]{AIR, WATER});
- public static final Aspect ICE = new Aspect("gelum", 0xe1ffff, new Aspect[]{WATER, ORDER});
- public static final Aspect CRYSTAL = new Aspect("vitreus", 0x80ffff, new Aspect[]{STONE, WATER});
-
- //TERTIARY TODO
-
- public static final Aspect DEATH = new Aspect("mortuus", 0x887788, new Aspect[]{LIFE, ENTROPY});
- public static final Aspect FLIGHT = new Aspect("volatus", 0xe7e7d7, new Aspect[]{AIR, MOTION});
- public static final Aspect DARKNESS = new Aspect("tenebrae", 0x222222, new Aspect[]{VOID, LIGHT});
- public static final Aspect SOUL = new Aspect("spiritus", 0xebebfb, new Aspect[]{LIFE, DEATH});
- public static final Aspect HEAL = new Aspect("sano", 0xff2f34, new Aspect[]{LIFE, LIFE});
-
- public static final Aspect TRAVEL = new Aspect("iter", 0xe0585b, new Aspect[]{MOTION, EARTH});
- public static final Aspect POISON = new Aspect("venenum", 0x89f000, new Aspect[]{WATER, DEATH});
-
- public static final Aspect ELDRITCH = new Aspect("alienis", 0x805080, new Aspect[]{VOID, DARKNESS});
- public static final Aspect MAGIC = new Aspect("praecantatio", 0x9700c0, new Aspect[]{VOID, ENERGY});
- public static final Aspect AURA = new Aspect("auram", 0xffc0ff, new Aspect[]{MAGIC, AIR});
- public static final Aspect TAINT = new Aspect("vitium", 0x800080, new Aspect[]{MAGIC, ENTROPY});
-
- public static final Aspect SEED = new Aspect("granum", 0xeea16e, new Aspect[]{LIFE, EARTH});
- public static final Aspect SLIME = new Aspect("limus", 0x01f800, new Aspect[]{LIFE, WATER});
- public static final Aspect PLANT = new Aspect("herba", 0x01ac00, new Aspect[]{SEED, EARTH});
- public static final Aspect TREE = new Aspect("arbor", 0x876531, new Aspect[]{EARTH, PLANT});
-
- public static final Aspect BEAST = new Aspect("bestia", 0x9f6409, new Aspect[]{MOTION, LIFE});
- public static final Aspect FLESH = new Aspect("corpus", 0xee478d, new Aspect[]{DEATH, BEAST});
- public static final Aspect UNDEAD = new Aspect("exanimis", 0x3a4000, new Aspect[]{MOTION, DEATH});
- public static final Aspect MIND = new Aspect("cognitio", 0xffc2b3, new Aspect[]{EARTH, SOUL});
- public static final Aspect SENSES = new Aspect("sensus", 0x0fd9ff, new Aspect[]{AIR, SOUL});
-
- public static final Aspect MAN = new Aspect("humanus", 0xffd7c0, new Aspect[]{BEAST, MIND});
- public static final Aspect CROP = new Aspect("messis", 0xe1b371, new Aspect[]{SEED, MAN});
- public static final Aspect HARVEST = new Aspect("meto", 0xeead82, new Aspect[]{CROP, MAN});
- public static final Aspect METAL = new Aspect("metallum", 0xb5b5cd, new Aspect[]{STONE, ORDER});
- public static final Aspect MINE = new Aspect("perfodio", 0xdcd2d8, new Aspect[]{MAN, STONE});
- public static final Aspect TOOL = new Aspect("instrumentum", 0x4040ee, new Aspect[]{MAN, METAL});
- public static final Aspect WEAPON = new Aspect("telum", 0xc05050, new Aspect[]{TOOL, ENTROPY});
- public static final Aspect ARMOR = new Aspect("tutamen", 0x00c0c0, new Aspect[]{TOOL, EARTH});
- public static final Aspect HUNGER = new Aspect("fames", 0x9a0305, new Aspect[]{LIFE, VOID});
- public static final Aspect GREED = new Aspect("lucrum", 0xe6be44, new Aspect[]{MAN, HUNGER});
- public static final Aspect CRAFT = new Aspect("fabrico", 0x809d80, new Aspect[]{MAN, TOOL});
-
- public static final Aspect CLOTH = new Aspect("pannus", 0xeaeac2, new Aspect[]{TOOL, BEAST});
- public static final Aspect MECHANISM = new Aspect("machina", 0x8080a0, new Aspect[]{MOTION, TOOL});
- public static final Aspect TRAP = new Aspect("vinculum", 0x9a8080, new Aspect[]{MOTION, ENTROPY});
- public static final Aspect EXCHANGE = new Aspect("permutatio", 0x578357, new Aspect[]{MOTION, WATER});
-
-// public static final Aspect LAVA = new Aspect("lava",0xe85729, new Aspect[] {EARTH, FIRE});
-// public static final Aspect STEAM = new Aspect("steam",0xFFFFFF, new Aspect[] {WATER, FIRE});
-// public static final Aspect MUD = new Aspect("lutum",0x473423, new Aspect[] {WATER, EARTH});
-// public static final Aspect SAND = new Aspect("sand",0xFFFFFF, new Aspect[] {AIR, EARTH});
-// public static final Aspect ASTRAL = new Aspect("Astral",0xFFFFFF, new Aspect[] {VOID, DARKNESS});
-// public static final Aspect HARM = new Aspect("Harm",0xFFFFFF, new Aspect[] {ENTROPY, LIFE});
-// public static final Aspect BIRD = new Aspect("Bird",0xFFFFFF, new Aspect[] {BEAST, AIR});
-// public static final Aspect FISH = new Aspect("Fish",0xFFFFFF, new Aspect[] {BEAST, WATER});
-}
diff --git a/BM_src/thaumcraft/api/aspects/AspectList.java b/BM_src/thaumcraft/api/aspects/AspectList.java
deleted file mode 100644
index 5b662f0e..00000000
--- a/BM_src/thaumcraft/api/aspects/AspectList.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package thaumcraft.api.aspects;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagList;
-import thaumcraft.api.ThaumcraftApiHelper;
-
-import java.io.Serializable;
-import java.util.LinkedHashMap;
-
-public class AspectList implements Serializable
-{
- public LinkedHashMap aspects = new LinkedHashMap(); //aspects associated with this object
-
- /**
- * this creates a new aspect list with preloaded values based off the aspects of the given item.
- *
- * @param id the item/block id of an existing item
- * @param meta the damage value of an existing item
- */
- public AspectList(int id, int meta)
- {
- try
- {
- AspectList temp = ThaumcraftApiHelper.getObjectAspects(new ItemStack(id, 1, meta));
-
- if (temp != null)
- for (Aspect tag : temp.getAspects())
- {
- add(tag, temp.getAmount(tag));
- }
- } catch (Exception e)
- {
- }
- }
-
- public AspectList()
- {
- }
-
- public AspectList copy()
- {
- AspectList out = new AspectList();
-
- for (Aspect a : this.getAspects())
- {
- out.add(a, this.getAmount(a));
- }
-
- return out;
- }
-
- /**
- * @return the amount of different aspects in this collection
- */
- public int size()
- {
- return aspects.size();
- }
-
- /**
- * @return the amount of total vis in this collection
- */
- public int visSize()
- {
- int q = 0;
-
- for (Aspect as : aspects.keySet())
- {
- q += this.getAmount(as);
- }
-
- return q;
- }
-
- /**
- * @return an array of all the aspects in this collection
- */
- public Aspect[] getAspects()
- {
- Aspect[] q = new Aspect[1];
- return aspects.keySet().toArray(q);
- }
-
- /**
- * @return an array of all the aspects in this collection
- */
- public Aspect[] getPrimalAspects()
- {
- AspectList t = new AspectList();
-
- for (Aspect as : aspects.keySet())
- {
- if (as.isPrimal())
- {
- t.add(as, 1);
- }
- }
-
- Aspect[] q = new Aspect[1];
- return t.aspects.keySet().toArray(q);
- }
-
- /**
- * @return an array of all the aspects in this collection sorted by name
- */
- public Aspect[] getAspectsSorted()
- {
- Aspect[] out = aspects.keySet().toArray(new Aspect[1]);
- boolean change = false;
-
- do
- {
- change = false;
-
- for (int a = 0; a < out.length - 1; a++)
- {
- Aspect e1 = out[a];
- Aspect e2 = out[a + 1];
-
- if (e1 != null && e2 != null && e1.getTag().compareTo(e2.getTag()) > 0)
- {
- out[a] = e2;
- out[a + 1] = e1;
- change = true;
- break;
- }
- }
- }
- while (change == true);
-
- return out;
- }
-
- /**
- * @return an array of all the aspects in this collection sorted by amount
- */
- public Aspect[] getAspectsSortedAmount()
- {
- Aspect[] out = aspects.keySet().toArray(new Aspect[1]);
- boolean change = false;
-
- do
- {
- change = false;
-
- for (int a = 0; a < out.length - 1; a++)
- {
- int e1 = getAmount(out[a]);
- int e2 = getAmount(out[a + 1]);
-
- if (e1 > 0 && e2 > 0 && e2 > e1)
- {
- Aspect ea = out[a];
- Aspect eb = out[a + 1];
- out[a] = eb;
- out[a + 1] = ea;
- change = true;
- break;
- }
- }
- }
- while (change == true);
-
- return out;
- }
-
- /**
- * @param key
- * @return the amount associated with the given aspect in this collection
- */
- public int getAmount(Aspect key)
- {
- return aspects.get(key) == null ? 0 : aspects.get(key);
- }
-
- /**
- * Reduces the amount of an aspect in this collection by the given amount.
- *
- * @param key
- * @param amount
- * @return
- */
- public boolean reduce(Aspect key, int amount)
- {
- if (getAmount(key) >= amount)
- {
- int am = getAmount(key) - amount;
- aspects.put(key, am);
- return true;
- }
-
- return false;
- }
-
- /**
- * Reduces the amount of an aspect in this collection by the given amount.
- * If reduced to 0 or less the aspect will be removed completely.
- *
- * @param key
- * @param amount
- * @return
- */
- public AspectList remove(Aspect key, int amount)
- {
- int am = getAmount(key) - amount;
-
- if (am <= 0)
- {
- aspects.remove(key);
- } else
- {
- this.aspects.put(key, am);
- }
-
- return this;
- }
-
- /**
- * Simply removes the aspect from the list
- *
- * @param key
- * @param amount
- * @return
- */
- public AspectList remove(Aspect key)
- {
- aspects.remove(key);
- return this;
- }
-
- /**
- * Adds this aspect and amount to the collection.
- * If the aspect exists then its value will be increased by the given amount.
- *
- * @param aspect
- * @param amount
- * @return
- */
- public AspectList add(Aspect aspect, int amount)
- {
- if (this.aspects.containsKey(aspect))
- {
- int oldamount = this.aspects.get(aspect);
- amount += oldamount;
- }
-
- this.aspects.put(aspect, amount);
- return this;
- }
-
- /**
- * Adds this aspect and amount to the collection.
- * If the aspect exists then only the highest of the old or new amount will be used.
- *
- * @param aspect
- * @param amount
- * @return
- */
- public AspectList merge(Aspect aspect, int amount)
- {
- if (this.aspects.containsKey(aspect))
- {
- int oldamount = this.aspects.get(aspect);
-
- if (amount < oldamount)
- {
- amount = oldamount;
- }
- }
-
- this.aspects.put(aspect, amount);
- return this;
- }
-
- /**
- * Reads the list of aspects from nbt
- *
- * @param nbttagcompound
- * @return
- */
- public void readFromNBT(NBTTagCompound nbttagcompound)
- {
- aspects.clear();
- NBTTagList tlist = nbttagcompound.getTagList("Aspects");
-
- for (int j = 0; j < tlist.tagCount(); j++)
- {
- NBTTagCompound rs = (NBTTagCompound) tlist.tagAt(j);
-
- if (rs.hasKey("key"))
- {
- add(Aspect.getAspect(rs.getString("key")),
- rs.getInteger("amount"));
- }
- }
- }
-
- /**
- * Writes the list of aspects to nbt
- *
- * @param nbttagcompound
- * @return
- */
- public void writeToNBT(NBTTagCompound nbttagcompound)
- {
- NBTTagList tlist = new NBTTagList();
- nbttagcompound.setTag("Aspects", tlist);
-
- for (Aspect aspect : getAspects())
- if (aspect != null)
- {
- NBTTagCompound f = new NBTTagCompound();
- f.setString("key", aspect.getTag());
- f.setInteger("amount", getAmount(aspect));
- tlist.appendTag(f);
- }
- }
-}
diff --git a/BM_src/thaumcraft/api/aspects/IAspectContainer.java b/BM_src/thaumcraft/api/aspects/IAspectContainer.java
deleted file mode 100644
index 855e077e..00000000
--- a/BM_src/thaumcraft/api/aspects/IAspectContainer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package thaumcraft.api.aspects;
-
-/**
- * @author azanor
- *
- * Used by blocks like the crucible and alembic to hold their aspects.
- * Tiles extending this interface will have their aspects show up when viewed by goggles of revealing
- */
-public interface IAspectContainer
-{
- public AspectList getAspects();
-
- public void setAspects(AspectList aspects);
-
- /**
- * This method is used to determine of a specific aspect can be added to this container.
- *
- * @param tag
- * @return true or false
- */
- public boolean doesContainerAccept(Aspect tag);
-
- /**
- * This method is used to add a certain amount of an aspect to the tile entity.
- *
- * @param tag
- * @param amount
- * @return the amount of aspect left over that could not be added.
- */
- public int addToContainer(Aspect tag, int amount);
-
- /**
- * Removes a certain amount of a specific aspect from the tile entity
- *
- * @param tag
- * @param amount
- * @return true if that amount of aspect was available and was removed
- */
- public boolean takeFromContainer(Aspect tag, int amount);
-
- /**
- * removes a bunch of different aspects and amounts from the tile entity.
- *
- * @param ot the ObjectTags object that contains the aspects and their amounts.
- * @return true if all the aspects and their amounts were available and successfully removed
- */
- public boolean takeFromContainer(AspectList ot);
-
- /**
- * Checks if the tile entity contains the listed amount (or more) of the aspect
- *
- * @param tag
- * @param amount
- * @return
- */
- public boolean doesContainerContainAmount(Aspect tag, int amount);
-
- /**
- * Checks if the tile entity contains all the listed aspects and their amounts
- *
- * @param ot the ObjectTags object that contains the aspects and their amounts.
- * @return
- */
- public boolean doesContainerContain(AspectList ot);
-
- /**
- * Returns how much of the aspect this tile entity contains
- *
- * @param tag
- * @return the amount of that aspect found
- */
- public int containerContains(Aspect tag);
-}
diff --git a/BM_src/thaumcraft/api/aspects/IAspectSource.java b/BM_src/thaumcraft/api/aspects/IAspectSource.java
deleted file mode 100644
index d0ccac33..00000000
--- a/BM_src/thaumcraft/api/aspects/IAspectSource.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package thaumcraft.api.aspects;
-
-/**
- * @author Azanor
- *
- * This interface is implemented by tile entites (or possibly anything else) like jars
- * so that they can act as an essentia source for blocks like the infusion altar.
- */
-public interface IAspectSource extends IAspectContainer
-{
-}
diff --git a/BM_src/thaumcraft/api/aspects/IEssentiaContainerItem.java b/BM_src/thaumcraft/api/aspects/IEssentiaContainerItem.java
deleted file mode 100644
index 9ea36355..00000000
--- a/BM_src/thaumcraft/api/aspects/IEssentiaContainerItem.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package thaumcraft.api.aspects;
-
-import net.minecraft.item.ItemStack;
-
-/**
- * @author azanor
- *
- * Used by wispy essences and essentia phials to hold their aspects.
- * Useful for similar item containers that store their aspect information in nbt form so TC
- * automatically picks up the aspects they contain
- */
-public interface IEssentiaContainerItem
-{
- public AspectList getAspects(ItemStack itemstack);
-
- public void setAspects(ItemStack itemstack, AspectList aspects);
-}
-
-//Example implementation
-/*
- @Override
- public AspectList getAspects(ItemStack itemstack) {
- if (itemstack.hasTagCompound()) {
- AspectList aspects = new AspectList();
- aspects.readFromNBT(itemstack.getTagCompound());
- return aspects.size()>0?aspects:null;
- }
- return null;
- }
-
- @Override
- public void setAspects(ItemStack itemstack, AspectList aspects) {
- if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound());
- aspects.writeToNBT(itemstack.getTagCompound());
- }
-*/
\ No newline at end of file
diff --git a/BM_src/thaumcraft/api/aspects/IEssentiaTransport.java b/BM_src/thaumcraft/api/aspects/IEssentiaTransport.java
deleted file mode 100644
index 77eb6590..00000000
--- a/BM_src/thaumcraft/api/aspects/IEssentiaTransport.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package thaumcraft.api.aspects;
-
-import net.minecraftforge.common.ForgeDirection;
-
-/**
- * @author Azanor
- * This interface is used by tiles that use or transport vis.
- * Only tiles that implement this interface will be able to connect to vis conduits or other thaumic devices
- */
-public interface IEssentiaTransport
-{
- /**
- * Is this tile able to connect to other vis users/sources on the specified side?
- *
- * @param face
- * @return
- */
- public boolean isConnectable(ForgeDirection face);
-
- /**
- * Is this side used to input essentia?
- *
- * @param face
- * @return
- */
- boolean canInputFrom(ForgeDirection face);
-
- /**
- * Is this side used to output essentia?
- *
- * @param face
- * @return
- */
- boolean canOutputTo(ForgeDirection face);
-
-// /**
-// * Can this tile act as a source of vis?
-// * @return
-// */
-// public boolean isVisSource();
-//
-// /**
-// * Is this tile a conduit that transports vis?
-// * @return
-// */
-// public boolean isVisConduit();
-
- /**
- * Sets the amount of suction this block will apply
- *
- * @param suction
- */
- public void setSuction(AspectList suction);
-
- /**
- * Sets the amount of suction this block will apply
- *
- * @param suction
- */
- public void setSuction(Aspect aspect, int amount);
-
- /**
- * Returns the amount of suction this block is applying.
- *
- * @param loc the location from where the suction is being checked
- * @return
- */
- public AspectList getSuction(ForgeDirection face);
-
- /**
- * remove the specified amount of vis from this transport tile
- *
- * @param suction
- * @return how much was actually taken
- */
- public int takeVis(Aspect aspect, int amount);
-
- public AspectList getEssentia(ForgeDirection face);
-
- /**
- * Essentia will not be drawn from this container unless the suction exceeds this amount.
- *
- * @return the amount
- */
- public int getMinimumSuction();
-
- /**
- * Return true if you want the conduit to extend a little further into the block.
- * Used by jars and alembics that have smaller than normal hitboxes
- *
- * @return
- */
- boolean renderExtendedTube();
-}
diff --git a/BM_src/thaumcraft/api/crafting/CrucibleRecipe.java b/BM_src/thaumcraft/api/crafting/CrucibleRecipe.java
deleted file mode 100644
index 0d8dddbb..00000000
--- a/BM_src/thaumcraft/api/crafting/CrucibleRecipe.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-
-import java.util.ArrayList;
-
-public class CrucibleRecipe
-{
- public ItemStack recipeOutput;
- public Object catalyst;
- public AspectList aspects;
- public String key;
-
- public CrucibleRecipe(String researchKey, ItemStack result, Object cat, AspectList tags)
- {
- recipeOutput = result;
- this.aspects = tags;
- this.key = researchKey;
- this.catalyst = cat;
-
- if (cat instanceof String)
- {
- this.catalyst = OreDictionary.getOres((String) cat);
- }
- }
-
- public boolean matches(AspectList itags, ItemStack cat)
- {
- if (catalyst instanceof ItemStack &&
- !ThaumcraftApiHelper.itemMatches((ItemStack) catalyst, cat, false))
- {
- return false;
- } else if (catalyst instanceof ArrayList && ((ArrayList) catalyst).size() > 0)
- {
- if (!ThaumcraftApiHelper.containsMatch(true, ((ArrayList) catalyst).toArray(new ItemStack[]{}), cat))
- return false;
- }
-
- if (itags == null)
- {
- return false;
- }
-
- for (Aspect tag : aspects.getAspects())
- {
- if (itags.getAmount(tag) < aspects.getAmount(tag))
- {
- return false;
- }
- }
-
- return true;
- }
-
- public AspectList removeMatching(AspectList itags)
- {
- AspectList temptags = new AspectList();
- temptags.aspects.putAll(itags.aspects);
-
- for (Aspect tag : aspects.getAspects())
- {
- temptags.remove(tag, aspects.getAmount(tag));
-// if (!temptags.remove(tag, aspects.getAmount(tag))) return null;
- }
-
- itags = temptags;
- return itags;
- }
-}
diff --git a/BM_src/thaumcraft/api/crafting/IArcaneRecipe.java b/BM_src/thaumcraft/api/crafting/IArcaneRecipe.java
deleted file mode 100644
index 37690ebd..00000000
--- a/BM_src/thaumcraft/api/crafting/IArcaneRecipe.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-import thaumcraft.api.aspects.AspectList;
-
-public interface IArcaneRecipe
-{
- /**
- * Used to check if a recipe matches current crafting inventory
- *
- * @param player
- */
- boolean matches(IInventory var1, World world, EntityPlayer player);
-
- /**
- * Returns an Item that is the result of this recipe
- */
- ItemStack getCraftingResult(IInventory var1);
-
- /**
- * Returns the size of the recipe area
- */
- int getRecipeSize();
-
- ItemStack getRecipeOutput();
-
- AspectList getAspects();
-
- String getResearch();
-}
diff --git a/BM_src/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/BM_src/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java
deleted file mode 100644
index d43110e6..00000000
--- a/BM_src/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.enchantment.Enchantment;
-import net.minecraft.enchantment.EnchantmentHelper;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.AspectList;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-
-public class InfusionEnchantmentRecipe
-{
- public AspectList aspects;
- public String research;
- public ItemStack[] components;
- public Enchantment enchantment;
- public int recipeXP;
- public int instability;
-
- public InfusionEnchantmentRecipe(String research, Enchantment input, int inst,
- AspectList aspects2, ItemStack[] recipe)
- {
- this.research = research;
- this.enchantment = input;
- this.aspects = aspects2;
- this.components = recipe;
- this.instability = inst;
- this.recipeXP = Math.max(1, input.getMinEnchantability(1) / 3);
- }
-
- /**
- * Used to check if a recipe matches current crafting inventory
- *
- * @param player
- */
- public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player)
- {
- if (research.length() > 0 && !ThaumcraftApiHelper.isResearchComplete(player.username, research))
- {
- return false;
- }
-
- if (!enchantment.canApply(central))
- {
- return false;
- }
-
- Map map1 = EnchantmentHelper.getEnchantments(central);
- Iterator iterator = map1.keySet().iterator();
-
- while (iterator.hasNext())
- {
- int j1 = ((Integer) iterator.next()).intValue();
- Enchantment ench = Enchantment.enchantmentsList[j1];
-
- if (j1 == enchantment.effectId &&
- EnchantmentHelper.getEnchantmentLevel(j1, central) >= ench.getMaxLevel())
- {
- return false;
- }
-
- if (enchantment.effectId != ench.effectId &&
- (!enchantment.canApplyTogether(ench) ||
- !ench.canApplyTogether(enchantment)))
- {
- return false;
- }
- }
-
- ItemStack i2 = null;
- ArrayList ii = new ArrayList();
-
- for (ItemStack is : input)
- {
- ii.add(is.copy());
- }
-
- for (ItemStack comp : components)
- {
- boolean b = false;
-
- for (int a = 0; a < ii.size(); a++)
- {
- i2 = ii.get(a).copy();
-
- if (comp.getItemDamage() == OreDictionary.WILDCARD_VALUE)
- {
- i2.setItemDamage(OreDictionary.WILDCARD_VALUE);
- }
-
- if (areItemStacksEqual(i2, comp, true))
- {
- ii.remove(a);
- b = true;
- break;
- }
- }
-
- if (!b)
- {
- return false;
- }
- }
-
-// System.out.println(ii.size());
- return ii.size() == 0 ? true : false;
- }
-
- private boolean areItemStacksEqual(ItemStack stack0, ItemStack stack1, boolean fuzzy)
- {
- if (stack0 == null && stack1 != null)
- {
- return false;
- }
-
- if (stack0 != null && stack1 == null)
- {
- return false;
- }
-
- if (stack0 == null && stack1 == null)
- {
- return true;
- }
-
- boolean t1 = false;
-
- if (fuzzy)
- {
- t1 = true;
- int od = OreDictionary.getOreID(stack0);
-
- if (od != -1)
- {
- ItemStack[] ores = OreDictionary.getOres(od).toArray(new ItemStack[]{});
-
- if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{stack1}, ores))
- return true;
- }
- } else
- {
- t1 = ItemStack.areItemStackTagsEqual(stack0, stack1);
- }
-
- return stack0.itemID != stack1.itemID ? false : (stack0.getItemDamage() != stack1.getItemDamage() ? false : (stack0.stackSize > stack0.getMaxStackSize() ? false : t1));
- }
-
- public Enchantment getEnchantment()
- {
- return enchantment;
- }
-
- public AspectList getAspects()
- {
- return aspects;
- }
-
- public String getResearch()
- {
- return research;
- }
-
- public int calcInstability(ItemStack recipeInput)
- {
- int i = 0;
- Map map1 = EnchantmentHelper.getEnchantments(recipeInput);
- Iterator iterator = map1.keySet().iterator();
-
- while (iterator.hasNext())
- {
- int j1 = ((Integer) iterator.next()).intValue();
- i += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput);
- }
-
- return (i / 2) + instability;
- }
-
- public int calcXP(ItemStack recipeInput)
- {
- return recipeXP * (1 + EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput));
- }
-
- public float getEssentiaMod(ItemStack recipeInput)
- {
- float mod = EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput);
- Map map1 = EnchantmentHelper.getEnchantments(recipeInput);
- Iterator iterator = map1.keySet().iterator();
-
- while (iterator.hasNext())
- {
- int j1 = ((Integer) iterator.next()).intValue();
-
- if (j1 != enchantment.effectId)
- {
- mod += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput) * .1f;
- }
- }
-
- return mod;
- }
-}
diff --git a/BM_src/thaumcraft/api/crafting/InfusionRecipe.java b/BM_src/thaumcraft/api/crafting/InfusionRecipe.java
deleted file mode 100644
index 4fa3ac00..00000000
--- a/BM_src/thaumcraft/api/crafting/InfusionRecipe.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.AspectList;
-
-import java.util.ArrayList;
-
-public class InfusionRecipe
-{
- public AspectList aspects;
- public String research;
- public ItemStack[] components;
- public ItemStack recipeInput;
- public Object recipeOutput;
- public int instability;
-
- public InfusionRecipe(String research, Object output, int inst,
- AspectList aspects2, ItemStack input, ItemStack[] recipe)
- {
- this.research = research;
- this.recipeOutput = output;
- this.recipeInput = input;
- this.aspects = aspects2;
- this.components = recipe;
- this.instability = inst;
- }
-
- /**
- * Used to check if a recipe matches current crafting inventory
- *
- * @param player
- */
- public boolean matches(ArrayList input, ItemStack central, World world, EntityPlayer player)
- {
- if (research.length() > 0 && !ThaumcraftApiHelper.isResearchComplete(player.username, research))
- {
- return false;
- }
-
- ItemStack i2 = central.copy();
-
- if (recipeInput.getItemDamage() == OreDictionary.WILDCARD_VALUE)
- {
- i2.setItemDamage(OreDictionary.WILDCARD_VALUE);
- }
-
- if (!areItemStacksEqual(i2, recipeInput, true))
- {
- return false;
- }
-
- ArrayList ii = new ArrayList();
-
- for (ItemStack is : input)
- {
- ii.add(is.copy());
- }
-
- for (ItemStack comp : components)
- {
- boolean b = false;
-
- for (int a = 0; a < ii.size(); a++)
- {
- i2 = ii.get(a).copy();
-
- if (comp.getItemDamage() == OreDictionary.WILDCARD_VALUE)
- {
- i2.setItemDamage(OreDictionary.WILDCARD_VALUE);
- }
-
- if (areItemStacksEqual(i2, comp, true))
- {
- ii.remove(a);
- b = true;
- break;
- }
- }
-
- if (!b)
- {
- return false;
- }
- }
-
-// System.out.println(ii.size());
- return ii.size() == 0 ? true : false;
- }
-
- private boolean areItemStacksEqual(ItemStack stack0, ItemStack stack1, boolean fuzzy)
- {
- if (stack0 == null && stack1 != null)
- {
- return false;
- }
-
- if (stack0 != null && stack1 == null)
- {
- return false;
- }
-
- if (stack0 == null && stack1 == null)
- {
- return true;
- }
-
- boolean t1 = false;
-
- if (fuzzy)
- {
- t1 = true;
- int od = OreDictionary.getOreID(stack0);
-
- if (od != -1)
- {
- ItemStack[] ores = OreDictionary.getOres(od).toArray(new ItemStack[]{});
-
- if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{stack1}, ores))
- return true;
- }
- } else
- {
- t1 = ItemStack.areItemStackTagsEqual(stack0, stack1);
- }
-
- return stack0.itemID != stack1.itemID ? false : (stack0.getItemDamage() != stack1.getItemDamage() ? false : (stack0.stackSize > stack0.getMaxStackSize() ? false : t1));
- }
-
- public Object getRecipeOutput()
- {
- return recipeOutput;
- }
-
- public AspectList getAspects()
- {
- return aspects;
- }
-
- public String getResearch()
- {
- return research;
- }
-}
diff --git a/BM_src/thaumcraft/api/crafting/ShapedArcaneRecipe.java b/BM_src/thaumcraft/api/crafting/ShapedArcaneRecipe.java
deleted file mode 100644
index 5d372527..00000000
--- a/BM_src/thaumcraft/api/crafting/ShapedArcaneRecipe.java
+++ /dev/null
@@ -1,275 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.block.Block;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.AspectList;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-public class ShapedArcaneRecipe implements IArcaneRecipe
-{
- //Added in for future ease of change, but hard coded for now.
- private static final int MAX_CRAFT_GRID_WIDTH = 3;
- private static final int MAX_CRAFT_GRID_HEIGHT = 3;
-
- public ItemStack output = null;
- public Object[] input = null;
- public AspectList aspects = null;
- public String research;
- public int width = 0;
- public int height = 0;
- private boolean mirrored = true;
-
- public ShapedArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe)
- {
- this(research, new ItemStack(result), aspects, recipe);
- }
-
- public ShapedArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe)
- {
- this(research, new ItemStack(result), aspects, recipe);
- }
-
- public ShapedArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe)
- {
- output = result.copy();
- this.research = research;
- this.aspects = aspects;
- String shape = "";
- int idx = 0;
-
- if (recipe[idx] instanceof Boolean)
- {
- mirrored = (Boolean) recipe[idx];
-
- if (recipe[idx + 1] instanceof Object[])
- {
- recipe = (Object[]) recipe[idx + 1];
- } else
- {
- idx = 1;
- }
- }
-
- if (recipe[idx] instanceof String[])
- {
- String[] parts = ((String[]) recipe[idx++]);
-
- for (String s : parts)
- {
- width = s.length();
- shape += s;
- }
-
- height = parts.length;
- } else
- {
- while (recipe[idx] instanceof String)
- {
- String s = (String) recipe[idx++];
- shape += s;
- width = s.length();
- height++;
- }
- }
-
- if (width * height != shape.length())
- {
- String ret = "Invalid shaped ore recipe: ";
-
- for (Object tmp : recipe)
- {
- ret += tmp + ", ";
- }
-
- ret += output;
- throw new RuntimeException(ret);
- }
-
- HashMap itemMap = new HashMap();
-
- for (; idx < recipe.length; idx += 2)
- {
- Character chr = (Character) recipe[idx];
- Object in = recipe[idx + 1];
-
- if (in instanceof ItemStack)
- {
- itemMap.put(chr, ((ItemStack) in).copy());
- } else if (in instanceof Item)
- {
- itemMap.put(chr, new ItemStack((Item) in));
- } else if (in instanceof Block)
- {
- itemMap.put(chr, new ItemStack((Block) in, 1, OreDictionary.WILDCARD_VALUE));
- } else if (in instanceof String)
- {
- itemMap.put(chr, OreDictionary.getOres((String) in));
- } else
- {
- String ret = "Invalid shaped ore recipe: ";
-
- for (Object tmp : recipe)
- {
- ret += tmp + ", ";
- }
-
- ret += output;
- throw new RuntimeException(ret);
- }
- }
-
- input = new Object[width * height];
- int x = 0;
-
- for (char chr : shape.toCharArray())
- {
- input[x++] = itemMap.get(chr);
- }
- }
-
- @Override
- public ItemStack getCraftingResult(IInventory var1)
- {
- return output.copy();
- }
-
- @Override
- public int getRecipeSize()
- {
- return input.length;
- }
-
- @Override
- public ItemStack getRecipeOutput()
- {
- return output;
- }
-
- @Override
- public boolean matches(IInventory inv, World world, EntityPlayer player)
- {
- if (research.length() > 0 && !ThaumcraftApiHelper.isResearchComplete(player.username, research))
- {
- return false;
- }
-
- for (int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++)
- {
- for (int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y)
- {
- if (checkMatch(inv, x, y, false))
- {
- return true;
- }
-
- if (mirrored && checkMatch(inv, x, y, true))
- {
- return true;
- }
- }
- }
-
- return false;
- }
-
- private boolean checkMatch(IInventory inv, int startX, int startY, boolean mirror)
- {
- for (int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++)
- {
- for (int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++)
- {
- int subX = x - startX;
- int subY = y - startY;
- Object target = null;
-
- if (subX >= 0 && subY >= 0 && subX < width && subY < height)
- {
- if (mirror)
- {
- target = input[width - subX - 1 + subY * width];
- } else
- {
- target = input[subX + subY * width];
- }
- }
-
- ItemStack slot = ThaumcraftApiHelper.getStackInRowAndColumn(inv, x, y);
-
- if (target instanceof ItemStack)
- {
- if (!checkItemEquals((ItemStack) target, slot))
- {
- return false;
- }
- } else if (target instanceof ArrayList)
- {
- boolean matched = false;
-
- for (ItemStack item : (ArrayList) target)
- {
- matched = matched || checkItemEquals(item, slot);
- }
-
- if (!matched)
- {
- return false;
- }
- } else if (target == null && slot != null)
- {
- return false;
- }
- }
- }
-
- return true;
- }
-
- private boolean checkItemEquals(ItemStack target, ItemStack input)
- {
- if (input == null && target != null || input != null && target == null)
- {
- return false;
- }
-
- return (target.itemID == input.itemID &&
- (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) &&
- (target.getItemDamage() == OreDictionary.WILDCARD_VALUE || target.getItemDamage() == input.getItemDamage()));
- }
-
- public ShapedArcaneRecipe setMirrored(boolean mirror)
- {
- mirrored = mirror;
- return this;
- }
-
- /**
- * Returns the input for this recipe, any mod accessing this value should never
- * manipulate the values in this array as it will effect the recipe itself.
- *
- * @return The recipes input vales.
- */
- public Object[] getInput()
- {
- return this.input;
- }
-
- @Override
- public AspectList getAspects()
- {
- return aspects;
- }
-
- @Override
- public String getResearch()
- {
- return research;
- }
-}
diff --git a/BM_src/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/BM_src/thaumcraft/api/crafting/ShapelessArcaneRecipe.java
deleted file mode 100644
index 9687803b..00000000
--- a/BM_src/thaumcraft/api/crafting/ShapelessArcaneRecipe.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package thaumcraft.api.crafting;
-
-import net.minecraft.block.Block;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-import net.minecraftforge.oredict.OreDictionary;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.AspectList;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-public class ShapelessArcaneRecipe implements IArcaneRecipe
-{
- private ItemStack output = null;
- private ArrayList input = new ArrayList();
-
- public AspectList aspects = null;
- public String research;
-
- public ShapelessArcaneRecipe(String research, Block result, AspectList aspects, Object... recipe)
- {
- this(research, new ItemStack(result), aspects, recipe);
- }
-
- public ShapelessArcaneRecipe(String research, Item result, AspectList aspects, Object... recipe)
- {
- this(research, new ItemStack(result), aspects, recipe);
- }
-
- public ShapelessArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe)
- {
- output = result.copy();
- this.research = research;
- this.aspects = aspects;
-
- for (Object in : recipe)
- {
- if (in instanceof ItemStack)
- {
- input.add(((ItemStack) in).copy());
- } else if (in instanceof Item)
- {
- input.add(new ItemStack((Item) in));
- } else if (in instanceof Block)
- {
- input.add(new ItemStack((Block) in));
- } else if (in instanceof String)
- {
- input.add(OreDictionary.getOres((String) in));
- } else
- {
- String ret = "Invalid shapeless ore recipe: ";
-
- for (Object tmp : recipe)
- {
- ret += tmp + ", ";
- }
-
- ret += output;
- throw new RuntimeException(ret);
- }
- }
- }
-
- @Override
- public int getRecipeSize()
- {
- return input.size();
- }
-
- @Override
- public ItemStack getRecipeOutput()
- {
- return output;
- }
-
- @Override
- public ItemStack getCraftingResult(IInventory var1)
- {
- return output.copy();
- }
-
- @Override
- public boolean matches(IInventory var1, World world, EntityPlayer player)
- {
- if (research.length() > 0 && !ThaumcraftApiHelper.isResearchComplete(player.username, research))
- {
- return false;
- }
-
- ArrayList required = new ArrayList(input);
-
- for (int x = 0; x < 9; x++)
- {
- ItemStack slot = var1.getStackInSlot(x);
-
- if (slot != null)
- {
- boolean inRecipe = false;
- Iterator req = required.iterator();
-
- while (req.hasNext())
- {
- boolean match = false;
- Object next = req.next();
-
- if (next instanceof ItemStack)
- {
- match = checkItemEquals((ItemStack) next, slot);
- } else if (next instanceof ArrayList)
- {
- for (ItemStack item : (ArrayList) next)
- {
- match = match || checkItemEquals(item, slot);
- }
- }
-
- if (match)
- {
- inRecipe = true;
- required.remove(next);
- break;
- }
- }
-
- if (!inRecipe)
- {
- return false;
- }
- }
- }
-
- return required.isEmpty();
- }
-
- private boolean checkItemEquals(ItemStack target, ItemStack input)
- {
- return (target.itemID == input.itemID &&
- (!target.hasTagCompound() || ItemStack.areItemStackTagsEqual(target, input)) &&
- (target.getItemDamage() == OreDictionary.WILDCARD_VALUE || target.getItemDamage() == input.getItemDamage()));
- }
-
- /**
- * Returns the input for this recipe, any mod accessing this value should never
- * manipulate the values in this array as it will effect the recipe itself.
- *
- * @return The recipes input vales.
- */
- public ArrayList getInput()
- {
- return this.input;
- }
-
- @Override
- public AspectList getAspects()
- {
- return aspects;
- }
-
- @Override
- public String getResearch()
- {
- return research;
- }
-}
diff --git a/BM_src/thaumcraft/api/nodes/INode.java b/BM_src/thaumcraft/api/nodes/INode.java
deleted file mode 100644
index f7f755c0..00000000
--- a/BM_src/thaumcraft/api/nodes/INode.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package thaumcraft.api.nodes;
-
-import thaumcraft.api.aspects.IAspectContainer;
-
-public interface INode extends IAspectContainer
-{
- /**
- * Unique identifier to distinguish nodes. Normal node id's are based on world id and coordinates
- *
- * @return
- */
- public String getId();
-
- /**
- * Return the type of node
- *
- * @return
- */
- public NodeType getNodeType();
-
- /**
- * Set the type of node
- *
- * @return
- */
- public void setNodeType(NodeType nodeType);
-
- /**
- * Return the node modifier
- *
- * @return
- */
- public void setNodeModifier(NodeModifier nodeModifier);
-
- /**
- * Set the node modifier
- *
- * @return
- */
- public NodeModifier getNodeModifier();
-
- /**
- * Return the maximum capacity of each aspect the node can hold
- *
- * @return
- */
- public int getNodeVisBase();
-
- /**
- * Set the maximum capacity of each aspect the node can hold
- *
- * @return
- */
- public void setNodeVisBase(short nodeVisBase);
-}
diff --git a/BM_src/thaumcraft/api/nodes/IRevealer.java b/BM_src/thaumcraft/api/nodes/IRevealer.java
deleted file mode 100644
index 8f7bc2e7..00000000
--- a/BM_src/thaumcraft/api/nodes/IRevealer.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package thaumcraft.api.nodes;
-
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.item.ItemStack;
-
-/**
- * @author Azanor
- *
- * Equipped head slot items that extend this class will make nodes visible in world.
- */
-
-public interface IRevealer
-{
- /*
- * If this method returns true the nodes will be visible.
- */
- public boolean showNodes(ItemStack itemstack, EntityLivingBase player);
-}
diff --git a/BM_src/thaumcraft/api/research/IScanEventHandler.java b/BM_src/thaumcraft/api/research/IScanEventHandler.java
deleted file mode 100644
index 0fa313a2..00000000
--- a/BM_src/thaumcraft/api/research/IScanEventHandler.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package thaumcraft.api.research;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-public interface IScanEventHandler
-{
- ScanResult scanPhenomena(ItemStack stack, World world, EntityPlayer player);
-}
diff --git a/BM_src/thaumcraft/api/research/ResearchCategories.java b/BM_src/thaumcraft/api/research/ResearchCategories.java
deleted file mode 100644
index 8ba14edb..00000000
--- a/BM_src/thaumcraft/api/research/ResearchCategories.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package thaumcraft.api.research;
-
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-
-import java.util.Collection;
-import java.util.LinkedHashMap;
-
-public class ResearchCategories
-{
- //Research
- public static LinkedHashMap researchCategories = new LinkedHashMap();
-
- /**
- * @param key
- * @return the research item linked to this key
- */
- public static ResearchCategoryList getResearchList(String key)
- {
- return researchCategories.get(key);
- }
-
- /**
- * @param key
- * @return the name of the research category linked to this key.
- * Must be stored as localization information in the LanguageRegistry.
- */
- public static String getCategoryName(String key)
- {
- return StatCollector.translateToLocal("tc.research_category." + key);
- }
-
- /**
- * @param key the research key
- * @return the ResearchItem object.
- */
- public static ResearchItem getResearch(String key)
- {
- Collection rc = researchCategories.values();
-
- for (Object cat : rc)
- {
- Collection rl = ((ResearchCategoryList) cat).research.values();
-
- for (Object ri : rl)
- {
- if ((((ResearchItem) ri).key).equals(key))
- {
- return (ResearchItem) ri;
- }
- }
- }
-
- return null;
- }
-
- /**
- * @param key the key used for this category
- * @param icon the icon to be used for the research category tab
- * @param background the resource location of the background image to use for this category
- * @return the name of the research linked to this key
- */
- public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background)
- {
- if (getResearchList(key) == null)
- {
- ResearchCategoryList rl = new ResearchCategoryList(icon, background);
- researchCategories.put(key, rl);
- }
- }
-
- public static void addResearch(ResearchItem ri)
- {
- ResearchCategoryList rl = getResearchList(ri.category);
-
- if (rl != null && !rl.research.containsKey(ri.key))
- {
- rl.research.put(ri.key, ri);
-
- if (ri.displayColumn < rl.minDisplayColumn)
- {
- rl.minDisplayColumn = ri.displayColumn;
- }
-
- if (ri.displayRow < rl.minDisplayRow)
- {
- rl.minDisplayRow = ri.displayRow;
- }
-
- if (ri.displayColumn > rl.maxDisplayColumn)
- {
- rl.maxDisplayColumn = ri.displayColumn;
- }
-
- if (ri.displayRow > rl.maxDisplayRow)
- {
- rl.maxDisplayRow = ri.displayRow;
- }
- }
- }
-}
diff --git a/BM_src/thaumcraft/api/research/ResearchCategoryList.java b/BM_src/thaumcraft/api/research/ResearchCategoryList.java
deleted file mode 100644
index e1e85c86..00000000
--- a/BM_src/thaumcraft/api/research/ResearchCategoryList.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package thaumcraft.api.research;
-
-import net.minecraft.util.ResourceLocation;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ResearchCategoryList
-{
- /**
- * Is the smallest column used on the GUI.
- */
- public int minDisplayColumn;
-
- /**
- * Is the smallest row used on the GUI.
- */
- public int minDisplayRow;
-
- /**
- * Is the biggest column used on the GUI.
- */
- public int maxDisplayColumn;
-
- /**
- * Is the biggest row used on the GUI.
- */
- public int maxDisplayRow;
-
- /**
- * display variables *
- */
- public ResourceLocation icon;
- public ResourceLocation background;
-
- public ResearchCategoryList(ResourceLocation icon, ResourceLocation background)
- {
- this.icon = icon;
- this.background = background;
- }
-
- //Research
- public Map research = new HashMap();
-}
diff --git a/BM_src/thaumcraft/api/research/ResearchItem.java b/BM_src/thaumcraft/api/research/ResearchItem.java
deleted file mode 100644
index 5b2cf909..00000000
--- a/BM_src/thaumcraft/api/research/ResearchItem.java
+++ /dev/null
@@ -1,336 +0,0 @@
-package thaumcraft.api.research;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-
-public class ResearchItem
-{
- /**
- * A short string used as a key for this research. Must be unique
- */
- public final String key;
-
- /**
- * A short string used as a reference to the research category to which this must be added.
- */
- public final String category;
-
- /**
- * The aspect tags and their values required to complete this research
- */
- public final AspectList tags;
-
- /**
- * This links to any research that needs to be completed before this research can be discovered or learnt.
- */
- public String[] parents = null;
-
- /**
- * Like parent above, but a line will not be displayed in the thaumonomicon linking them. Just used to prevent clutter.
- */
- public String[] parentsHidden = null;
- /**
- * any research linked to this that will be unlocked automatically when this research is complete
- */
- public String[] siblings = null;
-
- /**
- * the horizontal position of the research icon
- */
- public final int displayColumn;
-
- /**
- * the vertical position of the research icon
- */
- public final int displayRow;
-
- /**
- * the icon to be used for this research
- */
- public final ItemStack icon_item;
-
- /**
- * the icon to be used for this research
- */
- public final ResourceLocation icon_resource;
-
- /**
- * How large the research grid is. Valid values are 1 to 5.
- */
- private int complexity;
-
- /**
- * Special research has a spiky border. Used for important research milestones.
- */
- private boolean isSpecial;
-
- /**
- * This indicates if the research should use a circular icon border. Usually used for "passive" research
- * that doesn't have recipes and grants passive effects, or that unlock automatically.
- */
- private boolean isRound;
-
- /**
- * Stub research cannot be discovered by normal means, but can be unlocked via the sibling system.
- */
- private boolean isStub;
-
- /**
- * This indicated that the research is completely hidden and cannot be discovered by any
- * player-controlled means. The recipes will never show up in the thaumonomicon.
- * Usually used to unlock "hidden" recipes via sibling unlocking, like
- * the various cap and rod combos for wands.
- */
- private boolean isVirtual;
-
- /**
- * Hidden research does not display in the thaumonomicon until discovered
- */
- private boolean isHidden;
-
- /**
- * Concealed research does not display in the thaumonomicon until parent researches are discovered.
- */
- private boolean isConcealed;
-
- /**
- * Lost research can only be discovered via knowledge fragments
- */
- private boolean isLost;
-
- /**
- * These research items will automatically unlock for all players on game start
- */
- private boolean isAutoUnlock;
-
- private ResearchPage[] pages = null;
-
- public ResearchItem(String par1, String par2)
- {
- this.key = par1;
- this.category = par2;
- this.tags = new AspectList();
- this.icon_resource = null;
- this.icon_item = null;
- this.displayColumn = 0;
- this.displayRow = 0;
- this.setVirtual();
- }
-
- public ResearchItem(String par1, String par2, AspectList tags, int par3, int par4, int par5, ResourceLocation icon)
- {
- this.key = par1;
- this.category = par2;
- this.tags = tags;
- this.icon_resource = icon;
- this.icon_item = null;
- this.displayColumn = par3;
- this.displayRow = par4;
- this.complexity = par5;
-
- if (complexity < 1)
- {
- this.complexity = 1;
- }
-
- if (complexity > 5)
- {
- this.complexity = 5;
- }
- }
-
- public ResearchItem(String par1, String par2, AspectList tags, int par3, int par4, int par5, ItemStack icon)
- {
- this.key = par1;
- this.category = par2;
- this.tags = tags;
- this.icon_item = icon;
- this.icon_resource = null;
- this.displayColumn = par3;
- this.displayRow = par4;
- this.complexity = par5;
-
- if (complexity < 0)
- {
- this.complexity = 0;
- }
-
- if (complexity > 5)
- {
- this.complexity = 5;
- }
- }
-
- public ResearchItem setSpecial()
- {
- this.isSpecial = true;
- return this;
- }
-
- public ResearchItem setStub()
- {
- this.isStub = true;
- return this;
- }
-
- public ResearchItem setHidden()
- {
- this.isHidden = true;
- return this;
- }
-
- public ResearchItem setConcealed()
- {
- this.isConcealed = true;
- return this;
- }
-
- public ResearchItem setLost()
- {
- this.isLost = true;
- return this;
- }
-
- public ResearchItem setVirtual()
- {
- this.isVirtual = true;
- return this;
- }
-
- public ResearchItem setParents(String... par)
- {
- this.parents = par;
- return this;
- }
-
- public ResearchItem setParentsHidden(String... par)
- {
- this.parentsHidden = par;
- return this;
- }
-
- public ResearchItem setSiblings(String... sib)
- {
- this.siblings = sib;
- return this;
- }
-
- public ResearchItem setPages(ResearchPage... par)
- {
- this.pages = par;
- return this;
- }
-
- public ResearchPage[] getPages()
- {
- return pages;
- }
-
- public ResearchItem registerResearchItem()
- {
- ResearchCategories.addResearch(this);
- return this;
- }
-
- @SideOnly(Side.CLIENT)
- public String getName()
- {
- return StatCollector.translateToLocal("tc.research_name." + key);
- }
-
- @SideOnly(Side.CLIENT)
- public String getText()
- {
- return StatCollector.translateToLocal("tc.research_text." + key);
- }
-
- @SideOnly(Side.CLIENT)
- public boolean isSpecial()
- {
- return this.isSpecial;
- }
-
- public boolean isStub()
- {
- return this.isStub;
- }
-
- public boolean isHidden()
- {
- return this.isHidden;
- }
-
- public boolean isConcealed()
- {
- return this.isConcealed;
- }
-
- public boolean isLost()
- {
- return this.isLost;
- }
-
- public boolean isVirtual()
- {
- return this.isVirtual;
- }
-
- public boolean isAutoUnlock()
- {
- return isAutoUnlock;
- }
-
- public ResearchItem setAutoUnlock()
- {
- this.isAutoUnlock = true;
- return this;
- }
-
- public boolean isRound()
- {
- return isRound;
- }
-
- public ResearchItem setRound()
- {
- this.isRound = true;
- return this;
- }
-
- public int getComplexity()
- {
- return complexity;
- }
-
- public ResearchItem setComplexity(int complexity)
- {
- this.complexity = complexity;
- return this;
- }
-
- /**
- * @return the aspect aspects ordinal with the highest value. Used to determine scroll color and similar things
- */
- public Aspect getResearchPrimaryTag()
- {
- Aspect aspect = null;
- int highest = 0;
-
- if (tags != null)
- for (Aspect tag : tags.getAspects())
- {
- if (tags.getAmount(tag) > highest)
- {
- aspect = tag;
- highest = tags.getAmount(tag);
- } ;
- }
-
- return aspect;
- }
-}
diff --git a/BM_src/thaumcraft/api/research/ResearchPage.java b/BM_src/thaumcraft/api/research/ResearchPage.java
deleted file mode 100644
index 57ae8290..00000000
--- a/BM_src/thaumcraft/api/research/ResearchPage.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package thaumcraft.api.research;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.crafting.IRecipe;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.api.crafting.CrucibleRecipe;
-import thaumcraft.api.crafting.IArcaneRecipe;
-import thaumcraft.api.crafting.InfusionEnchantmentRecipe;
-import thaumcraft.api.crafting.InfusionRecipe;
-
-import java.util.List;
-
-public class ResearchPage
-{
- public static enum PageType
- {
- TEXT,
- TEXT_CONCEALED,
- IMAGE,
- CRUCIBLE_CRAFTING,
- ARCANE_CRAFTING,
- ASPECTS,
- NORMAL_CRAFTING,
- INFUSION_CRAFTING,
- COMPOUND_CRAFTING,
- INFUSION_ENCHANTMENT
- }
-
- public PageType type = PageType.TEXT;
-
- public String text = null;
- public String research = null;
- public ResourceLocation image = null;
- public AspectList aspects = null;
- public Object recipe = null;
- public ItemStack recipeOutput = null;
-
- /**
- * @param text this can (but does not have to) be a reference to a localization variable, not the actual text.
- */
- public ResearchPage(String text)
- {
- this.type = PageType.TEXT;
- this.text = text;
- }
-
- /**
- * @param research this page will only be displayed if the player has discovered this research
- * @param text this can (but does not have to) be a reference to a localization variable, not the actual text.
- */
- public ResearchPage(String research, String text)
- {
- this.type = PageType.TEXT_CONCEALED;
- this.research = research;
- this.text = text;
- }
-
- /**
- * @param recipe a vanilla crafting recipe.
- */
- public ResearchPage(IRecipe recipe)
- {
- this.type = PageType.NORMAL_CRAFTING;
- this.recipe = recipe;
- this.recipeOutput = recipe.getRecipeOutput();
- }
-
- /**
- * @param recipe a collection of vanilla crafting recipes.
- */
- public ResearchPage(IRecipe[] recipe)
- {
- this.type = PageType.NORMAL_CRAFTING;
- this.recipe = recipe;
- }
-
- /**
- * @param recipe a collection of arcane crafting recipes.
- */
- public ResearchPage(IArcaneRecipe[] recipe)
- {
- this.type = PageType.ARCANE_CRAFTING;
- this.recipe = recipe;
- }
-
- /**
- * @param recipe a collection of infusion crafting recipes.
- */
- public ResearchPage(InfusionRecipe[] recipe)
- {
- this.type = PageType.INFUSION_CRAFTING;
- this.recipe = recipe;
- }
-
- /**
- * @param recipe a compound crafting recipe.
- */
- public ResearchPage(List recipe)
- {
- this.type = PageType.COMPOUND_CRAFTING;
- this.recipe = recipe;
- }
-
- /**
- * @param recipe an arcane worktable crafting recipe.
- */
- public ResearchPage(IArcaneRecipe recipe)
- {
- this.type = PageType.ARCANE_CRAFTING;
- this.recipe = recipe;
- this.recipeOutput = recipe.getRecipeOutput();
- }
-
- /**
- * @param recipe an alchemy crafting recipe.
- */
- public ResearchPage(CrucibleRecipe recipe)
- {
- this.type = PageType.CRUCIBLE_CRAFTING;
- this.recipe = recipe;
- this.recipeOutput = recipe.recipeOutput;
- }
-
- /**
- * @param recipe an infusion crafting recipe.
- */
- public ResearchPage(InfusionRecipe recipe)
- {
- this.type = PageType.INFUSION_CRAFTING;
- this.recipe = recipe;
-
- if (recipe.recipeOutput instanceof ItemStack)
- {
- this.recipeOutput = (ItemStack) recipe.recipeOutput;
- } else
- {
- this.recipeOutput = recipe.recipeInput;
- }
- }
-
- /**
- * @param recipe an infusion crafting recipe.
- */
- public ResearchPage(InfusionEnchantmentRecipe recipe)
- {
- this.type = PageType.INFUSION_ENCHANTMENT;
- this.recipe = recipe;
-// if (recipe.recipeOutput instanceof ItemStack) {
-// this.recipeOutput = (ItemStack) recipe.recipeOutput;
-// } else {
-// this.recipeOutput = recipe.recipeInput;
-// }
- }
-
- /**
- * @param image
- * @param caption this can (but does not have to) be a reference to a localization variable, not the actual text.
- */
- public ResearchPage(ResourceLocation image, String caption)
- {
- this.type = PageType.IMAGE;
- this.image = image;
- this.text = caption;
- }
-
- /**
- * This function should really not be called directly - used internally
- */
- public ResearchPage(AspectList as)
- {
- this.type = PageType.ASPECTS;
- this.aspects = as;
- }
-
- /**
- * returns a localized text of the text field (if one exists). Returns the text field itself otherwise.
- *
- * @return
- */
- public String getTranslatedText()
- {
- String ret = "";
-
- if (text != null)
- {
- ret = StatCollector.translateToLocal(text);
-
- if (ret.isEmpty())
- {
- ret = text;
- }
- }
-
- return ret;
- }
-}
diff --git a/BM_src/thaumcraft/api/research/ScanResult.java b/BM_src/thaumcraft/api/research/ScanResult.java
deleted file mode 100644
index 3b9d236d..00000000
--- a/BM_src/thaumcraft/api/research/ScanResult.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package thaumcraft.api.research;
-
-import net.minecraft.entity.Entity;
-
-public class ScanResult
-{
- public byte type = 0; //1=blocks,2=entities,3=phenomena
- public int blockId;
- public int blockMeta;
- public Entity entity;
- public String phenomena;
-
- public ScanResult(byte type, int blockId, int blockMeta, Entity entity,
- String phenomena)
- {
- super();
- this.type = type;
- this.blockId = blockId;
- this.blockMeta = blockMeta;
- this.entity = entity;
- this.phenomena = phenomena;
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if (obj instanceof ScanResult)
- {
- ScanResult sr = (ScanResult) obj;
-
- if (type != sr.type)
- {
- return false;
- }
-
- if (type == 1
- && (blockId != sr.blockId || blockMeta != sr.blockMeta))
- {
- return false;
- }
-
- if (type == 2 && entity.entityId != sr.entity.entityId)
- {
- return false;
- }
-
- if (type == 3 && !phenomena.equals(sr.phenomena))
- {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/BM_src/thaumcraft/api/wands/IWandFocus.java b/BM_src/thaumcraft/api/wands/IWandFocus.java
deleted file mode 100644
index c0922ed5..00000000
--- a/BM_src/thaumcraft/api/wands/IWandFocus.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Icon;
-import net.minecraft.util.MovingObjectPosition;
-import net.minecraft.world.World;
-import thaumcraft.api.aspects.AspectList;
-
-public interface IWandFocus
-{
- public enum WandFocusAnimation
- {
- WAVE, CHARGE;
- }
-
- /**
- * @return The color the focus should be changed to.
- */
- public int getFocusColor();
-
- /**
- * @return An icon that will be drawn as a block inside the focus "block".
- */
- Icon getFocusDepthLayerIcon();
-
- public Icon getOrnament();
-
- public WandFocusAnimation getAnimation();
-
- /**
- * Gets the amount of vis used per aspect per click or tick. This cost is actually listed as
- * a hundredth of a single point of vis, so a cost of 100 will equal one vis per tick/click.
- * It is returned as an AspectList to allow for multiple vis types in different ratios.
- */
- public AspectList getVisCost();
-
- public boolean isVisCostPerTick();
-
- public ItemStack onFocusRightClick(ItemStack itemstack, World world, EntityPlayer player, MovingObjectPosition movingobjectposition);
-
- public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player, int count);
-
- public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world, EntityPlayer player, int count);
-
- /**
- * Helper method to determine in what order foci should be iterated through when
- * the user presses the 'change focus' keybinding.
- *
- * @return a string of characters that foci will be sorted against.
- * For example AA00 will be placed before FG12
- *
As a guide build the sort string from two alphanumeric characters followed by
- * two numeric characters based on... whatever.
- */
- public String getSortingHelper(ItemStack itemstack);
-
- boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player);
-
- public boolean acceptsEnchant(int id);
-}
diff --git a/BM_src/thaumcraft/api/wands/IWandRodOnUpdate.java b/BM_src/thaumcraft/api/wands/IWandRodOnUpdate.java
deleted file mode 100644
index 5f9053f8..00000000
--- a/BM_src/thaumcraft/api/wands/IWandRodOnUpdate.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-
-/**
- * @author azanor
- *
- * Implemented by a class that you wish to be called whenever a wand with this rod performs its
- * update tick.
- */
-public interface IWandRodOnUpdate
-{
- void onUpdate(ItemStack itemstack, EntityPlayer player);
-}
diff --git a/BM_src/thaumcraft/api/wands/IWandTriggerManager.java b/BM_src/thaumcraft/api/wands/IWandTriggerManager.java
deleted file mode 100644
index c6229630..00000000
--- a/BM_src/thaumcraft/api/wands/IWandTriggerManager.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-public interface IWandTriggerManager
-{
- public boolean performTrigger(World world, ItemStack wand, EntityPlayer player,
- int x, int y, int z, int side, int event);
-}
diff --git a/BM_src/thaumcraft/api/wands/IWandable.java b/BM_src/thaumcraft/api/wands/IWandable.java
deleted file mode 100644
index 0e14241e..00000000
--- a/BM_src/thaumcraft/api/wands/IWandable.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-/**
- * @author azanor
- *
- * Add this to a tile entity that you wish wands to interact with in some way.
- */
-
-public interface IWandable
-{
- public int onWandRightClick(World world, ItemStack wandstack, EntityPlayer player, int x, int y, int z, int side, int md);
-
- public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player);
-
- public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count);
-
- public void onWandStoppedUsing(ItemStack wandstack, World world, EntityPlayer player, int count);
-}
diff --git a/BM_src/thaumcraft/api/wands/ItemFocusBasic.java b/BM_src/thaumcraft/api/wands/ItemFocusBasic.java
deleted file mode 100644
index deb02d96..00000000
--- a/BM_src/thaumcraft/api/wands/ItemFocusBasic.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package thaumcraft.api.wands;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.enchantment.EnchantmentHelper;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.EnumRarity;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.Icon;
-import net.minecraft.util.MovingObjectPosition;
-import net.minecraft.util.StatCollector;
-import net.minecraft.world.World;
-import thaumcraft.api.ThaumcraftApi;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-
-import java.text.DecimalFormat;
-import java.util.List;
-import java.util.Map;
-
-public class ItemFocusBasic extends Item implements IWandFocus
-{
- public ItemFocusBasic(int i)
- {
- super(i);
- maxStackSize = 1;
- canRepair = false;
- this.setMaxDamage(1);
- }
-
- public Icon icon;
-
- @SideOnly(Side.CLIENT)
- @Override
- public Icon getIconFromDamage(int par1)
- {
- return icon;
- }
-
- @Override
- public boolean isItemTool(ItemStack par1ItemStack)
- {
- return true;
- }
-
- @Override
- public boolean isDamageable()
- {
- return true;
- }
-
- @Override
- public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4)
- {
- AspectList al = this.getVisCost();
-
- if (al != null && al.size() > 0)
- {
- list.add(StatCollector.translateToLocal(isVisCostPerTick() ? "item.Focus.cost2" : "item.Focus.cost1"));
-
- for (Aspect aspect : al.getAspectsSorted())
- {
- DecimalFormat myFormatter = new DecimalFormat("#####.##");
- String amount = myFormatter.format(al.getAmount(aspect) / 100f);
- list.add(" \u00A7" + aspect.getChatcolor() + aspect.getName() + "\u00A7r x " + amount);
- }
- }
- }
-
- @Override
- public int getItemEnchantability()
- {
- return 5;
- }
-
- @Override
- public EnumRarity getRarity(ItemStack itemstack)
- {
- return EnumRarity.rare;
- }
-
- @Override
- public int getFocusColor()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public AspectList getVisCost()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public ItemStack onFocusRightClick(ItemStack itemstack, World world,
- EntityPlayer player, MovingObjectPosition movingobjectposition)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player,
- int count)
- {
- // TODO Auto-generated method stub
- }
-
- @Override
- public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world,
- EntityPlayer player, int count)
- {
- // TODO Auto-generated method stub
- }
-
- /**
- * Just insert two alphanumeric characters before this string in your focus item class
- */
- @Override
- public String getSortingHelper(ItemStack itemstack)
- {
- Map ench = EnchantmentHelper.getEnchantments(itemstack);
- String out = "";
-
- for (Integer lvl : ench.values())
- {
- out = out + lvl + "";
- }
-
- return out;
- }
-
- @Override
- public boolean isVisCostPerTick()
- {
- return false;
- }
-
- @Override
- public Icon getOrnament()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y,
- int z, EntityPlayer player)
- {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public WandFocusAnimation getAnimation()
- {
- return WandFocusAnimation.WAVE;
- }
-
- @Override
- public Icon getFocusDepthLayerIcon()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see thaumcraft.api.wands.IWandFocus#acceptsEnchant(int)
- * By default fortune is off for all wands
- */
- @Override
- public boolean acceptsEnchant(int id)
- {
- if (id == ThaumcraftApi.enchantFrugal ||
- id == ThaumcraftApi.enchantPotency)
- {
- return true;
- }
-
- return false;
- }
-}
diff --git a/BM_src/thaumcraft/api/wands/WandCap.java b/BM_src/thaumcraft/api/wands/WandCap.java
deleted file mode 100644
index 2d658039..00000000
--- a/BM_src/thaumcraft/api/wands/WandCap.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
-import thaumcraft.api.aspects.Aspect;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-
-/**
- * This class is used to keep the material information for the various caps.
- * It is also used to generate the wand recipes ingame.
- *
- * @author Azanor
- */
-public class WandCap
-{
- private String tag;
-
- /**
- * Cost to craft this wand. Combined with the rod cost.
- */
- private int craftCost;
-
- /**
- * the amount by which all aspect costs are multiplied
- */
- float baseCostModifier;
-
- /**
- * specifies a list of primal aspects that use the special discount figure instead of the normal discount.
- */
- List specialCostModifierAspects;
-
- /**
- * the amount by which the specified aspect costs are multiplied
- */
- float specialCostModifier;
-
- /**
- * The texture that will be used for the ingame wand cap
- */
- ResourceLocation texture;
-
- /**
- * the actual item that makes up this cap and will be used to generate the wand recipes
- */
- ItemStack item;
-
- public static LinkedHashMap caps = new LinkedHashMap();
-
- public WandCap(String tag, float discount, ItemStack item, int craftCost)
- {
- this.setTag(tag);
- this.baseCostModifier = discount;
- this.specialCostModifierAspects = null;
- texture = new ResourceLocation("thaumcraft", "textures/models/wand_cap_" + getTag() + ".png");
- this.item = item;
- this.setCraftCost(craftCost);
- caps.put(tag, this);
- }
-
- public WandCap(String tag, float discount, List specialAspects, float discountSpecial, ItemStack item, int craftCost)
- {
- this.setTag(tag);
- this.baseCostModifier = discount;
- this.specialCostModifierAspects = specialAspects;
- this.specialCostModifier = discountSpecial;
- texture = new ResourceLocation("thaumcraft", "textures/models/wand_cap_" + getTag() + ".png");
- this.item = item;
- this.setCraftCost(craftCost);
- caps.put(tag, this);
- }
-
- public float getBaseCostModifier()
- {
- return baseCostModifier;
- }
-
- public List getSpecialCostModifierAspects()
- {
- return specialCostModifierAspects;
- }
-
- public float getSpecialCostModifier()
- {
- return specialCostModifier;
- }
-
- public ResourceLocation getTexture()
- {
- return texture;
- }
-
- public void setTexture(ResourceLocation texture)
- {
- this.texture = texture;
- }
-
- public String getTag()
- {
- return tag;
- }
-
- public void setTag(String tag)
- {
- this.tag = tag;
- }
-
- public ItemStack getItem()
- {
- return item;
- }
-
- public void setItem(ItemStack item)
- {
- this.item = item;
- }
-
- public int getCraftCost()
- {
- return craftCost;
- }
-
- public void setCraftCost(int craftCost)
- {
- this.craftCost = craftCost;
- }
-
- // Some examples:
- // WandCap WAND_CAP_IRON = new WandCap("iron", 1.1f, Arrays.asList(Aspect.ORDER),1, new ItemStack(ConfigItems.itemWandCap,1,0),1);
- // WandCap WAND_CAP_GOLD = new WandCap("gold", 1f, new ItemStack(ConfigItems.itemWandCap,1,1),3);
-}
diff --git a/BM_src/thaumcraft/api/wands/WandRod.java b/BM_src/thaumcraft/api/wands/WandRod.java
deleted file mode 100644
index 4659f4ac..00000000
--- a/BM_src/thaumcraft/api/wands/WandRod.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
-
-import java.util.LinkedHashMap;
-
-/**
- * @author Azanor
- *
- * This class is used to keep the material information for the various rods.
- * It is also used to generate the wand recipes ingame.
- */
-public class WandRod
-{
- private String tag;
-
- /**
- * Cost to craft this wand. Combined with the rod cost.
- */
- private int craftCost;
-
- /**
- * The amount of vis that can be stored - this number is actually multiplied
- * by 100 for use by the wands internals
- */
- int capacity;
-
- /**
- * The texture that will be used for the ingame wand rod
- */
- ResourceLocation texture;
-
- /**
- * the actual item that makes up this rod and will be used to generate the wand recipes
- */
- ItemStack item;
-
- /**
- * A class that will be called whenever the wand onUpdate tick is run
- */
- IWandRodOnUpdate onUpdate;
-
- /**
- * Does the rod glow in the dark?
- */
- boolean glow;
-
- public static LinkedHashMap rods = new LinkedHashMap();
-
- public WandRod(String tag, int capacity, ItemStack item, int craftCost, ResourceLocation texture)
- {
- this.setTag(tag);
- this.capacity = capacity;
- this.texture = texture;
- this.item = item;
- this.setCraftCost(craftCost);
- rods.put(tag, this);
- }
-
- public WandRod(String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate, ResourceLocation texture)
- {
- this.setTag(tag);
- this.capacity = capacity;
- this.texture = texture;
- this.item = item;
- this.setCraftCost(craftCost);
- rods.put(tag, this);
- this.onUpdate = onUpdate;
- }
-
- public WandRod(String tag, int capacity, ItemStack item, int craftCost)
- {
- this.setTag(tag);
- this.capacity = capacity;
- this.texture = new ResourceLocation("thaumcraft", "textures/models/wand_rod_" + getTag() + ".png");
- this.item = item;
- this.setCraftCost(craftCost);
- rods.put(tag, this);
- }
-
- public WandRod(String tag, int capacity, ItemStack item, int craftCost, IWandRodOnUpdate onUpdate)
- {
- this.setTag(tag);
- this.capacity = capacity;
- this.texture = new ResourceLocation("thaumcraft", "textures/models/wand_rod_" + getTag() + ".png");
- this.item = item;
- this.setCraftCost(craftCost);
- rods.put(tag, this);
- this.onUpdate = onUpdate;
- }
-
- public String getTag()
- {
- return tag;
- }
-
- public void setTag(String tag)
- {
- this.tag = tag;
- }
-
- public int getCapacity()
- {
- return capacity;
- }
-
- public void setCapacity(int capacity)
- {
- this.capacity = capacity;
- }
-
- public ResourceLocation getTexture()
- {
- return texture;
- }
-
- public void setTexture(ResourceLocation texture)
- {
- this.texture = texture;
- }
-
- public ItemStack getItem()
- {
- return item;
- }
-
- public void setItem(ItemStack item)
- {
- this.item = item;
- }
-
- public int getCraftCost()
- {
- return craftCost;
- }
-
- public void setCraftCost(int craftCost)
- {
- this.craftCost = craftCost;
- }
-
- public IWandRodOnUpdate getOnUpdate()
- {
- return onUpdate;
- }
-
- public void setOnUpdate(IWandRodOnUpdate onUpdate)
- {
- this.onUpdate = onUpdate;
- }
-
- public boolean isGlowing()
- {
- return glow;
- }
-
- public void setGlowing(boolean hasGlow)
- {
- this.glow = hasGlow;
- }
-
- // Some examples:
- // WandRod WAND_ROD_WOOD = new WandRod("wood",25,new ItemStack(Item.stick),1);
- // WandRod WAND_ROD_BLAZE = new WandRod("blaze",100,new ItemStack(Item.blazeRod),7,new WandRodBlazeOnUpdate());
-}
diff --git a/BM_src/thaumcraft/api/wands/WandTriggerRegistry.java b/BM_src/thaumcraft/api/wands/WandTriggerRegistry.java
deleted file mode 100644
index ac2d337b..00000000
--- a/BM_src/thaumcraft/api/wands/WandTriggerRegistry.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package thaumcraft.api.wands;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.world.World;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * This class serves a similar function to IWandable in that it allows wands to interact
- * with object in the world. In this case it is most useful for adding interaction with non-mod
- * blocks where you can't control what happens in their code.
- * Example where it is used is in crafting the thaumonomicon from a bookshelf and the
- * crucible from a cauldron
- *
- * @author azanor
- */
-public class WandTriggerRegistry
-{
- /**
- * Registers an action to perform when a casting wand right clicks on a specific block.
- * A manager class needs to be created that implements IWandTriggerManager.
- *
- * @param manager
- * @param event a logical number that you can use to differentiate different events or actions
- * @param blockid
- * @param meta send -1 as a wildcard value for all possible meta values
- */
- public static void registerWandBlockTrigger(IWandTriggerManager manager, int event, int blockid, int meta)
- {
- triggers.put(Arrays.asList(blockid, meta),
- Arrays.asList(manager, event));
- }
-
- private static HashMap,List> triggers = new HashMap,List>();
-
- public static boolean hasTrigger(int blockid, int meta)
- {
- if (triggers.containsKey(Arrays.asList(blockid, meta)) ||
- triggers.containsKey(Arrays.asList(blockid, -1)))
- {
- return true;
- }
-
- return false;
- }
-
- /**
- * This is called by the onItemUseFirst function in wands.
- * Parameters and return value functions like you would expect for that function.
- *
- * @param world
- * @param wand
- * @param player
- * @param x
- * @param y
- * @param z
- * @param side
- * @param blockid
- * @param meta
- * @return
- */
- public static boolean performTrigger(World world, ItemStack wand, EntityPlayer player,
- int x, int y, int z, int side, int blockid, int meta)
- {
- List l = triggers.get(Arrays.asList(blockid, meta));
-
- if (l == null)
- {
- l = triggers.get(Arrays.asList(blockid, -1));
- }
-
- if (l == null)
- {
- return false;
- }
-
- IWandTriggerManager manager = (IWandTriggerManager) l.get(0);
- int event = (Integer) l.get(1);
- return manager.performTrigger(world, wand, player, x, y, z, side, event);
- }
-}