Added Sentient Bow textures and models. Not the most elegant method.
This commit is contained in:
parent
4a58fc5518
commit
4f6f3860c0
24 changed files with 742 additions and 26 deletions
|
@ -11,7 +11,9 @@ import net.minecraft.item.IItemPropertyGetter;
|
|||
import net.minecraft.item.ItemArrow;
|
||||
import net.minecraft.item.ItemBow;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
|
@ -20,9 +22,13 @@ import net.minecraftforge.fml.relauncher.Side;
|
|||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.api.iface.IMultiWillTool;
|
||||
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
|
||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||
import WayofTime.bloodmagic.registry.ModItems;
|
||||
|
||||
public class ItemSentientBow extends ItemBow
|
||||
public class ItemSentientBow extends ItemBow implements IMultiWillTool//, IMeshProvider
|
||||
{
|
||||
public ItemSentientBow()
|
||||
{
|
||||
|
@ -53,6 +59,98 @@ public class ItemSentientBow extends ItemBow
|
|||
return entityIn != null && entityIn.isHandActive() && entityIn.getActiveItemStack() == stack ? 1.0F : 0.0F;
|
||||
}
|
||||
});
|
||||
this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter()
|
||||
{
|
||||
@SideOnly(Side.CLIENT)
|
||||
public float apply(ItemStack stack, World worldIn, EntityLivingBase entityIn)
|
||||
{
|
||||
return ((ItemSentientBow) ModItems.sentientBow).getCurrentType(stack).ordinal();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// @Override
|
||||
// @SideOnly(Side.CLIENT)
|
||||
// public ItemMeshDefinition getMeshDefinition()
|
||||
// {
|
||||
// return new ItemMeshDefinition()
|
||||
// {
|
||||
// @Override
|
||||
// public ModelResourceLocation getModelLocation(ItemStack stack)
|
||||
// {
|
||||
// assert getCustomLocation() != null;
|
||||
// EnumDemonWillType type = ((ItemSentientBow) ModItems.sentientBow).getCurrentType(stack);
|
||||
// String additional = type.getName().toLowerCase();
|
||||
// return new ModelResourceLocation(getCustomLocation(), "type=" + additional);
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public ResourceLocation getCustomLocation()
|
||||
// {
|
||||
// return new ResourceLocation(Constants.Mod.MODID, "item/ItemSentientBow");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<String> getVariants()
|
||||
// {
|
||||
// List<String> ret = new ArrayList<String>();
|
||||
// for (EnumDemonWillType type : EnumDemonWillType.values())
|
||||
// {
|
||||
// String additional = type.getName().toLowerCase();
|
||||
//
|
||||
// ret.add("type=" + additional);
|
||||
// }
|
||||
//
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
public void recalculatePowers(ItemStack stack, World world, EntityPlayer player)
|
||||
{
|
||||
EnumDemonWillType type = PlayerDemonWillHandler.getLargestWillType(player);
|
||||
// double soulsRemaining = PlayerDemonWillHandler.getTotalDemonWill(type, player);
|
||||
this.setCurrentType(stack, type);
|
||||
// int level = getLevel(stack, soulsRemaining);
|
||||
//
|
||||
// double drain = level >= 0 ? soulDrainPerSwing[level] : 0;
|
||||
// double extraDamage = level >= 0 ? damageAdded[level] : 0;
|
||||
//
|
||||
// setDrainOfActivatedSword(stack, drain);
|
||||
// setDamageOfActivatedSword(stack, 7 + extraDamage);
|
||||
// setStaticDropOfActivatedSword(stack, level >= 0 ? staticDrop[level] : 1);
|
||||
// setDropOfActivatedSword(stack, level >= 0 ? soulDrop[level] : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumDemonWillType getCurrentType(ItemStack stack)
|
||||
{
|
||||
NBTHelper.checkNBT(stack);
|
||||
|
||||
NBTTagCompound tag = stack.getTagCompound();
|
||||
|
||||
if (!tag.hasKey(Constants.NBT.WILL_TYPE))
|
||||
{
|
||||
return EnumDemonWillType.DEFAULT;
|
||||
}
|
||||
|
||||
return EnumDemonWillType.valueOf(tag.getString(Constants.NBT.WILL_TYPE));
|
||||
}
|
||||
|
||||
public void setCurrentType(ItemStack stack, EnumDemonWillType type)
|
||||
{
|
||||
NBTHelper.checkNBT(stack);
|
||||
|
||||
NBTTagCompound tag = stack.getTagCompound();
|
||||
|
||||
tag.setString(Constants.NBT.WILL_TYPE, type.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand)
|
||||
{
|
||||
this.recalculatePowers(stack, world, player);
|
||||
return super.onItemRightClick(stack, world, player, hand);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,25 +1,68 @@
|
|||
package WayofTime.bloodmagic.registry;
|
||||
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.util.EnumHelper;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.ConfigHandler;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.api.orb.BloodOrb;
|
||||
import WayofTime.bloodmagic.api.registry.OrbRegistry;
|
||||
import WayofTime.bloodmagic.item.*;
|
||||
import WayofTime.bloodmagic.item.ItemActivationCrystal;
|
||||
import WayofTime.bloodmagic.item.ItemAltarMaker;
|
||||
import WayofTime.bloodmagic.item.ItemArcaneAshes;
|
||||
import WayofTime.bloodmagic.item.ItemBloodOrb;
|
||||
import WayofTime.bloodmagic.item.ItemBloodShard;
|
||||
import WayofTime.bloodmagic.item.ItemBoundAxe;
|
||||
import WayofTime.bloodmagic.item.ItemBoundPickaxe;
|
||||
import WayofTime.bloodmagic.item.ItemBoundShovel;
|
||||
import WayofTime.bloodmagic.item.ItemBoundSword;
|
||||
import WayofTime.bloodmagic.item.ItemBucketEssence;
|
||||
import WayofTime.bloodmagic.item.ItemComponent;
|
||||
import WayofTime.bloodmagic.item.ItemDaggerOfSacrifice;
|
||||
import WayofTime.bloodmagic.item.ItemDemonCrystal;
|
||||
import WayofTime.bloodmagic.item.ItemInscriptionTool;
|
||||
import WayofTime.bloodmagic.item.ItemLavaCrystal;
|
||||
import WayofTime.bloodmagic.item.ItemRitualDiviner;
|
||||
import WayofTime.bloodmagic.item.ItemSacrificialDagger;
|
||||
import WayofTime.bloodmagic.item.ItemSlate;
|
||||
import WayofTime.bloodmagic.item.ItemTelepositionFocus;
|
||||
import WayofTime.bloodmagic.item.ItemUpgradeTome;
|
||||
import WayofTime.bloodmagic.item.ItemUpgradeTrainer;
|
||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||
import WayofTime.bloodmagic.item.armour.ItemSentientArmour;
|
||||
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
||||
import WayofTime.bloodmagic.item.gear.ItemPackSelfSacrifice;
|
||||
import WayofTime.bloodmagic.item.routing.ItemNodeRouter;
|
||||
import WayofTime.bloodmagic.item.routing.ItemRouterFilter;
|
||||
import WayofTime.bloodmagic.item.sigil.*;
|
||||
import WayofTime.bloodmagic.item.soul.*;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilAir;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilBloodLight;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilCompression;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilDivination;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilElementalAffinity;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilEnderSeverance;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilFastMiner;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilGreenGrove;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilHaste;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilLava;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilMagnetism;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilPhantomBridge;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilSeer;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilSuppression;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilTeleposition;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilTransposition;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilVoid;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilWater;
|
||||
import WayofTime.bloodmagic.item.sigil.ItemSigilWhirlwind;
|
||||
import WayofTime.bloodmagic.item.soul.ItemMonsterSoul;
|
||||
import WayofTime.bloodmagic.item.soul.ItemSentientArmourGem;
|
||||
import WayofTime.bloodmagic.item.soul.ItemSentientBow;
|
||||
import WayofTime.bloodmagic.item.soul.ItemSentientSword;
|
||||
import WayofTime.bloodmagic.item.soul.ItemSoulGem;
|
||||
import WayofTime.bloodmagic.item.soul.ItemSoulSnare;
|
||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.common.util.EnumHelper;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
|
||||
public class ModItems
|
||||
{
|
||||
|
@ -212,9 +255,9 @@ public class ModItems
|
|||
renderHelper.itemRender(bucketEssence);
|
||||
|
||||
renderHelper.itemRender(sentientBow, 0, "ItemSentientBow");
|
||||
renderHelper.itemRender(sentientBow, 1, "ItemSentientBow_pulling_0");
|
||||
renderHelper.itemRender(sentientBow, 2, "ItemSentientBow_pulling_1");
|
||||
renderHelper.itemRender(sentientBow, 3, "ItemSentientBow_pulling_2");
|
||||
// renderHelper.itemRender(sentientBow, 1, "ItemSentientBow_pulling_0");
|
||||
// renderHelper.itemRender(sentientBow, 2, "ItemSentientBow_pulling_1");
|
||||
// renderHelper.itemRender(sentientBow, 3, "ItemSentientBow_pulling_2");
|
||||
|
||||
renderHelper.itemRender(sentientArmourGem, 0, "ItemSentientArmourGem0");
|
||||
renderHelper.itemRender(sentientArmourGem, 1, "ItemSentientArmourGem1");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue