Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.doctorintro.lebhaft.items.manager;
- import com.google.common.collect.HashMultimap;
- import com.google.common.collect.Multimap;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.entity.SharedMonsterAttributes;
- import net.minecraft.entity.ai.attributes.AttributeModifier;
- import net.minecraft.init.Items;
- import net.minecraft.inventory.EntityEquipmentSlot;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import scala.actors.threadpool.Arrays;
- import java.util.LinkedList;
- import java.util.List;
- /**
- * Created by Doctorintro on 24.06.2016.
- */
- public abstract class BasicTool extends BasicItem{
- private ToolCreator creator;
- private String name;
- LebhaftToolType toolType;
- private Item toCraft;
- public BasicTool(ToolCreator creator, Item toCraft, LebhaftToolType toolType, String name) {
- super(creator.getRegistryName()+"_"+name+"_"+toolType.getName());
- this.name = name;
- this.toolType = toolType;
- this.creator = creator;
- this.toCraft = toCraft;
- setMaxStackSize(1);
- setMaxDamage(creator.getMaxDamage()+getAdditionDurability());
- }
- public Object[] getCrafting(){
- Object[] crafting = toolType.getCrafting();
- //if(crafting.length == 7)
- return new Object[]{crafting[0], crafting[1], crafting[2], crafting[3], creator, crafting[5], toCraft};
- //else return new Object[]{crafting[0], crafting[1], crafting[2], crafting[3], creator, crafting[5], toCraft, crafting[7], crafting[8]};
- }
- public abstract double getAdditionalAttackDamage();
- public abstract double getAdditionalSpeedDamage();
- public abstract int getAdditionDurability();
- public abstract int getHarvetstLevel();
- public abstract float getAdditionalSpeed();
- @Override
- public int getHarvestLevel(ItemStack p_getHarvestLevel_1_, String p_getHarvestLevel_2_) {
- return this.getHarvetstLevel();
- }
- @Override
- public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) {
- Multimap<String, AttributeModifier> multimap = HashMultimap.create();
- if (slot == EntityEquipmentSlot.MAINHAND) {
- multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", creator.getAttackDamage()+getAdditionalAttackDamage(), 0));
- multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", creator.getAttackSpeed()+getAdditionalSpeedDamage(), 0));
- }
- return multimap;
- }
- @Override
- public boolean canHarvestBlock(IBlockState block) {
- if(toolType.getBreakable().contains(block.getMaterial())) return true;
- return super.canHarvestBlock(block);
- }
- @Override
- public float getStrVsBlock(ItemStack p_getStrVsBlock_1_, IBlockState p_getStrVsBlock_2_) {
- return creator.getBlockDestroyxSpeed(p_getStrVsBlock_2_) + getAdditionalSpeed();
- }
- public Item getMaterialToCraft(){
- return toCraft;
- }
- public ToolCreator getCreator() {
- return creator;
- }
- public enum LebhaftToolType {
- SWORD("sword",
- new Object[]{"tm ", "mmm", " mm", 't', "replace with toolcrator", 'm', "replace with material"},
- Material.web),
- PICKAXE("pickaxe",
- new Object[]{" ", " t ", "mmmm", 't', "replace with toolcrator", 'm', "replace with material"},
- Material.anvil, Material.iron, Material.rock),
- AXE("axe", new Object[]{" s ", " tm", "mmm", 't', "replace with toolcrator", 'm', "replace with material", 's', Items.stick}),
- SHOVEL("shovel", new Object[]{" s ", " tm", " m ", 't', "replace with toolcrator", 'm', "replace with material", 's', Items.stick});
- private Object[] crafting;
- private List<Material> breakable;
- private String name;
- LebhaftToolType(String name, Object[] crafting, Material... materials) {
- this.crafting = crafting;
- this.name = name;
- this.breakable = Arrays.asList(materials);
- }
- public List<Material> getBreakable() { return breakable; }
- public String getName() { return name; }
- public Object[] getCrafting() {
- return crafting;
- }
- }
- public String getName() {
- return name+"_"+toolType.getName();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement