Mostly finished basic hand tools
Still need to test them, do the textures, and lang files.
This commit is contained in:
parent
2f5cd2a767
commit
25d0a4e876
5 changed files with 147 additions and 66 deletions
|
@ -16,7 +16,7 @@ import dark.core.common.items.EnumOrePart;
|
|||
import dark.core.common.items.ItemOreDirv;
|
||||
import dark.core.common.items.ItemParts;
|
||||
import dark.core.common.items.ItemParts.Parts;
|
||||
import dark.core.common.items.ItemTool;
|
||||
import dark.core.common.items.ItemCommonTool;
|
||||
import dark.core.common.items.ItemWrench;
|
||||
|
||||
public class CoreRecipeLoader extends RecipeLoader
|
||||
|
|
|
@ -3,6 +3,7 @@ package dark.core.common.items;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.item.EnumToolMaterial;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Icon;
|
||||
|
@ -17,20 +18,20 @@ import dark.core.common.DarkMain;
|
|||
* @author DarkGuardsman */
|
||||
public enum EnumMaterial
|
||||
{
|
||||
WOOD("Wood", false, EnumOrePart.INGOTS, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.ROD, EnumOrePart.GEARS),
|
||||
STONE("Stone", false, EnumOrePart.INGOTS, EnumOrePart.SCRAPS),
|
||||
IRON("Iron", false, EnumOrePart.INGOTS),
|
||||
OBBY("Obby", true, EnumOrePart.INGOTS, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS, EnumOrePart.PLATES),
|
||||
GOLD("Gold", false, EnumOrePart.GEARS, EnumOrePart.INGOTS),
|
||||
COAL("Coal", false, EnumOrePart.GEARS, EnumOrePart.TUBE, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS),
|
||||
WOOD("Wood", EnumToolMaterial.WOOD, EnumOrePart.INGOTS, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.ROD, EnumOrePart.GEARS),
|
||||
STONE("Stone", EnumToolMaterial.STONE, EnumOrePart.INGOTS, EnumOrePart.SCRAPS),
|
||||
IRON("Iron", EnumToolMaterial.IRON, EnumOrePart.INGOTS),
|
||||
OBBY("Obby", true, 7.0f, 500, EnumOrePart.INGOTS, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS, EnumOrePart.PLATES),
|
||||
GOLD("Gold", EnumToolMaterial.GOLD, EnumOrePart.GEARS, EnumOrePart.INGOTS),
|
||||
COAL("Coal", EnumToolMaterial.WOOD, EnumOrePart.GEARS, EnumOrePart.TUBE, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS),
|
||||
|
||||
COPPER("Copper", true),
|
||||
TIN("Tin", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
LEAD("Lead", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
ALUMINIUM("Aluminum", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
SILVER("Silver", true, EnumOrePart.GEARS),
|
||||
STEEL("Steel", true, EnumOrePart.RUBBLE),
|
||||
BRONZE("Bronze", true, EnumOrePart.RUBBLE);
|
||||
COPPER("Copper", true, 2.5f, 79),
|
||||
TIN("Tin", true, 2.0f, 50, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
LEAD("Lead", false, 0, 0, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
ALUMINIUM("Aluminum", true, 4.0f, 100, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||
SILVER("Silver", true, 11.0f, 30, EnumOrePart.GEARS),
|
||||
STEEL("Steel", true, 7.0f, 2000, EnumOrePart.RUBBLE),
|
||||
BRONZE("Bronze", true, 6.0f, 260, EnumOrePart.RUBBLE);
|
||||
|
||||
/** Name of the material */
|
||||
public String simpleName;
|
||||
|
@ -41,15 +42,29 @@ public enum EnumMaterial
|
|||
|
||||
/** Limit by which each material is restricted by for creating orePart sub items */
|
||||
public static final int itemCountPerMaterial = 50;
|
||||
public static final int toolCountPerMaterial = 10;
|
||||
|
||||
/** Client side only var used by ore items to store icon per material set */
|
||||
@SideOnly(Side.CLIENT)
|
||||
Icon[] itemIcons;
|
||||
|
||||
private EnumMaterial(String name, boolean tool, EnumOrePart... enumOreParts)
|
||||
@SideOnly(Side.CLIENT)
|
||||
Icon[] toolIcons;
|
||||
|
||||
public float materialEffectiveness = 2.0f;
|
||||
public int maxUses = 100;
|
||||
|
||||
private EnumMaterial(String name, EnumToolMaterial material, EnumOrePart... enumOreParts)
|
||||
{
|
||||
this(name, false, material.getEfficiencyOnProperMaterial(), material.getMaxUses(), enumOreParts);
|
||||
}
|
||||
|
||||
private EnumMaterial(String name, boolean tool, float effectiveness, int toolUses, EnumOrePart... enumOreParts)
|
||||
{
|
||||
this.simpleName = name;
|
||||
this.hasTools = tool;
|
||||
this.materialEffectiveness = effectiveness;
|
||||
this.maxUses = toolUses;
|
||||
unneedItems = new ArrayList<EnumOrePart>();
|
||||
for (int i = 0; enumOreParts != null && i < enumOreParts.length; i++)
|
||||
{
|
||||
|
@ -101,6 +116,16 @@ public enum EnumMaterial
|
|||
return null;
|
||||
}
|
||||
|
||||
public static Icon getToolIcon(int metadata)
|
||||
{
|
||||
int mat = metadata / EnumMaterial.toolCountPerMaterial;
|
||||
if (mat < EnumMaterial.values().length)
|
||||
{
|
||||
return EnumMaterial.values()[metadata / EnumMaterial.toolCountPerMaterial].toolIcons[metadata % EnumMaterial.toolCountPerMaterial];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean shouldCreateItem(EnumOrePart part)
|
||||
{
|
||||
if (part == EnumOrePart.ROD || part == EnumOrePart.TUBE)
|
||||
|
@ -115,18 +140,28 @@ public enum EnumMaterial
|
|||
return this.hasTools;
|
||||
}
|
||||
|
||||
public static ItemStack getTool(EnumTools tool, EnumMaterial mat)
|
||||
public static ItemStack getTool(EnumTool tool, EnumMaterial mat)
|
||||
{
|
||||
return mat.getTool(tool);
|
||||
}
|
||||
|
||||
public ItemStack getTool(EnumTools tool)
|
||||
public ItemStack getTool(EnumTool tool)
|
||||
{
|
||||
ItemStack stack = null;
|
||||
if (DarkMain.recipeLoader.itemDiggingTool instanceof ItemTool)
|
||||
if (DarkMain.recipeLoader.itemDiggingTool instanceof ItemCommonTool)
|
||||
{
|
||||
stack = new ItemStack(DarkMain.recipeLoader.itemDiggingTool.itemID, (this.ordinal() * 10) + tool.ordinal(), 1);
|
||||
stack = new ItemStack(DarkMain.recipeLoader.itemDiggingTool.itemID, (this.ordinal() * toolCountPerMaterial) + tool.ordinal(), 1);
|
||||
}
|
||||
return stack;
|
||||
}
|
||||
|
||||
public static EnumTool getToolFromMeta(int meta)
|
||||
{
|
||||
return EnumTool.values()[meta % toolCountPerMaterial];
|
||||
}
|
||||
|
||||
public static EnumMaterial getToolMatFromMeta(int meta)
|
||||
{
|
||||
return EnumMaterial.values()[meta / EnumMaterial.toolCountPerMaterial];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@ import net.minecraft.block.material.Material;
|
|||
/** Enum to store tools that can be created from the material sheet.
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public enum EnumTools
|
||||
public enum EnumTool
|
||||
{
|
||||
PICKAX("Pick-Ax", Material.rock, Material.iron, Material.ice, Material.anvil, Material.glass, Material.tnt),
|
||||
PICKAX("Pick-Ax", Material.rock, Material.iron, Material.ice, Material.anvil, Material.glass, Material.tnt, Material.piston),
|
||||
AX("Wood-Ax", Material.wood, Material.pumpkin, Material.plants, Material.vine),
|
||||
SPADE("Shade", Material.sand, Material.snow, Material.clay, Material.craftedSnow, Material.grass, Material.ground),
|
||||
NA3(),
|
||||
|
@ -23,15 +23,17 @@ public enum EnumTools
|
|||
|
||||
public final List<Material> effecticVsMaterials = new ArrayList<Material>();
|
||||
public String name = "tool";
|
||||
public boolean enabled = false;
|
||||
|
||||
private EnumTools()
|
||||
private EnumTool()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private EnumTools(String name, Material... mats)
|
||||
private EnumTool(String name, Material... mats)
|
||||
{
|
||||
this.name = name;
|
||||
this.enabled = true;
|
||||
this.setEffectiveList(mats);
|
||||
}
|
||||
|
||||
|
@ -50,4 +52,15 @@ public enum EnumTools
|
|||
this.effecticVsMaterials.add(block);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFullName(int meta)
|
||||
{
|
||||
int matID = meta / EnumMaterial.toolCountPerMaterial;
|
||||
int partID = meta % EnumMaterial.toolCountPerMaterial;
|
||||
if (matID < EnumMaterial.values().length && partID < EnumTool.values().length)
|
||||
{
|
||||
return EnumMaterial.values()[matID].simpleName + EnumTool.values()[partID].name;
|
||||
}
|
||||
return "CommonTool[" + matID + "][" + partID + "]";
|
||||
}
|
||||
}
|
|
@ -1,10 +1,9 @@
|
|||
package dark.core.common.items;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
|
@ -12,8 +11,8 @@ import net.minecraft.entity.ai.attributes.AttributeModifier;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
|
||||
|
@ -21,29 +20,19 @@ import cpw.mods.fml.relauncher.Side;
|
|||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import dark.core.common.DarkMain;
|
||||
|
||||
public class ItemTool extends Item
|
||||
public class ItemCommonTool extends Item
|
||||
{
|
||||
protected List<Material> blocksEffectiveAgainstPick = new ArrayList<Material>();
|
||||
protected List<Material> blocksEffectiveAgainstAx = new ArrayList<Material>();
|
||||
protected List<Material> blocksEffectiveAgainstSpade = new ArrayList<Material>();
|
||||
|
||||
public float efficiencyOnProperMaterial = 4.0F;
|
||||
protected int maxUses, enchant;
|
||||
protected int enchant = 5;
|
||||
|
||||
/** Damage versus entities. */
|
||||
public float damageVsEntity;
|
||||
|
||||
public ItemTool(String name, int maxUses, float effective, int enchant)
|
||||
public ItemCommonTool()
|
||||
{
|
||||
super(DarkMain.CONFIGURATION.getItem("Items", "Tool:" + name, DarkMain.getNextItemId()).getInt());
|
||||
super(DarkMain.CONFIGURATION.getItem("Items", "CommonTools", DarkMain.getNextItemId()).getInt());
|
||||
this.maxStackSize = 1;
|
||||
this.setCreativeTab(CreativeTabs.tabTools);
|
||||
this.maxUses = maxUses;
|
||||
this.enchant = enchant;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void damage(ItemStack itemStack, int damage, EntityLivingBase entity)
|
||||
{
|
||||
// Saves the frequency in the ItemStack
|
||||
|
@ -61,22 +50,9 @@ public class ItemTool extends Item
|
|||
{
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
int meta = itemStack.getItemDamage();
|
||||
int maxDamage = 1000;
|
||||
switch (meta % 10)
|
||||
{
|
||||
case 0:
|
||||
maxDamage = 450;
|
||||
break;
|
||||
case 1:
|
||||
maxDamage = 900;
|
||||
break;
|
||||
case 2:
|
||||
maxDamage = 100;
|
||||
break;
|
||||
}
|
||||
EnumMaterial mat = EnumMaterial.getToolMatFromMeta(itemStack.getItemDamage());
|
||||
|
||||
damage = Math.max(Math.min(damage, maxDamage), 0);
|
||||
damage = Math.max(Math.min(damage, mat.maxUses), 0);
|
||||
itemStack.getTagCompound().setInteger("toolDamage", damage);
|
||||
}
|
||||
|
||||
|
@ -114,7 +90,7 @@ public class ItemTool extends Item
|
|||
@Override
|
||||
public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack)
|
||||
{
|
||||
//We will have to check on how this is done to prevent issues
|
||||
//TODO,, We will have to check on how this is done to prevent issues with the way damage is actually saved
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -122,19 +98,22 @@ public class ItemTool extends Item
|
|||
public Multimap getItemAttributeModifiers()
|
||||
{
|
||||
Multimap multimap = super.getItemAttributeModifiers();
|
||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", (double) this.damageVsEntity, 0));
|
||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", 3.0, 0));
|
||||
return multimap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
|
||||
{
|
||||
if (par1ItemStack.get)
|
||||
if (this.blocksEffectiveAgainst.contains(par2Block.blockMaterial))
|
||||
if (par1ItemStack != null)
|
||||
{
|
||||
return this.efficiencyOnProperMaterial;
|
||||
EnumTool tool = EnumMaterial.getToolFromMeta(par1ItemStack.getItemDamage());
|
||||
EnumMaterial mat = EnumMaterial.getToolMatFromMeta(par1ItemStack.getItemDamage());
|
||||
if (tool.effecticVsMaterials.contains(par2Block.blockMaterial) || par2Block.blockMaterial.isToolNotRequired())
|
||||
{
|
||||
return mat.materialEffectiveness;
|
||||
}
|
||||
}
|
||||
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
|
@ -142,11 +121,65 @@ public class ItemTool extends Item
|
|||
@Override
|
||||
public float getStrVsBlock(ItemStack stack, Block block, int meta)
|
||||
{
|
||||
if (ForgeHooks.isToolEffective(stack, block, meta))
|
||||
{
|
||||
return efficiencyOnProperMaterial;
|
||||
}
|
||||
return getStrVsBlock(stack, block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName(ItemStack itemStack)
|
||||
{
|
||||
if (itemStack != null)
|
||||
{
|
||||
return "item." + DarkMain.getInstance().PREFIX + EnumTool.getFullName(itemStack.getItemDamage());
|
||||
}
|
||||
else
|
||||
{
|
||||
return this.getUnlocalizedName();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIconFromDamage(int i)
|
||||
{
|
||||
return EnumMaterial.getToolIcon(i);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void registerIcons(IconRegister iconRegister)
|
||||
{
|
||||
for (EnumMaterial mat : EnumMaterial.values())
|
||||
{
|
||||
if (mat.hasTools)
|
||||
{
|
||||
mat.itemIcons = new Icon[EnumOrePart.values().length];
|
||||
for (EnumTool tool : EnumTool.values())
|
||||
{
|
||||
if (tool.enabled)
|
||||
{
|
||||
mat.itemIcons[tool.ordinal()] = iconRegister.registerIcon(DarkMain.getInstance().PREFIX + mat.simpleName + tool.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
|
||||
{
|
||||
for (EnumMaterial mat : EnumMaterial.values())
|
||||
{
|
||||
if (mat.hasTools)
|
||||
{
|
||||
for (EnumTool tool : EnumTool.values())
|
||||
{
|
||||
ItemStack stack = EnumMaterial.getTool(tool, mat);
|
||||
if (tool.enabled && stack != null && mat.toolIcons[tool.ordinal()] != null)
|
||||
{
|
||||
par3List.add(stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue