2013-07-26 21:18:53 -07:00
|
|
|
package tconstruct.library;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
2014-02-20 14:20:02 -05:00
|
|
|
|
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
|
|
|
import org.apache.logging.log4j.Logger;
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-05 10:28:54 -05:00
|
|
|
import mantle.lib.TabTools;
|
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
2013-07-26 21:18:53 -07:00
|
|
|
import tconstruct.library.crafting.Detailing;
|
|
|
|
|
import tconstruct.library.crafting.LiquidCasting;
|
|
|
|
|
import tconstruct.library.crafting.ToolBuilder;
|
|
|
|
|
import tconstruct.library.tools.ArrowMaterial;
|
|
|
|
|
import tconstruct.library.tools.BowMaterial;
|
|
|
|
|
import tconstruct.library.tools.BowstringMaterial;
|
|
|
|
|
import tconstruct.library.tools.CustomMaterial;
|
|
|
|
|
import tconstruct.library.tools.FletchingMaterial;
|
2014-01-08 22:39:27 -05:00
|
|
|
import tconstruct.library.tools.TToolMaterial;
|
2014-02-05 10:28:54 -05:00
|
|
|
import tconstruct.library.tools.ToolCore;
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* A registry to store any relevant API work
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
|
|
|
|
* @author mDiyo
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public class TConstructRegistry
|
|
|
|
|
{
|
|
|
|
|
public static TConstructRegistry instance = new TConstructRegistry();
|
|
|
|
|
|
2014-02-20 14:20:02 -05:00
|
|
|
public static Logger logger = LogManager.getLogger("TCon-API");
|
2013-10-12 23:46:35 +01:00
|
|
|
|
2013-07-26 21:18:53 -07:00
|
|
|
/* Creative tabs */
|
|
|
|
|
public static TabTools toolTab;
|
|
|
|
|
public static TabTools materialTab;
|
|
|
|
|
public static TabTools blockTab;
|
|
|
|
|
|
|
|
|
|
/* Items */
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* A directory of crafting items and tools used by the mod.
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* Tools: pickaxe, shovel, hatchet, broadsword, longsword, rapier, dagger,
|
|
|
|
|
* cutlass frypan, battlesign, mattock, chisel lumberaxe, cleaver, scythe,
|
|
|
|
|
* excavator, hammer, battleaxe
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* Patterns: blankPattern, woodPattern, metalPattern
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* Tool crafting parts: toolRod, toolShard, binding, toughBinding, toughRod,
|
|
|
|
|
* heavyPlate pickaxeHead, shovelhead, hatchetHead, swordBlade, wideguard,
|
|
|
|
|
* handGuard, crossbar, knifeBlade, fullGuard, frypanHead, signHead,
|
|
|
|
|
* chiselHead scytheBlade, broadAxeHead, excavatorHead, largeSwordBlade,
|
|
|
|
|
* hammerHead bowstring, fletching, arrowhead
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
public static HashMap<String, Item> itemDirectory = new HashMap<String, Item>();
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Adds an item to the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param name
|
|
|
|
|
* Associates the name with the stack
|
|
|
|
|
* @param itemstack
|
|
|
|
|
* The stack to add to the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static void addItemToDirectory (String name, Item itemstack)
|
|
|
|
|
{
|
|
|
|
|
Item add = itemDirectory.get(name);
|
|
|
|
|
if (add != null)
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn(name + " is already present in the Item directory");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
itemDirectory.put(name, itemstack);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Retrieves an itemstack from the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param name
|
|
|
|
|
* The name of the item to get
|
2013-07-26 21:18:53 -07:00
|
|
|
* @return Item associated with the name, or null if not present.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static Item getItem (String name)
|
|
|
|
|
{
|
|
|
|
|
Item ret = itemDirectory.get(name);
|
|
|
|
|
if (ret == null)
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Could not find " + name + " in the Item directory");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* A directory of ItemStacks. Contains mostly crafting items
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* Materials: paperStack, greenSlimeCrystal, blueSlimeCrystal, searedBrick,
|
|
|
|
|
* mossBall, lavaCrystal, necroticBone, silkyCloth, silkyJewel ingotCobalt,
|
|
|
|
|
* ingotArdite, ingotManyullyn, ingotCopper, ingotTin, ingotAluminum,
|
|
|
|
|
* rawAluminum, ingotBronze, ingotAluminumBrass, ingotAlumite, ingotSteel,
|
|
|
|
|
* ingotObsidian nuggetIron, nuggetCopper, nuggetTin, nuggetAluminum,
|
|
|
|
|
* nuggetSilver, nuggetAluminumBrass oreberryIron, oreberryGold,
|
|
|
|
|
* oreberryCopper, oreberryTin, oreberryTin, oreberrySilver, diamondApple,
|
|
|
|
|
* blueSlimeFood, canisterEmpty, miniRedHeart, canisterRedHeart
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
|
|
|
|
* Patterns - These have a suffix of Pattern or Cast. ex: hatchetHeadPattern
|
2014-02-16 14:23:50 -05:00
|
|
|
* ingot, toolRod, pickaxeHead, shovelHead, hatchetHead, swordBlade,
|
|
|
|
|
* wideGuard, handGuard, crossbar, binding, frypanHead, signHead,
|
|
|
|
|
* knifeBlade, chiselHead, toughRod, toughBinding, largePlate, broadAxeHead,
|
|
|
|
|
* scytheHead, excavatorHead, largeBlade, hammerHead, fullGuard, bowstring
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
static HashMap<String, ItemStack> itemstackDirectory = new HashMap<String, ItemStack>();
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Adds an itemstack to the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param name
|
|
|
|
|
* Associates the name with the stack
|
|
|
|
|
* @param itemstack
|
|
|
|
|
* The stack to add to the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static void addItemStackToDirectory (String name, ItemStack itemstack)
|
|
|
|
|
{
|
|
|
|
|
ItemStack add = itemstackDirectory.get(name);
|
|
|
|
|
if (add != null)
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn(name + " is already present in the ItemStack directory");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
itemstackDirectory.put(name, itemstack);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Retrieves an itemstack from the directory
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param name
|
|
|
|
|
* The name of the item to get
|
2013-07-26 21:18:53 -07:00
|
|
|
* @return Item associated with the name, or null if not present.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static ItemStack getItemStack (String name)
|
|
|
|
|
{
|
|
|
|
|
ItemStack ret = itemstackDirectory.get(name);
|
|
|
|
|
if (ret == null)
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Could not find " + name + " in the ItemStack directory");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ArrayList<ToolCore> tools = new ArrayList<ToolCore>(20);
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
// Parts
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* List: Item ID, metadata, material ID ItemStack: Output. Ex: Cactus
|
|
|
|
|
* Binding
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
public static HashMap<List, ItemStack> patternPartMapping = new HashMap<List, ItemStack>();
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Maps an item and a material ID to an output part
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param woodPattern
|
|
|
|
|
* ID to check against
|
|
|
|
|
* @param patternMeta
|
|
|
|
|
* Metadata to check against
|
|
|
|
|
* @param materialID
|
|
|
|
|
* Material that goes with the item
|
|
|
|
|
* @param output
|
|
|
|
|
* The resulting part
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
2013-12-31 14:11:05 -05:00
|
|
|
public static void addPartMapping (Item woodPattern, int patternMeta, int materialID, ItemStack output)
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
2013-12-31 14:11:05 -05:00
|
|
|
patternPartMapping.put(Arrays.asList(woodPattern, patternMeta, materialID), output);
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
2013-12-31 15:30:34 -05:00
|
|
|
public static ItemStack getPartMapping (Item item, int metadata, int materialID)
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
2013-12-31 15:30:34 -05:00
|
|
|
ItemStack stack = patternPartMapping.get(Arrays.asList(item, metadata, materialID));
|
2013-07-26 21:18:53 -07:00
|
|
|
if (stack != null)
|
|
|
|
|
return stack.copy();
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
// Tools
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Internal tool mapping, used for adding textures
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
|
|
|
|
* @param tool
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static void addToolMapping (ToolCore tool)
|
|
|
|
|
{
|
|
|
|
|
tools.add(tool);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Internal tool mapping, used for adding textures
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
|
|
|
|
* @return List of tools
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static ArrayList<ToolCore> getToolMapping ()
|
|
|
|
|
{
|
|
|
|
|
return tools;
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Registers a tool to its crafting parts. If an output is registered
|
|
|
|
|
* multiple times the parts are added to the recipe's input list Valid part
|
|
|
|
|
* amounts are 2, 3, and 4.
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
|
|
|
|
* @see ToolBuidler
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param output
|
|
|
|
|
* The ToolCore to craft
|
|
|
|
|
* @param parts
|
|
|
|
|
* Pieces to make the tool with
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
public static void addToolRecipe (ToolCore output, Item... parts)
|
|
|
|
|
{
|
|
|
|
|
ToolBuilder tb = ToolBuilder.instance;
|
2013-11-05 19:56:30 +03:00
|
|
|
if (parts.length < 2 || parts.length > 4)
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Wrong amount of items to craft into a tool");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
tb.addToolRecipe(output, parts);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
// Materials
|
2014-01-08 22:39:27 -05:00
|
|
|
public static HashMap<Integer, TToolMaterial> toolMaterials = new HashMap<Integer, TToolMaterial>(40);
|
|
|
|
|
public static HashMap<String, TToolMaterial> toolMaterialStrings = new HashMap<String, TToolMaterial>(40);
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Adds a tool material to the registry
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param materialID
|
|
|
|
|
* Unique ID, stored for each part
|
|
|
|
|
* @exception materialID
|
|
|
|
|
* must be unique
|
|
|
|
|
* @param materialName
|
|
|
|
|
* Unique name for data lookup purposes
|
|
|
|
|
* @param harvestLevel
|
|
|
|
|
* The materials which the tool can harvest. Pickaxe levels - 0:
|
|
|
|
|
* Wood, 1: Stone, 2: Redstone/Diamond, 3: Obsidian, 4:
|
|
|
|
|
* Cobalt/Ardite, 5: Manyullyn
|
|
|
|
|
* @param durability
|
|
|
|
|
* Base durability of the tool, affects tool heads.
|
|
|
|
|
* @param miningspeed
|
|
|
|
|
* Base mining speed, divided by 100 in use
|
|
|
|
|
* @param attack
|
|
|
|
|
* Base attack
|
|
|
|
|
* @param handleModifier
|
|
|
|
|
* Durability multiplier on the tool
|
|
|
|
|
* @param reinforced
|
|
|
|
|
* Reinforced level
|
|
|
|
|
* @param stonebound
|
|
|
|
|
* Amount of Stonebound to put on the tool. Negative numbers are
|
|
|
|
|
* Spiny.
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static void addToolMaterial (int materialID, String materialName, int harvestLevel, int durability, int miningspeed, int attack, float handleModifier, int reinforced, float stonebound,
|
|
|
|
|
String style, String ability)
|
|
|
|
|
{
|
2014-01-08 22:39:27 -05:00
|
|
|
TToolMaterial mat = toolMaterials.get(materialID);
|
2013-07-26 21:18:53 -07:00
|
|
|
if (mat == null)
|
|
|
|
|
{
|
2014-01-08 22:39:27 -05:00
|
|
|
mat = new TToolMaterial(materialName, harvestLevel, durability, miningspeed, attack, handleModifier, reinforced, stonebound, style, ability);
|
2013-07-26 21:18:53 -07:00
|
|
|
toolMaterials.put(materialID, mat);
|
|
|
|
|
toolMaterialStrings.put(materialName, mat);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new IllegalArgumentException("[TCon API] Material ID " + materialID + " is already occupied by " + mat.materialName);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Adds a tool material to the registry
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param materialID
|
|
|
|
|
* Unique ID, stored for each part
|
|
|
|
|
* @exception materialID
|
|
|
|
|
* must be unique
|
|
|
|
|
* @param materialName
|
|
|
|
|
* Unique name for data lookup purposes
|
|
|
|
|
* @param displayName
|
|
|
|
|
* Prefix for creative mode tools
|
|
|
|
|
* @param harvestLevel
|
|
|
|
|
* The materials which the tool can harvest. Pickaxe levels - 0:
|
|
|
|
|
* Wood, 1: Stone, 2: Redstone/Diamond, 3: Obsidian, 4:
|
|
|
|
|
* Cobalt/Ardite, 5: Manyullyn
|
|
|
|
|
* @param durability
|
|
|
|
|
* Base durability of the tool, affects tool heads.
|
|
|
|
|
* @param miningspeed
|
|
|
|
|
* Base mining speed, divided by 100 in use
|
|
|
|
|
* @param attack
|
|
|
|
|
* Base attack
|
|
|
|
|
* @param handleModifier
|
|
|
|
|
* Durability multiplier on the tool
|
|
|
|
|
* @param reinforced
|
|
|
|
|
* Reinforced level
|
|
|
|
|
* @param stonebound
|
|
|
|
|
* Amount of Stonebound to put on the tool. Negative numbers are
|
|
|
|
|
* Spiny.
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public static void addToolMaterial (int materialID, String materialName, String displayName, int harvestLevel, int durability, int miningspeed, int attack, float handleModifier, int reinforced,
|
|
|
|
|
float stonebound, String style, String ability)
|
|
|
|
|
{
|
2014-01-08 22:39:27 -05:00
|
|
|
TToolMaterial mat = toolMaterials.get(materialID);
|
2013-07-26 21:18:53 -07:00
|
|
|
if (mat == null)
|
|
|
|
|
{
|
2014-01-08 22:39:27 -05:00
|
|
|
mat = new TToolMaterial(materialName, displayName, harvestLevel, durability, miningspeed, attack, handleModifier, reinforced, stonebound, style, ability);
|
2013-07-26 21:18:53 -07:00
|
|
|
toolMaterials.put(materialID, mat);
|
|
|
|
|
toolMaterialStrings.put(materialName, mat);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new IllegalArgumentException("[TCon API] Material ID " + materialID + " is already occupied by " + mat.materialName);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Adds a tool material to the registry
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param materialID
|
|
|
|
|
* Unique ID, stored for each part
|
|
|
|
|
* @exception materialID
|
|
|
|
|
* must be unique
|
|
|
|
|
* @param material
|
|
|
|
|
* Complete tool material to add. Uses the name in the material
|
|
|
|
|
* for lookup purposes.
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
|
2014-01-08 22:39:27 -05:00
|
|
|
public static void addtoolMaterial (int materialID, TToolMaterial material)
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
2014-01-08 22:39:27 -05:00
|
|
|
TToolMaterial mat = toolMaterials.get(materialID);
|
2013-07-26 21:18:53 -07:00
|
|
|
if (mat == null)
|
|
|
|
|
{
|
|
|
|
|
toolMaterials.put(materialID, mat);
|
|
|
|
|
toolMaterialStrings.put(material.name(), mat);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new IllegalArgumentException("[TCon API] Material ID " + materialID + " is already occupied by " + mat.materialName);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Looks up a tool material by ID
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param key
|
|
|
|
|
* The ID to look up
|
2013-07-26 21:18:53 -07:00
|
|
|
* @return Tool Material
|
|
|
|
|
*/
|
|
|
|
|
|
2014-01-08 22:39:27 -05:00
|
|
|
public static TToolMaterial getMaterial (int key)
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
|
|
|
|
return (toolMaterials.get(key));
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Looks up a tool material by name
|
2013-07-26 21:18:53 -07:00
|
|
|
*
|
2014-02-16 14:23:50 -05:00
|
|
|
* @param key
|
|
|
|
|
* the name to look up
|
2013-07-26 21:18:53 -07:00
|
|
|
* @return Tool Material
|
|
|
|
|
*/
|
|
|
|
|
|
2014-01-08 22:39:27 -05:00
|
|
|
public static TToolMaterial getMaterial (String key)
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
|
|
|
|
return (toolMaterialStrings.get(key));
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
// Bow materials
|
2013-07-26 21:18:53 -07:00
|
|
|
public static HashMap<Integer, BowMaterial> bowMaterials = new HashMap<Integer, BowMaterial>(40);
|
|
|
|
|
|
|
|
|
|
public static void addBowMaterial (int materialID, int durability, int drawSpeed, float speedMax)
|
|
|
|
|
{
|
|
|
|
|
BowMaterial mat = bowMaterials.get(materialID);
|
|
|
|
|
if (mat == null)
|
|
|
|
|
{
|
|
|
|
|
mat = new BowMaterial(durability, drawSpeed, speedMax);
|
|
|
|
|
bowMaterials.put(materialID, mat);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new IllegalArgumentException("[TCon API] Bow Material ID " + materialID + " is already occupied");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static boolean validBowMaterial (int materialID)
|
|
|
|
|
{
|
|
|
|
|
return bowMaterials.containsKey(materialID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static BowMaterial getBowMaterial (int materialID)
|
|
|
|
|
{
|
|
|
|
|
return bowMaterials.get(materialID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static HashMap<Integer, ArrowMaterial> arrowMaterials = new HashMap<Integer, ArrowMaterial>(40);
|
|
|
|
|
|
|
|
|
|
public static void addArrowMaterial (int materialID, float mass, float breakChance, float accuracy)
|
|
|
|
|
{
|
|
|
|
|
ArrowMaterial mat = arrowMaterials.get(materialID);
|
|
|
|
|
if (mat == null)
|
|
|
|
|
{
|
|
|
|
|
mat = new ArrowMaterial(mass, breakChance, accuracy);
|
|
|
|
|
arrowMaterials.put(materialID, mat);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
throw new IllegalArgumentException("[TCon API] Arrow Material ID " + materialID + " is already occupied");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static boolean validArrowMaterial (int materialID)
|
|
|
|
|
{
|
|
|
|
|
return arrowMaterials.containsKey(materialID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ArrowMaterial getArrowMaterial (int materialID)
|
|
|
|
|
{
|
|
|
|
|
return arrowMaterials.get(materialID);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
// Custom materials - bowstrings, fletching, etc
|
2013-07-26 21:18:53 -07:00
|
|
|
public static ArrayList<CustomMaterial> customMaterials = new ArrayList<CustomMaterial>();
|
|
|
|
|
|
|
|
|
|
public static void addCustomMaterial (CustomMaterial mat)
|
|
|
|
|
{
|
|
|
|
|
if (mat != null)
|
|
|
|
|
customMaterials.add(mat);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void addBowstringMaterial (int materialID, int value, ItemStack input, ItemStack craftingMaterial, float durability, float drawSpeed, float flightSpeed)
|
|
|
|
|
{
|
|
|
|
|
BowstringMaterial mat = new BowstringMaterial(materialID, value, input, craftingMaterial, durability, drawSpeed, flightSpeed);
|
|
|
|
|
customMaterials.add(mat);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void addFletchingMaterial (int materialID, int value, ItemStack input, ItemStack craftingMaterial, float accuracy, float breakChance, float mass)
|
|
|
|
|
{
|
|
|
|
|
FletchingMaterial mat = new FletchingMaterial(materialID, value, input, craftingMaterial, accuracy, breakChance, mass);
|
|
|
|
|
customMaterials.add(mat);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static CustomMaterial getCustomMaterial (int materialID, Class<? extends CustomMaterial> clazz)
|
|
|
|
|
{
|
|
|
|
|
for (CustomMaterial mat : customMaterials)
|
|
|
|
|
{
|
|
|
|
|
if (mat.getClass().equals(clazz) && mat.materialID == materialID)
|
|
|
|
|
return mat;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static CustomMaterial getCustomMaterial (ItemStack input, Class<? extends CustomMaterial> clazz)
|
|
|
|
|
{
|
|
|
|
|
for (CustomMaterial mat : customMaterials)
|
|
|
|
|
{
|
|
|
|
|
if (mat.getClass().equals(clazz) && input.isItemEqual(mat.input))
|
|
|
|
|
return mat;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/*
|
|
|
|
|
* public static CustomMaterial getCustomMaterial(ItemStack input, ItemStack
|
|
|
|
|
* pattern) { for (CustomMaterial mat : customMaterials) { if
|
|
|
|
|
* (mat.matches(input, pattern)) return mat; } return null; }
|
|
|
|
|
*/
|
2013-07-26 21:18:53 -07:00
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/*
|
|
|
|
|
* public static ItemStack craftBowString(ItemStack stack) { if
|
|
|
|
|
* (stack.stackSize < 3) return null;
|
|
|
|
|
*
|
|
|
|
|
* for (BowstringMaterial mat : bowstringMaterials) { if
|
|
|
|
|
* (stack.isItemEqual(mat.input)) return mat.craftingItem.copy(); } return
|
|
|
|
|
* null; }
|
|
|
|
|
*
|
|
|
|
|
* public static BowstringMaterial getBowstringMaterial(ItemStack stack) {
|
|
|
|
|
* if (stack.stackSize < 3) return null;
|
|
|
|
|
*
|
|
|
|
|
* for (BowstringMaterial mat : bowstringMaterials) { if
|
|
|
|
|
* (stack.isItemEqual(mat.input)) return mat; } return null; }
|
|
|
|
|
*/
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
public static LiquidCasting getTableCasting ()
|
|
|
|
|
{
|
|
|
|
|
return instance.tableCasting();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LiquidCasting tableCasting ()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Class clazz = Class.forName("tconstruct.TConstruct");
|
|
|
|
|
Method method = clazz.getMethod("getTableCasting");
|
|
|
|
|
LiquidCasting lc = (LiquidCasting) method.invoke(this);
|
|
|
|
|
return lc;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Could not find casting table recipes.");
|
2013-07-26 21:18:53 -07:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static LiquidCasting getBasinCasting ()
|
|
|
|
|
{
|
|
|
|
|
return instance.basinCasting();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LiquidCasting basinCasting ()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Class clazz = Class.forName("tconstruct.TConstruct");
|
|
|
|
|
Method method = clazz.getMethod("getBasinCasting");
|
|
|
|
|
LiquidCasting lc = (LiquidCasting) method.invoke(this);
|
|
|
|
|
return lc;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Could not find casting basin recipes.");
|
2013-07-26 21:18:53 -07:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static Detailing getChiselDetailing ()
|
|
|
|
|
{
|
|
|
|
|
return instance.chiselDetailing();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Detailing chiselDetailing ()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Class clazz = Class.forName("tconstruct.TConstruct");
|
|
|
|
|
Method method = clazz.getMethod("getChiselDetailing");
|
|
|
|
|
Detailing lc = (Detailing) method.invoke(this);
|
|
|
|
|
return lc;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
2014-02-20 14:20:02 -05:00
|
|
|
logger.warn("Could not find chisel detailing recipes.");
|
2013-07-26 21:18:53 -07:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ArrayList<ActiveToolMod> activeModifiers = new ArrayList<ActiveToolMod>();
|
|
|
|
|
|
|
|
|
|
public static void registerActiveToolMod (ActiveToolMod mod)
|
|
|
|
|
{
|
|
|
|
|
activeModifiers.add(mod);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-16 14:23:50 -05:00
|
|
|
/**
|
|
|
|
|
* Default Material Index 0: Wood 1: Stone 2: Iron 3: Flint 4: Cactus 5:
|
|
|
|
|
* Bone 6: Obsidian 7: Netherrack 8: Green Slime 9: Paper 10: Cobalt 11:
|
|
|
|
|
* Ardite 12: Manyullyn 13: Copper 14: Bronze 15: Alumite 16: Steel 17: Blue
|
|
|
|
|
* Slime
|
2013-07-26 21:18:53 -07:00
|
|
|
*/
|
|
|
|
|
}
|