@Override public ProjectileNBT buildTagData(List<Material> materials) { ProjectileNBT data = new ProjectileNBT(); ArrowShaftMaterialStats shaft = materials.get(0).getStatsOrUnknown(MaterialTypes.SHAFT); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); FletchingMaterialStats fletching = materials.get(2).getStatsOrUnknown(MaterialTypes.FLETCHING); data.head(head); data.fletchings(fletching); data.shafts(this, shaft); data.attack += 2; return data; }
@Override public ProjectileNBT buildTagData(List<Material> materials) { ProjectileNBT data = new ProjectileNBT(); data.head(materials.get(0).getStatsOrUnknown(MaterialTypes.HEAD), materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD), materials.get(2).getStatsOrUnknown(MaterialTypes.HEAD), materials.get(3).getStatsOrUnknown(MaterialTypes.HEAD)); data.extra(materials.get(0).getStatsOrUnknown(MaterialTypes.EXTRA), materials.get(1).getStatsOrUnknown(MaterialTypes.EXTRA), materials.get(2).getStatsOrUnknown(MaterialTypes.EXTRA), materials.get(3).getStatsOrUnknown(MaterialTypes.EXTRA)); data.attack += 1f; data.accuracy = 1f; return data; }
@Override public EntityProjectileBase getProjectile(ItemStack stack, ItemStack bow, World world, EntityPlayer player, float speed, float inaccuracy, float power, boolean usedAmmo) { inaccuracy -= (1f - 1f / ProjectileNBT.from(stack).accuracy) * speed / 2f; return new EntityBolt(world, player, speed, inaccuracy, power, getProjectileStack(stack, world, player, usedAmmo), bow); }
public static ProjectileNBT from(ItemStack itemStack) { return new ProjectileNBT(TagUtil.getToolTag(itemStack)); } }
@Override public EntityProjectileBase getProjectile(ItemStack stack, ItemStack bow, World world, EntityPlayer player, float speed, float inaccuracy, float power, boolean usedAmmo) { inaccuracy -= (1f - 1f / ProjectileNBT.from(stack).accuracy) * speed / 2f; return new EntityArrow(world, player, speed, inaccuracy, power, getProjectileStack(stack, world, player, usedAmmo), bow); } }
@Override public ProjectileNBT buildTagData(List<Material> materials) { ProjectileNBT data = new ProjectileNBT(); ArrowShaftMaterialStats shaft = materials.get(0).getStatsOrUnknown(MaterialTypes.SHAFT); HeadMaterialStats head = materials.get(1).getStatsOrUnknown(MaterialTypes.HEAD); FletchingMaterialStats fletching = materials.get(2).getStatsOrUnknown(MaterialTypes.FLETCHING); data.head(head); data.fletchings(fletching); data.shafts(this, shaft); data.durability *= 0.8f; return data; }
@Override public EntityProjectileBase getProjectile(ItemStack stack, ItemStack launcher, World world, EntityPlayer player, float speed, float inaccuracy, float progress, boolean usedAmmo) { inaccuracy *= ProjectileNBT.from(stack).accuracy; return new EntityShuriken(world, player, speed, inaccuracy, getProjectileStack(stack, world, player, usedAmmo), launcher); } }
public TooltipBuilder addAccuracy() { this.add(FletchingMaterialStats.formatAccuracy(ProjectileNBT.from(stack).accuracy)); return this; }