Add player animation system!

- Hooks into ModelRenderer by wrapping it in an extended version that allows modification of angles after the model has set them
- Is compatible with pretty much everything, yay (even modded armour!)
- Adds property overrides to ItemWand so that gets animated too
- Adds a system for generating override models from a template at runtime so I don't have to duplicate all the wand models
- Tweaks particles and ray spells so they line up with the end of the newly-animated wand
- Fixes a long-standing bug where wand usage actions would stop immediately for all non-continuous spells
This commit is contained in:
Electroblob77
2020-05-09 20:17:15 +01:00
parent cf38a16f49
commit be250e218e
146 changed files with 1531 additions and 262 deletions
@@ -4,13 +4,13 @@ import electroblob.wizardry.Wizardry;
import electroblob.wizardry.entity.living.ISpellCaster;
import electroblob.wizardry.entity.projectile.EntityMagicArrow;
import electroblob.wizardry.entity.projectile.EntityMagicProjectile;
import electroblob.wizardry.item.SpellActions;
import electroblob.wizardry.registry.WizardryItems;
import electroblob.wizardry.util.SpellModifiers;
import electroblob.wizardry.util.WizardryUtilities;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.tileentity.TileEntityDispenser;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
@@ -56,7 +56,7 @@ public class SpellArrow<T extends EntityMagicArrow> extends Spell {
}
public SpellArrow(String modID, String name, Function<World, T> arrowFactory){
super(modID, name, EnumAction.NONE, false);
super(modID, name, SpellActions.POINT, false);
this.arrowFactory = arrowFactory;
this.addProperties(RANGE);
this.npcSelector((e, o) -> true);
@@ -101,8 +101,6 @@ public class SpellArrow<T extends EntityMagicArrow> extends Spell {
// Spawns the projectile in the world
world.spawnEntity(projectile);
}
caster.swingArm(hand);
this.playSound(world, caster, ticksInUse, -1, modifiers);