From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../jp/plusplus/fbs/spirit/ItemSwordSpirit.java | 187 +++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/spirit/ItemSwordSpirit.java (limited to 'src/main/java/jp/plusplus/fbs/spirit/ItemSwordSpirit.java') diff --git a/src/main/java/jp/plusplus/fbs/spirit/ItemSwordSpirit.java b/src/main/java/jp/plusplus/fbs/spirit/ItemSwordSpirit.java new file mode 100644 index 0000000..80c79b7 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/spirit/ItemSwordSpirit.java @@ -0,0 +1,187 @@ +package jp.plusplus.fbs.spirit; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.AchievementRegistry; +import jp.plusplus.fbs.exprop.SanityManager; +import jp.plusplus.fbs.item.ItemBase; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +/** + * Created by plusplus_F on 2015/11/02. + */ +public class ItemSwordSpirit extends ItemBase implements ISpiritTool { + public ItemSwordSpirit() { + setCreativeTab(null); + setUnlocalizedName("spiritSword"); + setTextureName("spiritSword"); + setMaxStackSize(1); + setNoRepair(); + } + + @Override + public boolean hitEntity(ItemStack itemStack, EntityLivingBase target, EntityLivingBase player) { + if(player instanceof EntityPlayer){ + SpiritStatus ss=SpiritStatus.readFromNBT(itemStack.getTagCompound()); + + int dur=calcDurable(ss); + ss.addItemDamage(1); + if(ss.getItemDamage()>dur){ + ss.setItemDamage(dur); + } + if(ss.getItemDamage()==dur){ + ((EntityPlayer) player).triggerAchievement(AchievementRegistry.evil); + } + if(ss.getItemDamage()0; + //return true; + } + @Override + public boolean isItemTool(ItemStack p_77616_1_) { + return true; + } + @Override + public boolean showDurabilityBar(ItemStack stack) { + return isDamaged(stack); + } + + //-------------------------------------------------------------------------------- + @Override + public float calcDamage(SpiritStatus ss) { + if(ss.getItemDamage()>=calcDurable(ss)) return 0.5f; + return 3.5f+ss.getMaxDamage()*ss.calcRatio(ss.getStrength()); + } + + @Override + public int calcDigLv(SpiritStatus ss) { + return 0; + } + + @Override + public int calcDurable(SpiritStatus ss) { + return 1000+(int)(ss.getMaxDurability()*ss.calcRatio(ss.getToughness())); + } + + @Override + public void calcInitialValue(SpiritStatus ss, ItemStack material){ + ItemSword sword=(ItemSword)material.getItem(); + ToolMaterial tm=ToolMaterial.valueOf(sword.getToolMaterialName()); + + //最大攻撃力は武器の攻撃力の10倍 + float maxDamage=(tm.getDamageVsEntity())*10; + + //最大耐久力は武器の耐久*10+10000 + float maxDurabity=tm.getMaxUses()*10+10000; + + ss.setMaxStatus(maxDamage, 0, maxDurabity); + ss.addStrength(MathHelper.ceiling_float_int(tm.getDamageVsEntity() / (ss.getMaxDamage() / 255.f))); + ss.addToughness(MathHelper.ceiling_float_int(tm.getMaxUses()/(ss.getMaxDurability()/255.f))); + } +} -- cgit v1.2.3