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.ItemOreDirv;
|
||||||
import dark.core.common.items.ItemParts;
|
import dark.core.common.items.ItemParts;
|
||||||
import dark.core.common.items.ItemParts.Parts;
|
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;
|
import dark.core.common.items.ItemWrench;
|
||||||
|
|
||||||
public class CoreRecipeLoader extends RecipeLoader
|
public class CoreRecipeLoader extends RecipeLoader
|
||||||
|
|
|
@ -3,6 +3,7 @@ package dark.core.common.items;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.item.EnumToolMaterial;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Icon;
|
import net.minecraft.util.Icon;
|
||||||
|
@ -17,20 +18,20 @@ import dark.core.common.DarkMain;
|
||||||
* @author DarkGuardsman */
|
* @author DarkGuardsman */
|
||||||
public enum EnumMaterial
|
public enum EnumMaterial
|
||||||
{
|
{
|
||||||
WOOD("Wood", false, EnumOrePart.INGOTS, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.ROD, EnumOrePart.GEARS),
|
WOOD("Wood", EnumToolMaterial.WOOD, EnumOrePart.INGOTS, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.ROD, EnumOrePart.GEARS),
|
||||||
STONE("Stone", false, EnumOrePart.INGOTS, EnumOrePart.SCRAPS),
|
STONE("Stone", EnumToolMaterial.STONE, EnumOrePart.INGOTS, EnumOrePart.SCRAPS),
|
||||||
IRON("Iron", false, EnumOrePart.INGOTS),
|
IRON("Iron", EnumToolMaterial.IRON, EnumOrePart.INGOTS),
|
||||||
OBBY("Obby", true, EnumOrePart.INGOTS, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS, EnumOrePart.PLATES),
|
OBBY("Obby", true, 7.0f, 500, EnumOrePart.INGOTS, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS, EnumOrePart.PLATES),
|
||||||
GOLD("Gold", false, EnumOrePart.GEARS, EnumOrePart.INGOTS),
|
GOLD("Gold", EnumToolMaterial.GOLD, EnumOrePart.GEARS, EnumOrePart.INGOTS),
|
||||||
COAL("Coal", false, EnumOrePart.GEARS, EnumOrePart.TUBE, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS),
|
COAL("Coal", EnumToolMaterial.WOOD, EnumOrePart.GEARS, EnumOrePart.TUBE, EnumOrePart.PLATES, EnumOrePart.RUBBLE, EnumOrePart.SCRAPS),
|
||||||
|
|
||||||
COPPER("Copper", true),
|
COPPER("Copper", true, 2.5f, 79),
|
||||||
TIN("Tin", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
TIN("Tin", true, 2.0f, 50, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||||
LEAD("Lead", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
LEAD("Lead", false, 0, 0, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||||
ALUMINIUM("Aluminum", true, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
ALUMINIUM("Aluminum", true, 4.0f, 100, EnumOrePart.GEARS, EnumOrePart.TUBE),
|
||||||
SILVER("Silver", true, EnumOrePart.GEARS),
|
SILVER("Silver", true, 11.0f, 30, EnumOrePart.GEARS),
|
||||||
STEEL("Steel", true, EnumOrePart.RUBBLE),
|
STEEL("Steel", true, 7.0f, 2000, EnumOrePart.RUBBLE),
|
||||||
BRONZE("Bronze", true, EnumOrePart.RUBBLE);
|
BRONZE("Bronze", true, 6.0f, 260, EnumOrePart.RUBBLE);
|
||||||
|
|
||||||
/** Name of the material */
|
/** Name of the material */
|
||||||
public String simpleName;
|
public String simpleName;
|
||||||
|
@ -41,15 +42,29 @@ public enum EnumMaterial
|
||||||
|
|
||||||
/** Limit by which each material is restricted by for creating orePart sub items */
|
/** Limit by which each material is restricted by for creating orePart sub items */
|
||||||
public static final int itemCountPerMaterial = 50;
|
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 */
|
/** Client side only var used by ore items to store icon per material set */
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
Icon[] itemIcons;
|
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.simpleName = name;
|
||||||
this.hasTools = tool;
|
this.hasTools = tool;
|
||||||
|
this.materialEffectiveness = effectiveness;
|
||||||
|
this.maxUses = toolUses;
|
||||||
unneedItems = new ArrayList<EnumOrePart>();
|
unneedItems = new ArrayList<EnumOrePart>();
|
||||||
for (int i = 0; enumOreParts != null && i < enumOreParts.length; i++)
|
for (int i = 0; enumOreParts != null && i < enumOreParts.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -101,6 +116,16 @@ public enum EnumMaterial
|
||||||
return null;
|
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)
|
public boolean shouldCreateItem(EnumOrePart part)
|
||||||
{
|
{
|
||||||
if (part == EnumOrePart.ROD || part == EnumOrePart.TUBE)
|
if (part == EnumOrePart.ROD || part == EnumOrePart.TUBE)
|
||||||
|
@ -115,18 +140,28 @@ public enum EnumMaterial
|
||||||
return this.hasTools;
|
return this.hasTools;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack getTool(EnumTools tool, EnumMaterial mat)
|
public static ItemStack getTool(EnumTool tool, EnumMaterial mat)
|
||||||
{
|
{
|
||||||
return mat.getTool(tool);
|
return mat.getTool(tool);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack getTool(EnumTools tool)
|
public ItemStack getTool(EnumTool tool)
|
||||||
{
|
{
|
||||||
ItemStack stack = null;
|
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;
|
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.
|
/** Enum to store tools that can be created from the material sheet.
|
||||||
*
|
*
|
||||||
* @author DarkGuardsman */
|
* @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),
|
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),
|
SPADE("Shade", Material.sand, Material.snow, Material.clay, Material.craftedSnow, Material.grass, Material.ground),
|
||||||
NA3(),
|
NA3(),
|
||||||
|
@ -23,15 +23,17 @@ public enum EnumTools
|
||||||
|
|
||||||
public final List<Material> effecticVsMaterials = new ArrayList<Material>();
|
public final List<Material> effecticVsMaterials = new ArrayList<Material>();
|
||||||
public String name = "tool";
|
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.name = name;
|
||||||
|
this.enabled = true;
|
||||||
this.setEffectiveList(mats);
|
this.setEffectiveList(mats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,4 +52,15 @@ public enum EnumTools
|
||||||
this.effecticVsMaterials.add(block);
|
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;
|
package dark.core.common.items;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
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.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
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.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.Icon;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.ForgeHooks;
|
|
||||||
|
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
|
@ -21,29 +20,19 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import dark.core.common.DarkMain;
|
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;
|
public float efficiencyOnProperMaterial = 4.0F;
|
||||||
protected int maxUses, enchant;
|
protected int enchant = 5;
|
||||||
|
|
||||||
/** Damage versus entities. */
|
public ItemCommonTool()
|
||||||
public float damageVsEntity;
|
|
||||||
|
|
||||||
public ItemTool(String name, int maxUses, float effective, int enchant)
|
|
||||||
{
|
{
|
||||||
super(DarkMain.CONFIGURATION.getItem("Items", "Tool:" + name, DarkMain.getNextItemId()).getInt());
|
super(DarkMain.CONFIGURATION.getItem("Items", "CommonTools", DarkMain.getNextItemId()).getInt());
|
||||||
this.maxStackSize = 1;
|
this.maxStackSize = 1;
|
||||||
this.setCreativeTab(CreativeTabs.tabTools);
|
this.setCreativeTab(CreativeTabs.tabTools);
|
||||||
this.maxUses = maxUses;
|
|
||||||
this.enchant = enchant;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void damage(ItemStack itemStack, int damage, EntityLivingBase entity)
|
public void damage(ItemStack itemStack, int damage, EntityLivingBase entity)
|
||||||
{
|
{
|
||||||
// Saves the frequency in the ItemStack
|
// Saves the frequency in the ItemStack
|
||||||
|
@ -61,22 +50,9 @@ public class ItemTool extends Item
|
||||||
{
|
{
|
||||||
itemStack.setTagCompound(new NBTTagCompound());
|
itemStack.setTagCompound(new NBTTagCompound());
|
||||||
}
|
}
|
||||||
int meta = itemStack.getItemDamage();
|
EnumMaterial mat = EnumMaterial.getToolMatFromMeta(itemStack.getItemDamage());
|
||||||
int maxDamage = 1000;
|
|
||||||
switch (meta % 10)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
maxDamage = 450;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
maxDamage = 900;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
maxDamage = 100;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
damage = Math.max(Math.min(damage, maxDamage), 0);
|
damage = Math.max(Math.min(damage, mat.maxUses), 0);
|
||||||
itemStack.getTagCompound().setInteger("toolDamage", damage);
|
itemStack.getTagCompound().setInteger("toolDamage", damage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +90,7 @@ public class ItemTool extends Item
|
||||||
@Override
|
@Override
|
||||||
public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,19 +98,22 @@ public class ItemTool extends Item
|
||||||
public Multimap getItemAttributeModifiers()
|
public Multimap getItemAttributeModifiers()
|
||||||
{
|
{
|
||||||
Multimap multimap = super.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;
|
return multimap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
|
public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
|
||||||
{
|
{
|
||||||
if (par1ItemStack.get)
|
if (par1ItemStack != null)
|
||||||
if (this.blocksEffectiveAgainst.contains(par2Block.blockMaterial))
|
|
||||||
{
|
{
|
||||||
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;
|
return 1.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,11 +121,65 @@ public class ItemTool extends Item
|
||||||
@Override
|
@Override
|
||||||
public float getStrVsBlock(ItemStack stack, Block block, int meta)
|
public float getStrVsBlock(ItemStack stack, Block block, int meta)
|
||||||
{
|
{
|
||||||
if (ForgeHooks.isToolEffective(stack, block, meta))
|
|
||||||
{
|
|
||||||
return efficiencyOnProperMaterial;
|
|
||||||
}
|
|
||||||
return getStrVsBlock(stack, block);
|
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