Advertisement
CrimsonGamer45

Custom Shield Code

Jul 21st, 2018
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.12 KB | None | 0 0
  1. package com.crimsondawn45.survivalplus.items.tools;
  2.  
  3. import javax.annotation.Nullable;
  4.  
  5. import com.crimsondawn45.survivalplus.SurvivalPlus;
  6. import com.crimsondawn45.survivalplus.init.ModBlocks;
  7. import com.crimsondawn45.survivalplus.init.ModItems;
  8. import com.crimsondawn45.survivalplus.util.IHasModel;
  9.  
  10. import net.minecraft.block.BlockDispenser;
  11. import net.minecraft.creativetab.CreativeTabs;
  12. import net.minecraft.entity.EntityLivingBase;
  13. import net.minecraft.entity.player.EntityPlayer;
  14. import net.minecraft.init.Blocks;
  15. import net.minecraft.init.Items;
  16. import net.minecraft.item.EnumAction;
  17. import net.minecraft.item.IItemPropertyGetter;
  18. import net.minecraft.item.Item;
  19. import net.minecraft.item.ItemArmor;
  20. import net.minecraft.item.ItemStack;
  21. import net.minecraft.item.Item.ToolMaterial;
  22. import net.minecraft.util.ActionResult;
  23. import net.minecraft.util.EnumActionResult;
  24. import net.minecraft.util.EnumHand;
  25. import net.minecraft.util.ResourceLocation;
  26. import net.minecraft.world.World;
  27. import net.minecraftforge.fml.relauncher.Side;
  28. import net.minecraftforge.fml.relauncher.SideOnly;
  29.  
  30. public class ToolShield extends Item implements IHasModel{
  31.     public ToolShield(String name, int durability) {
  32.         //Registry Stuff
  33.         setUnlocalizedName(name);
  34.         setRegistryName(name);
  35.         setCreativeTab(SurvivalPlus.SURVIVAL_TAB);
  36.        
  37.         //Special Stuff
  38.         setMaxStackSize(1);
  39.         setMaxDamage(durability);
  40.        
  41.         //Make Blocking Possible
  42.         this.addPropertyOverride(new ResourceLocation("blocking"), new IItemPropertyGetter()
  43.         {
  44.             @SideOnly(Side.CLIENT)
  45.             public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
  46.             {
  47.                 return entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F;
  48.             }
  49.         });
  50.         //Dispenser Behavior
  51.         BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject(this, ItemArmor.DISPENSER_BEHAVIOR);
  52.        
  53.         //Add To Item List
  54.         ModItems.ITEMS.add(this);
  55.     }
  56.    
  57.     //Blocking
  58.     public EnumAction getItemUseAction(ItemStack stack)
  59.     {
  60.         return EnumAction.BLOCK;
  61.     }
  62.  
  63.     //Max Block Time
  64.     public int getMaxItemUseDuration(ItemStack stack)
  65.     {
  66.         return 72000;
  67.     }
  68.    
  69.     //Right Click Equip
  70.     public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
  71.     {
  72.         ItemStack itemstack = playerIn.getHeldItem(handIn);
  73.         playerIn.setActiveHand(handIn);
  74.         return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, itemstack);
  75.     }
  76.    
  77.     //Is Shield
  78.     public boolean isShield(ItemStack stack, @Nullable EntityLivingBase entity)
  79.     {
  80.         return stack.getItem() == this;
  81.     }
  82.    
  83.     //Is Repairable
  84.     public boolean getIsRepairable(ItemStack toRepair, ItemStack repair)
  85.     {
  86.         return repair.getItem() == Item.getItemFromBlock(ModBlocks.SCRAP_WOOD_PLANKS) ? true : super.getIsRepairable(toRepair, repair);
  87.     }
  88.    
  89.     //Register Model
  90.     @Override
  91.     public void registerModels() {
  92.         SurvivalPlus.proxy.registerItemRenderer(this, 0, "inventory");
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement