Skip to content

Instantly share code, notes, and snippets.

@SanAndreaP
Created August 17, 2012 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SanAndreaP/09f4f1fc4a1918d78b79 to your computer and use it in GitHub Desktop.
Save SanAndreaP/09f4f1fc4a1918d78b79 to your computer and use it in GitHub Desktop.
package net.minecraft.src.TheAbyss.ToolsAndWeapons;
import java.util.ArrayList;
import net.minecraft.src.*;
import net.minecraft.src.forge.ITextureProvider;
public class AbyssalPhaseblade extends ItemSword implements ITextureProvider {
private boolean isActive;
public AbyssalPhaseblade(int par1, EnumToolMaterial par2EnumToolMaterial, boolean b) {
super(par1, par2EnumToolMaterial);
this.setMaxDamage((par2EnumToolMaterial.getMaxUses() + 1) << 5);
setHasSubtypes(true);
this.isActive = b;
}
public EnumAction getItemUseAction(ItemStack par1ItemStack)
{
return EnumAction.none;
}
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
ItemStack ret = new ItemStack(this.isActive ? mod_TheAbyss.phasebladeInactive : mod_TheAbyss.phasebladeActive, 1, par1ItemStack.getItemDamage());
return ret;
}
public boolean hitEntity(ItemStack par1ItemStack, EntityLiving par2EntityLiving, EntityLiving par3EntityLiving)
{
if(!this.isActive)
return true;
if(par2EntityLiving != null)
par2EntityLiving.setFire(3);
if(par1ItemStack.getItemDamage() < 0)
par1ItemStack.setItemDamage(Math.abs(par1ItemStack.getItemDamage()));
par1ItemStack.damageItem(1 << 5, par3EntityLiving);
return true;
}
public boolean onBlockDestroyed(ItemStack par1ItemStack, int par2, int par3, int par4, int par5, EntityLiving par6EntityLiving)
{
if(!this.isActive)
return true;
if(par1ItemStack.getItemDamage() < 0)
par1ItemStack.setItemDamage(Math.abs(par1ItemStack.getItemDamage()));
par1ItemStack.damageItem(2 << 5, par6EntityLiving);
return true;
}
@Override
public int getIconFromDamage(int par1) {
if(!this.isActive)
return 225;
par1 = Math.abs(par1);
switch(par1 & 0x1f) {
case 2: return 224;
case 3: return 226;
default: return (par1 & 0x1f) + 236;
}
}
@Override
public String getTextureFile() {
return mod_TheAbyss.itemTexture;
}
@Override
public boolean isRepairable() {
return false;
}
@Override
public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) {
int dmg = par1ItemStack.getItemDamage();
if(par1ItemStack.getItemDamage() > 0 && par2World.rand.nextInt(32) == 0 && !this.isActive) {
if(dmg - (1 << 5) < 0) {
par1ItemStack.setItemDamage(-(dmg & 0x1F));
} else
par1ItemStack.setItemDamage(dmg - (1 << 5));
}
super.onUpdate(par1ItemStack, par2World, par3Entity, par4, par5);
}
@Override
public void addCreativeItems(ArrayList itemList) {
for(int i = 2; i <= 19 && this.isActive; i++)
itemList.add(new ItemStack(this, 1, -i));
}
@Override
public int getItemEnchantability() {
return 0;
}
public int getDamageVsEntity(Entity par1Entity)
{
ItemStack thisItem = ModLoader.getMinecraftInstance().thePlayer.getCurrentEquippedItem();
if(thisItem != null && thisItem.getItem() instanceof AbyssalPhaseblade && !this.isActive)
return 1;
return super.getDamageVsEntity(par1Entity);
}
@Override
public String getItemNameIS(ItemStack par1ItemStack) {
String name = "abyss_PhaseBlade";
switch(Math.abs(par1ItemStack.getItemDamage()) & 0x1f) {
case 3: name += "Lavender"; break;
case 4: name += "Black"; break;
case 5: name += "Red"; break;
case 6: name += "Green"; break;
case 7: name += "Brown"; break;
case 8: name += "Blue"; break;
case 9: name += "Purpe"; break;
case 10: name += "Cyan"; break;
case 11: name += "LGray"; break;
case 12: name += "Gray"; break;
case 13: name += "Pink"; break;
case 14: name += "Lime"; break;
case 15: name += "Yellow"; break;
case 16: name += "LBlue"; break;
case 17: name += "Magenta"; break;
case 18: name += "Orange"; break;
case 19: name += "White"; break;
}
return name;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment