Advertisement
Guest User

Untitled

a guest
Jun 29th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. package de.doctorintro.lebhaft.items.manager;
  2.  
  3. import com.google.common.collect.HashMultimap;
  4. import com.google.common.collect.Multimap;
  5. import net.minecraft.block.material.Material;
  6. import net.minecraft.block.state.IBlockState;
  7. import net.minecraft.entity.SharedMonsterAttributes;
  8. import net.minecraft.entity.ai.attributes.AttributeModifier;
  9. import net.minecraft.init.Items;
  10. import net.minecraft.inventory.EntityEquipmentSlot;
  11. import net.minecraft.item.Item;
  12. import net.minecraft.item.ItemStack;
  13. import scala.actors.threadpool.Arrays;
  14.  
  15. import java.util.LinkedList;
  16. import java.util.List;
  17.  
  18. /**
  19. * Created by Doctorintro on 24.06.2016.
  20. */
  21. public abstract class BasicTool extends BasicItem{
  22.  
  23. private ToolCreator creator;
  24. private String name;
  25. LebhaftToolType toolType;
  26. private Item toCraft;
  27.  
  28. public BasicTool(ToolCreator creator, Item toCraft, LebhaftToolType toolType, String name) {
  29. super(creator.getRegistryName()+"_"+name+"_"+toolType.getName());
  30. this.name = name;
  31. this.toolType = toolType;
  32. this.creator = creator;
  33. this.toCraft = toCraft;
  34. setMaxStackSize(1);
  35. setMaxDamage(creator.getMaxDamage()+getAdditionDurability());
  36. }
  37.  
  38. public Object[] getCrafting(){
  39. Object[] crafting = toolType.getCrafting();
  40. //if(crafting.length == 7)
  41. return new Object[]{crafting[0], crafting[1], crafting[2], crafting[3], creator, crafting[5], toCraft};
  42. //else return new Object[]{crafting[0], crafting[1], crafting[2], crafting[3], creator, crafting[5], toCraft, crafting[7], crafting[8]};
  43. }
  44.  
  45. public abstract double getAdditionalAttackDamage();
  46. public abstract double getAdditionalSpeedDamage();
  47. public abstract int getAdditionDurability();
  48. public abstract int getHarvetstLevel();
  49. public abstract float getAdditionalSpeed();
  50.  
  51. @Override
  52. public int getHarvestLevel(ItemStack p_getHarvestLevel_1_, String p_getHarvestLevel_2_) {
  53. return this.getHarvetstLevel();
  54. }
  55.  
  56. @Override
  57. public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) {
  58. Multimap<String, AttributeModifier> multimap = HashMultimap.create();
  59. if (slot == EntityEquipmentSlot.MAINHAND) {
  60. multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", creator.getAttackDamage()+getAdditionalAttackDamage(), 0));
  61. multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", creator.getAttackSpeed()+getAdditionalSpeedDamage(), 0));
  62. }
  63. return multimap;
  64. }
  65.  
  66. @Override
  67. public boolean canHarvestBlock(IBlockState block) {
  68. if(toolType.getBreakable().contains(block.getMaterial())) return true;
  69. return super.canHarvestBlock(block);
  70. }
  71.  
  72. @Override
  73. public float getStrVsBlock(ItemStack p_getStrVsBlock_1_, IBlockState p_getStrVsBlock_2_) {
  74. return creator.getBlockDestroyxSpeed(p_getStrVsBlock_2_) + getAdditionalSpeed();
  75. }
  76.  
  77. public Item getMaterialToCraft(){
  78. return toCraft;
  79. }
  80.  
  81. public ToolCreator getCreator() {
  82. return creator;
  83. }
  84.  
  85. public enum LebhaftToolType {
  86.  
  87. SWORD("sword",
  88. new Object[]{"tm ", "mmm", " mm", 't', "replace with toolcrator", 'm', "replace with material"},
  89. Material.web),
  90. PICKAXE("pickaxe",
  91. new Object[]{" ", " t ", "mmmm", 't', "replace with toolcrator", 'm', "replace with material"},
  92. Material.anvil, Material.iron, Material.rock),
  93. AXE("axe", new Object[]{" s ", " tm", "mmm", 't', "replace with toolcrator", 'm', "replace with material", 's', Items.stick}),
  94. SHOVEL("shovel", new Object[]{" s ", " tm", " m ", 't', "replace with toolcrator", 'm', "replace with material", 's', Items.stick});
  95.  
  96. private Object[] crafting;
  97. private List<Material> breakable;
  98. private String name;
  99.  
  100. LebhaftToolType(String name, Object[] crafting, Material... materials) {
  101. this.crafting = crafting;
  102. this.name = name;
  103. this.breakable = Arrays.asList(materials);
  104. }
  105.  
  106. public List<Material> getBreakable() { return breakable; }
  107.  
  108. public String getName() { return name; }
  109.  
  110. public Object[] getCrafting() {
  111. return crafting;
  112. }
  113. }
  114.  
  115. public String getName() {
  116. return name+"_"+toolType.getName();
  117. }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement