diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..27ddc733c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1233 @@ +# 1.0.2.5 + +# **Added** + +- Added Codex Progression config (Server // Per world) + - Includes toggle and update interval +- Added Food Rot config (Server // Per world) + - Includes toggle and rotting interval +- Added Nihility System config (Server // Per world) + - Includes toggle, accumulation/decay rates, damage multiplier, and critical blindness effect +- Added Entity Weakness (Golems — Pickaxes, Ents — Axes) +- Added Extra attack for Ent +- Added Extra Additions and Mood sounds to the Valoria biomes +- Added Lunar Items +- Added Red Envelopes +- Added Firework Tube + +# **Fixed** + +- Fixed Scourge Walking animation Cycle +- Fixed Troll Walking Cycle +- Fixed Devil Walking Cycle +- Fixed Scavenger Walking Cycle +- Fixed Empty enchanted book dropping from Decorated Crypt Pot + +# **Changes** + +- Config changes + - Now players (Server hosts) can decide if Nihility, foodRot is enabled in specific world +- Removed Boss checklist from codex (was an experiment) +- Changed Devil Walk animation +- Changed Ent Walk animation +- Tweaks to Scourge animation +- Some improvements to the Scavenger AI +- Some Pathfinding improvements to the Ent +- Wicked Scorpions will only Spit at players for optimization purposes +- Decreased Troll Damage 8 → 6 +- Decreased Ent Damage 10 → 4 +- Decreased Ent Health 75 → 50 +- Decreased Elemental Golems damage 10 → 5 +- Reduced Scourge Shadow Texture +- Reduced Troll Shadow Texture +- Enlarged Scavenger Shadow Texture +- Enlarged Wicked Scorpion Shadow Texture +- Enlarged Dryador Shadow Texture +- Changes to Elemental Golems texture + +# 1.0.2.4 + +# **Added** + +- Added Nature Golem (3 variants) +- Added River Golem +- Added Upgrade Sounds to Alchemy Stations + +# **Fixed** + +- Fixed Alchemy Station Upgrading (tier 2 → tier 3) +- Fixed Visual bug in Alchemy Station +- Fixed bug where Necromancer music disc ends withing 4.5 seconds +- Fixed Ent stuttering (Still should be reworked) +- Fixed Empty tag creation on item hover, preventing some items from stacking without hover +- Fixed Alchemy Station returning to the Inventory after upgrade (Duping) + +# **Changes** + +- Compressed all the sounds — Reduced mod size (**52MB -> ~34MB**) +- Decreased Scorpion Spit Damage + +# 1.0.2.3 + +# **Requires Tridot 1.0.126** + +## **CRITICAL PERFORMANCE UPDATE:** + +- Fixed a major issue causing low FPS on integrated graphics (Intel/AMD APUs). +- Performance increased from ~30 FPS to ~200 FPS in reported cases. + +# **Added** + +- Added Alchemy Stations (Upgrade-able up to 4 tiers) +- Added Config value to disable Nihility +- Added Shade Blossom seeds +- Added Shade Blossom growing stages (0→4) +- Added Bookshelf books tag to Codex & Necromancer Grimoire + +# **Translation** + +- Translated to French +- Translated to Chinese +- Translated to Traditional Chinese + +# **Fixed** + +- Fixed Bombs reset their radius after rejoining the world +- Fixed Spears converting to Stone spear on broke +- Fixed Iron Chain repair with Gold +- Fixed Gloves Rendering +- Fixed Stone Crusher item updating +- Fixed Elemental Manipulator Visual bugs +- Fixed Devils tried to shoot at player even if not seen directly +- Fixed Piston Pushing causes Heavy Workbench to break its parts +- Fixed Server crashing on throwing Spectral blade +- Fixed Blaze Reap tooltip + +# **Technical Changes** + +- Reworked Heavy Workbench +- Converted all Spear to Builder (Technical change) +- Converted Stone Crusher Tool to data (Can be useful for pack creators) +- Removal of codex tooltip link + +# **Changes** + +- Gunpowder and Pyratite charges are stackable now +- Fallen Crown can be right click equipped +- Shade Blossom will drop petals on bonemeal +- Decreased Upgrading time in Elemental Manipulator +- Flesh cyst now has a limit of spawnable Sentinels +- Blazereap buff +- Improved description of the Ethereal Sword +- Food rot revamp + +# Balance Changes + +Early game: + +``` +Fallen Collector: 25% (No changes) +Marsh: 20% (No changes) +Black Gold: 20% (No changes) + +``` + +Mid-game (Buffs): + +``` +⬆️ Cobalt: 25% ➔ 45% (+20%) +➖ Samurai: 35% (No changes) +⬆️ Ethereal: 30% ➔ 50% (+20%) + +``` + +Late-game (Buffs): + +``` +⬆️ Nature: 40% ➔ 55% (+15%) +⬆️ Depth: 45% ➔ 60% (+15%) +⬆️ Infernal: 50% ➔ 65% (+15%) + +``` + +End-game: +``` +🔻 Spider: 55% ➔ 50% (-5%). +⬆️ Pyratite: 50% ➔ 62% (+12%) +⬆️ Crimtane: 60% ➔ 68% (+8%) +⬆️ Void (Awakened): 65% ➔ 70% (+5%) +⬆️ Phantasm: 70% ➔ 80% (+10%) + +``` +# 1.0.1 + +# Added + +- Added Eye necklace +- Added Halloween Elixir +- Added Rogue Necklace +- Added neaw trades to Haunted Merchant +- Added Starter bundle + +# Fixed + +- Fixed minions causing triggering a lot of test attacks to nearby players +- Fixed Uncommon tooltips not using default Valoria style (Obscure tooltips) +- Fixed Client crushing on rendering Damage Numbers +- Fixed Heavy Workbench tooltip sizing +- Fixed Heavy Workbench tooltip material rendering +- Fixed Fire Immunity items protecting from lava (not intended behavior) +- Fixed Katana Piercing Damage +- Fixed Corpsecleaver ranged damage + +# Changes + +- Reworked Accessories +- Reworked Corpsecleaver ability +- Chains are wearables now +- Changed Samurai Belt crafting recipe +- Valoria portal recipe will result in 12 portal blocks for a while (it’s will be changed in the future) +- Gamerule valoria:foodRot was removed, changed into CommonConfig value + +# Rebalanced + +- Rabalanced Accessories (Rings, necklaces) +- Rebalanced Weapons +- Nerfed Iron Gloves +- Nerfed Golden Gloves +- Nerfed Diamond Gloves +- Nerfed Netherite Gloves +- Nerfed Magmatic Gauntlet +- Nerfed Skeletal Vambrace +- Nerfed Magmatic Vambrace + +# 1.0 + +# Added + +- Wicked Amethyst block uncrafting recipe +- Soul Shard block uncrafting recipe +- Uncharged Shard block uncrafting recipe +- Added Description to Gaib Roots +- Added Ephemarite, stone cutting recipe from Ephemarite Low +- Added extra Limestone, stone cutting recipes +- Added Unstable Core +- Added Page uncrafting recipe to Paper +- Added animations to Harmony Heart, Devil Heart, Medicated Harmony Heart, Medicated Devil Heart +- Added particles to Elemental Charm +- Added Tinting to Aloe +- Added growing small bushes of Aloe near Tall Aloe +- Added Obscure Tooltips Compat +- Added Spider Chitin +- Added Icy Scythe Skin +- Added Lotus Scythe Skin +- Added Boss Trophies +- Added Elemental Damage System +- Added Target Dummy Compat +- Added Devil Meat +- Added Stone Crusher JEI Description +- Added Stone Crusher Codex Page +- Added Magmatic Halls Dungeon +- Added Sapphire Geode +- Added Black Gold block +- Added Brick recipe from smelting Rune in Kiln +- Added King Crab +- Added Crab Shell +- Added Crab Claw +- Added Crawhook +- Added Crab Buckler +- Added Crab Legs +- Added Cooked Crab Legs +- Added Nature Crossbow +- Added Aquarius Crossbow +- Added Infernal Crossbow +- Added Void Crossbow +- Added Phantasm Crossbow +- Added Corrupted Well Structure (Built and suggested by Auriny) +- Added Flesh Altar Structure (Built and suggested by Auriny) +- Added Nihility Meter +- Added Nihility Monitor +- Added Void Crystal Talisman +- Added Draugr Shield +- Added Soul Infuser +- Added Vanilla changes config cause of changing vanilla shield behaviour +- Added Rot + - Non-valoria food will rot on dimension changing to Valoria. +- Added Cleansing Vial +- Added Cleansing Flask +- Added Cleansing Elixir +- Added Healing Vial +- Added Healing Flask +- Added Healing Elixir +- Added Hard Workbench +- Added Fallen Collector Armor (Was a skin previously) +- Added Cobalt Multi Tool +- Added Ethereal Multi Tool +- Added Crimtane Multi Tool +- Added Jade Multi Tool +- Added Nature Multi Tool +- Added Depth Multi Tool +- Added Infernal Multi Tool +- Added Void Multi Tool +- Added Double Void Vine +- Added Texture Variants for some Blocks and Plants +- Added Extra generation features +- Added tags + + #valoria:spears + #valoria:katanas + #valoria:throwables + #valoria:scythes + #valoria:rapiers + #valoria:multi_tools + +- Added new 2 item tabs: Valoria Tools, Valoria - Consumables +- Added new Gamerule `valoria:foodRot`, default: true — non-valoria dimension food will rot on teleporting to Valoria + +# Fixed + +- Fixed Arrow desync +- Fixed duping of resources using minions +- Fixed BlazeReap +- Fixed Enchantments Compatibility +- Fixed an issue where weapon abilities could harm players in PvE areas +- Fixed Magma Sword charging +- Crimtane Armor can be trimmed now +- Fixed Keg taking out 2 items from player +- Fixed ItemBorders crashing +- Fixed Hit Effect Applying +- Fixed Soul Collector +- Fixed Drinks Saturation +- Fixed Cup and Bottle Waterlog +- Fixed Potted Dreadwood sapling model +- Fixed Codex Inversed Drag +- Fixed Fire inflicting accessories can set on fire mobs using projectiles +- Fixed Idle Animations of Entities +- Fixed Void Grass dropping Void Stone on breaking with Silk touch +- Fixed Manipulator Random Loss of Cores on reload +- Fixed Bugged Rune of Curses description +- Fixed Pearlium Tags +- Fixed Reinforced Meat Pillar Tags +- Fixed Cysts trying to spawn entities is Peaceful +- Fixed Void Sand (Partially) +- Fixed Crash in Codex when pressing Down Arrow or Left Arrow keys + +# Changes + +- Reworked Armor Effects +- Reworked Shadewood Branch +- Inversed mouse scrolling in Codex +- Black Gold recipe is now shapeless +- Medicated Devil Heart recipe is now shapeless +- Medicated Harmony Heart recipe is now shapeless +- Magmatic Gauntlet recipe is now shapeless +- Magmatic Vambrace recipe is now shapeless +- Removed Armor breaking of effect applying +- Resprited Aloe, Small Aloe +- Resprited Void Brick +- Resprited Cracked Void Brick +- Resprited Chiseled Void Brick +- Resprited Chiseled Void Bricks +- Changed Rarity of Spider items +- Spider Armor is now crafted from Spider Chitin +- Changed Valoria Portal Frame Model +- Sorted Block Item Tab +- Added Fire Texture back on Infernal Ingot (was asked by a community to revert this change) +- Changes Shield rotations +- Reworked Shields +- Changed Structure chances, more frequent small structures +- Reduced Cyst particles +- Changed Void Sand Update Delay +- Tinkerer’s table is hidden now (will be deleted or reworked) +- Changed Samurai Armor model +- Changed Phantasm Armor model +- Reworked Item Descriptions +- Reworked Bossbars + +# Rebalanced + +- Rebalanced Food +- Rebalanced Flesh Sentinel loot +- Rebalanced Corrupted loot +- Rebalanced Fortress loot +- Rebalanced Pot LootTable +- Rebalanced Long Pot LootTable (buff) +- Rebalanced CryptPot LootTable (buff) +- Rebalanced Ephemarite LootTable (buff) +- Rebalanced Ephemarite Low LootTable (buff) +- Rebalanced Dirt Geode LootTable (buff) +- Rebalanced Stone Geode LootTable (buff) +- Rebalanced Crypt Archaeology LootTable (buff) +- Nerfed Rune Amount in LootTables +- Nerfed Renewal +- Nerfed Exhaustion +- Nerfed Wicked Crystal Minions damage — 8 → 6 +- Nerfed Wicked Crystal Minions projectile velocity — 1.85 → 1.25 +- Crystallized deep ruins more frequent now +- Decreased Aloe generation + +# 0.9.9 + +# Added + +- Added Warden Skin for Scythe + +# Fixed + +- Prevent multiple bosses from being summoned at the same altar (nearby) +- Fixed Crash on mouse scroll in Book gui + +# Changes + +- Rebalanced Experience reward from smelting bricks +- Rebalanced Nature gift dropping from Dryador treasure bag +- Rebalanced Ent LootTable +- Rebalanced Devil LootTable + +# 0.9.8 + +# Fixed + +- Fixed server crashing + +# 0.9.7 + +# Added + +- Added Translation keys to Dreadwood +- Added Description to Bandages +- Added Pixie summon book to Dryador Treasure Bag +- Added Ability to Phantasm Bow +- Added Update Checker +- Added Page opening through item in Codex + +# Fixed + +- Fixed Dreadwood Hanging sign +- Fixed bug when Bleeding damaged the player ignoring immunity +- Fixed Arrows hit sync +- Fixed Arrows causing massive lags underwater / on bubble columns +- Fixed Bug when opening Keg Screen, block / item was used. + +# Changes + +- Reworked Item Tiers +- Jade ore, Picrite Jade ore and Pyratite ore can be gathered with cobalt+ tier +- Reworked Soul Collector a bit +- Halloween Items now receiving extra souls on kill +- Changed Corrupted Particles +- Crimtane Armor now applies Exhaustion to target with 25% chance +- Rebalanced Void Scythe +- Improved most of tooltips +- Improved homing movement in Soul Arrow +- Cobalt spawns in size up to 4 blocks +- Codex changes and improvements + +# 0.9.6 + +# Fixed + +- Fixed Server Crashing + +# 0.9.5 + +# Added + +- Added Corrupted +- Added Flesh particles +- Added Dreadwood set +- Added Pull Towards Attack for Wicked Crystal + +# Fixed + +- Fixed Air dashing using Scythes +- Fixed Gaib Roots Generation +- Fixed Aloe Generation +- Fixed Dryador Animations + +# Changes + +- Wicked Crystal changes: + - Lifetime of Crystal minions was changed from 325 → 375 + - Radial Attack distance was decreased to 6 + - Radial Attack Crystal count was changed from 10 → 12 + - Crystal Storm Attack spread was changed from 4 → 6 + - Crystal Storm Attack speed was changed from 0.4 → 0.3 + - Crystal Rain Attack count was changed from 32 → 45 + - Crystal Rain Attack spawn height was changed from 4 → 2 + +# 0.9.2 + +# Added + +- Added new page to Codex describing receiving of new pages +- Added description to Spectral Blade +- Added description to Corpsecleaver +- Added description to Shurikens +- Added description to Coral Reef +- Added description to Beast Scythe +- Added description to Pyratite Spear +- Added description to Pyratite Armor +- Added new painting called Mountain Landscape + +# Fixed + +- Fixes incorrect mood sound id in biomes +- Fixed Soul Collector disappearing on full inventory +- Fixed Toast centering +- Fixed Wicked Crystal Phase transition +- Fixed Valoria Teleporter position + +# Changes + +- Page toast are being updated now +- Reworked Page toast +- Changed Skin trims and Skin fragments description +- Follow range of Shadewood spiders was decreased from 20 to 18 + +# 0.9.1 + +# Added + +- Added Pyratite ore Smelting recipe +- Added Pyratite ore Blasting recipe +- Added Jade ore Smelting recipe +- Added Jade ore Blasting recipe +- Added Picrite Jade ore Smelting recipe +- Added Picrite Jade ore Blasting recipe +- Added Dormant Crystals Smelting recipe +- Added Dormant Crystals Blasting recipe +- Added Extra hints to Codex +- Added Bloodsight Monocle repairing recipe +- Added Arrow dispensing behaviour +- Added Unlocked page tooltip +- Added Crypt map dropping from Sorcerers at night +- Added Experience dropping from Bosses +- Added Idle sounds to Troll +- Added Death sounds to Troll +- Added Jade Armor trim material +- Added Pyratite Armor trim material +- Added Crimtane Armor trim material +- Added Ethereal Armor trim material +- Added Black Gold Armor to Trimmable Armors + +# Fixed + +- Fixes in Russian language suggested by Auriny +- Fixed Crit percent display in non-English locales +- Fixed Player had a way to equip lesser and default rune of the same type +- Fixed Player was able to put a whole stack into Pedestals +- Fixed Tridot Loot Conditions preventing events from starting +- Fixed Devil spawning on Nether Wart +- Fixed Output duping in Keg + +# Changes + +- Rebalanced Samurai Belt +- Rebalanced Talismans +- Reworked runes +- Rare items such as Hearts or Elemental crystal has it’s own loot pool now +- Rebalanced Ent and Devil LootTable, chances are much higher now (again) +- Inversed mouse scrolling in the Codex +- Reworked Wicked Crystal LootTable, divided some items to sequence of pools +- Reworked Dryador LootTable, divided some items to sequence of pools +- Reworked Necromancer LootTable, divided some items to sequence of pools +- Reworked Corrupted Troll LootTable, much higher chance to get a Void key +- Reworked Scourge LootTable, much higher chance to get a Oceanic Shell +- Reworked Swamp Wanderer LootTable, much higher chance to get a Oceanic Shell +- Rare items including Hearts, Elemental crystal and that sorta stuff applies to looting chance modifier +- Reworked LootTables +- Removed shadow from Wicked Crystal (Suggested by Auriny) +- Reworked Troll sounds + +# 0.9 + +# Added + +- Added Crimtane Armor Recipe + +# Fixed + +- Elemental arrows were unable to use +- Nature Arrow recipe has been fixed +- Russian translate changes suggester by Auriny +- Crash while loading the game in big modpacks + +# Changes + +- Arrows crafting recipe has been changed and balanced +- Glaive recipe has been balanced +- Rebalanced Cobalt +- Ents are neutral mobs now + +# 0.8 + +# Added + +- Added new Trades for Villagers +- Added Crimtane +- Added Screenshake to Throwable bombs +- Added Uncrafting recipe of Ancient Ingot +- Added Samurai Kunai Recipe +- Added Glaive Recipe +- Added Shurikens +- Added Progression tracking +- Added Jade Recipes +- Added `*SHOW_TOASTS` to client config* +- Added Recipes to Arrows +- Added Extra items to Wicked Crystal LootTable +- Added Elemental Arrows +- Added Elemental Spears +- Added Crypt Archaeology LootTable + +# Fixed + +- Fixed: Gaib Roots now check both of blocks to spawn +- Fixed: Bombs now discards when hits Entities +- Fixed Screenshake after explosions +- Fixed Glaive tooltip, glaive cant be thrown! +- Fixed Spectral Blade stucking in new chunks +- Fixed Bronze Items now repairs with Bronze Ingot +- Fixed Goblin Item in Hand offset +- Fixed Goblin Idle Animation +- Fixed Rendering issues in Jewelry bag +- Fixed Lags caused by falling sand in Valoria +- Fixed Bug where all crystal shards were consumed on thrown +- Fixed Jade Ore +- Fixed Various crashes + +# Changes + +- Reduced spawning chance of Gaib Roots +- Changed Rarity of Accessories +- Resprited Elemental Cores +- Resprited Elemental Ingots +- Renamed Archaeology Table to Tinkerers Workbench +- Changed recipe of Silken Kunai +- Rebalanced Kunai’s +- Kunai’s are stackable now +- Changed Trail for Soul Arrow +- Gunpowder charges crafted changed: 2 → 4 +- Reworked Lexicon → Codex +- Resprited Ancient Shard +- Resprited Ancient Ingot +- Resprited Jade +- Changed LootTables +- Bow of Darkness now shoot Wicked Arrows + +# v0.7 + +# Translations + +- Polish Translation +- Ukrainian Translation +- Improved Russian Translation + +# Fixed + +- Fixed Cryptic Altar Rendering +- Fixed `LootItem`, now depends on Player Luck +- Fixed bug when Cryptic Altar consumes a whole stack +- Fixed Treasure bag spawning position +- Fixed Necromancer’s Movement +- Fixed Necromancer Crypt Pools +- Fixed Infernal Items Sorting in Creative Tab +- Fixed Cryptic altar is unbreakable now +- Fixed Phantom cooldown +- Fixed Bossbar rendering +- Fixed Cobalt LootTable +- Fixed Black Gold Ingot Recipe +- Fixed Jeweler Translate +- Fixed Zombie Villager Jeweler +- Fixed Crashing when using an item with a Stun effect +- Fixed Crafting stations drops +- Fixed Stun +- Fixed Necromancer Music Disc +- Fixed Ephemarite LootTables +- Fixed Void taint tinting model +- Fixed Deepslate cobalt ore drops Sapphire ore +- Fixed Crash on using Jewelry Bag +- Fixed Armor model rendering with custom model skins +- Fixed Blood Veins +- Fixed Rune of Accuracy +- Fixed Devil Spawn +- Fixed Shadewood Spiders Spawn + +# Gamerules + +- Added `valoria:disableBossDungeonGriefing` - disables block breaking / placing, in boss dungeons +- Added `valoria:trapActivating` - disables trap activating + +# Added + +- JEI Compat Changes +- Jer Compat +- Added Ethereal Items Recipes +- Added Crystal Blocks +- Added Wicked Crystal (Boss) +- Added Crystals +- Added Ent +- Added Pot generation chance configuration +- Added Elemental Crystal +- Added Elemental Manipulator Recipe +- Added Armor Template (For elemental progression) +- Added Leather Belt Recipe +- Added Amethyst Gem Recipe +- Added Kiln +- Added Ancient Stone set +- Added Ancient Geode +- Added Lesser Runes +- Added Crypt Map Trading (Tier 2) +- Added Necromancer Crypt Map Trading (Tier 3) +- Added Shadewood tree Root’s Generation +- Added Eldritch tree Root’s Generation +- Added Void Shore BIome +- Added Void Peaks Biome +- Added Void Hills Biome +- Added Void Desert Biome +- Added River Biome +- Added Void Sand + - Added Void Sandstone + - Added Void Cut Sandstone + - Added Void Chiseled Sandstone + - Added Smooth Void Sandstone +- Added Pyratite Crystal Generation +- Added Sounds to Sorcerer +- Added Runic Dust +- Added Runes Recipes +- Added JEI informations +- Added Scourge +- Added Exhaustion Effect +- Added Renewal Effect +- Added Maggots +- Added Zombie transformation to Swamp Wanderer in Swamps +- Added Ethereal Armor +- Added Marsh Armor +- Added Marsh Cloth +- Added KubeJS Compat +- Added Boss Configs +- Added Nuggets (Bronze, Cobalt, Black Gold) +- Added Devil’s Heart +- Added Harmony Heart +- Added Bandage +- Added Medicated Devil Heart +- Added Medicated Harmony Heart +- Added Elemental Charm +- Added Skeletal Vambrace +- Added Magmatic Vambrace +- Added Magmatic Gauntlet +- Added Cobbled Shale Bricks +- Added Cobbled Shale Spikes Trap +- Added Cobbled Shale Firecharge Trap +- Added Wicked Fortress +- Added extra durability to Accessories +- Added Tooltips to Pickaxes (Proposed by players) +- Added Iron Ring Amber Recipe +- Added Pyratite Arrow +- Added Pyratite Armor +- Added Custom model to Infernal, Void, Phantasm Armors +- Added Offsets to Bottles and Cups +- Added Offsets to Pots +- Added Dryador (Boss) +- Added Pixie +- Added Pyratite Crystal gen +- Added Gaib Roots Gen +- Added Sounds to Devils +- Added Crown of Harmony +- Added Descriptions to some of items + +# Removal + +- Removed Drink related achievements +- Removed Spider Eggs + +# Changes + +- Changed Boss Music to Music category from Hostile +- Changed Dungeon Music to Music category from Ambient +- Necromancer Treasure bag now has 2 rolls ( <3 Auriny and your Luck ) +- Necromancer now hurts player depending on health rather than static 15 +- Changed Cobalt Ore, generated count 2 → 8 +- Nerfed Necromancer Crypt LootTable: + - Runes generated from (min: 2, max: 6) → (min: 0, max: 3); + - Raw Cobalt generated from (min: 1, max: 6) → (min: 1, max: 4); + - Removed Trash +- Removed Trash from Crypt LootTable +- Removed Fall damage from Devils +- Removed Lexicon Trading from Cartographer +- Moved Percent Armor Bar +- Necromancer no longer check for the Day condition +- Undeads now ignore damage from Necromancer +- Nerfed Silken Wakizashi - 3 Dash Dist. → 1.5 Dash Dist. +- Nerfed Necromancer +- Reduced Goblin spawn chance +- Optimized Sorcerer Spell +- Reduced Pot spawn chance +- Buffed Runes +- Switched to Overwold Biome Generation +- Rebalanced Villager Trades +- Rebalanced Armors +- Changed sounds +- Count of amber ore changed from 5 to 3 +- Count of sapphire ore changed from 4 to 3 +- Size of ruby ore changed from 2 to 4 +- Goblins now drop Bronze nuggets, ingot will be a rare drop +- Traps can be activated be an Item +- Elemental Manipulator saves item enchantments +- Changed Sorcerer Spell Color to Brown +- Buffed Sorcerer +- Changed crafting time of Jewelry Recipes +- Reworked Percent Armor +- Reworked Tipsy effect +- Reworked Pyratite Spear +- Reworked Manipulator +- Nerfed Bleeding a bit +- Bleeding enchantment now compatible with Sharpness +- Rebalanced Items +- Bonemeal now can be used on Aloe and Gaib Roots + +# 0.6.4 + +# Fixed + +- Fixed missing particles in Abyssal Glowfern +- Fixed mischeck of large model in Wraith katana and Wakizashi, which caused missing model +- Fixed missing sounds +- Fixed crashing issues +- Fixed server crash when using Beast Scythe +- Fixed render types in bottles and cups +- Fixed Elemental Manipulator particles +- Fixed miss-texture of Polished Deep Marble +- Fixed Corpsecleaver healing +- Fixed bug where some of the Necromancer's spells were interruptible +- FIxed Rendering of Blazereap Overlay +- Fixed `Unknown recipe category: [!!!com.mojang.logging.LogUtils$1ToString@aa0770f=>java.lang.NullPointerException` +- Fixed and Optimized Bomb’s +- Fixed model mismatch in Mossy pots +- Fixed a bug where katanas without a large model couldn't receive skins +- Fixed https://github.com/IriDark/Valoria/issues/16 +- Fixed https://github.com/IriDark/Valoria/issues/19 +- Fixed https://github.com/IriDark/Valoria/issues/20 +- Fixed https://github.com/IriDark/Valoria/issues/21 +- Fixed https://github.com/IriDark/Valoria/issues/22 +- Fixed https://github.com/IriDark/Valoria/issues/23 +- Fixed https://github.com/IriDark/Valoria/issues/25 +- Fixed https://github.com/IriDark/Valoria/issues/27 +- Fixed https://github.com/IriDark/Valoria/issues/28 +- Fixed https://github.com/IriDark/Valoria/issues/29 +- Fixed Phantom ability +- Fixed Projectiles +- Fixed Crypt generation +- Fixed `CrushableBlockEntit` non-Thread safe crash +- Fixed FireTrap Particles +- Fixed Crashing when equipping non-armor items with some of Valoria Armor + - `Caused by: java.lang.ClassCastException: class net.minecraft.world.item.StandingAndWallBlockItem cannot be cast to class net.minecraft.world.item.ArmorItem (net.minecraft.world.item.StandingAndWallBlockItem and net.minecraft.world.item.ArmorItem are in module` +- Fixed Armor Trims + +# Added + +- Added Day & Night Cycle to Valoria +- Added Infernal Spear +- Added Jeweler Profession +- Added Loop Sound for Elemental Manipulator +- Added Meat content that includes: + - New Mob - Flesh Sentinel + - New Item + - New Block types + - New Biome + - New Cave biome +- Added Flowers to `replaceables` tags +- Added `Shadewood Branch` Generation +- Added leaf vine decoration to `Fancy Shadewood Tree` +- Added Glow layer for Dormant Crystals +- Added Bag opening sound +- Added Corrupted Troll +- Added Bossbar to Necromancer +- Added Biome and Panorama Music +- Added Spider Armor +- Added Dash Enchantment +- Added Overdrive Enchantment +- Added Necromancer Treasure Bag +- Added Functionality to Archaeology Table +- Added Relic Gold +- Added Empty Totem | Winglet | Gazer +- Added Skin fragments +- Added Ancient Shard +- Added Samurai Belt +- Added Succubus spawn +- Added Bronze Item tier +- Added Necromancer’s Crypt +- Added Necromancer Summonable - Necromancer’s Grimoire +- Added Cryptic Altar +- Added Ethereal Items (Pre-nether items dropped from Necromancer boss) +- Added Sorcerer + +# Changed + +- Increased spawn rate of Shadewood Spiders +- Replaced Skeletons with Trolls in Shade Forest +- Tagged all the biomes +- Updated some structures and added processors to them +- Balance changes +- Changed foliage color in Shade Forest +- Reworked Loot Dropping items +- Reworked Succubus and renamed to Devil +- Plants are glowing brighter now +- Traps cant be activated on Peaceful difficulty (QoL) + +# Resprited + +- Resprited Corpsecleaver +- Resprited Meat Block +- Resprited Eye Meat + +## Technical changes + +- Updated JEI to **15.20.0.105** +- Lang cleanup | Improved some langs +- Optimized some Loottables +- Reworked Registration of Blocks + +# 0.6.2 - 0.6.3 + +## New Features and Additions + +- Added Trolls and Succubus mobs +- Introduced Suspicious Ice and Suspicious Iceberg generation +- Added Experience drop from Mobs +- Implemented Epic Fight compatibility (to be released as datapack) +- Added new items: Crypt Lantern, Sake, Halloween Items +- Introduced Pyratite block and Crystal +- Added functionality to Soul Collector +- Implemented Custom Panorama +- Added GUI and sounds to Kegs +- Expanded Valoria Dimension with more biomes +- Introduced Elemental Smithing Templates +- Added shader rendering to Valoria Portal +- Implemented new skins + +## Fixes and Optimizations + +- Fixed various model loading issues for Prospector's Pick +- Resolved tag loading problems for impact projectiles and smoke particles +- Fixed Cattail and Pot generation +- Addressed server crashing issues +- Fixed Goblin animations and Pot item models +- Resolved smoke and Necromancer particles +- Fixed bug with coffee stacking +- Corrected Murasama's "dash_distance" attribute usage +- Fixed Undead moving AI +- Resolved Loyalty enchantment issues on Spears +- Fixed Glover rendering and Valoria Portal Frames +- Addressed Piercing and Spears rotations +- Fixed projectile damage through FTB Chunks privates +- Corrected Rune of Cold functionality +- Fixed server crash when putting a Shard into a Void Pillar +- Adjusted small offset of placed items on Jewelry table + +## Balance Changes + +- Nerfed Runes +- Buffed Silken Kunai +- Decreased cooldown time for Scythes +- Reduced Goblin bone drop rate +- Lowered Gunpowder droprate from Ephemarite crushing +- Decreased Geode droprate from Ephemarite mining +- Buffed Katanas +- Adjusted Tipsy effect balance + +## Reworks and Changes + +- Reworked Goblins, Scythes, Katanas, Murasama +- Overhauled Overlay Rendering and items +- Reworked Bleeding FX, Kegs, Projectiles +- Changed Necromancer Fangs to Devourer +- Reworked Bows and Elemental Progression +- Changed Item Tabs Sorting +- Made drinks placeable and stackable up to 64 +- Animated Goblins +- Resprited all drinks, Cobalt Ingot, and Bow of Darkness + +## Removals + +- Deleted Geodites (drops moved to ephemarite) +- Removed Void Crystal +- Deleted unused "needs_iron_tool" tag + +## Technical Updates + +- Updated to Forge 47.2.20 +- Valoria now requires Fluffy Fur +- Optimized Katanas and Murasama +- Added Silk touch drops to Crystals +- Implemented Goblin Model Configuration +- Added "in-hand" Models to Katanas (Contributed by Kerdo) +- Added Crypt Pots (Contributed by Kerdo) +- Added Glow Layer to some Blocks and Items +- Katanas can't be used in offhand now + +# 0.6.1 + +## New Features and Additions + +- Now Valoria requires Lodestone +- Added Custom Voxel shapes to some blocks +- Added Firefly-like particles, spawned in Shadeforest +- Added Particles for Bandages +- Added Shade Blossom +- Added Shade Blossom Bandage +- Added Pots Generation +- Added some sort of Necromancy + +## Reworks and Changes + +- Various playability changes +- Reworked Stone Crusher (A bit) +- Reworked Accessories +- Reworked BlazeReap +- Reworked Bandages +- Decreased amount of bones dropped from Goblins +- Nerfed Tipsy Effect: + - Armor: 35% → 10% + - Damage: 45% → 15% +- ID change: "pick" → "prospectors_pick" +- Changed spawnables in Valoria dimension + +## Visual Updates + +- Resprited Gazers, totems, winglets +- Resprited Bandages +- Resprited Effects + +## Bug Fixes + +- Fixed Katanas and Scythes +- Fixed Scythe Attributes +- Fixed infinite use of Katana +- Fixed Gloves rendering +- Fixed Void armor craft recipe + +## Balance Changes + +- Changed incompatibility of "Bleeding" enchantment from "Sweeping Edge" to "Sharpness" + +## Optimizations + +- Optimized Gloves code + +## Miscellaneous + +- Added some Recipes +- Updated mods.toml + +# 0.6 + +## New Features and Additions + +- Added functionality for ALL runes +- Added Jade compatibility +- Added compatibility for Enchantment Descriptions +- Added 2 attributes to Prospector's Pick +- Added a new painting: "The Starry Night" by Vincent Van Gogh +- Added entities to vanilla tags +- Added cooldown for Phantom +- Added ColorMapping for plants +- Added Flammable property to wooden blocks +- Added ores to Forge tags +- Added Shadewood branch +- Added Void Taint +- Added The Valoria Dimension with numerous new features: + - New flora: Violet Sprout, Glow Violet Sprout, Glowfern, Voidvine + - New fauna: Void Serpents + - New blocks: Eye Stone, Eye Meat, Voidtaint Lantern, Abyssal Lantern, Deep Marble + - New items: Eye Chunk, Tainted Roots, Tainted Berries + - New structures: Wicked Amethyst Gen, Dormant Crystals Gen, Eldritch tree + - New biomes: Shadewood forest, Void Barren, Ecotone +- Added Fancy Shadewood Tree +- Added Pearlium generation +- Added Crystal disk generation +- Added modded stone variants to Stone Tool Materials tag +- Added animation to some blocks +- Added mod armor to all tags (armors are now trimmable) +- Added armor trim materials +- Added bow zooming functionality +- Added Vanishable property to most items +- Added Ukrainian language support +- Reintroduced and reworked Swamp Wanderer +- Added Shadewood Boat and Chest Boat +- Added Elemental Manipulator crafts +- Added new commands: "addAllPages" and "removeAllPages" +- Added Necromancer and Undead +- Added description to scythes +- Added particles to Manipulator +- Added Valoria ingots to Forge tag #ingots +- Added Shadewood Fence and Fence Gate +- Added Quark compatibility +- Added building blocks for Ephemarite (slabs, stairs, walls) +- Added Void traps +- Added custom arrows and bows +- Added Umbral Activator block +- Added Keg crafting recipe +- Added sword actions to Katanas +- Added ambient particles to some items + +## Reworks and Changes + +- Reworked Keg +- Reworked Umbral Blocks (formerly Keyblocks) +- Updated Curio slot registry to newer JSON-based system +- Reworked Curio items +- Reworked Lexicon +- Rebalanced mod +- Reworked Shadewood tree +- Reworked Void Grass +- Improved Goblin AI and model (now Humanoid, can hold items) +- Reworked Kunais +- Improved Item2DRenderer for better mod compatibility +- Reworked Sarcophagus +- Reworked Mannequin +- Reworked Accessories +- Reworked Spears + +## Visual Updates + +- Resprited: Void stone, Uncharged Shard, Wicked Amethyst (block and item), Soul shard, Cattail, Bloodhound, Murasama, Yamato, Shadewood Planks and related items, Katanas, Scythes + +## Renamed Items + +- Uncharged Stone → Uncharged Shard +- Soulstone → Soul shard +- Amethyst (mod version) → Wicked Amethyst +- Keyblocks → Umbral Blocks + +## Gameplay Changes + +- Prospector's Pick now breaks ICE blocks much faster +- Server-sided most particles +- Golden accessories now make Piglins neutral +- Accessories will be damaged when player is attacked +- Goblins can now spawn with and take weapons in hand +- Necklaces will change size depending on armor + +## Bug Fixes + +- Fixed various misspellings in sound tooltips and JEI +- Corrected "Coffe" to "Coffee" +- Fixed 1 pixel Y offset in JEI +- Fixed Plants LootTable +- Fixed Baby Goblins +- Fixed bug where Goblins tried to attack creative players when hurt +- Fixed loud sound bug with multiple items in cooldown +- Fixed necklaces size relative to player's second layer +- Fixed entity attributes +- Fixed crash related to HitResult.getType() MISS (Blazereap) +- Fixed server errors in KatanaItem and CorpsecleaverItem +- Fixed "/valoria addPage/removePage" command server error +- Fixed damage from Scythes/Katanas bypassing armor and FTB Chunks +- Corrected Bloodhound icon 1 pixel offset in GUI +- Fixed Mannequin visual bugs +- Fixed second GUI slot in JEI recipes +- Fixed Katana dash damaging through walls +- Fixed Katanas for double-clicking mice +- Corrected flower pot offsets + +## Balance Changes + +- Changed Stonecrusher recipe +- Adjusted Eternity opacity after Phantom ability +- Changed attributes maximum value for vanilla armor +- Modified Aloe Bandage animations +- Adjusted hitboxes for all modded entities (vanilla parity) +- Increased chance of receiving a charge when hitting an enemy with Infernal Sword (5% → 10%) +- Increased chance of stunning the target when hitting with Club (5% → 7%) +- Changed Corpsecleaver and HoundItem (Bloodhound sword) to SwordItem class +- Updated ability sounds +- Converted time in JEI recipes to seconds +- Adjusted Block Tab sorting +- Modified Crypt LootTable +- Decreased Limestone spawn chance +- Reduced particle count for Mannequin interactions + +## Technical Updates + +- Updated Forge version to 1.20.1-47.2.16 +- Optimized: Quicksand Fog Rendering, CurioItemProperty, Infernal Sword, Scythe Items, Lexicon Page Item, Mannequin, Weapons abilities + +## Miscellaneous + +- Added modded stone variants to Stone Tool Materials tag +- Added various items to Forge tags + +# 0.5.2.1 + +- Added Functional to Bloodsight monocle +- Fixed Ephemarite boulders gen +- Fixed Radius enchantment +- Added tetra compat +- Balance changes +- Fixed Wine translate +- Changed Ephemarite boulders gen +- Changed Crypts gen + +# 0.5.2 + +- Added Just Enough Effect Descriptions (JEED) Compat +- Fixed Effect coloring +- Changed Tipsy effect bonuses +- Alcohol now adds nausea to player +- Added Mead Bottle to tags - Alcohol, Bottle Drinks +- Removed Kvass from tag - Alcohol +- Resprited & Changed model of Elegant Pedestal +- Added Elegant Pedestal Recipe +- Redone Drinks Registers +- Added drinks a potion like tooltips +- Balance changes +- Changed Creative Tab Textures +- Changed Jeweler Table recipe (a little) +- Deleted Skully Pedestal (cuz its cringe tbh, most likely will be replaced with something nicer) +- Updated RU lang +- Updated ENG lang +- Fixed Jeweler table recipes JEI compat +- Added Animated progress arrow in jei +- Changed Voxel shape of Pedestal +- Fixed shadewood hanging sign +- Added most of blocks to vanilla tags +- Changed Hanging Shadewood sign texture +- Added Hanging Shadewood sign recipe +- Changed Decorated Bronze lamp model +- Changed Tomb model +- Changed Tomb texture +- Fixed Waterlogged state for Tomb +- Sorted JEI by Time of crafting +- Added New Blocks +- Fixed misspell: Vine -> Wine +- Fixed Overlay render layers +- Mod Blocks now work with Beacon +- Added new dungeon to oceans (A crystallized deep ruin that have drowned spawner inside but it cannot spawn with trident in hand) +- Changed Manipulator model & texture & Voxelshape +- Added Manipulator gui +- Redone Stone Crusher so its now json powered +- Did a smelting recipes for raw cobalt +- Pickaxe used in Crusher now will be damaged by 5 units +- Fixed a bug that item can disappear in pedestals, keg & crusher when inventory is full +- Added ephemarite gen (stone that can be crashed in crusher to get a rune with a chance) +- Decreased goblin spawn chance +- Keg now returns empty bottle if honey bottle is used, to take back honey from a keg you'll need the glass bottle +- Fixed dupe when keg wtih a drink's inside was broken it will drop + these drink's so you'll dont need to collect these items with specific + item +- Resprited armor models + +# 0.5.1 + +- Fixed Server Crashing +- Added JEI compat +- Added Jewelry Recipes +- Fixed Keg Brewing Recipes +- Fixed Stonecrusher Item Rendering +- Added Recipes for most of Blocks +- Added Stonecutting recipes +- Resprited some of items +- Marked Lexicon for REDO (very wip thingie btw, all pages will be open until redo) + +And more! \ No newline at end of file diff --git a/build.gradle b/build.gradle index 988986d6d..58b3fc7d5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ import com.google.gson.Gson import com.google.gson.GsonBuilder +import net.darkhax.curseforgegradle.TaskPublishCurseForge import java.nio.charset.StandardCharsets @@ -26,6 +27,7 @@ plugins { id "com.modrinth.minotaur" version "2.+" id 'org.spongepowered.mixin' version '0.7.+' id 'org.parchmentmc.librarian.forgegradle' version '1.+' + id 'net.darkhax.curseforgegradle' version '1.1.15' } version = "${version}" @@ -103,7 +105,7 @@ repositories { name = "Modrinth" url = "https://api.modrinth.com/maven" } - maven { url = "https://maven.komaru.ru/repository/maven-releases" } + maven { url = "https://repo.komaru.studio/releases" } maven { url "https://maven.theillusivec4.top/"} maven { url "https://cursemaven.com"} maven { url "https://maven.blamejared.com"} @@ -218,17 +220,11 @@ tasks.withType(GenerateModuleMetadata) { enabled = false } +//lightweight version task apiJar(type: Jar) { archiveClassifier.set('api') - from sourceSets.main.allSource - from sourceSets.main.output - duplicatesStrategy = DuplicatesStrategy.EXCLUDE -} - -task noSounds(type: Jar) { - archiveClassifier.set('nosounds') from sourceSets.main.output - exclude("assets/valoria/sounds/**") + exclude("assets/valoria/**") duplicatesStrategy = DuplicatesStrategy.EXCLUDE } @@ -251,10 +247,6 @@ task javadocJar(type: Jar) { archiveClassifier.set('javadoc') } -artifacts { - archives sourcesJar -} - processResources { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } @@ -262,16 +254,14 @@ processResources { publishing { publications { register('mavenJava', MavenPublication) { - artifact jar - artifact noMusicJar - artifact sourcesJar artifact apiJar + artifact sourcesJar } } repositories{ maven{ - url "https://maven.komaru.ru/repository/maven-releases/" + url "https://repo.komaru.studio/releases" credentials{ username "admin" password System.getenv("maventoken") @@ -284,14 +274,56 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation } +def getChangelogText() { + def changelogFile = file('CHANGELOG.md') + if (!changelogFile.exists()) return "" + + def lines = changelogFile.readLines() + def currentLog = new StringBuilder() + def reading = false + def cleanVersion = version.toString().replace("1.20.1-", "") + for (line in lines) { + def trimmed = line.trim() + if (trimmed.startsWith("#") && !trimmed.contains("**")) { + if (trimmed.contains(cleanVersion)) { + reading = true + continue + }else if (reading) { + break + } + } + + if (reading) { + currentLog.append(line).append('\n') + } + } + + return currentLog.toString().trim() +} + +task curseforge(type: TaskPublishCurseForge) { + apiToken = System.getenv("cursetoken") + def projectId = "698244" + def mainFile = upload(projectId, jar) + mainFile.displayName = "Valoria-${version}" + mainFile.changelog = getChangelogText() + + mainFile.addRequirement("tridot") + mainFile.addRequirement("geckolib") + mainFile.addRequirement("curios") + + mainFile.withAdditionalFile(noMusicJar) +} + modrinth { token = System.getenv("modrinthtoken") projectId = "valoria" - versionNumber = "${version}" + versionNumber = version.toString().replace("1.20.1-", ""); versionType = "release" - versionName = "${version}" + versionName = "Valoria-${version}" + changelog = getChangelogText() uploadFile = tasks.jar - additionalFiles = [sourcesJar] + additionalFiles = [noMusicJar] dependencies { required.version "tridot", "${tridot_version}" required.project "geckolib" diff --git a/gradle.properties b/gradle.properties index 51938ce1f..61aaae08c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,7 @@ forge_version=47.2.20 version=1.20.1-1.0.2.4 curios_version=5.10.0 geckolib_version=4.8.2 -tridot_version=1.0.126 +tridot_version=1.0.130 tridot_version_range=[1.20.1-1.0.122,) # compat diff --git a/src/main/java/com/idark/valoria/Events.java b/src/main/java/com/idark/valoria/Events.java index d20445340..1680c59dc 100644 --- a/src/main/java/com/idark/valoria/Events.java +++ b/src/main/java/com/idark/valoria/Events.java @@ -5,7 +5,6 @@ import com.idark.valoria.api.unlockable.*; import com.idark.valoria.api.unlockable.types.*; import com.idark.valoria.client.ui.screen.book.codex.*; -import com.idark.valoria.client.ui.screen.book.codex.checklist.*; import com.idark.valoria.core.capability.*; import com.idark.valoria.core.config.*; import com.idark.valoria.core.interfaces.*; @@ -179,7 +178,6 @@ public static void onMissingMappings(MissingMappingsEvent event){ public void onReload(AddReloadListenerEvent event){ Valoria.LOGGER.info("Reloading Codex Chapters..."); CodexEntries.initChapters(); - event.addListener(BossEntryLoader.INSTANCE); } @SubscribeEvent @@ -298,10 +296,10 @@ public void playerTick(TickEvent.PlayerTickEvent event){ Player player = event.player; if(!player.level().isClientSide() && player instanceof ServerPlayer serverPlayer){ - if(CommonConfig.NIHILITY.get()){ + if(ServerConfig.ENABLE_NIHILITY.get()){ player.getCapability(INihilityLevel.INSTANCE).ifPresent(nihilityLevel -> { if(!player.getAbilities().instabuild && !player.isSpectator()){ - NihilityEvent.tick(event, nihilityLevel, player); + NihilityEvent.tick(event, nihilityLevel, serverPlayer); } }); } @@ -312,7 +310,7 @@ public void playerTick(TickEvent.PlayerTickEvent event){ } }); - if(player.tickCount % 60 == 0){ + if(player.tickCount % ServerConfig.CODEX_UPDATE_INTERVAL.get() * 20 == 0){ ArrayList all = new ArrayList<>(Unlockables.get()); Set unlocked = UnlockUtils.getUnlocked(serverPlayer); if(unlocked != null) all.removeAll(unlocked); @@ -322,15 +320,15 @@ public void playerTick(TickEvent.PlayerTickEvent event){ } } - if(CommonConfig.NIHILITY.get()){ + if(ServerConfig.ENABLE_NIHILITY.get()){ if(player.level().isClientSide()){ player.getCapability(INihilityLevel.INSTANCE).ifPresent(nihilityLevel -> NihilityEvent.clientTick(nihilityLevel, player)); } } - if(CommonConfig.FOOD_ROT.get()){ + if(ServerConfig.ENABLE_FOOD_ROT.get()){ if(player.level().dimension().equals(LevelGen.VALORIA_KEY)){ - if(player.tickCount % 60 == 0){ + if(player.tickCount % ServerConfig.FOOD_ROT_INTERVAL.get() * 20 == 0){ Inventory inv = player.getInventory(); for(int i = 0; i < inv.getContainerSize(); i++){ ItemStack stack = inv.getItem(i); @@ -456,11 +454,28 @@ public void onEffectApply(MobEffectEvent.Applicable event){ @SubscribeEvent public void onLivingHurt(LivingHurtEvent event){ if(event.getSource().is(DamageTypeTags.BYPASSES_ARMOR)) return; + var source = event.getSource(); + Entity attackerEntity = source.getEntity(); + LivingEntity target = event.getEntity(); + ILivingEntityData data = (ILivingEntityData)target; + if (source.getDirectEntity() instanceof Player player) { + if (target instanceof IEffectiveWeaponEntity eff) { + if(eff.getEffective() == null) { + Valoria.LOGGER.debug("Effective weapon tag is null for {}", target); + return; + } + + if (player.getMainHandItem().is(eff.getEffective())) { + float currentDamage = event.getAmount(); + float newDamage = currentDamage * eff.scaleFactor(); + event.setAmount(newDamage); + data.valoria$setLastDamageWithSource(event.getSource(), event.getAmount()); + } + } + } - Entity attackerEntity = event.getSource().getEntity(); if (!(attackerEntity instanceof LivingEntity attacker)) return; - LivingEntity target = event.getEntity(); float totalBonus = 0f; if(!(attacker instanceof Player && target instanceof Player)){ for(ElementalType type : ElementalTypes.ELEMENTALS){ @@ -473,6 +488,7 @@ public void onLivingHurt(LivingHurtEvent event){ } event.setAmount(event.getAmount() + totalBonus); + data.valoria$setLastDamageWithSource(event.getSource(), event.getAmount()); } private static float applyAttackBonus(AttributeInstance attackAttr, AttributeInstance resistAttr, LivingEntity target, float totalBonus){ @@ -495,6 +511,14 @@ public void onLivingAttack(LivingAttackEvent event){ var pSource = event.getSource(); var entity = event.getEntity(); var level = entity.level(); + if (pSource.getDirectEntity() instanceof Player player && level.isClientSide()) { + if (entity instanceof IEffectiveWeaponEntity eff){ + if(player.getMainHandItem().is(eff.getEffective())){ + eff.spawnHitParticles(entity.level(), entity.blockPosition()); + } + } + } + if(pSource.getEntity() instanceof LivingEntity attacker){ ILivingEntityData data = (ILivingEntityData)entity; if(level instanceof ServerLevel s){ diff --git a/src/main/java/com/idark/valoria/Valoria.java b/src/main/java/com/idark/valoria/Valoria.java index 89c6e0e7c..239db2440 100644 --- a/src/main/java/com/idark/valoria/Valoria.java +++ b/src/main/java/com/idark/valoria/Valoria.java @@ -80,6 +80,7 @@ public class Valoria{ public static final GameRules.Key TRAP_ACTIVATING = GameRules.register("valoria:trapActivating", Category.MISC, GameRules.BooleanValue.create(true)); public Valoria(){ + ConfigMigrator.migrate(); IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); EffectsRegistry.register(eventBus); EnchantmentsRegistry.register(eventBus); @@ -102,9 +103,9 @@ public Valoria(){ SoundsRegistry.register(eventBus); IEventBus forgeBus = MinecraftForge.EVENT_BUS; - ModLoadingContext.get().registerConfig(Type.SERVER, ServerConfig.SPEC); - ModLoadingContext.get().registerConfig(Type.CLIENT, ClientConfig.SPEC); - ModLoadingContext.get().registerConfig(Type.COMMON, CommonConfig.SPEC); + ModLoadingContext.get().registerConfig(Type.SERVER, ServerConfig.SPEC, "valoria/server.toml"); + ModLoadingContext.get().registerConfig(Type.CLIENT, ClientConfig.SPEC, "valoria/client.toml"); + ModLoadingContext.get().registerConfig(Type.COMMON, CommonConfig.SPEC, "valoria/common.toml"); DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> () -> { forgeBus.addListener(KeyBindHandler::onInput); forgeBus.addListener(Events::onTooltip); diff --git a/src/main/java/com/idark/valoria/client/model/animations/CardOpeningAnimation.java b/src/main/java/com/idark/valoria/client/model/animations/CardOpeningAnimation.java new file mode 100644 index 000000000..a0c5473db --- /dev/null +++ b/src/main/java/com/idark/valoria/client/model/animations/CardOpeningAnimation.java @@ -0,0 +1,52 @@ +package com.idark.valoria.client.model.animations; + +import com.mojang.blaze3d.vertex.*; +import com.mojang.math.*; +import net.minecraft.client.model.*; +import net.minecraft.client.player.*; +import net.minecraft.client.renderer.*; +import net.minecraft.util.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import net.minecraftforge.api.distmarker.*; +import pro.komaru.tridot.api.render.animation.*; + +public class CardOpeningAnimation extends ItemAnimation{ + + @Override + @OnlyIn(Dist.CLIENT) + public void setupAnimRight(HumanoidModel model, Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + model.rightArm.xRot = -1.35F; + model.rightArm.yRot = -0.6F; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void setupAnimLeft(HumanoidModel model, Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + model.leftArm.xRot = -1.35F; + model.leftArm.yRot = 0.6F; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void renderArmWithItem(AbstractClientPlayer player, float partialTicks, float pitch, InteractionHand hand, float swingProgress, ItemStack stack, float equippedProgress, PoseStack poseStack, MultiBufferSource buffer, int combinedLight) { + float time = player.tickCount + partialTicks; + + poseStack.translate(-0.25F, -0.45, -0.75F); + + poseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); + poseStack.mulPose(Axis.ZP.rotationDegrees(-25.0F)); + poseStack.mulPose(Axis.XP.rotationDegrees(25.0F)); + + float breathe = Mth.sin(time * 0.1F) * 0.05F; + poseStack.translate(0, breathe, 0); + + float shakeIntensity = 0.015F; + float shakeX = (Mth.sin(time * 0.8F) * shakeIntensity); + float shakeY = (Mth.cos(time * 1.2F) * shakeIntensity); + + poseStack.translate(shakeX, shakeY, 0); + poseStack.scale(1.5f, 1.5f, 1.5f); + } +} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/animations/DevilAnimation.java b/src/main/java/com/idark/valoria/client/model/animations/DevilAnimation.java index 8157a34f2..fd6d7efcd 100644 --- a/src/main/java/com/idark/valoria/client/model/animations/DevilAnimation.java +++ b/src/main/java/com/idark/valoria/client/model/animations/DevilAnimation.java @@ -1,813 +1,449 @@ package com.idark.valoria.client.model.animations; -import net.minecraft.client.animation.AnimationChannel; -import net.minecraft.client.animation.AnimationDefinition; -import net.minecraft.client.animation.Keyframe; -import net.minecraft.client.animation.KeyframeAnimations; +import net.minecraft.client.animation.*; -public class DevilAnimation{ - public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(3.0F).looping() - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(-0.15F, 0.025F, 0.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(0.08F, -0.095F, -0.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(-0.025F, 0.025F, -0.75F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(0.1F, 0.03F, 0.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -3.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 3.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(0.0F, 2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(0.0F, 2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); +public class DevilAnimation { + public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(3.0F).looping() + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.posVec(-0.15F, 0.025F, 0.7F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.125F, KeyframeAnimations.posVec(0.08F, -0.095F, -0.3F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(2.5F, -7.5F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.125F, KeyframeAnimations.degreeVec(-2.512F, 4.9883F, 0.543F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0417F, KeyframeAnimations.posVec(-0.025F, 0.025F, -0.75F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.125F, KeyframeAnimations.posVec(0.1F, 0.03F, 0.5F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -3.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 3.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.8333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.375F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(0.0F, 2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.degreeVec(0.0F, 2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); - public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(2.0F).looping() - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(-0.125F, 2.675F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.posVec(-0.06F, 3.24F, -2.03F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.1F, -2.05F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.1667F, KeyframeAnimations.posVec(0.07F, 2.43F, -2.08F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.1F, 1.375F, -2.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.3F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 1.545F, -2.01F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.05F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.1667F, KeyframeAnimations.posVec(0.07F, 3.205F, -2.08F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.2F, 2.775F, -2.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(-8.2812F, 0.0F, -2.1094F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(-5.0F, 0.0F, 2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(8.2812F, 0.0F, 2.1094F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(24.9146F, 2.7554F, -4.1376F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4583F, KeyframeAnimations.degreeVec(35.3295F, 1.1515F, -2.2192F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(27.4777F, -1.1541F, 2.2178F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(39.9916F, 0.4566F, 0.3045F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(27.8447F, 0.2946F, 0.1798F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(27.4777F, -1.1541F, 2.2178F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); + public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(2.0F).looping() + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.posVec(-0.125F, 2.675F, -2.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.8333F, KeyframeAnimations.posVec(-0.06F, 3.24F, -2.03F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.1F, -2.05F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.1667F, KeyframeAnimations.posVec(0.07F, 2.43F, -2.08F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.1F, 1.375F, -2.1F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.375F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 7.37F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.3F, -2.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 1.545F, -2.01F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.05F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.1667F, KeyframeAnimations.posVec(0.07F, 3.205F, -2.08F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.2F, 2.775F, -2.1F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, -2.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, -20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(0.0F, -20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, -20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(-1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(-1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(0.0F, 20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 20.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(1.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(5.0F, 0.0F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(-8.2812F, 0.0F, -2.1094F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(-5.0F, 0.0F, 2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(8.2812F, 0.0F, 2.1094F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.4F, -1.5F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(24.9146F, 2.7554F, -4.1376F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4583F, KeyframeAnimations.degreeVec(35.3295F, 1.1515F, -2.2192F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 1.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 2.8F, 2.3F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(27.4777F, -1.1541F, 2.2178F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(39.9916F, 0.4566F, 0.3045F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.degreeVec(27.8447F, 0.2946F, 0.1798F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(27.4777F, -1.1541F, 2.2178F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 2.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 3.6F, 2.3F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); - public static final AnimationDefinition ATTACK_MAGIC = AnimationDefinition.Builder.withLength(4.0F) - .addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(13.93F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(-17.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.degreeVec(25.3376F, 9.0548F, 4.2617F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 14.8F, 12.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 14.0F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 15.0F, 9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.7F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.7F, 0.0F, 6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.7F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.posVec(0.41F, 0.0F, -1.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Head", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(13.93F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(-0.16F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(-17.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-16.33F, 1.0F, 2.94F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.375F, KeyframeAnimations.degreeVec(-14.8F, 1.18F, 3.18F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.degreeVec(-12.7106F, 1.099F, 4.1057F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.degreeVec(-10.29F, 1.0F, 4.85F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.degreeVec(25.3376F, 9.0548F, 4.2617F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.6667F, KeyframeAnimations.degreeVec(13.7481F, 15.8727F, -26.9088F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.7917F, KeyframeAnimations.degreeVec(15.846F, -4.7851F, 44.5337F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 14.2F, 12.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 14.125F, 6.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.015F, 8.005F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(0.0F, 14.195F, 8.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, 14.535F, 8.225F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(-0.03F, 14.5F, 8.19F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(-0.05F, 14.46F, 8.185F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.375F, KeyframeAnimations.posVec(-0.05F, 14.45F, 8.165F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.05F, 14.405F, 8.13F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.posVec(0.01F, 14.615F, 8.19F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.725F, -1.2F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.725F, -1.325F, 6.025F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.75F, -1.21F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.posVec(0.485F, -0.125F, -2.375F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.6667F, KeyframeAnimations.posVec(-0.68F, 0.59F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.7917F, KeyframeAnimations.posVec(-0.32F, -0.88F, -1.57F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_ear", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(13.93F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(14.8146F, 3.8412F, 26.1999F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.degreeVec(-5.2982F, -4.3033F, -21.5959F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(-0.16F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(-17.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-16.3593F, 0.1261F, 0.8984F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.degreeVec(-10.3172F, 0.658F, 4.2506F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 12.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.degreeVec(25.3376F, 9.0548F, 4.2617F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 14.2F, 12.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 14.125F, 6.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(1.2F, 14.75F, 6.66F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.375F, KeyframeAnimations.posVec(0.34F, 13.14F, 7.39F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.015F, 8.005F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(0.0F, 14.195F, 8.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, 14.51F, 9.075F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(0.03F, 14.675F, 9.115F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(0.05F, 14.885F, 9.16F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.375F, KeyframeAnimations.posVec(0.05F, 15.025F, 9.14F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.05F, 15.18F, 9.155F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.posVec(0.065F, 15.64F, 9.24F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(1.0F, 1.15F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(1.0F, 1.3F, 5.975F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.975F, 1.19F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.posVec(0.635F, 0.65F, -0.625F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_ear", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-112.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(-85.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(-85.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.375F, KeyframeAnimations.degreeVec(-49.2759F, 50.461F, 38.1174F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.5F, KeyframeAnimations.degreeVec(-58.0396F, 38.3179F, 25.6926F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.625F, KeyframeAnimations.degreeVec(-49.2759F, 50.461F, 38.1174F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.75F, KeyframeAnimations.degreeVec(-58.0396F, 38.3179F, 25.6926F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 15.0F, 9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 15.81F, 8.43F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(-21.5561F, -6.608F, -16.2407F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(-36.56F, -6.61F, -16.24F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-21.5561F, -6.608F, -16.2407F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.degreeVec(-23.4F, 0.49F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.4167F, KeyframeAnimations.degreeVec(-39.3247F, -7.9972F, -9.6385F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.7083F, KeyframeAnimations.degreeVec(-39.3247F, -7.9972F, -9.6385F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.9583F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 15.0F, 9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.9583F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(-90.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-90.0F, 22.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.7083F, KeyframeAnimations.degreeVec(-120.0F, 22.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0833F, KeyframeAnimations.degreeVec(-80.0F, 22.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.degreeVec(-80.0F, 22.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.degreeVec(-17.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.2917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 15.325F, 6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 16.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 16.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 16.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 1.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.3333F, KeyframeAnimations.degreeVec(-55.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.degreeVec(-55.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-47.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.degreeVec(-55.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.degreeVec(-55.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(-72.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(-72.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.2917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 15.325F, 6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, 14.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4167F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-34.2333F, -47.7241F, 26.6165F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.degreeVec(-5.0F, -25.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.degreeVec(-12.95F, 1.75F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(-15.8705F, -14.4652F, 4.0742F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(-4.2F, 13.0F, 15.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(-0.4F, 15.0F, 8.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.posVec(-1.5F, 14.0F, 12.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(-0.35F, 15.0F, 8.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.posVec(-0.05F, 15.86F, 8.54F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 5.75F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(-1.4F, 0.0F, 3.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Left_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-34.2333F, 47.7241F, -26.6165F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.degreeVec(-5.0F, 25.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.degreeVec(-12.95F, 1.75F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.degreeVec(-15.8705F, 14.4652F, -4.0742F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(4.2F, 13.0F, 15.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.4F, 15.0F, 8.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.posVec(1.5F, 14.0F, 12.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.posVec(0.35F, 15.0F, 8.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.posVec(0.04F, 15.86F, 9.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(0.0F, 15.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.875F, KeyframeAnimations.posVec(0.0F, 0.0F, 5.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.125F, KeyframeAnimations.posVec(1.4F, 0.0F, 3.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_wing", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.scaleVec(0.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7073F, KeyframeAnimations.scaleVec(0.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(2.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition ATTACK_RANGE = AnimationDefinition.Builder.withLength(2.0F) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(2.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -7.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.8F, -9.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.9F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.8F, -9.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.8F, -19.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-14.6535F, 42.9983F, 3.9161F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-21.9928F, 43.8113F, 7.2942F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(92.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -3.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -3.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, -6.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, 37.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-60.0F, 37.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(46.5943F, -0.7574F, -9.4166F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(46.5943F, -0.7574F, -9.4166F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(-0.91F, -0.76F, -9.42F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(-0.7F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.4F, -0.4F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.2F, -6.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.2F, -6.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.2F, -13.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-171.3037F, 39.1792F, -20.2414F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-206.3F, 39.18F, -20.24F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(-85.1648F, 0.5443F, -0.8513F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(-85.1504F, -4.4378F, -1.2734F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(-2.65F, -4.44F, -1.27F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(1.8F, -2.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(2.6F, -2.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.5F, -6.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.5F, -6.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.5F, -11.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.scaleVec(1.0F, 1.5F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(15.0136F, 2.4148F, 0.6474F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(-1.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(-2.0F, 0.1F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.1F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("Right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-8.4409F, 41.4137F, -1.5602F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-31.6426F, 38.1915F, 10.0952F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(76.7896F, 3.3101F, 7.4151F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(76.7896F, 3.3101F, 7.4151F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(126.79F, 3.31F, 7.42F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(-0.9F, 1.0F, 0.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(-1.3F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(-0.3F, 0.3F, -0.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(-0.3F, 0.3F, -0.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-14.6535F, 42.9983F, 3.9161F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-25.4928F, 43.8113F, 7.2942F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(76.5774F, -19.7079F, -50.7715F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(76.5774F, -19.7079F, -50.7715F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(90.7483F, 4.9754F, -27.7508F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.degreeVec(17.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(-0.325F, -0.875F, -5.425F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(-0.42F, -1.57F, -5.25F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(-3.8F, 4.4F, -5.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(-3.8F, 4.4F, -5.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(-1.3F, -1.1F, -10.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-14.6535F, 42.9983F, 3.9161F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-25.4928F, 43.8113F, 7.2942F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(76.5774F, 19.7079F, 50.7715F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(76.5774F, 19.7079F, 50.7715F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(90.7483F, -4.9754F, 27.7508F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(4.6F, 0.0F, 6.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(5.1F, 0.0F, 6.75F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(4.1F, 4.4F, -5.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(4.1F, 4.4F, -5.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(1.3F, -1.1F, -10.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(0.1F, 0.05F, 0.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(41.06F, -1.78F, 3.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, -0.3F, 2.225F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(2.15F, 0.25F, 1.55F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.05F, -6.45F, -14.45F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.875F, -8.375F, -14.925F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.975F, -7.4F, -13.875F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.875F, -8.4F, -14.9F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.85F, -19.15F, -15.9F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(41.06F, -1.78F, 3.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, -0.3F, 2.225F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(2.05F, 0.0F, 0.15F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.05F, -6.95F, -14.75F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.875F, -8.975F, -14.625F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.975F, -7.975F, -13.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.875F, -9.0F, -14.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.posVec(0.85F, -19.75F, -15.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); + public static final AnimationDefinition ATTACK_RANGE = AnimationDefinition.Builder.withLength(2.0F) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(2.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -7.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.8F, -9.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.9F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.8F, -9.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.8F, -19.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-14.6535F, 42.9983F, 3.9161F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-21.9928F, 43.8113F, 7.2942F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(92.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -3.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -3.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, -6.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, 37.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-60.0F, 37.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(46.5943F, -0.7574F, -9.4166F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(46.5943F, -0.7574F, -9.4166F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(-0.91F, -0.76F, -9.42F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(-0.7F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.4F, -0.4F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.2F, -6.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.2F, -6.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.2F, -13.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-171.3037F, 39.1792F, -20.2414F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-206.3F, 39.18F, -20.24F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(-85.1648F, 0.5443F, -0.8513F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-85.1504F, -4.4378F, -1.2734F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(-2.65F, -4.44F, -1.27F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(1.8F, -2.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(2.6F, -2.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.5F, -6.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.5F, -6.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.5F, -11.4F, -10.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9167F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.scaleVec(1.0F, 1.5F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(15.0136F, 2.4148F, 0.6474F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(-1.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-2.0F, 0.1F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.1F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-8.4409F, 41.4137F, -1.5602F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-31.6426F, 38.1915F, 10.0952F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(76.7896F, 3.3101F, 7.4151F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(76.7896F, 3.3101F, 7.4151F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(126.79F, 3.31F, 7.42F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(-0.9F, 1.0F, 0.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-1.3F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(-0.3F, 0.3F, -0.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(-0.3F, 0.3F, -0.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, -25.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(0.0F, -25.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(-1.0F, 0.0F, 3.75F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-1.0F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(0.0F, 25.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_wing", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.3333F, KeyframeAnimations.posVec(2.0F, 0.0F, 3.75F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(41.06F, -1.78F, 3.1F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("right_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, -0.3F, 2.225F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.posVec(2.15F, 0.25F, 1.55F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.05F, -6.45F, -14.45F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.875F, -8.375F, -14.925F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.975F, -7.4F, -13.875F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.875F, -8.4F, -14.9F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.85F, -19.15F, -15.9F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.3333F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(10.0845F, 7.3854F, 1.3096F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(41.06F, -1.78F, 3.1F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(45.4976F, -1.4499F, 3.0355F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(118.0F, -1.45F, 3.04F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .addAnimation("left_ear", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.3333F, KeyframeAnimations.posVec(1.0F, -0.3F, 2.225F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0F, KeyframeAnimations.posVec(2.05F, 0.0F, 0.15F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.05F, -6.95F, -14.75F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.875F, -8.975F, -14.625F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.975F, -7.975F, -13.5F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.875F, -9.0F, -14.6F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.85F, -19.75F, -15.6F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.LINEAR) + )) + .build(); } \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/animations/EntAnimation.java b/src/main/java/com/idark/valoria/client/model/animations/EntAnimation.java index d177d0830..56b6be03d 100644 --- a/src/main/java/com/idark/valoria/client/model/animations/EntAnimation.java +++ b/src/main/java/com/idark/valoria/client/model/animations/EntAnimation.java @@ -1,76 +1,129 @@ -package com.idark.valoria.client.model.animations;// Save this class in your mod and generate all required imports +package com.idark.valoria.client.model.animations; import net.minecraft.client.animation.*; public class EntAnimation { - public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(3.0F).looping() + public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(4.0F).looping() .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(25.1407F, 2.2494F, 7.1566F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(-27.36F, 2.25F, 7.16F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(-34.769F, 4.2936F, 6.1552F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.9583F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(1.5F, KeyframeAnimations.degreeVec(-7.4929F, -0.3262F, 2.5214F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.875F, KeyframeAnimations.degreeVec(9.31F, -0.14F, 1.07F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.3F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(-0.6F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.posVec(-1.1F, -0.7F, 1.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.9583F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(2.0F, KeyframeAnimations.posVec(0.1F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-17.3593F, 2.2494F, 7.1566F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(9.4234F, 4.3819F, -5.1783F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(-17.3593F, 2.2494F, 7.1566F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(9.4234F, 4.3819F, -5.1783F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.degreeVec(5.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(-1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, -1.0F, -0.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, 1.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -1.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, -2.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 1.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, -1.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-34.8593F, 2.2494F, 7.1566F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(38.266F, 13.3645F, -6.5071F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(-5.0F, 7.5F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.2F, -1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(4.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(3.25F).looping() + .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(-2.613F, -9.6559F, 7.7207F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(14.139F, -2.0817F, -5.5879F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(27.387F, -9.6559F, 7.7207F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(-22.3799F, -6.7551F, 13.9225F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(-2.613F, -9.6559F, 7.7207F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(-0.4F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.6F, 2.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(10.2377F, -12.3071F, -2.2046F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(-7.2652F, 12.4957F, -5.3358F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(10.2377F, -12.3071F, -2.2046F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(-7.2652F, -12.4957F, 5.3358F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(10.2377F, -12.3071F, -2.2046F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(27.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(45.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.9583F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(2.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 4.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(27.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -8.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 4.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -8.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(12.2212F, -2.5592F, -10.3846F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(21.248F, 9.8186F, -4.0726F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(-18.6779F, 7.3171F, -14.9263F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(21.8766F, -5.95F, -4.956F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(12.2212F, -2.5592F, -10.3846F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(-1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(-0.4F, -1.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.22F, -0.54F, -1.26F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(-0.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(-1.0F, -1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.625F, KeyframeAnimations.posVec(-1.0F, -1.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.9583F, KeyframeAnimations.posVec(-1.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(-0.3F, 1.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.8F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.1F, -2.0F, 6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM) )) .build(); @@ -139,60 +192,55 @@ public class EntAnimation { )) .build(); - public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(3.0F).looping() + public static final AnimationDefinition ATTACK_2 = AnimationDefinition.Builder.withLength(1.75F) .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.degreeVec(9.8511F, -1.7279F, 9.8511F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.degreeVec(-159.2387F, 57.1873F, -9.918F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(-88.1458F, -17.759F, -13.2265F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-86.1458F, -62.7149F, -16.0872F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 6.0F, 5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(5.0F, 0.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(8.0F, 0.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("rightarm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.5F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.4F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.1667F, KeyframeAnimations.degreeVec(9.8511F, -1.7279F, 9.8511F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.degreeVec(-12.5F, 32.5F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(12.0273F, -28.8336F, -12.6594F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(18.7648F, -55.4266F, -22.4215F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.1667F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("leftleg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.1667F, KeyframeAnimations.degreeVec(9.8511F, -1.7279F, 9.8511F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("rightleg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.1667F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.ROTATION, new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.degreeVec(9.8511F, -1.7279F, 9.8511F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.degreeVec(0.0F, 30.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(12.517F, -6.5568F, -17.3427F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(43.3789F, -46.2292F, -57.4838F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(7.6438F, -56.2608F, -34.3073F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .addAnimation("leftarm", new AnimationChannel(AnimationChannel.Targets.POSITION, new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9583F, KeyframeAnimations.posVec(1.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + new Keyframe(0.5F, KeyframeAnimations.posVec(-2.0F, 0.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(-1.0F, 1.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(-3.0F, 1.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(-3.0F, 1.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) )) .build(); } \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimation.java b/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimation.java new file mode 100644 index 000000000..e8e3aaa73 --- /dev/null +++ b/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimation.java @@ -0,0 +1,724 @@ +package com.idark.valoria.client.model.animations; + +import net.minecraft.client.animation.*; + +public class ScourgeAnimation { + public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(3.0F).looping() + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.25F, KeyframeAnimations.degreeVec(24.0995F, -11.9795F, -3.6599F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -1.9F, -4.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.6667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(3.25F).looping() + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.375F, KeyframeAnimations.degreeVec(40.9808F, -11.4356F, -9.7724F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(40.9808F, 11.4356F, 9.7724F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(40.9808F, -11.4356F, -9.7724F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(40.9808F, -11.4356F, -9.7724F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -2.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(1.0F, -3.8F, -7.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -3.3F, -4.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(-0.3F, -2.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(-1.0F, -4.1F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, -2.9F, -5.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, -2.9F, -4.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, -2.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, -2.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(10.6276F, -19.6835F, -3.6164F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(20.63F, -19.68F, -3.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(10.6276F, 19.6835F, 3.6164F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(20.63F, 19.68F, 3.62F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(10.6276F, -19.6835F, -3.6164F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(10.6276F, -19.6835F, -3.6164F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, -1.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -1.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(0.0F, -1.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, -1.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, -1.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, -1.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.25F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(-12.4145F, -1.3994F, -2.3237F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-6.5642F, -12.7913F, 1.5723F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-2.6992F, 22.6976F, 3.9674F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(-15.2F, 22.7F, 3.97F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(-14.07F, 5.7586F, 8.515F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(-12.4145F, -1.3994F, -2.3237F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(-12.4145F, -1.3994F, -2.3237F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -0.3F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.3F, -1.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(-0.4F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, 0.2F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(-0.5F, -0.6F, -2.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(-0.7F, -0.7F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, -0.3F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, -0.3F, -5.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(-5.9885F, -12.5912F, -5.4786F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-3.3214F, -13.7962F, -4.5249F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(0.0F, 15.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.degreeVec(-22.5F, 15.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(2.583F, -2.4841F, -6.7477F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(-5.9885F, -12.5912F, -5.4786F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(-5.9885F, -12.5912F, -5.4786F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.4F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.7F, -0.9F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.7F, 0.1F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(-0.07F, -0.77F, -5.36F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.posVec(-0.07F, -0.77F, -6.36F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(0.73F, -0.27F, -2.36F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.4F, 0.1F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.4F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.4F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(27.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 2.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.degreeVec(27.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.posVec(0.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, -0.08F, -4.34F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.25F, KeyframeAnimations.posVec(0.0F, 0.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition ATTACK_MELEE = AnimationDefinition.Builder.withLength(2.0F) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-7.3242F, -1.6189F, -12.3964F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(-11.7713F, 2.4768F, 9.8481F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(25.9189F, -19.2737F, -3.3502F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, -0.2F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, -0.5F, 5.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(1.3F, -1.7F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(25.9189F, -19.2737F, -3.3502F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.25F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.8333F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-94.7788F, 50.9942F, 18.6447F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(-148.0184F, 7.0947F, -6.5709F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(-72.8729F, -20.1897F, -8.1726F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-31.4946F, -15.6896F, 2.4638F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(-0.6F, 6.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(2.8F, 0.9F, -13.6F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.46F, 0.24F, -7.22F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-94.7788F, -50.9942F, -18.6447F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.degreeVec(-148.0184F, -7.0947F, 6.5709F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(-88.8577F, -6.2014F, 0.3109F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-31.4946F, 15.6896F, -2.4638F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.posVec(0.6F, 6.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(-2.8F, 0.9F, -13.6F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(-0.46F, 0.24F, -7.22F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(7.5606F, -12.4879F, -0.554F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(-1.0F, 0.5F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(1.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.625F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.degreeVec(15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, 1.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.scaleVec(1.0F, 1.17F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.17F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition ATTACK_RANGED = AnimationDefinition.Builder.withLength(1.5F) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.degreeVec(-2.4149F, -0.6469F, -14.9864F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, -0.5F, 5.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -1.5F, 7.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, -0.8F, -4.5F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, -1.1F, -6.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.scaleVec(1.1F, 1.1F, 1.6F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.25F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.7F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -0.4F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, -0.4F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, -0.4F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.9F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.125F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4167F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 1.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 1.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4167F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 1.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 1.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition SPAWN = AnimationDefinition.Builder.withLength(3.0F) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.8333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(23.48F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.4583F, KeyframeAnimations.degreeVec(53.6164F, -12.1731F, 8.8315F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, -33.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, -26.11F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -26.11F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.125F, KeyframeAnimations.posVec(0.0F, -22.56F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.4583F, KeyframeAnimations.posVec(0.0F, -16.85F, -7.49F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.7083F, KeyframeAnimations.posVec(0.0F, -8.31F, -5.9F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0439F, 1.9439F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.125F, KeyframeAnimations.degreeVec(35.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5417F, KeyframeAnimations.degreeVec(58.33F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -33.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(177.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5417F, KeyframeAnimations.degreeVec(177.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.degreeVec(187.6F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.degreeVec(237.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(273.96F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.7083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(360.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -29.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5417F, KeyframeAnimations.posVec(0.0F, -29.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, -20.54F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, -23.95F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, -17.48F, -8.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, -16.48F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -14.89F, -6.21F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(175.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.degreeVec(187.6F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.degreeVec(175.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.degreeVec(273.96F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.3333F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.7083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(360.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -28.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, -20.54F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, -23.95F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, -17.66F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, -16.48F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -14.89F, -6.21F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.2F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.8994F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.375F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(67.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(-0.6F, -6.07F, 10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.8333F, KeyframeAnimations.degreeVec(-8.65F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, -8.07F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.8333F, KeyframeAnimations.posVec(0.0F, -1.9F, 0.65F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), + new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); + + public static final AnimationDefinition DEATH = AnimationDefinition.Builder.withLength(3.5F) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-45.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4583F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.8333F, KeyframeAnimations.degreeVec(32.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.degreeVec(50.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(87.5806F, -17.5747F, 86.2935F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(87.5806F, -17.5747F, 86.2935F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.degreeVec(87.6726F, -7.5785F, 85.8662F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, -1.4F, 14.6F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.4583F, KeyframeAnimations.posVec(0.0F, 0.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -3.38F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -7.6F, -16.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -12.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -9.6F, -17.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(5.0F, -22.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(5.0F, -22.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.posVec(5.0F, -22.6F, -20.8F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(84.0561F, -0.2367F, 85.4425F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(84.0561F, -0.2367F, 85.4425F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.degreeVec(84.06F, -0.24F, 85.44F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -5.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -6.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -5.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(5.0F, -12.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(5.0F, -12.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.4F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.4F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2083F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.375F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.scaleVec(1.5F, 1.2F, 2.5F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-75.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(-82.2323F, -63.8539F, 36.0731F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(-102.5537F, -63.4286F, 58.6946F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(-87.5645F, 9.24F, 7.4298F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-15.06F, 9.24F, 7.43F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(11.7941F, -20.0478F, -59.8298F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(11.7941F, -20.0478F, -59.8298F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(24.3737F, -0.6846F, 59.9014F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(24.3737F, -0.6846F, 59.9014F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.degreeVec(23.7249F, -5.7956F, 71.3309F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(3.0F, 2.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.posVec(3.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(-0.6F, 2.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(-0.4F, -5.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(2.6F, -10.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(2.6F, -10.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(8.6F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(8.6F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.posVec(8.6F, -5.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-75.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.875F, KeyframeAnimations.degreeVec(-73.5297F, -24.0929F, -6.8817F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(-74.9999F, 0.0029F, 0.0016F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(-1.1069F, -12.4517F, 95.1208F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(-1.1069F, -12.4517F, 95.1208F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.7083F, KeyframeAnimations.degreeVec(-5.3548F, -11.3099F, 115.5295F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, 2.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.2F, -4.0F, -16.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.2F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.2F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(-3.8F, -20.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(-3.8F, -20.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.7083F, KeyframeAnimations.posVec(-5.8F, -22.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.625F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(51.8665F, 26.5358F, 70.1781F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(45.0776F, 6.3545F, 46.8673F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.1F, 4.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.1F, 6.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 1.1F, 6.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.7F, 1.36F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.1F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -2.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(4.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(4.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.posVec(4.0F, -1.9F, 0.2F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.scaleVec(1.0F, 1.2F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.scaleVec(1.0F, 1.2F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, + new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.degreeVec(42.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.degreeVec(90.0F, 5.0F, 90.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.degreeVec(90.0F, 5.0F, 90.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, + new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -3.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -4.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -3.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.9167F, KeyframeAnimations.posVec(4.0F, -3.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(2.2917F, KeyframeAnimations.posVec(4.0F, -3.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(3.5F, KeyframeAnimations.posVec(4.0F, -3.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM) + )) + .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, + new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(0.125F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), + new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) + )) + .build(); +} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimations.java b/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimations.java deleted file mode 100644 index f84855d39..000000000 --- a/src/main/java/com/idark/valoria/client/model/animations/ScourgeAnimations.java +++ /dev/null @@ -1,718 +0,0 @@ -package com.idark.valoria.client.model.animations; - -import net.minecraft.client.animation.*; - -public class ScourgeAnimations{ - public static final AnimationDefinition IDLE = AnimationDefinition.Builder.withLength(3.0F).looping() - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.25F, KeyframeAnimations.degreeVec(24.0995F, -11.9795F, -3.6599F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -1.9F, -4.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition WALK = AnimationDefinition.Builder.withLength(3.0F).looping() - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(40.9808F, -11.4356F, -9.7724F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(40.9808F, 11.4356F, 9.7724F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(40.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -1.9F, -4.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, -1.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(1.0F, -2.8F, -7.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, -2.3F, -4.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.posVec(-0.3F, -1.9F, -6.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(-1.0F, -3.1F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -1.9F, -5.1F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, -1.9F, -4.1F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(10.6276F, -19.6835F, -3.6164F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(20.63F, -19.68F, -3.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.degreeVec(10.6276F, 19.6835F, 3.6164F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(20.63F, 19.68F, 3.62F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.6667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(-12.4145F, -1.3994F, -2.3237F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-6.5642F, -12.7913F, 1.5723F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.degreeVec(-2.6992F, 22.6976F, 3.9674F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-15.2F, 22.7F, 3.97F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(-14.07F, 5.7586F, 8.515F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(-2.4905F, 0.2178F, 4.9953F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, -0.3F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.3F, -1.0F, -6.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(-0.4F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.posVec(0.0F, 0.2F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(-0.5F, -0.6F, -2.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(-0.7F, -0.7F, -2.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(-5.9885F, -12.5912F, -5.4786F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-3.3214F, -13.7962F, -4.5249F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.degreeVec(0.0F, 15.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(-22.5F, 15.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(2.583F, -2.4841F, -6.7477F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, -7.5F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.4F, 0.1F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.4F, 0.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.7F, -0.9F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.7F, 0.1F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.posVec(-0.07F, -0.77F, -5.36F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(-0.07F, -0.77F, -6.36F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.73F, -0.27F, -2.36F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.4F, 0.1F, -2.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.66F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.75F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.66F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition ATTACK_MELEE = AnimationDefinition.Builder.withLength(2.0F) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-7.3242F, -1.6189F, -12.3964F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-11.7713F, 2.4768F, 9.8481F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(25.9189F, -19.2737F, -3.3502F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, -0.2F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, -0.5F, 5.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(1.3F, -1.7F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(25.9189F, -19.2737F, -3.3502F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, 0.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.25F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-94.7788F, 50.9942F, 18.6447F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-126.3602F, 38.8447F, -24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(-148.0184F, 7.0947F, -6.5709F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(-72.8729F, -20.1897F, -8.1726F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-31.4946F, -15.6896F, 2.4638F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(-2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(-0.6F, 6.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(2.8F, 0.9F, -13.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.46F, 0.24F, -7.22F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-94.7788F, -50.9942F, -18.6447F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-126.3602F, -38.8447F, 24.7851F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.degreeVec(-148.0184F, -7.0947F, 6.5709F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(-88.8577F, -6.2014F, 0.3109F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(-31.4946F, 15.6896F, -2.4638F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(2.0F, 3.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.posVec(0.6F, 6.0F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(-2.8F, 0.9F, -13.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(-0.46F, 0.24F, -7.22F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(7.5606F, -12.4879F, -0.554F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(-1.0F, 0.5F, -1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(1.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.625F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.degreeVec(15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, 1.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.scaleVec(1.0F, 1.17F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.scaleVec(1.0F, 1.17F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition ATTACK_RANGED = AnimationDefinition.Builder.withLength(1.5F) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.degreeVec(-2.4149F, -0.6469F, -14.9864F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(10.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, -0.5F, 5.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -1.5F, 7.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, -0.8F, -4.5F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, -1.1F, -6.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.scaleVec(1.1F, 1.1F, 1.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.25F, KeyframeAnimations.degreeVec(-22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.25F, KeyframeAnimations.posVec(0.0F, 0.0F, 1.7F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, -0.4F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, -0.4F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, -0.4F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.9F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.125F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4167F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 1.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 1.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4167F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.degreeVec(-147.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4167F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7917F, KeyframeAnimations.posVec(0.0F, 5.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 1.0F, -3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.posVec(0.0F, 1.0F, -4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition SPAWN = AnimationDefinition.Builder.withLength(3.0F) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.degreeVec(-20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(23.48F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.degreeVec(53.6164F, -12.1731F, 8.8315F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, -33.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0417F, KeyframeAnimations.posVec(0.0F, -26.11F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -26.11F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.posVec(0.0F, -22.56F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.4583F, KeyframeAnimations.posVec(0.0F, -16.85F, -7.49F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(0.0F, -8.31F, -5.9F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(0.749F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(0.75F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0439F, 1.9439F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.125F, KeyframeAnimations.degreeVec(35.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.degreeVec(58.33F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -33.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(177.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5417F, KeyframeAnimations.degreeVec(177.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.degreeVec(187.6F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.degreeVec(237.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.degreeVec(273.96F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(360.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -29.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5417F, KeyframeAnimations.posVec(0.0F, -29.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, -20.54F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2083F, KeyframeAnimations.posVec(0.0F, -23.95F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, -17.48F, -8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, -16.48F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -14.89F, -6.21F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(175.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.degreeVec(187.6F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.degreeVec(164.54F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5F, KeyframeAnimations.degreeVec(195.36F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.degreeVec(175.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.degreeVec(273.96F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.3333F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(335.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(360.49F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, -28.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.1667F, KeyframeAnimations.posVec(0.0F, -20.54F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.6667F, KeyframeAnimations.posVec(0.0F, -23.95F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -21.38F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.posVec(0.0F, -17.66F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.posVec(0.0F, -16.48F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5417F, KeyframeAnimations.posVec(0.0F, -14.89F, -6.21F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.2F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.8994F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.375F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.6F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.degreeVec(67.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.posVec(-0.6F, -6.07F, 10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(1.875F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.8333F, KeyframeAnimations.degreeVec(-8.65F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(1.875F, KeyframeAnimations.posVec(0.0F, -27.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.5F, KeyframeAnimations.posVec(0.0F, -8.07F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.8333F, KeyframeAnimations.posVec(0.0F, -1.9F, 0.65F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.874F, KeyframeAnimations.scaleVec(0.0F, 0.0F, 1.0F), AnimationChannel.Interpolations.LINEAR), - new Keyframe(1.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(3.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); - - public static final AnimationDefinition DEATH = AnimationDefinition.Builder.withLength(3.0F) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-45.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4583F, KeyframeAnimations.degreeVec(-15.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(32.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.degreeVec(50.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(62.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(87.5806F, -17.5747F, 86.2935F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(87.5806F, -17.5747F, 86.2935F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(87.6726F, -7.5785F, 85.8662F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, -1.4F, 14.6F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.4583F, KeyframeAnimations.posVec(0.0F, 0.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.posVec(0.0F, -3.38F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -7.6F, -16.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -12.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -9.6F, -17.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(5.0F, -22.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(5.0F, -22.6F, -19.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(5.0F, -22.6F, -20.8F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("head", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(37.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(84.0561F, -0.2367F, 85.4425F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(84.0561F, -0.2367F, 85.4425F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(84.06F, -0.24F, 85.44F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.0F, -2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -5.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -6.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -5.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(5.0F, -12.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(5.0F, -12.0F, -10.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("body", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.875F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0833F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.2917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.4F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.7917F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.0417F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2083F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.375F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.scaleVec(1.5F, 1.2F, 2.5F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-75.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(-82.2323F, -63.8539F, 36.0731F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.degreeVec(-102.5537F, -63.4286F, 58.6946F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.degreeVec(-49.0057F, 1.2158F, 34.7287F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(-87.5645F, 9.24F, 7.4298F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(-15.06F, 9.24F, 7.43F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(11.7941F, -20.0478F, -59.8298F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(11.7941F, -20.0478F, -59.8298F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(24.3737F, -0.6846F, 59.9014F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(24.3737F, -0.6846F, 59.9014F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(23.7249F, -5.7956F, 71.3309F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(3.0F, 2.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.posVec(3.0F, 2.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.8333F, KeyframeAnimations.posVec(-0.78F, 2.0F, -2.34F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(-0.6F, 2.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(-0.4F, -5.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(2.6F, -10.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(2.6F, -10.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(8.6F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(8.6F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(8.6F, -5.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-75.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.875F, KeyframeAnimations.degreeVec(-73.5297F, -24.0929F, -6.8817F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(-74.9999F, 0.0029F, 0.0016F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(12.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(-1.1069F, -12.4517F, 95.1208F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(-1.1069F, -12.4517F, 95.1208F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.degreeVec(-5.3548F, -11.3099F, 115.5295F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.0F, 8.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 2.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.9583F, KeyframeAnimations.posVec(0.0F, 2.0F, -5.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.2F, -4.0F, -16.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.2F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.2F, -8.0F, -13.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(-3.8F, -20.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(-3.8F, -20.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(-5.8F, -22.0F, -14.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_arm", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.0833F, KeyframeAnimations.scaleVec(1.0F, 1.7F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.1667F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(-25.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.625F, KeyframeAnimations.degreeVec(30.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.degreeVec(-2.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(52.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(45.0776F, 6.3545F, 46.8673F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(45.0776F, 6.3545F, 46.8673F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 1.1F, 4.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 1.1F, 6.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.625F, KeyframeAnimations.posVec(0.0F, 1.1F, 6.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.7F, 1.36F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 0.1F, 1.2F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -2.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(4.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(4.0F, -1.9F, -1.8F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(4.0F, -1.9F, 0.2F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("right_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.scaleVec(1.0F, 1.2F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.scaleVec(1.0F, 1.2F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.ROTATION, - new Keyframe(0.0F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.degreeVec(22.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.degreeVec(-7.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.degreeVec(20.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.degreeVec(42.5F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.degreeVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.degreeVec(90.0F, 5.0F, 90.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.degreeVec(90.0F, 5.0F, 90.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.POSITION, - new Keyframe(0.0F, KeyframeAnimations.posVec(0.0F, 0.0F, 0.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.posVec(0.0F, 0.0F, 7.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.5833F, KeyframeAnimations.posVec(0.0F, 0.0F, 3.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.7083F, KeyframeAnimations.posVec(0.0F, 0.0F, 4.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.posVec(0.0F, 2.0F, 2.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.25F, KeyframeAnimations.posVec(0.0F, -3.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.4167F, KeyframeAnimations.posVec(0.0F, -4.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.5833F, KeyframeAnimations.posVec(0.0F, -3.0F, -9.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.9167F, KeyframeAnimations.posVec(4.0F, -3.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.2917F, KeyframeAnimations.posVec(4.0F, -3.0F, 1.3F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(2.7083F, KeyframeAnimations.posVec(4.0F, -3.0F, 3.3F), AnimationChannel.Interpolations.CATMULLROM) - )) - .addAnimation("left_leg", new AnimationChannel(AnimationChannel.Targets.SCALE, - new Keyframe(0.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(0.125F, KeyframeAnimations.scaleVec(1.0F, 1.1F, 1.0F), AnimationChannel.Interpolations.CATMULLROM), - new Keyframe(1.0F, KeyframeAnimations.scaleVec(1.0F, 1.0F, 1.0F), AnimationChannel.Interpolations.CATMULLROM) - )) - .build(); -} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/entity/DevilModel.java b/src/main/java/com/idark/valoria/client/model/entity/DevilModel.java index 1121196e4..ff6dbdb94 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/DevilModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/DevilModel.java @@ -28,8 +28,8 @@ public DevilModel(ModelPart root){ this.rightArm = root.getChild("right_arm"); this.leftLeg = root.getChild("left_leg"); this.rightLeg = root.getChild("right_leg"); - this.leftWing = root.getChild("left_wing"); - this.rightWing = root.getChild("right_wing"); + this.leftWing = body.getChild("left_wing"); + this.rightWing = body.getChild("right_wing"); } public static LayerDefinition createBodyLayer(){ @@ -37,42 +37,42 @@ public static LayerDefinition createBodyLayer(){ PartDefinition partdefinition = meshdefinition.getRoot(); PartDefinition Head = partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -4.25F, -3.25F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(60, 27).addBox(-3.0F, 3.75F, -3.25F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(0, 16).addBox(-4.0F, -4.25F, -3.25F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.25F)) - .texOffs(0, 43).addBox(-7.0F, -9.25F, 0.75F, 14.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -3.75F, -0.75F)); + .texOffs(60, 27).addBox(-3.0F, 3.75F, -3.25F, 6.0F, 5.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 16).addBox(-4.0F, -4.25F, -3.25F, 8.0F, 8.0F, 8.0F, new CubeDeformation(0.25F)) + .texOffs(0, 43).addBox(-7.0F, -9.25F, 0.75F, 14.0F, 7.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -3.75F, -0.75F)); PartDefinition Left_ear = partdefinition.addOrReplaceChild("left_ear", CubeListBuilder.create().texOffs(16, 50).addBox(-1.5F, -0.5F, 0.0F, 3.0F, 3.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(5.5F, -4.5F, 0.0F)); PartDefinition Right_ear = partdefinition.addOrReplaceChild("right_ear", CubeListBuilder.create().texOffs(22, 50).addBox(-1.5F, -0.5F, 0.0F, 3.0F, 3.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offset(-5.5F, -4.5F, 0.0F)); PartDefinition Body = partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(32, 11).addBox(-4.0F, -6.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(36, 27).addBox(-4.0F, -6.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 6.0F, 0.0F)); + .texOffs(36, 27).addBox(-4.0F, -6.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 6.0F, 0.0F)); + + PartDefinition Left_wing = Body.addOrReplaceChild("left_wing", CubeListBuilder.create().texOffs(0, 32).addBox(-9.0F, -5.5F, 0.0F, 18.0F, 11.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.9657F, -1.5F, 2.7844F, 0.0F, -0.0873F, 0.0F)); + + PartDefinition Right_wing = Body.addOrReplaceChild("right_wing", CubeListBuilder.create().texOffs(32, 0).addBox(-9.0F, -5.5F, 0.0F, 18.0F, 11.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-8.8786F, -1.5F, 2.7806F, 0.0F, 0.0873F, 0.0F)); PartDefinition Left_arm = partdefinition.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(16, 59).addBox(0.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(30, 59).addBox(0.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(4.0F, 1.0F, 0.0F)); + .texOffs(30, 59).addBox(0.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(4.0F, 1.0F, 0.0F)); PartDefinition Right_arm = partdefinition.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(44, 59).addBox(-3.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(58, 59).addBox(-3.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(-4.0F, 1.0F, 0.0F)); + .texOffs(58, 59).addBox(-3.0F, -1.0F, -2.0F, 3.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(-4.0F, 1.0F, 0.0F)); PartDefinition Left_leg = partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(28, 43).addBox(-2.0F, 0.0132F, 0.0521F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(44, 43).addBox(-2.0F, -0.3618F, 0.0521F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(2.0F, 12.0F, -2.0F)); + .texOffs(44, 43).addBox(-2.0F, -0.3618F, 0.0521F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(2.0F, 12.0F, -2.0F)); PartDefinition Right_leg = partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(0, 50).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(56, 11).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(-2.0F, 12.0F, 0.0F)); - - PartDefinition Left_wing = partdefinition.addOrReplaceChild("left_wing", CubeListBuilder.create().texOffs(0, 32).addBox(-8F, -5.5F, 2F, 18.0F, 11.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.9658F, 4.5F, 2.7844F, 0.0F, -0.0873F, 0.0F)); + .texOffs(56, 11).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(-2.0F, 12.0F, 0.0F)); - PartDefinition Right_wing = partdefinition.addOrReplaceChild("right_wing", CubeListBuilder.create().texOffs(32, 0).addBox(-10F, -5.5F, 2F, 18.0F, 11.0F, 0.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-8.8786F, 4.5F, 2.7806F, 0.0F, 0.0873F, 0.0F)); return LayerDefinition.create(meshdefinition, 128, 128); } public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch){ super.setupAnim(pEntity, pLimbSwing, pLimbSwingAmount, pAgeInTicks, pNetHeadYaw, pHeadPitch); this.animateWalk(pLimbSwing, pLimbSwingAmount); - this.animateWalk(DevilAnimation.WALK, pLimbSwing, pLimbSwingAmount, pEntity.getSpeed(), pAgeInTicks); + this.animateWalk(DevilAnimation.WALK, pLimbSwing, pLimbSwingAmount, 4, 8); this.animateIdle(pEntity.idleAnimationState, DevilAnimation.IDLE, pLimbSwingAmount, pAgeInTicks, 1); this.animate(pEntity.throwAnimationState, DevilAnimation.ATTACK_RANGE, pAgeInTicks); - this.animate(pEntity.magicAnimationState, DevilAnimation.ATTACK_MAGIC, pAgeInTicks); if(this.attackTime > 0){ AnimationUtils.swingWeaponDown(rightArm, leftArm, pEntity, this.attackTime * 0.75f, pAgeInTicks); } @@ -81,10 +81,8 @@ public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float private void animateWalk(float pLimbSwing, float pLimbSwingAmount){ float f = Math.min(0.5F, 3.0F * pLimbSwingAmount); float f1 = pLimbSwing * 0.8662F; - this.leftWing.yRot = -0.45f; - this.rightWing.yRot = 0.45f; - this.leftWing.yRot -= (0.35F * Mth.cos(f1 + (float)Math.PI) * f); - this.rightWing.yRot += (0.35F * Mth.cos(f1 + (float)Math.PI) * f); + this.leftWing.yRot -= (0.25F * Mth.cos(f1 + (float)Math.PI) * f); + this.rightWing.yRot += (0.25F * Mth.cos(f1 + (float)Math.PI) * f); this.resetArmPoses(); } diff --git a/src/main/java/com/idark/valoria/client/model/entity/DryadorModel.java b/src/main/java/com/idark/valoria/client/model/entity/DryadorModel.java index 494f01c3c..315a0e65d 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/DryadorModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/DryadorModel.java @@ -55,11 +55,8 @@ public static LayerDefinition createBodyLayer() { @Override public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch){ super.setupAnim(pEntity, pLimbSwing, pLimbSwingAmount, pAgeInTicks, pNetHeadYaw, pHeadPitch); - if(!pEntity.isBusy()){ - this.animateWalk(DryadorAnimations.WALK, pLimbSwing, pLimbSwingAmount, 6, 8); - this.animateIdle(pEntity.idleAnimationState, DryadorAnimations.IDLE, pLimbSwingAmount, pAgeInTicks, 1); - } - + this.animateWalk(DryadorAnimations.WALK, pLimbSwing, pLimbSwingAmount, 6, 8); + this.animateIdle(pEntity.idleAnimationState, DryadorAnimations.IDLE, pLimbSwingAmount, pAgeInTicks, 1); this.animate(pEntity.phaseTransitionAnimationState, DryadorAnimations.PHASE_TRANSITION, pAgeInTicks); if(!pEntity.phaseTransitionAnimationState.isPlaying){ this.animate(pEntity.summonAnimationState, DryadorAnimations.SUMMON, pAgeInTicks); diff --git a/src/main/java/com/idark/valoria/client/model/entity/EntModel.java b/src/main/java/com/idark/valoria/client/model/entity/EntModel.java index 6e0b387c8..e5ac69857 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/EntModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/EntModel.java @@ -43,9 +43,10 @@ public static LayerDefinition createBodyLayer() { @Override public void setupAnim(Ent pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float netHeadYaw, float headPitch) { this.root().getAllParts().forEach(ModelPart::resetPose); - this.animateWalk(EntAnimation.WALK, pLimbSwing, pLimbSwingAmount, 3, 1); + this.animateWalk(EntAnimation.WALK, pLimbSwing, pLimbSwingAmount, 8, 2); this.animateIdle(pEntity.idleAnimationState, EntAnimation.IDLE, pLimbSwingAmount, pAgeInTicks, 1); this.animate(pEntity.attackAnimationState, EntAnimation.ATTACK, pAgeInTicks); + this.animate(pEntity.attack2AnimationState, EntAnimation.ATTACK_2, pAgeInTicks); } @Override diff --git a/src/main/java/com/idark/valoria/client/model/entity/KingCrabModel.java b/src/main/java/com/idark/valoria/client/model/entity/KingCrabModel.java index cc87dbc3d..4cadc35f6 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/KingCrabModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/KingCrabModel.java @@ -117,7 +117,7 @@ public ModelPart getHead(){ @Override public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch){ this.root().getAllParts().forEach(ModelPart::resetPose); - this.animateWalk(KingCrabAnimations.WALK, pLimbSwing, pLimbSwingAmount, 4, 2); + this.animateWalk(KingCrabAnimations.WALK, pLimbSwing, pLimbSwingAmount, 4, 8); this.animateIdle(pEntity.idleAnimationState, KingCrabAnimations.IDLE, pLimbSwingAmount, pAgeInTicks, 1); this.animate(pEntity.hideAnimationState, KingCrabAnimations.HIDE, pAgeInTicks, 1); this.animate(pEntity.revealAnimationState, KingCrabAnimations.REVEAL, pAgeInTicks, 1); diff --git a/src/main/java/com/idark/valoria/client/model/entity/ScavengerModel.java b/src/main/java/com/idark/valoria/client/model/entity/ScavengerModel.java index 3ad94ce02..7dee802d4 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/ScavengerModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/ScavengerModel.java @@ -8,9 +8,11 @@ public class ScavengerModel extends AbstractHierarchicalModel{ private final ModelPart root; + private final ModelPart head; public ScavengerModel(ModelPart root) { this.root = root; + this.head = root.getChild("head"); } public static LayerDefinition createBodyLayer() { @@ -58,14 +60,14 @@ public static LayerDefinition createBodyLayer() { @Override public void setupAnim(Scavenger pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float netHeadYaw, float headPitch) { this.root().getAllParts().forEach(ModelPart::resetPose); - this.animateWalk(ScavengerAnimations.WALK, pLimbSwing, pLimbSwingAmount, 8, 1); + this.animateWalk(ScavengerAnimations.WALK, pLimbSwing, pLimbSwingAmount, 2, 3); this.animateIdle(pEntity.idleAnimationState, ScavengerAnimations.IDLE_DEFAULT, pLimbSwingAmount, pAgeInTicks, 1); this.animateIdle(pEntity.idleDiggingAnimationState, ScavengerAnimations.IDLE_DIG, pLimbSwingAmount, pAgeInTicks, 1); this.animateIdle(pEntity.idleEatingAnimationState, ScavengerAnimations.IDLE_EATING, pLimbSwingAmount, pAgeInTicks, 1); this.animate(pEntity.angryAnimationState, ScavengerAnimations.AGRESSIVE, pAgeInTicks, 1); this.animate(pEntity.attackAnimationState, ScavengerAnimations.ATTACK, pAgeInTicks, 1); - } + } @Override public ModelPart root(){ @@ -74,6 +76,6 @@ public ModelPart root(){ @Override public ModelPart getHead(){ - return null; + return head; } } \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/model/entity/ScourgeModel.java b/src/main/java/com/idark/valoria/client/model/entity/ScourgeModel.java index b31a5ca65..977ef0eb3 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/ScourgeModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/ScourgeModel.java @@ -4,7 +4,6 @@ import com.idark.valoria.registries.entity.living.*; import net.minecraft.client.model.geom.*; import net.minecraft.client.model.geom.builders.*; -import net.minecraft.util.*; public class ScourgeModel extends AbstractHierarchicalModel{ private final ModelPart root; @@ -63,33 +62,13 @@ public ModelPart root(){ return this.root; } - @Override public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch){ super.setupAnim(pEntity, pLimbSwing, pLimbSwingAmount, pAgeInTicks, pNetHeadYaw, pHeadPitch); - this.animateWalk(ScourgeAnimations.WALK, pLimbSwing, pLimbSwingAmount, pEntity.getSpeed(), pAgeInTicks); - this.animateIdle(pEntity.idleAnimationState, ScourgeAnimations.IDLE, pLimbSwingAmount, pAgeInTicks, 1); - this.animate(pEntity.attackAnimationState, ScourgeAnimations.ATTACK_MELEE, pAgeInTicks); - this.animate(pEntity.diggingAnimationState, ScourgeAnimations.SPAWN, pAgeInTicks); - this.animate(pEntity.deathAnimationState, ScourgeAnimations.DEATH, pAgeInTicks); - - boolean flag = pEntity.getFallFlyingTicks() > 4; - float f = 1.0F; - if (flag) { - f = (float)pEntity.getDeltaMovement().lengthSqr(); - f /= 0.2F; - f *= f * f; - } - - if (f < 1.0F) { - f = 1.0F; - } - - this.rightLeg.xRot = Mth.cos(pLimbSwing * 0.3262F) * 1F * pLimbSwingAmount / f; - this.leftLeg.xRot = Mth.cos(pLimbSwing * 0.3262F + (float)Math.PI) * 1F * pLimbSwingAmount / f; - this.rightLeg.yRot = 0.00015F; - this.leftLeg.yRot = -0.00015F; - this.rightLeg.zRot = 0.00015F; - this.leftLeg.zRot = -0.00015F; + this.animateWalk(ScourgeAnimation.WALK, pLimbSwing, pLimbSwingAmount, 8, 6); + this.animateIdle(pEntity.idleAnimationState, ScourgeAnimation.IDLE, pLimbSwingAmount, pAgeInTicks, 1); + this.animate(pEntity.attackAnimationState, ScourgeAnimation.ATTACK_MELEE, pAgeInTicks); + this.animate(pEntity.diggingAnimationState, ScourgeAnimation.SPAWN, pAgeInTicks); + this.animate(pEntity.deathAnimationState, ScourgeAnimation.DEATH, pAgeInTicks); } } diff --git a/src/main/java/com/idark/valoria/client/model/entity/TrollModel.java b/src/main/java/com/idark/valoria/client/model/entity/TrollModel.java index 24fcaf456..2155193b4 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/TrollModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/TrollModel.java @@ -95,7 +95,7 @@ public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float this.leftLeg.zRot = -0.07853982F; } - this.animateWalk(GoblinAnimations.WALK, pLimbSwing, pLimbSwingAmount, 2, 6); + this.animateWalk(GoblinAnimations.WALK, pLimbSwing, pLimbSwingAmount, 4, 6); this.animateIdle(pEntity.idleAnimationState, TrollAnimations.IDLE, pLimbSwingAmount, pAgeInTicks, 0.5f); } diff --git a/src/main/java/com/idark/valoria/client/model/entity/WickedScorpionModel.java b/src/main/java/com/idark/valoria/client/model/entity/WickedScorpionModel.java index 00fe386a4..a724f9688 100644 --- a/src/main/java/com/idark/valoria/client/model/entity/WickedScorpionModel.java +++ b/src/main/java/com/idark/valoria/client/model/entity/WickedScorpionModel.java @@ -10,10 +10,13 @@ public class WickedScorpionModel extends AbstractHierarchicalModel { private final ModelPart root; + private final ModelPart head; - public WickedScorpionModel(ModelPart root) { + + public WickedScorpionModel(ModelPart root) { this.root = root; - } + this.head = root.getChild("head"); + } public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); @@ -90,6 +93,6 @@ public ModelPart root(){ @Override public ModelPart getHead(){ - return null; + return this.head; } } \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/render/entity/DryadorRenderer.java b/src/main/java/com/idark/valoria/client/render/entity/DryadorRenderer.java index b827061be..b940753ff 100644 --- a/src/main/java/com/idark/valoria/client/render/entity/DryadorRenderer.java +++ b/src/main/java/com/idark/valoria/client/render/entity/DryadorRenderer.java @@ -12,7 +12,7 @@ public class DryadorRenderer extends MobRenderer(DryadorModel.createBodyLayer().bakeRoot()), 0.4F); + super(context, new DryadorModel<>(DryadorModel.createBodyLayer().bakeRoot()), 0.75F); } @Override diff --git a/src/main/java/com/idark/valoria/client/render/entity/ScavengerRenderer.java b/src/main/java/com/idark/valoria/client/render/entity/ScavengerRenderer.java index f0195557e..2a901f2d0 100644 --- a/src/main/java/com/idark/valoria/client/render/entity/ScavengerRenderer.java +++ b/src/main/java/com/idark/valoria/client/render/entity/ScavengerRenderer.java @@ -12,7 +12,7 @@ public class ScavengerRenderer extends MobRenderer(ScavengerModel.createBodyLayer().bakeRoot()), 0.4F); + super(context, new ScavengerModel<>(ScavengerModel.createBodyLayer().bakeRoot()), 0.75f); } @Override diff --git a/src/main/java/com/idark/valoria/client/render/entity/ScourgeRenderer.java b/src/main/java/com/idark/valoria/client/render/entity/ScourgeRenderer.java index 68f23f93f..96e5b9173 100644 --- a/src/main/java/com/idark/valoria/client/render/entity/ScourgeRenderer.java +++ b/src/main/java/com/idark/valoria/client/render/entity/ScourgeRenderer.java @@ -14,7 +14,7 @@ public class ScourgeRenderer extends MobRenderer(ScourgeModel.createBodyLayer().bakeRoot()), 0.75F); + super(context, new ScourgeModel<>(ScourgeModel.createBodyLayer().bakeRoot()), 0.35F); } @Override diff --git a/src/main/java/com/idark/valoria/client/render/entity/TrollRenderer.java b/src/main/java/com/idark/valoria/client/render/entity/TrollRenderer.java index cb16e5b5f..9d4167c82 100644 --- a/src/main/java/com/idark/valoria/client/render/entity/TrollRenderer.java +++ b/src/main/java/com/idark/valoria/client/render/entity/TrollRenderer.java @@ -18,7 +18,7 @@ public class TrollRenderer extends MobRenderer>{ private final boolean corrupted; public TrollRenderer(EntityRendererProvider.Context context, boolean corrupted){ - super(context, new TrollModel<>(TrollModel.createBodyLayer().bakeRoot()), 0.8F); + super(context, new TrollModel<>(TrollModel.createBodyLayer().bakeRoot()), 0.35F); this.corrupted = corrupted; this.texture = new ResourceLocation(Valoria.ID, corrupted ? "textures/entity/corrupted_troll.png" : "textures/entity/troll.png"); this.addLayer(new LuminescentLayer.Builder<>(this) diff --git a/src/main/java/com/idark/valoria/client/render/entity/WickedScorpionRenderer.java b/src/main/java/com/idark/valoria/client/render/entity/WickedScorpionRenderer.java index 9619feca0..aa484b006 100644 --- a/src/main/java/com/idark/valoria/client/render/entity/WickedScorpionRenderer.java +++ b/src/main/java/com/idark/valoria/client/render/entity/WickedScorpionRenderer.java @@ -13,7 +13,7 @@ public class WickedScorpionRenderer extends MobRenderer(WickedScorpionModel.createBodyLayer().bakeRoot()), 0.4F); + super(context, new WickedScorpionModel<>(WickedScorpionModel.createBodyLayer().bakeRoot()), 0.75F); this.addLayer(new LuminescentLayer.Builder<>(this) .setTexture(new ResourceLocation(Valoria.ID, "textures/entity/wicked_scorpion_eyes.png")) .build()); diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/BookGui.java b/src/main/java/com/idark/valoria/client/ui/screen/book/BookGui.java index 381787367..46bfbe54e 100644 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/BookGui.java +++ b/src/main/java/com/idark/valoria/client/ui/screen/book/BookGui.java @@ -2,7 +2,6 @@ import com.idark.valoria.*; import com.idark.valoria.client.ui.screen.book.codex.*; -import com.idark.valoria.client.ui.screen.book.codex.checklist.*; import com.mojang.blaze3d.systems.*; import net.minecraft.client.*; import net.minecraft.client.gui.*; @@ -55,7 +54,6 @@ public boolean mouseScrolled(double mouseX, double mouseY, double scroll) { // scroll back if(scroll < 0){ - if(shouldOpenChecklist()) return super.mouseScrolled(mouseX, mouseY, scroll); if(currentPage <= 0){ this.onClose(); return true; // prevent crash @@ -69,15 +67,6 @@ public boolean mouseScrolled(double mouseX, double mouseY, double scroll) { return super.mouseScrolled(mouseX, mouseY, scroll); } - private boolean shouldOpenChecklist(){ - if(currentChapter.getPage(currentPage) instanceof BossPage){ - changeChapter(CodexEntries.BOSS_CHECKLIST); // opens back checklist, QOL - return true; - } - - return false; - } - @Override public void onClose(){ if(openedFromInv) { @@ -158,7 +147,6 @@ public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers){ } if(pKeyCode == GLFW.GLFW_KEY_PAGE_DOWN || pKeyCode == GLFW.GLFW_KEY_LEFT){ - if(shouldOpenChecklist()) return super.keyPressed(pKeyCode, pScanCode, pModifiers); if(currentPage > 0){ backPage(mc); }else{ @@ -191,7 +179,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button){ } if(isHover(mouseX, mouseY, backX, y, 21, 22)){ - if(shouldOpenChecklist()) return false; if(currentPage > 0){ backPage(mc); }else{ diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/Codex.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/Codex.java index ef29f0688..c1cd16284 100644 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/Codex.java +++ b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/Codex.java @@ -7,12 +7,10 @@ import com.mojang.blaze3d.systems.*; import net.minecraft.client.*; import net.minecraft.client.gui.*; -import net.minecraft.network.chat.*; import net.minecraft.resources.*; import net.minecraft.sounds.*; import net.minecraft.util.*; import net.minecraft.world.entity.player.*; -import net.minecraft.world.item.*; import net.minecraftforge.api.distmarker.*; import net.minecraftforge.common.*; import org.lwjgl.glfw.*; @@ -115,30 +113,6 @@ public void render(GuiGraphics gui, int mouseX, int mouseY){ gui.blit(FRAME, (int)(cx() - 5), guiTop() + frameHeight - 10, 0, 192, 10, 10, 512, 512); } pop(); - - push(); - renderBossChecklist(gui, mouseX, mouseY); - pop(); - } - - public void renderBossChecklist(GuiGraphics gui, int mouseX, int mouseY){ - long currentTime = System.currentTimeMillis(); - float deltaTime = (currentTime - lastTime) / 100.0F; - lastTime = currentTime; - - boolean isHovered = isHover(mouseX, mouseY, guiLeft() - 25, guiTop() + 20, 35, 39); - float targetProgress = isHovered ? 1.0F : 0.0F; - hoverProgress = Mth.lerp(0.5F * deltaTime, hoverProgress, targetProgress); - float x = Mth.lerp(hoverProgress, 0, -20f); - - layer(100); - move(x, 0, 0); - gui.blit(FRAME, guiLeft() - 10, guiTop() + 20, 288, 0, 35, 39, 512, 512); - gui.renderFakeItem(Items.KNOWLEDGE_BOOK.getDefaultInstance(), guiLeft() + 2, guiTop() + 30); - if(isHovered){ - layer(100); - gui.renderTooltip(Minecraft.getInstance().font, Component.translatable("tooltip.valoria.boss_checklist"), mouseX, mouseY - 15); - } } public void drawDebug(double mouseX, double mouseY) { diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntries.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntries.java index db57e3d9d..db5a6c110 100644 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntries.java +++ b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntries.java @@ -4,7 +4,6 @@ import com.idark.valoria.api.events.CodexEvent.*; import com.idark.valoria.api.unlockable.types.*; import com.idark.valoria.client.ui.screen.book.*; -import com.idark.valoria.client.ui.screen.book.codex.checklist.*; import com.idark.valoria.client.ui.screen.book.pages.*; import com.idark.valoria.client.ui.screen.book.unlockable.*; import com.idark.valoria.registries.*; @@ -20,9 +19,9 @@ import javax.annotation.*; import java.util.*; +// todo plans, data driven chapters and pages ? public class CodexEntries{ public static Seq entries = new Seq<>(); - public static Seq bossEntries = new Seq<>(); public static Chapter MAIN_CHAPTER, PAGES_CHAPTER, TREASURES_CHAPTER, MEDICINE_CHAPTER, BOSS_CHECKLIST, PICK, HEAVY_WORKBENCH, STONE_CRUSHER, VALORIA_PORTAL, @@ -53,8 +52,6 @@ public static void initChapters(){ new TextPage("codex.valoria.main"), new TextPage("codex.valoria.main.continuation").hideTitle()); - BOSS_CHECKLIST = new Chapter("codex.valoria.bosses.name", new BossMainPage("codex.valoria.bosses.name", bossEntries)); - PAGES_CHAPTER = new Chapter( "codex.valoria.pages.name", new TextPage("codex.valoria.pages")); diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntry.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntry.java index 6d2ab63e2..58d7e525b 100644 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntry.java +++ b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/CodexEntry.java @@ -2,6 +2,7 @@ import com.idark.valoria.api.unlockable.*; import com.idark.valoria.client.ui.screen.book.*; +import com.idark.valoria.core.config.*; import com.idark.valoria.core.network.*; import com.idark.valoria.core.network.packets.*; import com.mojang.blaze3d.vertex.*; @@ -174,7 +175,7 @@ public boolean isUnlocked(){ if(node.unlockable == null){ return true; }else{ - return (UnlockUtils.isUnlocked(Minecraft.getInstance().player, node.unlockable)); + return !ServerConfig.ENABLE_CODEX_PROGRESSION.get() || (UnlockUtils.isUnlocked(Minecraft.getInstance().player, node.unlockable)); } } } diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntry.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntry.java deleted file mode 100644 index 81d1dbd8c..000000000 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntry.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.idark.valoria.client.ui.screen.book.codex.checklist; - -import net.minecraft.network.chat.*; -import net.minecraft.world.entity.*; -import net.minecraft.world.item.*; - -public class BossEntry{ - public EntityType type; - public Item summonItem; - public Component name; - public Component description; - public String category = "minecraft"; - public boolean isUnlocked = false; - - public BossEntry(EntityType type) { - this.type = type; - } - - public BossEntry(EntityType type, Component name) { - this.type = type; - this.name = name; - } - - public BossEntry(EntityType type, Component name, boolean isUnlocked) { - this.type = type; - this.name = name; - this.isUnlocked = isUnlocked; - } - - public void setUnlocked(boolean unlocked){ - isUnlocked = unlocked; - } - - public String getCategory() { - return category; - } - - public EntityType type() { - return type; - } - - public Component description(EntityType entityType) { - return description != null ? description : Component.translatable(entityType.getDescriptionId() + ".boss_description"); - } - - public Component name(EntityType entityType) { - return name != null ? name : entityType.getDescription(); - } - - public boolean isUnlocked() { - return isUnlocked; - } - - public boolean renderModel(){ - return true; - } - - static class BossEntryData { - public String entity; - public String item; - public String name; - public String description; - public String category = "minecraft"; - public boolean is_unlocked = false; - } -} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntryLoader.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntryLoader.java deleted file mode 100644 index ebc7304de..000000000 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossEntryLoader.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.idark.valoria.client.ui.screen.book.codex.checklist; - -import com.google.gson.*; -import com.idark.valoria.*; -import com.idark.valoria.client.ui.screen.book.codex.*; -import com.idark.valoria.client.ui.screen.book.codex.checklist.BossEntry.*; -import net.minecraft.network.chat.*; -import net.minecraft.resources.*; -import net.minecraft.server.packs.resources.*; -import net.minecraft.util.profiling.*; -import net.minecraft.world.entity.*; -import net.minecraftforge.registries.*; - -import java.util.*; - -public class BossEntryLoader extends SimpleJsonResourceReloadListener{ - private static final Gson GSON = new GsonBuilder().create(); - public static final BossEntryLoader INSTANCE = new BossEntryLoader(); - - public BossEntryLoader(){ - super(GSON, "bosses"); - } - - @Override - protected void apply(Map object, ResourceManager resourceManager, ProfilerFiller profiler){ - Valoria.LOGGER.info("Reloading Bosses info..."); - CodexEntries.bossEntries.clear(); - for(Map.Entry entry : object.entrySet()){ - JsonObject json = entry.getValue().getAsJsonObject(); - BossEntryData data = GSON.fromJson(json, BossEntryData.class); - - EntityType type = ForgeRegistries.ENTITY_TYPES.getValue(new ResourceLocation(data.entity)); - BossEntry boss = new BossEntry((EntityType)type); - if(data.name != null) boss.name = Component.translatable(data.name); - if(data.description != null) boss.description = Component.translatable(data.description); - if(data.category != null) boss.category = data.category; - if(data.item != null) boss.summonItem = ForgeRegistries.ITEMS.getValue(new ResourceLocation(data.item)); - - boss.setUnlocked(data.is_unlocked); - CodexEntries.bossEntries.add(boss); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossMainPage.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossMainPage.java deleted file mode 100644 index bf43a3531..000000000 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossMainPage.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.idark.valoria.client.ui.screen.book.codex.checklist; - -import com.idark.valoria.client.ui.screen.book.*; -import com.idark.valoria.client.ui.screen.book.pages.*; -import com.idark.valoria.util.*; -import com.mojang.blaze3d.vertex.*; -import net.minecraft.client.*; -import net.minecraft.client.gui.*; -import net.minecraft.util.*; -import net.minecraft.world.item.*; -import net.minecraftforge.api.distmarker.*; -import org.jetbrains.annotations.*; -import pro.komaru.tridot.util.*; -import pro.komaru.tridot.util.phys.*; -import pro.komaru.tridot.util.struct.data.*; - -import java.util.*; - -import static com.idark.valoria.Valoria.loc; - -public class BossMainPage extends TextPage{ - Seq entries; - - public int checkboxSize = 11; - public int yMargin = 15; - public int namespaceOffset = 11; - public int insideWidth = 300; - public int insideHeight = 128; - - public int guiX; - public int guiY; - public int checkboxX; - - public float scrollOffset = 0; - public final float scrollStep = 20; - private boolean isDraggingScrollbar = false; - private double dragStartMouseY; - private float dragStartScrollOffset; - private int scrollbarX; - private int scrollbarY; - private int scrollbarHeight; - - public BossMainPage(String textKey, Seq entrySeq) { - super(textKey); - this.title = "valoria.book.boss_checklist.title"; - this.entries = entrySeq; - } - - @OnlyIn(Dist.CLIENT) - public void scissorsOn(GuiGraphics gui, PoseStack pose, int x, int y, int w, int h) { - AbsRect r = AbsRect.xywhDef((float)x, (float)y, (float)w, (float)h).pose(pose); - gui.enableScissor((int)r.x, (int)r.y, (int)r.x2, (int)r.y2); - } - - @OnlyIn(Dist.CLIENT) - public void scissorsOff(GuiGraphics gui) { - gui.disableScissor(); - } - - @Override - public void mouseScrolled(double mouseX, double mouseY, double delta) { - scrollOffset -= (float)(delta * scrollStep); - float maxOffset = Math.max(0, entries.size * yMargin - insideHeight); - scrollOffset = Mth.clamp(scrollOffset, 0, maxOffset); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(GuiGraphics gui, int x, int y, int mouseX, int mouseY) { - this.guiX = x; - this.guiY = y; - renderScroll(gui, x, y, mouseY); - - int yOffset = 25 - (int) scrollOffset; - renderEntries(gui, x, y, mouseX, mouseY, yOffset, yMargin); - } - - @OnlyIn(Dist.CLIENT) - public void renderScroll(GuiGraphics gui, int x, int y, int mouseY){ - int contentHeight = entries.size * yMargin; - int maxOffset = Math.max(0, contentHeight - insideHeight); - if (isDraggingScrollbar) { - double dragDeltaY = mouseY - dragStartMouseY; - float scrollRatio = (float) maxOffset / (insideHeight - scrollbarHeight); - scrollOffset = Mth.clamp(dragStartScrollOffset + (float) (dragDeltaY * scrollRatio), 0, maxOffset); - } - - scrollOffset = Mth.clamp(scrollOffset, 0, maxOffset); - scrollbarX = x + 112 + 11; - int scrollBarYOffset = 10; - if (contentHeight > insideHeight) { - float ratio = (float) insideHeight / (float) contentHeight; - scrollbarHeight = (int) (ratio * insideHeight); - scrollbarHeight = Math.max(20, scrollbarHeight); - float scrollbarTrackHeight = insideHeight - scrollbarHeight; - scrollbarY = y + (int) ((scrollOffset / (float) maxOffset) * scrollbarTrackHeight); - - gui.fill(scrollbarX, scrollBarYOffset + y, scrollbarX + 4, scrollBarYOffset + y + insideHeight, Col.fromHex("413838").a(0.35f).rgb()); - gui.fill(scrollbarX, scrollBarYOffset + scrollbarY, scrollbarX + 4, scrollBarYOffset + scrollbarY + scrollbarHeight, Col.fromHex("413838").brighter().a(0.345f).rgb()); - } else { - scrollbarHeight = 0; - } - } - - @OnlyIn(Dist.CLIENT) - public void renderEntries(GuiGraphics gui, int x, int y, int mouseX, int mouseY, int yOffset, int yMargin){ - checkboxX = x + 5; - entries.sort(Comparator.comparing(BossEntry::getCategory).thenComparing(e -> e.name(e.type()).getString())); - scissorsOn(gui, gui.pose(), x+insideWidth/2, y +150/2, insideWidth, insideHeight); // perfectly fits needed area - int currentY = y + yOffset - 10; - String lastCategory = null; - for(BossEntry entry : entries){ - if(!entry.getCategory().equals(lastCategory)){ - gui.drawString(Minecraft.getInstance().font, entry.getCategory().toUpperCase(), checkboxX, currentY, -1, true); - currentY += namespaceOffset; - lastCategory = entry.getCategory(); - } - - if(currentY + yMargin > y + 21 && currentY < y + 21 + insideHeight){ - gui.blit(loc("textures/gui/book/frame.png"), checkboxX, currentY, entry.isUnlocked() ? 400 : 411, 0, checkboxSize, checkboxSize, 512, 512); - if(isHover(mouseX, mouseY, checkboxX + 15, currentY, 100, 11)){ - EntityPos result = getEntityPos(entry); - renderEntity(entry.isUnlocked(), gui, entry.type, x + result.entityDrawX(),y + result.entityDrawY(), (int)result.scale(), Minecraft.getInstance(), 13); - - gui.renderTooltip(Minecraft.getInstance().font, entry.name(entry.type()), mouseX, mouseY); - gui.drawString(Minecraft.getInstance().font, entry.name(entry.type()), checkboxX + 15, currentY + checkboxSize / 2 - Minecraft.getInstance().font.lineHeight / 2, Pal.ecru.copy().brighter().rgb(), true); - }else{ - gui.drawString(Minecraft.getInstance().font, entry.name(entry.type()), checkboxX + 15, currentY + checkboxSize / 2 - Minecraft.getInstance().font.lineHeight / 2, Pal.ecru.rgb(), true); - } - } - - currentY += yMargin; - } - - scissorsOff(gui); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (button == 0) { - if (scrollbarHeight > 0 && isHover(mouseX, mouseY, scrollbarX, guiY, 4, insideHeight)) { - isDraggingScrollbar = true; - dragStartMouseY = mouseY; - dragStartScrollOffset = scrollOffset; - if (!isHover(mouseX, mouseY, scrollbarX, scrollbarY, 4, scrollbarHeight)) { - float clickRatio = (float) (mouseY - guiY) / (float) insideHeight; - int maxOffset = Math.max(0, entries.size * yMargin - insideHeight); - scrollOffset = Mth.clamp(clickRatio * maxOffset, 0, maxOffset); - } - return true; - } - - int currentY = guiY + 21 - (int) scrollOffset - 10; - entries.sort(Comparator.comparing(BossEntry::getCategory).thenComparing(e -> e.name(e.type()).getString())); - String lastCategory = null; - for (BossEntry entry : entries) { - if(!entry.getCategory().equals(lastCategory)){ - currentY += namespaceOffset; - lastCategory = entry.getCategory(); - } - - if (currentY + yMargin > guiY && currentY < guiY + insideHeight) { - if (isHover(mouseX, mouseY, checkboxX, currentY, checkboxSize, checkboxSize)) { - entry.setUnlocked(!entry.isUnlocked()); - return true; - } - - if(isHover(mouseX, mouseY, checkboxX + 15, currentY, 100, 11)) { - Item item = Items.AIR; - if(entry.summonItem != null) item = entry.summonItem; - EntityPos result = getEntityPos(entry); - changeChapter(new Chapter("", new BossPage(entry.description(entry.type).getString()).withCraftEntry(new ItemStack(item)).setEntityData(result.entityDrawX(), result.entityDrawY(), (int)result.scale(), entry.isUnlocked()).withEntity(entry.type).hideTitle())); - } - } - - currentY += yMargin; - } - } - - return super.mouseClicked(mouseX, mouseY, button); - } - - @OnlyIn(Dist.CLIENT) - private static @NotNull EntityPos getEntityPos(BossEntry entry){ - float width = entry.type.getWidth(); - float height = entry.type.getHeight(); - float maxDimension = Math.max(width, height); - float scale = maxDimension > 0 ? 120.0f / maxDimension : 1.0f; - - int entityDrawX = 215 - (int)((width * scale) / 2f); - int entityDrawY = 60 + (int)((height * scale) / 2f); - return new EntityPos(scale, entityDrawX, entityDrawY); - } - - private record EntityPos(float scale, int entityDrawX, int entityDrawY){ - } - - @OnlyIn(Dist.CLIENT) - public void changeChapter(Chapter chapter) { - Minecraft.getInstance().setScreen(new BookGui(chapter, false)); - } - - @OnlyIn(Dist.CLIENT) - public boolean isHover(double mouseX, double mouseY, int x, int y, int width, int height) { - return mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + height; - } - - @Override - public boolean mouseReleased(double mouseX, double mouseY, int button) { - if (button == 0) isDraggingScrollbar = false; - return super.mouseReleased(mouseX, mouseY, button); - } -} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossPage.java b/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossPage.java deleted file mode 100644 index be9ffa6b5..000000000 --- a/src/main/java/com/idark/valoria/client/ui/screen/book/codex/checklist/BossPage.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.idark.valoria.client.ui.screen.book.codex.checklist; - -import com.idark.valoria.client.ui.screen.book.pages.*; - -public class BossPage extends TextPage{ - public BossPage(String textKey){ - super(textKey); - } -} diff --git a/src/main/java/com/idark/valoria/core/MaxNihilityAction.java b/src/main/java/com/idark/valoria/core/MaxNihilityAction.java new file mode 100644 index 000000000..a2e69b5dc --- /dev/null +++ b/src/main/java/com/idark/valoria/core/MaxNihilityAction.java @@ -0,0 +1,7 @@ +package com.idark.valoria.core; + +public enum MaxNihilityAction{ + KILL, + DAMAGE, + TELEPORT; +} diff --git a/src/main/java/com/idark/valoria/core/compat/jade/EffectiveWeaponHandler.java b/src/main/java/com/idark/valoria/core/compat/jade/EffectiveWeaponHandler.java new file mode 100644 index 000000000..1fc0c6e27 --- /dev/null +++ b/src/main/java/com/idark/valoria/core/compat/jade/EffectiveWeaponHandler.java @@ -0,0 +1,35 @@ +package com.idark.valoria.core.compat.jade; + +import com.idark.valoria.core.interfaces.*; +import net.minecraft.world.item.*; + +import java.util.*; +import java.util.function.*; + +public class EffectiveWeaponHandler { + private final String name; + private final Supplier> items; + + public EffectiveWeaponHandler(String name, Supplier> items) { + this.name = name; + this.items = items; + } + + public String getName() { + return name; + } + + public ItemStack test(IEffectiveWeaponEntity entity) { + for (ItemStack item : items.get()) { + if(item.is(entity.getEffective())) { + return item; + } + } + + return ItemStack.EMPTY; + } + + public List getWeapons(){ + return items.get(); + } +} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/core/compat/jade/EntityWeaknessProvider.java b/src/main/java/com/idark/valoria/core/compat/jade/EntityWeaknessProvider.java new file mode 100644 index 000000000..1420d5a7e --- /dev/null +++ b/src/main/java/com/idark/valoria/core/compat/jade/EntityWeaknessProvider.java @@ -0,0 +1,112 @@ +package com.idark.valoria.core.compat.jade; + +import com.google.common.cache.*; +import com.google.common.collect.*; +import com.idark.valoria.core.interfaces.*; +import net.minecraft.core.*; +import net.minecraft.core.registries.*; +import net.minecraft.network.chat.*; +import net.minecraft.resources.*; +import net.minecraft.server.packs.resources.*; +import net.minecraft.world.item.*; +import net.minecraft.world.phys.*; +import snownee.jade.api.*; +import snownee.jade.api.config.*; +import snownee.jade.api.theme.*; +import snownee.jade.api.ui.*; +import snownee.jade.api.ui.IElement.*; +import snownee.jade.impl.ui.*; + +import java.util.*; +import java.util.concurrent.*; + +public enum EntityWeaknessProvider implements IEntityComponentProvider, ResourceManagerReloadListener{ + INSTANCE; + + public static final Cache> resultCache = CacheBuilder.newBuilder().expireAfterAccess(5L, TimeUnit.MINUTES).build(); + private static final Vec2 ITEM_SIZE = new Vec2(10.0F, 0.0F); + private static final Component CHECK = Component.literal("✔"); + private static final Component X = Component.literal("✕"); + + @Override + public ResourceLocation getUid(){ + return ModPlugin.ENTITY_WEAKNESS; + } + + public static ImmutableList getTool(IEffectiveWeaponEntity entity) { + ImmutableList.Builder tools = ImmutableList.builder(); + ItemStack tool = new EffectiveWeaponHandler("weapons", () -> getEffectiveWeapons(entity)).test(entity); + if (!tool.isEmpty()) { + tools.add(tool); + } + + return tools.build(); + } + + public static List getEffectiveWeapons(IEffectiveWeaponEntity entity) { + var tagKey = entity.getEffective(); + + Optional> tag = BuiltInRegistries.ITEM.getTag(tagKey); + + if (tag.isPresent()) { + return tag.get().stream() + .findFirst() + .map(holder -> new ItemStack(holder.value())) + .stream().toList(); + } + + return List.of(); + } + + @Override + public void appendTooltip(ITooltip tooltip, EntityAccessor entityAccessor, IPluginConfig config){ + if(entityAccessor.getEntity() instanceof IEffectiveWeaponEntity eff){ + boolean newLine = config.get(Identifiers.MC_HARVEST_TOOL_NEW_LINE); + List elements = this.getText(entityAccessor, eff, config); + if (!elements.isEmpty()) { + elements.forEach((e) -> e.message(null)); + if (newLine) { + tooltip.add(elements); + } else { + elements.forEach((e) -> e.align(Align.RIGHT)); + tooltip.append(0, elements); + } + } + } + } + + public List getText(EntityAccessor entityAccessor, IEffectiveWeaponEntity eff, IPluginConfig config){ + List tools = List.of(); + int offsetY = 0; + if (!config.get(Identifiers.MC_HARVEST_TOOL_NEW_LINE)) { + offsetY = -3; + } + + try{ + tools = resultCache.get(eff, () -> getTool(eff)); + }catch(ExecutionException e){ + e.printStackTrace(); + } + + if(!tools.isEmpty()){ + List elements = Lists.newArrayList(); + for(ItemStack tool : tools) { + elements.add(IElementHelper.get().item(tool, 0.75F).translate(new Vec2(-1.0F, (float)offsetY)).size(ITEM_SIZE).message((String)null)); + } + + elements.add(0, IElementHelper.get().spacer(5, 0)); + ItemStack held = entityAccessor.getPlayer().getMainHandItem(); + boolean isEffective = held.is(eff.getEffective()); + IThemeHelper t = IThemeHelper.get(); + Component text = isEffective ? t.success(CHECK) : t.danger(X); + elements.add((new SubTextElement(text)).translate(new Vec2(-3.0F, (float)(7 + offsetY)))); + return elements; + } else { + return List.of(); + } + } + + public void onResourceManagerReload(ResourceManager resourceManager) { + resultCache.invalidateAll(); + } +} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/core/compat/jade/ModPlugin.java b/src/main/java/com/idark/valoria/core/compat/jade/ModPlugin.java index 9fb2f8707..88874dd5a 100644 --- a/src/main/java/com/idark/valoria/core/compat/jade/ModPlugin.java +++ b/src/main/java/com/idark/valoria/core/compat/jade/ModPlugin.java @@ -5,6 +5,7 @@ import com.idark.valoria.registries.block.types.*; import net.minecraft.resources.*; import net.minecraft.tags.*; +import net.minecraft.world.entity.*; import net.minecraft.world.item.*; import net.minecraft.world.level.block.*; import snownee.jade.addon.harvest.*; @@ -17,6 +18,7 @@ public class ModPlugin implements IWailaPlugin{ public static final ResourceLocation KEG = new ResourceLocation("valoria:keg"); public static final ResourceLocation KEY = new ResourceLocation("valoria:key"); public static final ResourceLocation MANIPULATOR = new ResourceLocation("valoria:manipulator"); + public static final ResourceLocation ENTITY_WEAKNESS = new ResourceLocation("valoria:entity_weakness"); @Override public void register(IWailaCommonRegistration registration){ @@ -33,6 +35,7 @@ public void registerClient(IWailaClientRegistration registration){ registration.registerBlockComponent(KegProvider.INSTANCE, KegBlock.class); registration.registerBlockComponent(KeyBlockProvider.INSTANCE, UmbralKeyPadBlock.class); registration.registerBlockComponent(ManipulatorProvider.INSTANCE, ManipulatorBlock.class); + registration.registerEntityComponent(EntityWeaknessProvider.INSTANCE, LivingEntity.class); registerTier("bronze", TagsRegistry.NEEDS_BRONZE_TOOL, ItemTierRegistry.BRONZE); registerTier("pearlium", TagsRegistry.NEEDS_PEARLIUM_TOOL, ItemTierRegistry.PEARLIUM); diff --git a/src/main/java/com/idark/valoria/core/config/CommonConfig.java b/src/main/java/com/idark/valoria/core/config/CommonConfig.java index 13aa69034..2933471bc 100644 --- a/src/main/java/com/idark/valoria/core/config/CommonConfig.java +++ b/src/main/java/com/idark/valoria/core/config/CommonConfig.java @@ -22,9 +22,6 @@ public class CommonConfig{ public static ForgeConfigSpec.ConfigValue TARGET_HEAL_NECROMANCER_AMOUNT, SELF_HEAL_NECROMANCER_AMOUNT; - public static ForgeConfigSpec.ConfigValue - FOOD_ROT, NIHILITY; - static{ final Pair specPair = new ForgeConfigSpec.Builder().configure(CommonConfig::new); SPEC = specPair.getRight(); @@ -36,8 +33,6 @@ public class CommonConfig{ public CommonConfig(ForgeConfigSpec.Builder builder){ builder.comment("Gameplay").push("gameplay"); - NIHILITY = builder.comment("Nihility System in Valoria, Default: true)").define("nihility", true); - FOOD_ROT = builder.comment("Food spoiling on entering Valoria dimension, Default: true)").define("foodRot", true); setupBosses(builder); builder.pop(); } @@ -57,26 +52,26 @@ private void setupBosses(Builder builder){ KNOCKBACK_NECROMANCER_RADIUS = builder.comment("Radius of knockback").define("knockbackRadius", 3); KNOCKBACK_NECROMANCER_RADIUS_STRONG = builder.comment("Radius of strong knockback casted when Necromancer HP is lower than 100").define("knockbackRadiusStrong", 6); - TARGET_HEAL_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("targetHealCastingTtime", 60); + TARGET_HEAL_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("targetHealCastingTime", 60); TARGET_HEAL_NECROMANCER_CASTING_INTERVAL = builder.comment("Casting interval").define("targetHealCastingInterval", 200); TARGET_HEAL_NECROMANCER_AMOUNT = builder.comment("Amount of healed hp").define("targetHeal", 12f); SELF_HEAL_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("selfHealCastingTime", 60); SELF_HEAL_NECROMANCER_CASTING_INTERVAL = builder.comment("Casting interval").define("selfHealCastingInterval", 300); - SELF_HEAL_NECROMANCER_AMOUNT = builder.comment("Amount of healed hp").define("self_heal", 25f); + SELF_HEAL_NECROMANCER_AMOUNT = builder.comment("Amount of healed hp").define("selfHeal", 25f); EFFECT_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("effectCastingTime", 20); EFFECT_NECROMANCER_CASTING_INTERVAL = builder.comment("Casting interval").define("effectCastingInterval", 150); - WOLOLO_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("wololo_casting_time", 60); + WOLOLO_NECROMANCER_CASTING_TIME = builder.comment("Casting time").define("wololoCastingTime", 60); WOLOLO_NECROMANCER_CASTING_INTERVAL = builder.comment("Casting interval").define("wololoCastingInterval", 180); builder.pop(); - builder.comment("Wicked Crystal").push("wicked_crystal"); + builder.comment("Wicked Crystal").push("wickedCrystal"); SHIELDS_WICKED_CRYSTAL_CASTING_TIME = builder.comment("Casting time").define("shieldsCastingTime", 25); SHIELDS_WICKED_CRYSTAL_CASTING_INTERVAL = builder.comment("Casting interval").define("shieldsCastingInterval", 1200); - SHIELDS_WICKED_CRYSTAL_COUNT_PHASE1 = builder.comment("Count of summoned shields").define("shieldsCountPhase_1", 2); - SHIELDS_WICKED_CRYSTAL_COUNT_PHASE2 = builder.comment("Count of summoned shields").define("shieldsCountPhase_2", 4); + SHIELDS_WICKED_CRYSTAL_COUNT_PHASE1 = builder.comment("Count of summoned shields").define("shieldsCountPhase1", 2); + SHIELDS_WICKED_CRYSTAL_COUNT_PHASE2 = builder.comment("Count of summoned shields").define("shieldsCountPhase2", 4); SHIELDS_WICKED_CRYSTAL_LIMIT = builder.comment("Limit of shields").define("shieldsLimit",8); SUMMON_WICKED_CRYSTAL_CASTING_TIME = builder.comment("Casting time").define("crystalSummonCastingTime", 20); diff --git a/src/main/java/com/idark/valoria/core/config/ConfigMigrator.java b/src/main/java/com/idark/valoria/core/config/ConfigMigrator.java new file mode 100644 index 000000000..c46d62eca --- /dev/null +++ b/src/main/java/com/idark/valoria/core/config/ConfigMigrator.java @@ -0,0 +1,42 @@ +package com.idark.valoria.core.config; + +import com.idark.valoria.*; +import net.minecraftforge.fml.loading.*; + +import java.io.*; +import java.nio.file.*; + +public class ConfigMigrator { + public static void migrate() { + Valoria.LOGGER.debug("Valoria config Migrator checking"); + try { + Path configDir = FMLPaths.CONFIGDIR.get(); + Path newConfigDir = configDir.resolve("valoria"); + + if (!Files.exists(newConfigDir)) { + Files.createDirectories(newConfigDir); + } + + moveIfNeeded( + configDir.resolve("valoria-common.toml"), + newConfigDir.resolve("common.toml") + ); + + moveIfNeeded( + configDir.resolve("valoria-client.toml"), + newConfigDir.resolve("client.toml") + ); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static void moveIfNeeded(Path oldPath, Path newPath) throws IOException{ + if (Files.exists(oldPath) && !Files.exists(newPath)) { + Valoria.LOGGER.info("Migrating: {} -> {}", oldPath.getFileName(), newPath); + System.out.println("[Valoria Migrator] Migrating: " + oldPath.getFileName() + " -> " + newPath); + Files.move(oldPath, newPath, StandardCopyOption.REPLACE_EXISTING); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/core/config/ServerConfig.java b/src/main/java/com/idark/valoria/core/config/ServerConfig.java index 9af007061..5409066de 100644 --- a/src/main/java/com/idark/valoria/core/config/ServerConfig.java +++ b/src/main/java/com/idark/valoria/core/config/ServerConfig.java @@ -1,10 +1,19 @@ package com.idark.valoria.core.config; +import com.idark.valoria.core.*; import net.minecraftforge.common.*; import org.apache.commons.lang3.tuple.*; -public class ServerConfig{ //todo - public static ForgeConfigSpec.ConfigValue POT_SPAWN_CHANCE; +public class ServerConfig{ + public static ForgeConfigSpec.ConfigValue ENABLE_CODEX_PROGRESSION, ENABLE_FOOD_ROT, ENABLE_NIHILITY, CRITICAL_NIHILITY_BLINDNESS; + + public static ForgeConfigSpec.ConfigValue POT_SPAWN_CHANCE, + FOOD_ROT_INTERVAL, + NIHILITY_DAMAGE_MULTIPLIER, NIHILITY_ACCUMULATION_INTERVAL, NIHILITY_DECAY_INTERVAL, + CODEX_UPDATE_INTERVAL; + + public static ForgeConfigSpec.ConfigValue MAX_NIHILITY_ACTION; + static{ final Pair specPair = new ForgeConfigSpec.Builder().configure(ServerConfig::new); @@ -16,6 +25,24 @@ public class ServerConfig{ //todo public static final ForgeConfigSpec SPEC; public ServerConfig(ForgeConfigSpec.Builder builder){ - POT_SPAWN_CHANCE = builder.comment("Pots spawn chance (Default: 5%)").defineInRange("PotSpawnChance", 0.025d, 0.0d, 1.0d); + builder.comment("Gameplay Settings").push("gameplay"); + ENABLE_CODEX_PROGRESSION = builder.comment("Enables the progression system for the Codex.", + "If true, players must unlock entries via gameplay.", + "If false, all entries are visible by default.") + .define("enableCodexProgression", true); + CODEX_UPDATE_INTERVAL = builder.comment("Codex updating rate, specified in seconds").defineInRange("codexUpdateInterval", 3, 1d, 10000); + ENABLE_FOOD_ROT = builder.comment("Food spoiling on entering Valoria dimension").define("enableFoodRot", true); + FOOD_ROT_INTERVAL = builder.comment("Food spoiling time, specified in seconds").defineInRange("foodRotInterval", 3, 0.1, 10000); + ENABLE_NIHILITY = builder.comment("Nihility System in Valoria").define("enableNihility", true); + NIHILITY_DAMAGE_MULTIPLIER = builder.comment("Damage multiplier per 10% of excess Nihility", "Formula: 1.0 + (segments * multiplier)").defineInRange("nihilityDamageMultiplier", 2d, 0, 100d); + NIHILITY_ACCUMULATION_INTERVAL = builder.comment("Nihility applying time, specified in seconds").defineInRange("nihilityAccumulationInterval", 3, 0.1, 10000); + NIHILITY_DECAY_INTERVAL = builder.comment("Nihility decreasing time, specified in seconds").defineInRange("nihilityDecayInterval", 6, 0.1, 10000); + MAX_NIHILITY_ACTION = builder.comment("Action on maximum Nihility amount reached").worldRestart().defineEnum("maxNihilityAction", MaxNihilityAction.KILL); + CRITICAL_NIHILITY_BLINDNESS = builder.comment("Blindness on critical Nihility amount reached").define("criticalNihilityBlindness", true); + builder.pop(); + + builder.comment("Level Generation").push("levelgen"); + POT_SPAWN_CHANCE = builder.comment("Pots spawn chance").defineInRange("PotSpawnChance", 0.025d, 0.0d, 1.0d); + builder.pop(); } } \ No newline at end of file diff --git a/src/main/java/com/idark/valoria/core/interfaces/IEffectiveWeaponEntity.java b/src/main/java/com/idark/valoria/core/interfaces/IEffectiveWeaponEntity.java new file mode 100644 index 000000000..96e6cbc9a --- /dev/null +++ b/src/main/java/com/idark/valoria/core/interfaces/IEffectiveWeaponEntity.java @@ -0,0 +1,16 @@ +package com.idark.valoria.core.interfaces; + +import net.minecraft.core.*; +import net.minecraft.tags.*; +import net.minecraft.world.item.*; +import net.minecraft.world.level.*; + +public interface IEffectiveWeaponEntity{ + TagKey getEffective(); + default float scaleFactor() { + return 2f; + } + + default void spawnHitParticles(Level level, BlockPos blockPos) { + } +} diff --git a/src/main/java/com/idark/valoria/registries/BlockRegistry.java b/src/main/java/com/idark/valoria/registries/BlockRegistry.java index d5858dcb5..54d73543f 100644 --- a/src/main/java/com/idark/valoria/registries/BlockRegistry.java +++ b/src/main/java/com/idark/valoria/registries/BlockRegistry.java @@ -79,7 +79,7 @@ public class BlockRegistry{ valoriaPortal, valoriaPortalFrame, grave, tomb, mossyTomb, woodenTomb, mossyWoodenTomb, sarcophagus, umbralKeypad, umbralActivator, umbralBlock, cutUmbralBlock, umbralBricks, quicksand, bronzeLamp, decoratedBronzeLamp, bronzeLampBlock, // decorative - elegantPedestal, woodenCup, beerCup, rumCup, cup, teaCup, greenTeaCup, coffeeCup, cacaoCup, glassBottle, rumBottle, cokeBottle, akvavitBottle, liquorBottle, wineBottle, meadBottle, sakeBottle, kvassBottle, whiskeyBottle, cognacBottle, + elegantPedestal, woodenCup, beerCup, rumCup, cup, teaCup, greenTeaCup, coffeeCup, cacaoCup, glassBottle, rumBottle, cokeBottle, akvavitBottle, liquorBottle, wineBottle, meadBottle, sakeBottle, kvassBottle, whiskeyBottle, cognacBottle, fireworkTube, taintedRoots, bloodVine, bloodVinePlant, caveRootPlant, caveRoot, violetSprout, violetSproutPlant, glowVioletSprout, glowVioletSproutPlant, abyssalGlowfern, abyssalGlowfernPlant, aloeSmall, aloe, pottedAloeSmall, driedPlant, pottedDriedPlant, driedRoots, pottedDriedRoots, cattail, soulroot, pottedSoulroot, soulFlower, pottedSoulFlower, crimsonSoulroot, doubleSoulroot, pottedCrimsonSoulroot, magmaroot, doubleMagmaroot, pottedMagmaroot, goldy, doubleGoldy, pottedGoldy, rajush, pottedRajush, bloodroot, pottedBloodroot, falseFlower, falseFlowerSmall, pottedFalseflower, pottedFalseflowerSmall, voidRoots, pottedVoidRoots, voidSerpents, pottedVoidSerpents, voidvine, doubleVoidvine, voidthorn, blightedGrass, pottedBlightedGrass, pottedVoidvine, gaibRoots, karusakanRoots, shadeBlossom, suspiciousIce, suspiciousTombstone, spikes, // boss trophies @@ -507,6 +507,8 @@ public static void load(IEventBus eventBus){ mossyWoodenTomb = registerBlock("mossy_wooden_tomb", () -> new TombBlock(BlockBehaviour.Properties.copy(Blocks.OAK_WOOD).strength(1f, 1f).noOcclusion())); sarcophagus = registerBlock("sarcophagus", () -> new SarcophagusBlock(BlockBehaviour.Properties.copy(Blocks.IRON_BLOCK).requiresCorrectToolForDrops().strength(3f).noOcclusion())); + fireworkTube = registerBlock("firework_tube", () -> new FireworkTubeBlock(Properties.of().strength(1f, 1f).noOcclusion())); + // Cups woodenCup = BLOCK.register("wooden_cup", BlockRegistry::woodenCup); beerCup = BLOCK.register("beer_cup", BlockRegistry::woodenCup); diff --git a/src/main/java/com/idark/valoria/registries/EntityStatsRegistry.java b/src/main/java/com/idark/valoria/registries/EntityStatsRegistry.java index eefa6dc6f..3c6681c73 100644 --- a/src/main/java/com/idark/valoria/registries/EntityStatsRegistry.java +++ b/src/main/java/com/idark/valoria/registries/EntityStatsRegistry.java @@ -29,13 +29,13 @@ public class EntityStatsRegistry{ //monsters - overworld public static AttributeSupplier GOBLIN = register(25, 5, 0.17).build(); - public static AttributeSupplier TROLL = register(30, 8).build(); + public static AttributeSupplier TROLL = register(30, 6).build(); public static AttributeSupplier DRAUGR = register(30, 5).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.FOLLOW_RANGE, 20).build(); public static AttributeSupplier SWAMP_WANDERER = register(35, 8).add(Attributes.KNOCKBACK_RESISTANCE, Tmp.rnd.nextDouble() * 0.05F).add(Attributes.SPAWN_REINFORCEMENTS_CHANCE, Tmp.rnd.nextDouble() * 0.25D + 0.5D).build(); public static AttributeSupplier SCOURGE = register(45, 6, 0.15).add(Attributes.KNOCKBACK_RESISTANCE, new Random().nextDouble() * 0.05F).add(Attributes.SPAWN_REINFORCEMENTS_CHANCE, Tmp.rnd.nextDouble() * 0.25D + 0.5D).build(); - public static AttributeSupplier ENT = register(75, 10, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.5).build(); - public static AttributeSupplier NATURE_GOLEM = register(125, 10, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.75).build(); - public static AttributeSupplier RIVER_GOLEM = register(125, 10, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.75).build(); + public static AttributeSupplier ENT = register(50, 4, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.5).build(); + public static AttributeSupplier NATURE_GOLEM = register(125, 5, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.75).build(); + public static AttributeSupplier RIVER_GOLEM = register(125, 5, 0.15).add(Attributes.ARMOR, 5).add(Attributes.ARMOR_TOUGHNESS, 2).add(Attributes.KNOCKBACK_RESISTANCE, 0.75).build(); public static AttributeSupplier SORCERER = register(25, 1.5).build(); public static AttributeSupplier MAGGOT = register(6, 3.5).build(); public static AttributeSupplier KING_CRAB = register(100, 10).add(Attributes.FOLLOW_RANGE, 20).build(); diff --git a/src/main/java/com/idark/valoria/registries/ItemTierRegistry.java b/src/main/java/com/idark/valoria/registries/ItemTierRegistry.java index 351954e6a..709f143d7 100644 --- a/src/main/java/com/idark/valoria/registries/ItemTierRegistry.java +++ b/src/main/java/com/idark/valoria/registries/ItemTierRegistry.java @@ -19,14 +19,15 @@ public class ItemTierRegistry{ public static Tier BLAZE_REAP = registerTier(new ForgeTier(6, 1561, 10f, 4.0F, 15, TagsRegistry.NEEDS_BLAZEREAP_TOOL, Ingredient::of), Valoria.loc("blazereap")); public static Tier NONE = registerTier(new ForgeTier(4, 1561, 10f, 4.0F, 15, TagsRegistry.NEEDS_NONE_TOOL, Ingredient::of), Valoria.loc("none")); - public static Tier BRONZE = TierSortingRegistry.registerTier(new ForgeTier(2, 1048, 4f, 0.0F, 8, TagsRegistry.NEEDS_BRONZE_TOOL, () -> Ingredient.of(ItemsRegistry.bronzeIngot.get())), Valoria.loc("bronze"), List.of(Tiers.STONE), List.of(Tiers.IRON)); - public static Tier PEARLIUM = registerTier(new ForgeTier(3, 425, 5f, 2.0F, 6, TagsRegistry.NEEDS_PEARLIUM_TOOL, () -> Ingredient.of(ItemsRegistry.pearliumIngot.get())), Valoria.loc("pearlium")); + public static Tier BRONZE = TierSortingRegistry.registerTier(new ForgeTier(2, 600, 5f, 0.0F, 8, TagsRegistry.NEEDS_BRONZE_TOOL, () -> Ingredient.of(ItemsRegistry.bronzeIngot.get())), Valoria.loc("bronze"), List.of(Tiers.STONE), List.of(Tiers.IRON)); + public static Tier PEARLIUM = registerTier(new ForgeTier(2, 425, 7f, 2.0F, 6, TagsRegistry.NEEDS_PEARLIUM_TOOL, () -> Ingredient.of(ItemsRegistry.pearliumIngot.get())), Valoria.loc("pearlium")); public static Tier HOLIDAY = registerTier(new ForgeTier(2, 740, 5f, 2.0F, 8, TagsRegistry.NEEDS_HOLIDAY_TOOL, () -> Ingredient.of(ItemsRegistry.holidayCandy.get())), Valoria.loc("holiday")); - public static Tier HALLOWEEN = registerTier(new ForgeTier(3, 1150, 6f, 3.0F, 8, TagsRegistry.NEEDS_HALLOWEEN_TOOL, () -> Ingredient.of(ItemsRegistry.candyCorn.get())), Valoria.loc("halloween")); - public static Tier SAMURAI = registerTier(new ForgeTier(3, 1250, 10f, 5.0F, 7, TagsRegistry.NEEDS_SAMURAI_TOOL, () -> Ingredient.of(ItemsRegistry.ancientIngot.get())), Valoria.loc("samurai")); - public static Tier COBALT = TierSortingRegistry.registerTier(new ForgeTier(4, 1750, 12f, 4f, 12, TagsRegistry.NEEDS_COBALT_TOOL, () -> Ingredient.of(ItemsRegistry.cobaltIngot.get())), Valoria.loc("cobalt"), List.of(Tiers.DIAMOND), List.of(Tiers.NETHERITE)); - public static Tier ETHEREAL = TierSortingRegistry.registerTier(new ForgeTier(4, 2025, 15f, 5f, 15, TagsRegistry.NEEDS_ETHEREAL_TOOL, () -> Ingredient.of(ItemsRegistry.etherealShard.get())), Valoria.loc("ethereal"), List.of(Tiers.DIAMOND), List.of(Tiers.NETHERITE)); - public static Tier NATURE = TierSortingRegistry.registerTier(new ForgeTier(5, 2651, 17f, 8.0F, 17, TagsRegistry.NEEDS_NATURE_TOOL, () -> Ingredient.of(ItemsRegistry.natureIngot.get())), Valoria.loc("nature"), List.of(Tiers.NETHERITE), List.of(Valoria.loc("depth"))); + public static Tier HALLOWEEN = registerTier(new ForgeTier(2, 1150, 6f, 3.0F, 8, TagsRegistry.NEEDS_HALLOWEEN_TOOL, () -> Ingredient.of(ItemsRegistry.candyCorn.get())), Valoria.loc("halloween")); + public static Tier LUNAR = registerTier(new ForgeTier(2, 1450, 6f, 3.0F, 8, TagsRegistry.NEEDS_LUNAR_TOOL, Ingredient::of), Valoria.loc("lunar")); + public static Tier SAMURAI = registerTier(new ForgeTier(2, 1250, 8f, 5.0F, 7, TagsRegistry.NEEDS_SAMURAI_TOOL, () -> Ingredient.of(ItemsRegistry.ancientIngot.get())), Valoria.loc("samurai")); + public static Tier COBALT = TierSortingRegistry.registerTier(new ForgeTier(3, 1750, 12f, 4f, 12, TagsRegistry.NEEDS_COBALT_TOOL, () -> Ingredient.of(ItemsRegistry.cobaltIngot.get())), Valoria.loc("cobalt"), List.of(Tiers.DIAMOND), List.of(Tiers.NETHERITE)); + public static Tier ETHEREAL = TierSortingRegistry.registerTier(new ForgeTier(3, 2025, 14f, 5f, 15, TagsRegistry.NEEDS_ETHEREAL_TOOL, () -> Ingredient.of(ItemsRegistry.etherealShard.get())), Valoria.loc("ethereal"), List.of(Tiers.DIAMOND), List.of(Tiers.NETHERITE)); + public static Tier NATURE = TierSortingRegistry.registerTier(new ForgeTier(4, 2651, 16f, 8.0F, 17, TagsRegistry.NEEDS_NATURE_TOOL, () -> Ingredient.of(ItemsRegistry.natureIngot.get())), Valoria.loc("nature"), List.of(Tiers.NETHERITE), List.of(Valoria.loc("depth"))); public static Tier AQUARIUS = TierSortingRegistry.registerTier(new ForgeTier(5, 3256, 18f, 9f, 18, TagsRegistry.NEEDS_DEPTH_TOOL, () -> Ingredient.of(ItemsRegistry.aquariusIngot.get())), Valoria.loc("depth"), List.of(Valoria.loc("nature")), List.of(Valoria.loc("infernal"))); public static Tier INFERNAL= TierSortingRegistry.registerTier(new ForgeTier(5, 4256, 20f, 10.0F, 19, TagsRegistry.NEEDS_INFERNAL_TOOL, () -> Ingredient.of(ItemsRegistry.infernalIngot.get())), Valoria.loc("infernal"), List.of(Valoria.loc("depth")), List.of(Valoria.loc("void"))); public static Tier JADE = TierSortingRegistry.registerTier(new ForgeTier(5, 4112, 22f, 11F, 20, TagsRegistry.NEEDS_JADE_TOOL, () -> Ingredient.of(ItemsRegistry.jade.get())), Valoria.loc("jade"), List.of(Tiers.NETHERITE), List.of(Valoria.loc("depth"))); diff --git a/src/main/java/com/idark/valoria/registries/ItemsRegistry.java b/src/main/java/com/idark/valoria/registries/ItemsRegistry.java index 62d90df6c..9d6c68e38 100644 --- a/src/main/java/com/idark/valoria/registries/ItemsRegistry.java +++ b/src/main/java/com/idark/valoria/registries/ItemsRegistry.java @@ -142,6 +142,7 @@ public class ItemsRegistry{ // event holidayCandy, holidayKatana, holidayPickaxe, holidayAxe, candyCorn, pumpkinBomb, wraithKatana, reaperScythe, dreadAxe, soulReaver, + redEnvelopeCommon, redEnvelopeUncommon, redEnvelopeRare, redEnvelopeEpic, lunarSword, lunarKatana, lunarScythe, lunarSpear, lunarPickaxe, lunarAxe, lunarBow, // accessories ironChain, ironNecklaceAmber, ironNecklaceDiamond, ironNecklaceEmerald, ironNecklaceRuby, ironNecklaceSapphire, ironNecklaceHealth, ironNecklaceArmor, ironNecklaceWealth, ironRogueNecklace, @@ -325,6 +326,10 @@ public void appendHoverText(ItemStack pStack, @Nullable Level pLevel, List new CrushableItem(new Item.Properties().rarity(Rarity.RARE))); stoneGeode = registerItem("stone_geode", () -> new CrushableItem(new Item.Properties().rarity(Rarity.RARE))); starterBundle = registerItem("starter_bundle", () -> new TreasureBag(new ResourceLocation(Valoria.ID, "items/start"), new Item.Properties().rarity(Rarity.UNCOMMON))); + redEnvelopeCommon = registerItem("red_envelope_common", () -> new CardLootItem(new ResourceLocation(Valoria.ID, "items/red_envelope_common"), new Item.Properties().rarity(Rarity.COMMON))); + redEnvelopeUncommon = registerItem("red_envelope_uncommon", () -> new CardLootItem(new ResourceLocation(Valoria.ID, "items/red_envelope_uncommon"), new Item.Properties().rarity(Rarity.UNCOMMON))); + redEnvelopeRare = registerItem("red_envelope_rare", () -> new CardLootItem(new ResourceLocation(Valoria.ID, "items/red_envelope_rare"), new Item.Properties().rarity(Rarity.RARE))); + redEnvelopeEpic = registerItem("red_envelope_epic", () -> new CardLootItem(new ResourceLocation(Valoria.ID, "items/red_envelope_epic"), new Item.Properties().rarity(Rarity.EPIC))); minersBag = registerItem("miners_bag", () -> new TreasureBag(new ResourceLocation(Valoria.ID, "items/miners_bag"), new Item.Properties().rarity(Rarity.EPIC))); gemBag = registerItem("gem_bag", () -> new TreasureBag(new ResourceLocation(Valoria.ID, "items/gem_bag"), new Item.Properties().rarity(Rarity.EPIC))); necromancerTreasureBag = registerItem("necromancer_treasure_bag", () -> new TreasureBag(new ResourceLocation(Valoria.ID, "items/necromancer_treasure_bag"), new Item.Properties().rarity(Rarity.EPIC))); @@ -399,11 +404,20 @@ public void appendHoverText(@NotNull ItemStack stack, Level world, @NotNull List holidayPickaxe = registerItem("holiday_pickaxe", () -> new ValoriaPickaxe(ItemTierRegistry.HOLIDAY, -1, -3f, new Item.Properties())); holidayAxe = registerItem("holiday_axe", () -> new AxeItem(ItemTierRegistry.HOLIDAY, 1, -3f, new Item.Properties())); + // lunar + lunarSword = registerItem("lunar_sword", () -> new SwordItem(ItemTierRegistry.LUNAR, 12, -2f, new Item.Properties().rarity(RarityRegistry.LUNAR))); + lunarKatana = registerItem("lunar_katana", () -> new KatanaItem(ItemTierRegistry.LUNAR, ToolStats.katana.damage, ToolStats.katana.speed, new Item.Properties().rarity(RarityRegistry.LUNAR))); + lunarScythe = registerItem("lunar_scythe",() -> new ScytheItem.Builder(12, -3.0f, new Properties().rarity(RarityRegistry.LUNAR)).setTier(ItemTierRegistry.LUNAR).build()); + lunarSpear = registerItem("lunar_spear", () -> new SpearItem(ItemTierRegistry.LUNAR, ToolStats.spear.damage, ToolStats.spear.speed, new Item.Properties().rarity(RarityRegistry.LUNAR))); + lunarPickaxe = registerItem("lunar_pickaxe", () -> new ValoriaPickaxe(ItemTierRegistry.LUNAR, ToolStats.pickaxe.damage, ToolStats.pickaxe.speed, new Item.Properties().rarity(RarityRegistry.LUNAR))); + lunarAxe = registerItem("lunar_axe", () -> new AxeItem(ItemTierRegistry.LUNAR, ToolStats.axe.damage, ToolStats.axe.speed, new Item.Properties().rarity(RarityRegistry.LUNAR))); + lunarBow = registerItem("lunar_bow", () -> new ConfigurableBowItem(3, 1, new Item.Properties().stacksTo(1).rarity(RarityRegistry.LUNAR))); + // halloween candyCorn = registerItem("candy_corn", () -> new Item(new Item.Properties().rarity(RarityRegistry.HALLOWEEN).stacksTo(64).food(new FoodProperties.Builder().nutrition(1).saturationMod(0.2f).build()))); pumpkinBomb = registerItem("pumpkin_bomb", () -> new ThrowableBombItem(new Item.Properties().rarity(RarityRegistry.HALLOWEEN).stacksTo(16))); wraithKatana = registerItem("wraith_katana", () -> new KatanaItem.Builder(3, -2.2f, new Item.Properties().rarity(RarityRegistry.HALLOWEEN)).setTier(ItemTierRegistry.HALLOWEEN).setDashDistance(1.6f).setDashSound(SoundsRegistry.HALLOWEEN_SLICE.get()).removeLargeModelCheck().setOverlay(new ResourceLocation(Valoria.ID, "textures/gui/overlay/roots.png")).usePacket(Pal.mandarin.toJava()).build()); - reaperScythe = registerItem("reaper_scythe", () -> new ScytheItem.Builder(9, -3.0f, new Properties().fireResistant().rarity(RarityRegistry.HALLOWEEN)).setEffects(0.5f, new MobEffectInstance(MobEffects.DARKNESS, 90, 0)).setAttackSound(SoundsRegistry.HALLOWEEN_SLICE.get()).setTier(ItemTierRegistry.HALLOWEEN).build()); + reaperScythe = registerItem("reaper_scythe", () -> new ScytheItem.Builder(9, -3.0f, new Properties().rarity(RarityRegistry.HALLOWEEN)).setEffects(0.5f, new MobEffectInstance(MobEffects.DARKNESS, 90, 0)).setAttackSound(SoundsRegistry.HALLOWEEN_SLICE.get()).setTier(ItemTierRegistry.HALLOWEEN).build()); dreadAxe = registerItem("dread_axe", () -> new AxeItem(ItemTierRegistry.HALLOWEEN, 6.5f, -2.8f, new Item.Properties().rarity(RarityRegistry.HALLOWEEN))); soulReaver = registerItem("soul_reaver", () -> new HitEffectItem(ItemTierRegistry.HALLOWEEN, 4, -2.8f, new Item.Properties().rarity(RarityRegistry.HALLOWEEN), 0.25f, new MobEffectInstance(MobEffects.DARKNESS, 40, 0), new MobEffectInstance(MobEffects.WEAKNESS, 60, 1))); spectralBladeThrown = registerItem("spectral_blade_thrown"); // for rendering diff --git a/src/main/java/com/idark/valoria/registries/RarityRegistry.java b/src/main/java/com/idark/valoria/registries/RarityRegistry.java index 0a0c9f948..1ca6936cc 100644 --- a/src/main/java/com/idark/valoria/registries/RarityRegistry.java +++ b/src/main/java/com/idark/valoria/registries/RarityRegistry.java @@ -8,6 +8,7 @@ public class RarityRegistry{ public static final Rarity HALLOWEEN = Rarity.create("halloween", apply(halloween)), + LUNAR = Rarity.create("lunar", apply(lunar)), BLOODY = Rarity.create("bloody", apply(bloody)), MARSH = Rarity.create("marsh", apply(marsh)), SPIDER = Rarity.create("spider", apply(spider)), diff --git a/src/main/java/com/idark/valoria/registries/SoundsRegistry.java b/src/main/java/com/idark/valoria/registries/SoundsRegistry.java index 9a79210e1..41d4384e7 100644 --- a/src/main/java/com/idark/valoria/registries/SoundsRegistry.java +++ b/src/main/java/com/idark/valoria/registries/SoundsRegistry.java @@ -19,6 +19,13 @@ public class SoundsRegistry{ public static final RegistryObject BLOOD_POLE = registerSound("music.valoria.blood_pole"); public static final RegistryObject CARRION = registerSound("music.valoria.carrion"); + public static final RegistryObject VALORIA_ADDITIONS = registerSound("ambient.valoria.additions"); + public static final RegistryObject VALORIA_MOOD = registerSound("ambient.valoria.mood"); + public static final RegistryObject CRIMSON_MOOD = registerSound("ambient.crimson.mood"); + public static final RegistryObject SHADE_FOREST_ADDITIONS = registerSound("ambient.shade_forest.additions"); + public static final RegistryObject SHADE_FOREST_MOOD = registerSound("ambient.shade_forest.mood"); + //public static final RegistryObject HILLS_ADDITIONS = registerSound("ambient.hills.additions"); + public static final RegistryObject UI_CLICK = registerSound("ui.click"); public static final RegistryObject UI_ALCHEMY_BREW = registerSound("ui.alchemy.brew"); public static final RegistryObject UI_ALCHEMY_NETHER_UPGRADE = registerSound("ui.alchemy.nether_upgrade"); diff --git a/src/main/java/com/idark/valoria/registries/TagsRegistry.java b/src/main/java/com/idark/valoria/registries/TagsRegistry.java index e8387dba7..9cd79e8f4 100644 --- a/src/main/java/com/idark/valoria/registries/TagsRegistry.java +++ b/src/main/java/com/idark/valoria/registries/TagsRegistry.java @@ -58,6 +58,7 @@ public static TagKey dungeon(final ResourceLocation name){ public static final TagKey ALLOWED_TO_BREAK = block(new ResourceLocation(Valoria.ID, "allowed_to_break")); public static final TagKey NEEDS_HALLOWEEN_TOOL = block(new ResourceLocation(Valoria.ID, "needs_halloween_tool")); + public static final TagKey NEEDS_LUNAR_TOOL = block(new ResourceLocation(Valoria.ID, "needs_lunar_tool")); public static final TagKey NEEDS_HOLIDAY_TOOL = block(new ResourceLocation(Valoria.ID, "needs_holiday_tool")); public static final TagKey NEEDS_NONE_TOOL = block(new ResourceLocation(Valoria.ID, "needs_none_tool")); public static final TagKey NEEDS_BLAZEREAP_TOOL = block(new ResourceLocation(Valoria.ID, "needs_blazereap_tool")); diff --git a/src/main/java/com/idark/valoria/registries/block/types/FireworkTubeBlock.java b/src/main/java/com/idark/valoria/registries/block/types/FireworkTubeBlock.java new file mode 100644 index 000000000..d46e48542 --- /dev/null +++ b/src/main/java/com/idark/valoria/registries/block/types/FireworkTubeBlock.java @@ -0,0 +1,71 @@ +package com.idark.valoria.registries.block.types; + +import net.minecraft.core.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.entity.projectile.*; +import net.minecraft.world.item.*; +import net.minecraft.world.item.context.*; +import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.*; +import net.minecraft.world.level.block.state.properties.*; +import net.minecraft.world.level.material.*; +import net.minecraft.world.phys.*; +import net.minecraft.world.phys.shapes.*; + +public class FireworkTubeBlock extends Block implements SimpleWaterloggedBlock{ + protected static final VoxelShape SHAPE = Block.box(2.0D, 2.0D, 2.0D, 14.0D, 14.0D, 14.0D); + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + + public FireworkTubeBlock(Properties pProperties){ + super(pProperties); + this.registerDefaultState(this.stateDefinition.any().setValue(WATERLOGGED, false)); + } + + public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit){ + pLevel.addFreshEntity(new FireworkRocketEntity(pLevel, pPos.getX() + 0.5f, pPos.above().getY(), pPos.getZ() + 0.5f, ItemStack.EMPTY)); + return InteractionResult.SUCCESS; + } + + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context){ + return SHAPE; + } + + public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos){ + return Block.canSupportCenter(pLevel, pPos.below(), Direction.UP); + } + + public BlockState getStateForPlacement(BlockPlaceContext pContext){ + FluidState fluidstate = pContext.getLevel().getFluidState(pContext.getClickedPos()); + boolean flag = fluidstate.getType() == Fluids.WATER; + return super.getStateForPlacement(pContext).setValue(WATERLOGGED, Boolean.valueOf(flag)); + } + + public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, LevelAccessor pLevel, BlockPos pPos, BlockPos pNeighborPos){ + if(pState.getValue(WATERLOGGED)){ + pLevel.scheduleTick(pPos, Fluids.WATER, Fluids.WATER.getTickDelay(pLevel)); + } + + return super.updateShape(pState, pDirection, pNeighborState, pLevel, pPos, pNeighborPos); + } + + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder){ + pBuilder.add(WATERLOGGED); + } + + public boolean placeLiquid(LevelAccessor pLevel, BlockPos pPos, BlockState pState, FluidState pFluidState){ + if(!pState.getValue(WATERLOGGED) && pFluidState.getType() == Fluids.WATER){ + BlockState blockstate = pState.setValue(WATERLOGGED, true); + pLevel.setBlock(pPos, blockstate, 3); + pLevel.scheduleTick(pPos, pFluidState.getType(), pFluidState.getType().getTickDelay(pLevel)); + return true; + }else{ + return false; + } + } + + public FluidState getFluidState(BlockState pState){ + return pState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(pState); + } +} diff --git a/src/main/java/com/idark/valoria/registries/entity/ai/attacks/EntMeleeSlapAttack.java b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/EntMeleeSlapAttack.java new file mode 100644 index 000000000..b4e231ba0 --- /dev/null +++ b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/EntMeleeSlapAttack.java @@ -0,0 +1,47 @@ +package com.idark.valoria.registries.entity.ai.attacks; + +import com.idark.valoria.*; +import net.minecraft.resources.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.*; +import pro.komaru.tridot.common.registry.entity.system.*; +import pro.komaru.tridot.common.registry.entity.system.generic.*; + +public class EntMeleeSlapAttack extends TridotMeleeAttack{ + public EntMeleeSlapAttack(PathfinderMob mob, float speedMod, float range, int attackDelay, int attackDuration, int cooldown){ + super(mob, speedMod, range, attackDelay, attackDuration, cooldown); + } + + @Override + public ResourceLocation getId(){ + return Valoria.loc("ent_melee_slap_attack"); + } + + @Override + public void start(AttackSystemMob systemMob){ + mob.setAggressive(true); + mob.level().broadcastEntityEvent(mob, (byte)62); + + this.ticksUntilNextPathRecalc = 0; + this.mob.getNavigation().moveTo(mob.getTarget(), speedModifier); + storeTargetPosition(); + } + + @Override + public void performAttack(){ + super.performAttack(); + LivingEntity target = mob.getTarget(); + if (target != null && target.isAlive()){ + float f = (float)mob.getAttributeValue(Attributes.ATTACK_DAMAGE); + float f1 = (int)f > 0 ? f / 2.0F + (float)mob.level().random.nextInt((int)f) : f; + + boolean flag = target.hurt(mob.damageSources().mobAttack(mob), f1); + if(flag){ + double d0 = target.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE); + double d1 = Math.max(0.0D, 1.0D - d0); + target.setDeltaMovement(target.getDeltaMovement().add(0.0D, (double)0.2F * d1, 0.0D)); + mob.doEnchantDamageEffects(mob, target); + } + } + } +} diff --git a/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemGroundPunchAttack.java b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemGroundPunchAttack.java index 69462cd80..f9bde660f 100644 --- a/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemGroundPunchAttack.java +++ b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemGroundPunchAttack.java @@ -10,8 +10,10 @@ import net.minecraft.world.item.enchantment.*; import net.minecraft.world.phys.*; import pro.komaru.tridot.api.*; +import pro.komaru.tridot.client.render.screenshake.*; import pro.komaru.tridot.common.registry.entity.system.*; import pro.komaru.tridot.common.registry.entity.system.generic.*; +import pro.komaru.tridot.util.comps.phys.*; import java.util.*; @@ -47,6 +49,7 @@ public void start(AttackSystemMob systemMob){ public void performAttack(){ Vec3 vec3 = new Vec3(mob.getX(), mob.getY(), mob.getZ()); List entities = mob.level().getNearbyEntities(LivingEntity.class, this.targeting, mob, mob.getBoundingBox().inflate(range)); + ScreenshakeHandler.add(new PositionedScreenshakeInstance(5, Pos3.init((float)vec3.x, (float)vec3.y, (float)vec3.z), 0, 15)); for(LivingEntity entity : entities){ double distance = Math.sqrt(entity.distanceToSqr(vec3)) / range; double dX = entity.getX() - vec3.x; diff --git a/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemStompAttack.java b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemStompAttack.java index 61073c1d6..e4ffdcb81 100644 --- a/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemStompAttack.java +++ b/src/main/java/com/idark/valoria/registries/entity/ai/attacks/GolemStompAttack.java @@ -10,7 +10,9 @@ import net.minecraft.world.item.enchantment.*; import net.minecraft.world.phys.*; import pro.komaru.tridot.api.*; +import pro.komaru.tridot.client.render.screenshake.*; import pro.komaru.tridot.common.registry.entity.system.*; +import pro.komaru.tridot.util.comps.phys.*; import java.util.*; @@ -61,6 +63,7 @@ public boolean canUse(LivingEntity target){ public void performAttack(){ Vec3 vec3 = new Vec3(mob.getX(), mob.getY(), mob.getZ()); List entities = mob.level().getNearbyEntities(LivingEntity.class, this.targeting, mob, mob.getBoundingBox().inflate(range)); + ScreenshakeHandler.add(new PositionedScreenshakeInstance(5, Pos3.init((float)vec3.x, (float)vec3.y, (float)vec3.z), 0, 10)); for(LivingEntity entity : entities){ double distance = Math.sqrt(entity.distanceToSqr(vec3)) / range; double dX = entity.getX() - vec3.x; diff --git a/src/main/java/com/idark/valoria/registries/entity/living/boss/dryador/DryadorEntity.java b/src/main/java/com/idark/valoria/registries/entity/living/boss/dryador/DryadorEntity.java index c091d74f7..cf555b636 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/boss/dryador/DryadorEntity.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/boss/dryador/DryadorEntity.java @@ -1,6 +1,7 @@ package com.idark.valoria.registries.entity.living.boss.dryador; import com.idark.valoria.*; +import com.idark.valoria.core.interfaces.*; import com.idark.valoria.registries.*; import com.idark.valoria.registries.entity.*; import com.idark.valoria.registries.entity.living.boss.*; @@ -26,6 +27,7 @@ import net.minecraft.world.entity.item.*; import net.minecraft.world.entity.monster.*; import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.*; @@ -34,6 +36,11 @@ import org.joml.*; import pro.komaru.tridot.api.entity.*; import pro.komaru.tridot.api.render.bossbars.*; +import pro.komaru.tridot.client.gfx.*; +import pro.komaru.tridot.client.gfx.particle.*; +import pro.komaru.tridot.client.gfx.particle.data.*; +import pro.komaru.tridot.client.gfx.particle.options.*; +import pro.komaru.tridot.client.render.*; import pro.komaru.tridot.client.render.screenshake.*; import pro.komaru.tridot.common.registry.entity.*; import pro.komaru.tridot.util.*; @@ -42,7 +49,7 @@ import java.lang.Math; import java.util.*; -public class DryadorEntity extends AbstractBoss implements RangedAttackMob{ +public class DryadorEntity extends AbstractBoss implements RangedAttackMob, IEffectiveWeaponEntity{ public final ServerBossBar bossEvent = new ServerBossBar(this.getDisplayName(), Valoria.loc("basic")).setTexture(Valoria.loc("textures/gui/bossbars/dryador.png")).setDarkenScreen(true); private int spawnTime = 0; public final AnimationState idleAnimationState = new AnimationState(); @@ -63,18 +70,36 @@ public DryadorEntity(EntityType pEntityType, Level pLev this.xpReward = 100; } + @Override + public float scaleFactor(){ + return 1.25f; + } + + @Override + public TagKey getEffective(){ + return ItemTags.AXES; + } + @Override public void die(DamageSource pDamageSource){ bossEvent.setAboutToDie(true); super.die(pDamageSource); } - public boolean isBusy(){ - return phaseTransitionAnimationState.isPlaying - || summonAnimationState.isPlaying - || rangedAttackAnimationState.isPlaying - || stompAnimationState.isPlaying - || meleeAttackAnimationState.isPlaying; + @Override + public void spawnHitParticles(Level level, BlockPos blockPos){ + BlockState state = Blocks.OAK_LOG.defaultBlockState(); + var opt = new BlockParticleOptions(TridotParticles.BLOCK.get(), state); + ParticleBuilder.create(opt) + .setRenderType(TridotRenderTypes.TRANSLUCENT_BLOCK_PARTICLE) + .setSpinData(SpinParticleData.create().randomOffset().randomSpin(0.5f).build()) + .setScaleData(GenericParticleData.create(0.15f, 0.02f, 0).build()) + .setSpriteData(SpriteParticleData.CRUMBS_RANDOM) + .setLifetime(30) + .randomVelocity(0.35, 0.65, 0.35) + .randomOffset(0.125, 0.125) + .setGravity(0.75f) + .repeat(level, blockPos.getX() + 0.5f, blockPos.getY() + 1, blockPos.getZ() + 0.5f, 12); } public void handleEntityEvent(byte pId){ diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/AbstractElementalGolem.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/AbstractElementalGolem.java index 4d7672e1c..f45c0fb48 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/AbstractElementalGolem.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/AbstractElementalGolem.java @@ -1,11 +1,13 @@ package com.idark.valoria.registries.entity.living.elemental; +import com.idark.valoria.core.interfaces.*; import com.idark.valoria.registries.*; import net.minecraft.core.*; import net.minecraft.nbt.*; import net.minecraft.network.syncher.*; import net.minecraft.server.level.*; import net.minecraft.sounds.*; +import net.minecraft.tags.*; import net.minecraft.util.*; import net.minecraft.util.valueproviders.*; import net.minecraft.world.damagesource.*; @@ -15,6 +17,7 @@ import net.minecraft.world.entity.ai.goal.target.*; import net.minecraft.world.entity.monster.*; import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.*; @@ -28,7 +31,7 @@ import java.util.*; -public class AbstractElementalGolem extends PathfinderMob implements NeutralMob, Enemy, AttackSystemMob{ +public class AbstractElementalGolem extends PathfinderMob implements NeutralMob, Enemy, AttackSystemMob, IEffectiveWeaponEntity{ public final AttackSelector selector = new AttackSelector(); private AttackInstance currentAttack; @@ -56,6 +59,11 @@ public void tick(){ } } + @Override + public TagKey getEffective(){ + return ItemTags.PICKAXES; + } + public void aiStep(){ this.tickCooldowns(); this.updateSwingTime(); @@ -94,6 +102,22 @@ protected SoundEvent getDeathSound(){ return SoundsRegistry.ELEMENTAL_GOLEM_DEATH.get(); } + @Override + public void spawnHitParticles(Level level, BlockPos blockPos){ + BlockState state = Blocks.STONE.defaultBlockState(); + var opt = new BlockParticleOptions(TridotParticles.BLOCK.get(), state); + ParticleBuilder.create(opt) + .setRenderType(TridotRenderTypes.TRANSLUCENT_BLOCK_PARTICLE) + .setSpinData(SpinParticleData.create().randomOffset().randomSpin(0.5f).build()) + .setScaleData(GenericParticleData.create(0.15f, 0.02f, 0).build()) + .setSpriteData(SpriteParticleData.CRUMBS_RANDOM) + .setLifetime(30) + .randomVelocity(0.35, 0.65, 0.35) + .randomOffset(0.125, 0.125) + .setGravity(0.75f) + .repeat(level, blockPos.getX() + 0.5f, blockPos.getY() + 1, blockPos.getZ() + 0.5f, 12); + } + @Override public void handleEntityEvent(byte pId){ if(pId == 3) { @@ -114,6 +138,7 @@ public void handleEntityEvent(byte pId){ } else if(pId == 61){ this.stompAttackAnimationState.start(this.tickCount); + if(this.level().getBlockState(this.blockPosition().below()).isAir()) return; var opt = new BlockParticleOptions(TridotParticles.BLOCK.get(), this.level().getBlockState(this.blockPosition().below())); ParticleBuilder.create(opt) @@ -130,6 +155,8 @@ public void handleEntityEvent(byte pId){ this.attackSlapAnimationState.start(this.tickCount); }else if(pId == 64){ this.groundPunchAnimationState.start(this.tickCount); + + if(this.level().getBlockState(this.blockPosition().below()).isAir()) return; var opt = new BlockParticleOptions(TridotParticles.BLOCK.get(), this.level().getBlockState(this.blockPosition().below())); ParticleBuilder.create(opt) diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Devil.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Devil.java index 6e2811a4f..cd52d8bb1 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Devil.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Devil.java @@ -32,10 +32,8 @@ public class Devil extends AbstractDevil implements RangedAttackMob{ public final AnimationState idleAnimationState = new AnimationState(); public AnimationState throwAnimationState = new AnimationState(); - public AnimationState magicAnimationState = new AnimationState(); public int idleAnimationTimeout = 0; public int throwAnimationTimeout = 0; - public int magicAnimationTimeout = 0; public int hits = 0; public boolean ranged; public SkeletonMovement movement = new SkeletonMovement(this, 64); @@ -52,12 +50,6 @@ public void handleEntityEvent(byte pId){ this.throwAnimationState.start(this.tickCount); } - if(pId == 61 && magicAnimationTimeout <= 0){ - this.magicAnimationTimeout = 80; - this.idleAnimationState.stop(); - this.magicAnimationState.start(this.tickCount); - } - super.handleEntityEvent(pId); } @@ -115,7 +107,6 @@ private void setupAnimationStates(){ }else{ --this.throwAnimationTimeout; --this.idleAnimationTimeout; - //--this.magicAnimationTimeout; } } @@ -163,7 +154,6 @@ public SpawnGroupData finalizeSpawn(ServerLevelAccessor pLevel, DifficultyInstan protected void registerGoals(){ super.registerGoals(); this.goalSelector.addGoal(0, new MeleeAttackGoal(this, 1, false)); -// this.goalSelector.addGoal(0, new MagicAttackGoal(this, 1.0D)); this.goalSelector.addGoal(0, new ThrowSpearGoal(this, 1.0D, 12.0F)); this.goalSelector.addGoal(0, new ReasonableAvoidEntityGoal<>(this, Player.class, 16, 1.25, 2, isLowHP())); diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Ent.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Ent.java index e5fc06917..a9e541576 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Ent.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Ent.java @@ -1,5 +1,7 @@ package com.idark.valoria.registries.entity.living.elemental; +import com.idark.valoria.core.interfaces.*; +import com.idark.valoria.registries.entity.ai.attacks.*; import net.minecraft.core.*; import net.minecraft.nbt.*; import net.minecraft.network.syncher.*; @@ -15,21 +17,30 @@ import net.minecraft.world.entity.ai.goal.target.*; import net.minecraft.world.entity.monster.*; import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.*; import net.minecraft.world.level.pathfinder.*; import org.jetbrains.annotations.*; +import pro.komaru.tridot.client.gfx.*; +import pro.komaru.tridot.client.gfx.particle.*; +import pro.komaru.tridot.client.gfx.particle.data.*; +import pro.komaru.tridot.client.gfx.particle.options.*; +import pro.komaru.tridot.client.render.*; import pro.komaru.tridot.common.registry.entity.system.*; import pro.komaru.tridot.common.registry.entity.system.generic.*; import javax.annotation.Nullable; import java.util.*; -public class Ent extends PathfinderMob implements NeutralMob, Enemy, AttackSystemMob{ +public class Ent extends PathfinderMob implements NeutralMob, Enemy, AttackSystemMob, IEffectiveWeaponEntity{ private final AttackSelector selector = new AttackSelector(); private AttackInstance currentAttack; public final AnimationState idleAnimationState = new AnimationState(); public final AnimationState attackAnimationState = new AnimationState(); + public final AnimationState attack2AnimationState = new AnimationState(); public int idleAnimationTimeout = 0; @Nullable @@ -41,14 +52,33 @@ public Ent(EntityType pEntityType, Level pLevel){ super(pEntityType, pLevel); this.xpReward = 15; this.getNavigation().setCanFloat(true); - this.setPathfindingMalus(BlockPathTypes.UNPASSABLE_RAIL, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_OTHER, 8.0F); this.setPathfindingMalus(BlockPathTypes.POWDER_SNOW, 8.0F); this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); - this.selector.addAttack(new TridotMeleeAttack(this, 1, 3, 5, 25, 35)); + this.selector.addAttack(new TridotMeleeAttack(this, 1, 4, 0, 40, 70)); + this.selector.addAttack(new EntMeleeSlapAttack(this, 1, 2, 0, 20, 35)); + } + + @Override + public void spawnHitParticles(Level level, BlockPos blockPos){ + BlockState state = Blocks.OAK_LOG.defaultBlockState(); + var opt = new BlockParticleOptions(TridotParticles.BLOCK.get(), state); + ParticleBuilder.create(opt) + .setRenderType(TridotRenderTypes.TRANSLUCENT_BLOCK_PARTICLE) + .setSpinData(SpinParticleData.create().randomOffset().randomSpin(0.5f).build()) + .setScaleData(GenericParticleData.create(0.15f, 0.02f, 0).build()) + .setSpriteData(SpriteParticleData.CRUMBS_RANDOM) + .setLifetime(30) + .randomVelocity(0.35, 0.65, 0.35) + .randomOffset(0.125, 0.125) + .setGravity(0.75f) + .repeat(level, blockPos.getX() + 0.5f, blockPos.getY() + 1, blockPos.getZ() + 0.5f, 12); + } + + @Override + public TagKey getEffective(){ + return ItemTags.AXES; } public void tick(){ @@ -121,7 +151,9 @@ protected static boolean isBrightEnoughToSpawn(BlockAndTintGetter pLevel, BlockP public void handleEntityEvent(byte pId) { if (pId == 4) { this.attackAnimationState.start(this.tickCount); - } else { + } if (pId == 62){ + this.attack2AnimationState.start(this.tickCount); + }else { super.handleEntityEvent(pId); } } diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/NatureGolem.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/NatureGolem.java index 643732865..ef959a3f6 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/NatureGolem.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/NatureGolem.java @@ -30,7 +30,7 @@ public NatureGolem(EntityType type, Level pLev this.selector.addAttack(new GolemMeleeAttack(this, 1, 2, 0, 10, 20)); this.selector.addAttack(new GolemMeleeSlapAttack(this, 1, 2, 0, 10, 40)); this.selector.addAttack(new GolemStompAttack(this, 4, 2, 0, 20, 60)); - this.selector.addAttack(new GolemGroundPunchAttack(this, 1, 4, 0, 15, 120)); + this.selector.addAttack(new GolemGroundPunchAttack(this, 1, 4, 0, 20, 120)); } public NatureGolem(Level pLevel){ diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/RiverGolem.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/RiverGolem.java index a80a6f276..81893fa08 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/RiverGolem.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/RiverGolem.java @@ -18,7 +18,7 @@ public RiverGolem(EntityType type, Level pLeve this.selector.addAttack(new GolemMeleeAttack(this, 1, 2, 0, 10, 20)); this.selector.addAttack(new GolemMeleeSlapAttack(this, 1, 2, 0, 10, 40)); this.selector.addAttack(new GolemStompAttack(this, 4, 2, 0, 20, 60)); - this.selector.addAttack(new GolemGroundPunchAttack(this, 1, 4, 0, 15, 120)); + this.selector.addAttack(new GolemGroundPunchAttack(this, 1, 4, 0, 20, 120)); } public RiverGolem(Level pLevel){ diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Scavenger.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Scavenger.java index 6d9e1cd51..255f54f69 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/Scavenger.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/Scavenger.java @@ -19,8 +19,13 @@ import net.minecraft.world.level.pathfinder.*; import org.jetbrains.annotations.*; import pro.komaru.tridot.api.entity.*; +import pro.komaru.tridot.client.gfx.*; +import pro.komaru.tridot.client.gfx.particle.*; +import pro.komaru.tridot.client.gfx.particle.data.*; +import pro.komaru.tridot.client.gfx.particle.options.*; import pro.komaru.tridot.common.registry.entity.*; import pro.komaru.tridot.util.*; +import pro.komaru.tridot.util.math.*; import java.util.*; @@ -42,8 +47,11 @@ public class Scavenger extends MultiAttackMob implements NeutralMob{ public Scavenger(EntityType pEntityType, Level pLevel){ super(pEntityType, pLevel); this.setMaxUpStep(1.0F); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 16.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, -1.0F); + this.setPathfindingMalus(BlockPathTypes.LAVA, 8.0F); + this.setPathfindingMalus(BlockPathTypes.DAMAGE_OTHER, 8.0F); + this.setPathfindingMalus(BlockPathTypes.POWDER_SNOW, 8.0F); + this.xpReward = 5; } @@ -83,13 +91,13 @@ public void tick(){ this.idleDiggingAnimationState.stop(); this.idleAnimationState.stop(); this.angryAnimationState.stop(); - } else { + }else{ Player player = this.level().getNearestPlayer(this, 12d); - if(player != null && !player.isCreative() && !this.angryAnimationState.isStarted()) { + if(player != null && !player.isCreative() && !this.angryAnimationState.isStarted()){ this.angryAnimationState.start(this.tickCount); this.lookAt(player, 180, 360); this.getNavigation().stop(); - } else if((player == null || player.isCreative()) && this.angryAnimationState.isStarted()) { + }else if((player == null || player.isCreative()) && this.angryAnimationState.isStarted()){ this.angryAnimationState.stop(); } } @@ -186,7 +194,17 @@ public void handleEntityEvent(byte pId){ if(pId == 4){ this.angryAnimationState.stop(); this.attackAnimationState.start(this.tickCount); - } else { + }else if(pId == 64){ + var blockParticle = new BlockParticleOptions(TridotParticles.BLOCK.get(), this.level().getBlockState(this.blockPosition().below())); + + ParticleBuilder.create(blockParticle) + .setGravity(0.75f) + .setLifetime(15) + .setScaleData(GenericParticleData.create(0.35f, 0, 0).build()) + .setTransparencyData(GenericParticleData.create(1, 0, 0).setEasing(Interp.exp5Out).build()) + .randomVelocity(0.15f, 0.75f, 0.15f) + .repeat(this.level(), this.getX(), this.getY(), this.getZ(), 4); + }else{ super.handleEntityEvent(pId); } } @@ -209,18 +227,18 @@ public boolean doHurtTarget(Entity pEntity){ } protected void registerGoals(){ - this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 10.0F)); - this.goalSelector.addGoal(1, new AngryGoal(this)); + this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 12.0F)); + this.goalSelector.addGoal(0, new AngryGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(3, new ScavengerAttackGoal(this, 1)); - this.goalSelector.addGoal(5, new RandomStrollGoal(this, 0.8D)); + this.goalSelector.addGoal(1, new ScavengerAttackGoal(this, 1)); + this.goalSelector.addGoal(4, new RandomStrollGoal(this, 0.8D)); this.goalSelector.addGoal(6, new RandomLookAroundGoal(this)); - this.goalSelector.addGoal(0, new ReasonablePanicGoal(this, 1.45f)); - this.goalSelector.addGoal(0, new ReasonableAvoidEntityGoal<>(this, Player.class, 8, 1.25, 1.4, isLowHP())); this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, true)); this.goalSelector.addGoal(0, new AvoidEntityGoal<>(this, WickedScorpion.class, 6, 1.25, 1.4)); this.goalSelector.addGoal(0, new AvoidEntityGoal<>(this, ShadewoodSpider.class, 6, 1.25, 1.4)); + this.goalSelector.addGoal(0, new ReasonableAvoidEntityGoal<>(this, Player.class, 8, 1.25, 1.4, isLowHP())); + this.goalSelector.addGoal(0, new ReasonablePanicGoal(this, 1.45f)); this.targetSelector.addGoal(0, (new HurtByTargetGoal(this)).setAlertOthers()); } @@ -275,6 +293,7 @@ public boolean canUse() { public void start() { this.scavenger.setTarget(this.targetPlayer); this.scavenger.setPersistentAngerTarget(this.targetPlayer.getUUID()); + this.scavenger.getNavigation().stop(); } } @@ -312,12 +331,12 @@ public int getAttackInterval() { @Override public SoundEvent getPrepareSound() { return null; - } //todo + } @Override public SoundEvent getAttackSound() { return SoundEvents.PHANTOM_BITE; - } // todo + } @Override public AttackRegistry getAttack() { diff --git a/src/main/java/com/idark/valoria/registries/entity/living/elemental/WickedScorpion.java b/src/main/java/com/idark/valoria/registries/entity/living/elemental/WickedScorpion.java index 471ec65dd..cb47b9f3f 100644 --- a/src/main/java/com/idark/valoria/registries/entity/living/elemental/WickedScorpion.java +++ b/src/main/java/com/idark/valoria/registries/entity/living/elemental/WickedScorpion.java @@ -188,7 +188,7 @@ public void onPrepare(){ @Override public boolean canUse(){ - return super.canUse() && WickedScorpion.this.distanceToSqr(WickedScorpion.this.getTarget()) > 12.0D && isWithinAttackRange(WickedScorpion.this.getTarget(), 12); + return super.canUse() && WickedScorpion.this.distanceToSqr(WickedScorpion.this.getTarget()) > 12.0D && isWithinAttackRange(WickedScorpion.this.getTarget(), 12) && WickedScorpion.this.getTarget() instanceof Player; } @Override diff --git a/src/main/java/com/idark/valoria/registries/item/types/CardLootItem.java b/src/main/java/com/idark/valoria/registries/item/types/CardLootItem.java new file mode 100644 index 000000000..a8c633da8 --- /dev/null +++ b/src/main/java/com/idark/valoria/registries/item/types/CardLootItem.java @@ -0,0 +1,120 @@ +package com.idark.valoria.registries.item.types; + +import com.idark.valoria.*; +import com.idark.valoria.client.model.animations.*; +import com.idark.valoria.util.*; +import net.minecraft.*; +import net.minecraft.advancements.*; +import net.minecraft.network.chat.*; +import net.minecraft.resources.*; +import net.minecraft.server.level.*; +import net.minecraft.sounds.*; +import net.minecraft.stats.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.item.*; +import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; +import net.minecraftforge.api.distmarker.*; +import pro.komaru.tridot.api.*; +import pro.komaru.tridot.api.interfaces.*; +import pro.komaru.tridot.api.render.animation.*; +import pro.komaru.tridot.client.gfx.*; +import pro.komaru.tridot.client.gfx.particle.*; +import pro.komaru.tridot.client.gfx.particle.data.*; +import pro.komaru.tridot.client.gfx.text.*; +import pro.komaru.tridot.common.registry.item.types.*; + +import java.util.*; + +public class CardLootItem extends LootItem implements ICustomAnimationItem{ + public ItemAnimation animation = new CardOpeningAnimation(); + + public CardLootItem(ResourceLocation loot, Properties properties){ + super(loot, properties); + } + + public UseAnim getUseAnimation(ItemStack pStack){ + return UseAnim.CUSTOM; + } + + @OnlyIn(Dist.CLIENT) + @Override + public ItemAnimation getAnimation(ItemStack stack){ + return animation; + } + + @Override + public InteractionResultHolder use(Level worldIn, Player player, InteractionHand hand){ + ItemStack itemstack = player.getItemInHand(hand); + if(!player.isShiftKeyDown() && hand != InteractionHand.OFF_HAND){ + player.startUsingItem(hand); + return InteractionResultHolder.consume(itemstack); + } + + return InteractionResultHolder.consume(itemstack); + } + + public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity entityLiving){ + Player player = (Player)entityLiving; + if(player instanceof ServerPlayer serverPlayer){ + Vec3 playerPos = serverPlayer.position(); + serverPlayer.awardStat(Stats.ITEM_USED.get(this)); + CriteriaTriggers.CONSUME_ITEM.trigger(serverPlayer, stack); + if(!serverPlayer.isCreative()){ + stack.shrink(1); + } + + List generatedLoot = Utils.Items.createLoot(loot, Utils.Items.getGiftParameters((ServerLevel)level, playerPos, serverPlayer.getLuck(), serverPlayer)); + if(!generatedLoot.isEmpty()){ + MutableComponent message = Component.translatable("message.valoria.received").withStyle(ChatFormatting.GOLD); + for(int i = 0; i < generatedLoot.size(); i++){ + ItemStack item = generatedLoot.get(i); + message.append(Component.literal(" ")) + .append(item.getHoverName().copy().withStyle(ChatFormatting.WHITE)) + .append(Component.literal(" x" + item.getCount()).withStyle(ChatFormatting.YELLOW)); + + if(i < generatedLoot.size() - 1){ + message.append(Component.literal(",").withStyle(ChatFormatting.GRAY)); + } + } + + Utils.Items.giveLoot(serverPlayer, generatedLoot); + serverPlayer.displayClientMessage(message, true); + level.playSound(null, player.blockPosition(), getOpenSound(), SoundSource.PLAYERS, 1f, 1f); + return stack; + } + } + + if(level.isClientSide()) { + ParticleBuilder.create(TridotParticles.TINY_WISP) + .setColorData(ColorParticleData.create(Pal.strongRed).build()) + .randomVelocity(0.25f) + .setScaleData(GenericParticleData.create(0.75f, 0, 0).build()) + .setLifetime(25) + .setGravity(0.35f) + .randomOffset(1.25) + .repeat(level, player.getX(), player.getY(), player.getZ(), 16); + } + + return stack; + } + + public int getUseDuration(ItemStack stack){ + return 20; + } + + @Override + public SoundEvent getOpenSound(){ + return SoundEvents.EXPERIENCE_ORB_PICKUP; + } + + @Override + public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flags){ + super.appendHoverText(stack, world, list, flags); + list.add(1, Component.translatable("tooltip.valoria.treasure").withStyle(ChatFormatting.GRAY)); + list.add(2, Component.empty()); + list.add(3, Component.translatable("tooltip.valoria.rmb").withStyle(DotStyle.of().font(Valoria.FONT))); + } +} diff --git a/src/main/java/com/idark/valoria/registries/item/types/TreasureBag.java b/src/main/java/com/idark/valoria/registries/item/types/TreasureBag.java index 27987ee8a..e7910144b 100644 --- a/src/main/java/com/idark/valoria/registries/item/types/TreasureBag.java +++ b/src/main/java/com/idark/valoria/registries/item/types/TreasureBag.java @@ -5,9 +5,14 @@ import net.minecraft.*; import net.minecraft.network.chat.*; import net.minecraft.resources.*; +import net.minecraft.server.level.*; import net.minecraft.sounds.*; +import net.minecraft.world.*; +import net.minecraft.world.entity.player.*; import net.minecraft.world.item.*; import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; +import pro.komaru.tridot.api.*; import pro.komaru.tridot.client.gfx.text.*; import pro.komaru.tridot.common.registry.item.types.*; @@ -23,6 +28,36 @@ public SoundEvent getOpenSound(){ return SoundsRegistry.BAG_OPEN.get(); } + @Override + public InteractionResultHolder use(Level worldIn, Player player, InteractionHand hand){ + ItemStack heldStack = player.getItemInHand(hand); + worldIn.playSound(null, player.blockPosition(), getOpenSound(), SoundSource.PLAYERS, 1f, 1f); + + if(player instanceof ServerPlayer serverPlayer){ + Vec3 playerPos = serverPlayer.position(); + List generatedLoot = Utils.Items.createLoot(loot, Utils.Items.getGiftParameters((ServerLevel)worldIn, playerPos, serverPlayer.getLuck(), serverPlayer)); + if(!generatedLoot.isEmpty()){ + MutableComponent message = Component.translatable("message.valoria.received").withStyle(ChatFormatting.GOLD); + for(int i = 0; i < generatedLoot.size(); i++){ + ItemStack item = generatedLoot.get(i); + message.append(Component.literal(" ")) + .append(item.getHoverName().copy().withStyle(ChatFormatting.WHITE)) + .append(Component.literal(" x" + item.getCount()).withStyle(ChatFormatting.YELLOW)); + + if(i < generatedLoot.size() - 1){ + message.append(Component.literal(",").withStyle(ChatFormatting.GRAY)); + } + } + + Utils.Items.giveLoot(serverPlayer, generatedLoot); + serverPlayer.displayClientMessage(message, true); + return InteractionResultHolder.consume(heldStack); + } + } + + return InteractionResultHolder.consume(heldStack); + } + @Override public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flags){ super.appendHoverText(stack, world, list, flags); diff --git a/src/main/java/com/idark/valoria/registries/level/events/NihilityEvent.java b/src/main/java/com/idark/valoria/registries/level/events/NihilityEvent.java index 2f0fdbcd1..934e7cbe3 100644 --- a/src/main/java/com/idark/valoria/registries/level/events/NihilityEvent.java +++ b/src/main/java/com/idark/valoria/registries/level/events/NihilityEvent.java @@ -1,24 +1,35 @@ package com.idark.valoria.registries.level.events; +import com.idark.valoria.*; import com.idark.valoria.core.capability.*; +import com.idark.valoria.core.config.*; import com.idark.valoria.registries.*; import com.idark.valoria.registries.level.*; +import net.minecraft.core.*; +import net.minecraft.resources.*; +import net.minecraft.server.*; +import net.minecraft.server.level.*; +import net.minecraft.sounds.*; import net.minecraft.world.effect.*; import net.minecraft.world.entity.player.*; +import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; import net.minecraftforge.event.TickEvent.*; import pro.komaru.tridot.util.*; +import java.util.*; + public class NihilityEvent{ public static float damagingLevel = 0.5f; public static float criticalLevel = 0.75f; - public static void tick(PlayerTickEvent event, INihilityLevel nihilityLevel, Player player){ + public static void tick(PlayerTickEvent event, INihilityLevel nihilityLevel, ServerPlayer player){ float max = nihilityLevel.getMaxAmount(player); float amount = nihilityLevel.getAmount(); if(player.level().dimension() == LevelGen.VALORIA_KEY){ valoriaTick(nihilityLevel, player); }else{ - if(player.tickCount % 120 == 0 && amount > 0){ + if(player.tickCount % ServerConfig.NIHILITY_DECAY_INTERVAL.get() * 20 == 0 && amount > 0){ nihilityLevel.decrease(player, Tmp.rnd.nextInt(1, 5)); } } @@ -26,14 +37,59 @@ public static void tick(PlayerTickEvent event, INihilityLevel nihilityLevel, Pla if(isDamagingLevel(player, amount, max)){ float ratio = amount / max; boolean flag = ratio >= damagingLevel; - if(flag){ - int segments = (int)((ratio - damagingLevel) / 0.1f); - float damage = 1 + segments * 2; + int segments = (int)((ratio - damagingLevel) / 0.1f); + float damage = (float)(1 + segments * ServerConfig.NIHILITY_DAMAGE_MULTIPLIER.get()); + + if(ratio >= 0.95f) { + Valoria.LOGGER.debug(ServerConfig.MAX_NIHILITY_ACTION.get().name()); + switch(ServerConfig.MAX_NIHILITY_ACTION.get()) { + case DAMAGE -> { + player.hurt(DamageSourceRegistry.voidHarm(player.level()), damage); + break; + } + case TELEPORT -> { + MinecraftServer server = player.getServer(); + if(server != null){ + ResourceKey respawnDim = player.getRespawnDimension(); + ServerLevel targetLevel = server.getLevel(respawnDim); + if(targetLevel != null){ + Optional respawnPos = Optional.empty(); + if(player.getRespawnPosition() != null){ + respawnPos = Player.findRespawnPositionAndUseSpawnBlock( + targetLevel, player.getRespawnPosition(), player.getRespawnAngle(), player.isRespawnForced(), true); + } + + Vec3 target = respawnPos.orElseGet(() -> { + BlockPos worldSpawn = targetLevel.getSharedSpawnPos(); + return new Vec3(worldSpawn.getX(), worldSpawn.getY(), worldSpawn.getZ()); + }); + + player.teleportTo(targetLevel, target.x, target.y, target.z, player.getYRot(), player.getXRot()); + nihilityLevel.setAmount(0); + } + } + break; + } + + default -> player.kill(); + } + } else if(flag){ player.hurt(DamageSourceRegistry.voidHarm(player.level()), damage); } - if(amount > max * criticalLevel && !player.hasEffect(MobEffects.BLINDNESS)){ - player.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 120, 0)); + boolean criticalFlag = amount > max * criticalLevel; + if(criticalFlag){ + if(Tmp.rnd.chance(0.05f)){ + player.level().playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.WARDEN_HEARTBEAT, net.minecraft.sounds.SoundSource.PLAYERS, + 1.0f, 0.8f); + } + + if(ServerConfig.CRITICAL_NIHILITY_BLINDNESS.get()){ + if(!player.hasEffect(MobEffects.BLINDNESS)){ + player.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 120, 0)); + } + } } } } diff --git a/src/main/java/com/idark/valoria/util/Styles.java b/src/main/java/com/idark/valoria/util/Styles.java index 03e11477d..42806cb6e 100644 --- a/src/main/java/com/idark/valoria/util/Styles.java +++ b/src/main/java/com/idark/valoria/util/Styles.java @@ -26,6 +26,7 @@ public static DotStyle create(Col color){ public static DotStyle ethereal = create(Pal.ethereal).effects(GlintFX.of(1f)); public static DotStyle nihility = create(Pal.softMagenta).effects(WaveFX.of(0.25f, 0.1f)); public static DotStyle halloween = create(Pal.mandarin).effects(WaveFX.of(0.25f)); + public static DotStyle lunar = create(Pal.strongRed).effects(WaveFX.of(0.25f)); public static DotStyle phantasm = create(Pal.softBlue).effects(PulseAlphaFX.of(0.75f)); public static DotStyle arcaneGold = create(Pal.arcaneGold); public static DotStyle spider = create(Pal.crystalBlue).effects(WaveFX.of(0.15f, 0.1f), AdvanceFX.of(0.15f)); diff --git a/src/main/resources/assets/valoria/blockstates/firework_tube.json b/src/main/resources/assets/valoria/blockstates/firework_tube.json new file mode 100644 index 000000000..00917cfec --- /dev/null +++ b/src/main/resources/assets/valoria/blockstates/firework_tube.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "valoria:block/firework_tube" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/en_us.json b/src/main/resources/assets/valoria/lang/en_us.json index af219a456..5f14a7006 100644 --- a/src/main/resources/assets/valoria/lang/en_us.json +++ b/src/main/resources/assets/valoria/lang/en_us.json @@ -425,6 +425,42 @@ "block.valoria.suspicious_tombstone": "Suspicious Tombstone", "block.valoria.tainted_roots": "Tainted Roots", "block.valoria.tea_cup": "Cup Of Tea", + + "block.valoria.ash": "Ash", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_wall": "Ash Wall", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", + "block.valoria.firework_tube": "Firework Tube", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.lunar_sword": "Lunar Sword", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "block.valoria.tomb": "Tomb", "block.valoria.tombstone": "Tombstone", "block.valoria.tombstone_bricks": "Tombstone Bricks", @@ -519,6 +555,7 @@ "config.jade.plugin_valoria.jewelry": "Jewelry", "config.jade.plugin_valoria.keg": "Keg", "config.jade.plugin_valoria.key": "Key", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.manipulator": "Manipulator", "death.attack.bleeding": "%1$s lost all his blood", "death.attack.void": "%1$s was eaten by the void", @@ -1294,6 +1331,7 @@ "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "Necromancer", "valoria.jade.openable_with": "Openable with:", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.progress": "Progress:", "tooltip.valoria.used_on": "Used on - %s", "tooltip.valoria.boss_summon_fail": "Not enough space, needed area %s", @@ -1360,5 +1398,7 @@ "tooltip.valoria.stage.fresh": "Fresh", "tooltip.valoria.stage.stale": "Stale", "tooltip.valoria.timed": "for %s", - "tooltip.valoria.stage.rotting": "Rotting" + "tooltip.valoria.stage.rotting": "Rotting", + "message.valoria.received": "Received:", + "message.valoria.empty": "Nothing inside..." } diff --git a/src/main/resources/assets/valoria/lang/fr_fr.json b/src/main/resources/assets/valoria/lang/fr_fr.json index 28f6e9e8d..4cabd3aa9 100644 --- a/src/main/resources/assets/valoria/lang/fr_fr.json +++ b/src/main/resources/assets/valoria/lang/fr_fr.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "Escaliers de Pierre Ancienne", "block.valoria.ancient_stone_wall": "Mur de Pierre Ancienne", "block.valoria.aquarius_block": "Bloc Aquarius", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "Bloc du Néant Éveillé", "block.valoria.beer_cup": "Tasse de Bière", "block.valoria.black_gold_block": "Black Gold Block", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "Pierre d'oeil", "block.valoria.falseflower": "Fausse Fleur", "block.valoria.falseflower_small": "Petite Fausse Fleur", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "Bloc de Chair", "block.valoria.flesh_cyst": "Kyste de Chair", "block.valoria.flesh_remains": "Restes de Chair", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "Dalle de Pierre Ancienne Polie", "block.valoria.polished_ancient_stone_stairs": "Escaliers de Pierre Ancienne Polis", "block.valoria.polished_ancient_stone_wall": "Mur de Pierre Ancienne Polie", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "Schiste Reconstitué Poli", "block.valoria.polished_cobbled_shale_slab": "Dalle de Schiste Reconstitué Poli", "block.valoria.polished_cobbled_shale_stairs": "Escaliers de Schiste Reconstitué Polis", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "Panneau en Bois d'Ombre", "block.valoria.shade_trapdoor": "Trappe en Bois d'Ombre", "block.valoria.shade_wood": "Bois d'Ombre", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "Soul Infuser", "block.valoria.soul_shard_block": "Bloc de Fragment d'Âme", "block.valoria.soulflower": "Soulflower", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "Page retirée du joueur %s", "commands.valoria.page.unknown": "Page inconnue", "config.jade.plugin_valoria.crusher": "Broyeur", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "Bijoux", "config.jade.plugin_valoria.keg": "Fût", "config.jade.plugin_valoria.key": "Clé", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "Lance Éthérée", "item.valoria.ethereal_sword": "Épée Éthérée", "item.valoria.eye_chunk": "Morceau d'oeil", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "Oeuf d'Apparition de Sentinelle de Chair", "item.valoria.gaib_root": "Racine de Gaib", "item.valoria.gas_mask": "Gask Mask", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "Oeuf d'Apparition de Ver", "item.valoria.magmatic_gauntlet": "Gantelet Magmatique", "item.valoria.magmatic_vambrace": "Protège-bras Magmatique", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "Faucheuse Quantique", "item.valoria.raw_cobalt": "Cobalt Brut", "item.valoria.reaper_scythe": "Faux du Faucheur", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "Or Relique", "item.valoria.remains": "Restes", "item.valoria.respirator": "Respirator", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "Oeuf d'Apparition de Fléau", "item.valoria.shade_blossom_bandage": "Bandage de Fleur d'Ombre", "item.valoria.shade_blossom_leaf": "Feuille de Fleur d'Ombre", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "Bateau Shadewood", "item.valoria.shade_chest_boat": "Bateau Shadewood avec Coffre", "item.valoria.shadewood_spider_spawn_egg": "Oeuf d'Apparition d'Araignée Shadewood", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "Soul Infuser", "menu.valoria.tinkerer_workbench": "Tinkerer Workbench", "menu.valoria.upgrade": "Upgrade", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "IriDark", "painting.valoria.big_mountains.title": "Grandes Montagnes", "painting.valoria.cave0.author": "IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "Mise à Niveau Élémentaire", "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "Nécromancien", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "Ouvrable avec :", "valoria.jade.progress": "Progression :" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/pl_pl.json b/src/main/resources/assets/valoria/lang/pl_pl.json index 53868d8f4..95c79f672 100644 --- a/src/main/resources/assets/valoria/lang/pl_pl.json +++ b/src/main/resources/assets/valoria/lang/pl_pl.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "Schody starożytnego kamienia", "block.valoria.ancient_stone_wall": "Mur starożytnego kamienia", "block.valoria.aquarius_block": "Blok Aquarius", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "Przebudzony blok otchłani", "block.valoria.beer_cup": "Kubek piwa", "block.valoria.black_gold_block": "Black Gold Block", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "Kamień oczu", "block.valoria.falseflower": "Fałszywy kwiat", "block.valoria.falseflower_small": "Mały fałszywy kwiat", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "Blok mięsa", "block.valoria.flesh_cyst": "Mięsista cysta", "block.valoria.flesh_remains": "Flesh Remains", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "Płyta z wypolerowanego starożytnego kamienia", "block.valoria.polished_ancient_stone_stairs": "Schody z wypolerowanego starożytnego kamienia", "block.valoria.polished_ancient_stone_wall": "Mur z wypolerowanego starożytnego kamienia", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "Wypolerowany brukowany łupek", "block.valoria.polished_cobbled_shale_slab": "Płyta z wypolerowanego brukowanego łupka", "block.valoria.polished_cobbled_shale_stairs": "Schody z wypolerowanego brukowanego łupka", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "Znak ciemnego drewna", "block.valoria.shade_trapdoor": "Pułapka ciemnego drewna", "block.valoria.shade_wood": "Ciemne drewno", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "Soul Infuser", "block.valoria.soul_shard_block": "Blok włóczni duszy", "block.valoria.soulflower": "Kwiat duszy", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "Usunięto stronę z gracza %s", "commands.valoria.page.unknown": "Nieznana strona", "config.jade.plugin_valoria.crusher": "Rozdrabniacz", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "Biżuteria", "config.jade.plugin_valoria.keg": "Beczka", "config.jade.plugin_valoria.key": "Klucz", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "Eteryczna Włócznia", "item.valoria.ethereal_sword": "Eteryczny Miecz", "item.valoria.eye_chunk": "Kawałek Oka", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "Jajo Strażnika Ciała", "item.valoria.gaib_root": "Korzeń Gaiba", "item.valoria.gas_mask": "Gask Mask", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "Jajko larwy", "item.valoria.magmatic_gauntlet": "Magmatic Gauntlet", "item.valoria.magmatic_vambrace": "Magmatic Vambrace", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "Kwantowy żniwiarz", "item.valoria.raw_cobalt": "Surowy kobalt", "item.valoria.reaper_scythe": "Kosa żniwiarza", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "Złota relikwia", "item.valoria.remains": "Remains", "item.valoria.respirator": "Respirator", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "Jajko biczyka", "item.valoria.shade_blossom_bandage": "Bandaż Kwiatu Cienia", "item.valoria.shade_blossom_leaf": "Liść Kwiatu Cienia", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "Łódź z cieniodrewna", "item.valoria.shade_chest_boat": "Łódź z cieniodrewna z skrzynią", "item.valoria.shadewood_spider_spawn_egg": "Jajko pająka z cieniodrewna", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "Soul Infuser", "menu.valoria.tinkerer_workbench": "Tinkerer Workbench", "menu.valoria.upgrade": "Upgrade", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "IriDark", "painting.valoria.big_mountains.title": "Wielkie góry", "painting.valoria.cave0.author": "IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "Ulepszenie żywiołowe", "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "Nekromanta", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "Można otworzyć przy użyciu:", "valoria.jade.progress": "Postęp:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/ru_ru.json b/src/main/resources/assets/valoria/lang/ru_ru.json index d07620a43..051fd6811 100644 --- a/src/main/resources/assets/valoria/lang/ru_ru.json +++ b/src/main/resources/assets/valoria/lang/ru_ru.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "Ступеньки из древнего камня", "block.valoria.ancient_stone_wall": "Ограда из древнего камня", "block.valoria.aquarius_block": "Блок глубин", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "Блок небытия", "block.valoria.beer_cup": "Кружка с пивом", "block.valoria.black_gold_block": "Блок чёрного золота", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "Глазной камень", "block.valoria.falseflower": "Лжецвет", "block.valoria.falseflower_small": "Лжецветик", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "Блок плоти", "block.valoria.flesh_cyst": "Киста плоти", "block.valoria.flesh_remains": "Останки", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "Плита из полированного древнего камня", "block.valoria.polished_ancient_stone_stairs": "Ступеньки из полированного древнего камня", "block.valoria.polished_ancient_stone_wall": "Ограда из полированного древнего камня", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "Полированный шелевый булыжник", "block.valoria.polished_cobbled_shale_slab": "Полированная шелевая булыжная плита", "block.valoria.polished_cobbled_shale_stairs": "Полированные шелевые булыжные ступеньки", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "Табличка из тенедрева", "block.valoria.shade_trapdoor": "Люк из тенедрева", "block.valoria.shade_wood": "Тенедрево", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "Инфузер душ", "block.valoria.soul_shard_block": "Блок осколка души", "block.valoria.soulflower": "Душерост", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "Убрана страница у игрока %s", "commands.valoria.page.unknown": "Неизвестная страница", "config.jade.plugin_valoria.crusher": "Крушитель", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "Ювелирка", "config.jade.plugin_valoria.keg": "Бочонок", "config.jade.plugin_valoria.key": "Ключ", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "Эфировое копьё", "item.valoria.ethereal_sword": "Эфировый меч", "item.valoria.eye_chunk": "Кусок с глазами", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "Яйцо призыва стража плоти", "item.valoria.gaib_root": "Корни гайба", "item.valoria.gas_mask": "Противогаз", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "Яйцо призыва личинок", "item.valoria.magmatic_gauntlet": "Магматическая перчатка", "item.valoria.magmatic_vambrace": "Магматический наруч", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "Квантовый жнец", "item.valoria.raw_cobalt": "Рудный кобальт", "item.valoria.reaper_scythe": "Коса жнеца", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "Золотая реликвия", "item.valoria.remains": "Останки", "item.valoria.respirator": "Респиратор", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "Яйцо призыва бича", "item.valoria.shade_blossom_bandage": "Бинт с теневым соцветием", "item.valoria.shade_blossom_leaf": "Листок теневого соцветия", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "Тенедревесная лодка", "item.valoria.shade_chest_boat": "Тенедревесная лодка с сундуком", "item.valoria.shadewood_spider_spawn_egg": "Яйцо призыва тенедревесного паука", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "Инфузер душ", "menu.valoria.tinkerer_workbench": "Стол изобретателя", "menu.valoria.upgrade": "Upgrade", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "IriDark (iDark)", "painting.valoria.big_mountains.title": "Большие горы", "painting.valoria.cave0.author": "IriDark (iDark)", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "Элементальное улучшение", "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "Некромант", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "Открывается с помощью:", "valoria.jade.progress": "Прогресс:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/uk_ua.json b/src/main/resources/assets/valoria/lang/uk_ua.json index 8987a3ae7..2e94b57ec 100644 --- a/src/main/resources/assets/valoria/lang/uk_ua.json +++ b/src/main/resources/assets/valoria/lang/uk_ua.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "Стародавні кам'яні сходи", "block.valoria.ancient_stone_wall": "Стародавній кам'яний мур", "block.valoria.aquarius_block": "Акваріусовий блок", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "Пробуджений блок безодні", "block.valoria.beer_cup": "Дерев'яна кружка пива", "block.valoria.black_gold_block": "Black Gold Block", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "Камінь із очима", "block.valoria.falseflower": "Оманоцвіт", "block.valoria.falseflower_small": "Маленький оманоцвіт", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "Блок плоті", "block.valoria.flesh_cyst": "Кіста плоті", "block.valoria.flesh_remains": "Залишки", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "Полірована плита зі стародавнього каменю", "block.valoria.polished_ancient_stone_stairs": "Поліровані сходи зі стародавнього каменю", "block.valoria.polished_ancient_stone_wall": "Полірований мур зі стародавнього каменю", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "Полірований брукований сланець", "block.valoria.polished_cobbled_shale_slab": "Полірована плита з брукованого сланцю", "block.valoria.polished_cobbled_shale_stairs": "Поліровані сходи з брукованого сланцю", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "Табличка з тінедрева", "block.valoria.shade_trapdoor": "Люк з тінедрева", "block.valoria.shade_wood": "Тінедрево", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "Soul Infuser", "block.valoria.soul_shard_block": "Блок осколків душі", "block.valoria.soulflower": "Душоцвіт", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "Прибрано сторінку від гравця %s", "commands.valoria.page.unknown": "Невідома сторінка", "config.jade.plugin_valoria.crusher": "Каменелом", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "Ювелірня", "config.jade.plugin_valoria.keg": "Бочка", "config.jade.plugin_valoria.key": "Ключ", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "Ефірне спис", "item.valoria.ethereal_sword": "Ефірний меч", "item.valoria.eye_chunk": "Шматок з очима", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "Яйце виклику боронителя крові", "item.valoria.gaib_root": "Коріння гайбу", "item.valoria.gas_mask": "Gask Mask", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "Яйце виклику личинки", "item.valoria.magmatic_gauntlet": "Магматична рукавиця", "item.valoria.magmatic_vambrace": "Магматичний наруч", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "Квантовий жнець", "item.valoria.raw_cobalt": "Необроблений кобальт", "item.valoria.reaper_scythe": "Коса жнеця", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "Реліктове золото", "item.valoria.remains": "Залишки", "item.valoria.respirator": "Respirator", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "Яйце виклику болотомора", "item.valoria.shade_blossom_bandage": "Пов'язка із тіньоцвіту", "item.valoria.shade_blossom_leaf": "Листочок тіньоцвіту", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "Тіне-деревинний човен", "item.valoria.shade_chest_boat": "Тіне-деревинний човен із скринею", "item.valoria.shadewood_spider_spawn_egg": "Яйце виклику тіньового павука", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "Soul Infuser", "menu.valoria.tinkerer_workbench": "Майстерня", "menu.valoria.upgrade": "Upgrade", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "IriDark", "painting.valoria.big_mountains.title": "Великі гори", "painting.valoria.cave0.author": "IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "Стихійне покращення", "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "Некромант", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "Відкриваєтся із:", "valoria.jade.progress": "Прогрес:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/zh_cn.json b/src/main/resources/assets/valoria/lang/zh_cn.json index 0de2c068b..f7a24bd09 100644 --- a/src/main/resources/assets/valoria/lang/zh_cn.json +++ b/src/main/resources/assets/valoria/lang/zh_cn.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "远古石楼梯", "block.valoria.ancient_stone_wall": "远古石墙", "block.valoria.aquarius_block": "潮汐块", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "觉醒虚空块", "block.valoria.beer_cup": "啤酒杯", "block.valoria.black_gold_block": "黑金块", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "眼石", "block.valoria.falseflower": "伪花", "block.valoria.falseflower_small": "小型伪花", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "血肉块", "block.valoria.flesh_cyst": "血肉囊肿", "block.valoria.flesh_remains": "血肉残骸", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "抛光远古石台阶", "block.valoria.polished_ancient_stone_stairs": "抛光远古石楼梯", "block.valoria.polished_ancient_stone_wall": "抛光远古石墙", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "抛光卵石页岩", "block.valoria.polished_cobbled_shale_slab": "抛光卵石页岩台阶", "block.valoria.polished_cobbled_shale_stairs": "抛光卵石页岩楼梯", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "暗影告示牌", "block.valoria.shade_trapdoor": "暗影活板门", "block.valoria.shade_wood": "暗影木材", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "灵魂灌注器", "block.valoria.soul_shard_block": "灵魂碎片块", "block.valoria.soulflower": "灵魂花", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "移除玩家 %s 的页面", "commands.valoria.page.unknown": "未知页面", "config.jade.plugin_valoria.crusher": "粉碎机", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "珠宝", "config.jade.plugin_valoria.keg": "酒桶", "config.jade.plugin_valoria.key": "钥匙", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "空灵长矛", "item.valoria.ethereal_sword": "空灵剑", "item.valoria.eye_chunk": "眼之碎块", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "血肉哨兵刷怪蛋", "item.valoria.gaib_root": "盖布根", "item.valoria.gas_mask": "防毒面具", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "蛆虫刷怪蛋", "item.valoria.magmatic_gauntlet": "岩浆护手", "item.valoria.magmatic_vambrace": "岩浆臂甲", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "量子收割者", "item.valoria.raw_cobalt": "粗钴", "item.valoria.reaper_scythe": "死神镰刀", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "遗迹金", "item.valoria.remains": "残骸", "item.valoria.respirator": "呼吸器", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "灾祸刷怪蛋", "item.valoria.shade_blossom_bandage": "暗影花绷带", "item.valoria.shade_blossom_leaf": "暗影花叶", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "暗影之舟", "item.valoria.shade_chest_boat": "暗影箱舟", "item.valoria.shadewood_spider_spawn_egg": "暗影木蜘蛛刷怪蛋", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "灵魂灌注器", "menu.valoria.tinkerer_workbench": "工匠工作台", "menu.valoria.upgrade": "升级", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "作者:IriDark", "painting.valoria.big_mountains.title": "高山", "painting.valoria.cave0.author": "作者:IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "元素升级", "valoria.boss.necromancer.music.author": "DuUaader", "valoria.boss.necromancer.music.name": "死灵法师", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "可开启方式:", "valoria.jade.progress": "进度:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/zh_hk.json b/src/main/resources/assets/valoria/lang/zh_hk.json index 0323d85ae..02f221fd6 100644 --- a/src/main/resources/assets/valoria/lang/zh_hk.json +++ b/src/main/resources/assets/valoria/lang/zh_hk.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "遠古石階梯", "block.valoria.ancient_stone_wall": "遠古石牆", "block.valoria.aquarius_block": "潮汐方塊", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "覺醒虛空方塊", "block.valoria.beer_cup": "啤酒杯", "block.valoria.black_gold_block": "黑金方塊", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "眼石", "block.valoria.falseflower": "假花", "block.valoria.falseflower_small": "小型假花", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "血肉方塊", "block.valoria.flesh_cyst": "血肉囊腫", "block.valoria.flesh_remains": "血肉殘骸", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "拋光遠古石半磚", "block.valoria.polished_ancient_stone_stairs": "拋光遠古石階梯", "block.valoria.polished_ancient_stone_wall": "拋光遠古石牆", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "拋光鵝卵片岩", "block.valoria.polished_cobbled_shale_slab": "拋光鵝卵片岩半磚", "block.valoria.polished_cobbled_shale_stairs": "拋光鵝卵片岩階梯", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "暗影告示牌", "block.valoria.shade_trapdoor": "暗影地板門", "block.valoria.shade_wood": "暗影木材", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "靈魂灌注器", "block.valoria.soul_shard_block": "靈魂碎片方塊", "block.valoria.soulflower": "靈魂花", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "已移除玩家 %s 的頁面", "commands.valoria.page.unknown": "未知頁面", "config.jade.plugin_valoria.crusher": "碎石機", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "珠寶", "config.jade.plugin_valoria.keg": "酒桶", "config.jade.plugin_valoria.key": "鑰匙", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "空靈長矛", "item.valoria.ethereal_sword": "空靈劍", "item.valoria.eye_chunk": "眼肉塊", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "血肉哨兵刷怪蛋", "item.valoria.gaib_root": "蓋布根", "item.valoria.gas_mask": "防毒面具", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "蛆蟲刷怪蛋", "item.valoria.magmatic_gauntlet": "熔岩護手", "item.valoria.magmatic_vambrace": "熔岩臂甲", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "量子收割者", "item.valoria.raw_cobalt": "原始鈷", "item.valoria.reaper_scythe": "死神鐮刀", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "遺跡金", "item.valoria.remains": "殘骸", "item.valoria.respirator": "呼吸器", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "災厄刷怪蛋", "item.valoria.shade_blossom_bandage": "暗影花繃帶", "item.valoria.shade_blossom_leaf": "暗影花葉", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "暗影船", "item.valoria.shade_chest_boat": "暗影箱船", "item.valoria.shadewood_spider_spawn_egg": "暗影木蜘蛛刷怪蛋", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "靈魂灌注器", "menu.valoria.tinkerer_workbench": "工匠工作台", "menu.valoria.upgrade": "升級", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "作者:IriDark", "painting.valoria.big_mountains.title": "大山脈", "painting.valoria.cave0.author": "作者:IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "元素升級", "valoria.boss.necromancer.music.author": "作者:DuUaader", "valoria.boss.necromancer.music.name": "死靈法師", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "可用以下方式打開:", "valoria.jade.progress": "進度:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/lang/zh_tw.json b/src/main/resources/assets/valoria/lang/zh_tw.json index 0323d85ae..02f221fd6 100644 --- a/src/main/resources/assets/valoria/lang/zh_tw.json +++ b/src/main/resources/assets/valoria/lang/zh_tw.json @@ -92,6 +92,15 @@ "block.valoria.ancient_stone_stairs": "遠古石階梯", "block.valoria.ancient_stone_wall": "遠古石牆", "block.valoria.aquarius_block": "潮汐方塊", + "block.valoria.ash": "Ash", + "block.valoria.ash_bricks": "Ash Bricks", + "block.valoria.ash_bricks_slab": "Ash Bricks Slab", + "block.valoria.ash_bricks_stairs": "Ash Bricks Stairs", + "block.valoria.ash_bricks_wall": "Ash Bricks Wall", + "block.valoria.ash_slab": "Ash Slab", + "block.valoria.ash_stairs": "Ash Stairs", + "block.valoria.ash_tiles": "Ash Tiles", + "block.valoria.ash_wall": "Ash Wall", "block.valoria.awakened_void_block": "覺醒虛空方塊", "block.valoria.beer_cup": "啤酒杯", "block.valoria.black_gold_block": "黑金方塊", @@ -249,6 +258,7 @@ "block.valoria.eye_stone": "眼石", "block.valoria.falseflower": "假花", "block.valoria.falseflower_small": "小型假花", + "block.valoria.firework_tube": "Firework Tube", "block.valoria.flesh_block": "血肉方塊", "block.valoria.flesh_cyst": "血肉囊腫", "block.valoria.flesh_remains": "血肉殘骸", @@ -298,6 +308,14 @@ "block.valoria.polished_ancient_stone_slab": "拋光遠古石半磚", "block.valoria.polished_ancient_stone_stairs": "拋光遠古石階梯", "block.valoria.polished_ancient_stone_wall": "拋光遠古石牆", + "block.valoria.polished_ash": "Polished Ash", + "block.valoria.polished_ash_bricks": "Polished Ash Bricks", + "block.valoria.polished_ash_bricks_slab": "Polished Ash Bricks Slab", + "block.valoria.polished_ash_bricks_stairs": "Polished Ash Bricks Stairs", + "block.valoria.polished_ash_bricks_wall": "Polished Ash Bricks Wall", + "block.valoria.polished_ash_slab": "Polished Ash Slab", + "block.valoria.polished_ash_stairs": "Polished Ash Stairs", + "block.valoria.polished_ash_wall": "Polished Ash Wall", "block.valoria.polished_cobbled_shale": "拋光鵝卵片岩", "block.valoria.polished_cobbled_shale_slab": "拋光鵝卵片岩半磚", "block.valoria.polished_cobbled_shale_stairs": "拋光鵝卵片岩階梯", @@ -380,6 +398,10 @@ "block.valoria.shade_sign": "暗影告示牌", "block.valoria.shade_trapdoor": "暗影地板門", "block.valoria.shade_wood": "暗影木材", + "block.valoria.smooth_ash": "Smooth Ash", + "block.valoria.smooth_ash_slab": "Smooth Ash Slab", + "block.valoria.smooth_ash_stairs": "Smooth Ash Stairs", + "block.valoria.smooth_ash_wall": "Smooth Ash Wall", "block.valoria.soul_infuser": "靈魂灌注器", "block.valoria.soul_shard_block": "靈魂碎片方塊", "block.valoria.soulflower": "靈魂花", @@ -572,6 +594,7 @@ "commands.valoria.page.remove.single": "已移除玩家 %s 的頁面", "commands.valoria.page.unknown": "未知頁面", "config.jade.plugin_valoria.crusher": "碎石機", + "config.jade.plugin_valoria.entity_weakness": "Weakness", "config.jade.plugin_valoria.jewelry": "珠寶", "config.jade.plugin_valoria.keg": "酒桶", "config.jade.plugin_valoria.key": "鑰匙", @@ -808,6 +831,7 @@ "item.valoria.ethereal_spear": "空靈長矛", "item.valoria.ethereal_sword": "空靈劍", "item.valoria.eye_chunk": "眼肉塊", + "item.valoria.firron_spawn_egg": "Firron Spawn Egg", "item.valoria.flesh_sentinel_spawn_egg": "血肉哨兵刷怪蛋", "item.valoria.gaib_root": "蓋布根", "item.valoria.gas_mask": "防毒面具", @@ -910,6 +934,13 @@ "item.valoria.lithic_rune_of_strength": "Lithic Rune Of Strength", "item.valoria.lithic_rune_of_vision": "Lithic Rune Of Vision", "item.valoria.lithic_rune_of_wealth": "Lithic Rune Of Wealth", + "item.valoria.lunar_axe": "Lunar Axe", + "item.valoria.lunar_bow": "Lunar Bow", + "item.valoria.lunar_katana": "Lunar Katana", + "item.valoria.lunar_pickaxe": "Lunar Pickaxe", + "item.valoria.lunar_scythe": "Lunar Scythe", + "item.valoria.lunar_spear": "Lunar Spear", + "item.valoria.lunar_sword": "Lunar Sword", "item.valoria.maggot_spawn_egg": "蛆蟲刷怪蛋", "item.valoria.magmatic_gauntlet": "熔岩護手", "item.valoria.magmatic_vambrace": "熔岩臂甲", @@ -1001,6 +1032,10 @@ "item.valoria.quantum_reaper": "量子收割者", "item.valoria.raw_cobalt": "原始鈷", "item.valoria.reaper_scythe": "死神鐮刀", + "item.valoria.red_envelope_common": "Red Envelope", + "item.valoria.red_envelope_epic": "Red Envelope", + "item.valoria.red_envelope_rare": "Red Envelope", + "item.valoria.red_envelope_uncommon": "Red Envelope", "item.valoria.relic_gold": "遺跡金", "item.valoria.remains": "殘骸", "item.valoria.respirator": "呼吸器", @@ -1036,6 +1071,7 @@ "item.valoria.scourge_spawn_egg": "災厄刷怪蛋", "item.valoria.shade_blossom_bandage": "暗影花繃帶", "item.valoria.shade_blossom_leaf": "暗影花葉", + "item.valoria.shade_blossom_seeds": "Shade Blossom Seeds", "item.valoria.shade_boat": "暗影船", "item.valoria.shade_chest_boat": "暗影箱船", "item.valoria.shadewood_spider_spawn_egg": "暗影木蜘蛛刷怪蛋", @@ -1150,6 +1186,8 @@ "menu.valoria.soul_infuser": "靈魂灌注器", "menu.valoria.tinkerer_workbench": "工匠工作台", "menu.valoria.upgrade": "升級", + "message.valoria.empty": "Nothing inside...", + "message.valoria.received": "Received:", "painting.valoria.big_mountains.author": "作者:IriDark", "painting.valoria.big_mountains.title": "大山脈", "painting.valoria.cave0.author": "作者:IriDark", @@ -1359,6 +1397,7 @@ "upgrade.valoria.elemental_upgrade": "元素升級", "valoria.boss.necromancer.music.author": "作者:DuUaader", "valoria.boss.necromancer.music.name": "死靈法師", + "valoria.jade.entity_weakness": "Weakness:", "valoria.jade.openable_with": "可用以下方式打開:", "valoria.jade.progress": "進度:" } \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/block/firework_tube.json b/src/main/resources/assets/valoria/models/block/firework_tube.json new file mode 100644 index 000000000..7aa5edf2d --- /dev/null +++ b/src/main/resources/assets/valoria/models/block/firework_tube.json @@ -0,0 +1,67 @@ +{ + "format_version": "1.9.0", + "texture_size": [32, 16], + "textures": { + "2": "valoria:block/firework_tube", + "particle": "valoria:block/firework_tube" + }, + "elements": [ + { + "from": [4, 0, 4], + "to": [12, 2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [7.5, 1, 7.5]}, + "faces": { + "north": {"uv": [2, 8, 6, 10], "texture": "#2"}, + "east": {"uv": [2, 8, 6, 10], "texture": "#2"}, + "south": {"uv": [2, 8, 6, 10], "texture": "#2"}, + "west": {"uv": [6, 10, 2, 8], "rotation": 180, "texture": "#2"}, + "up": {"uv": [6, 0, 10, 8], "texture": "#2"}, + "down": {"uv": [2, 0, 6, 8], "texture": "#2"} + } + }, + { + "from": [6, 2, 6], + "to": [10, 14, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 2, 6]}, + "faces": { + "north": {"uv": [0, 0, 2, 12], "texture": "#2"}, + "east": {"uv": [0, 0, 2, 12], "texture": "#2"}, + "south": {"uv": [0, 0, 2, 12], "texture": "#2"}, + "west": {"uv": [0, 0, 2, 12], "texture": "#2"}, + "up": {"uv": [0, 12, 2, 16], "texture": "#2"}, + "down": {"uv": [2, 12, 4, 16], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, -135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/firework_tube.json b/src/main/resources/assets/valoria/models/item/firework_tube.json new file mode 100644 index 000000000..9b8703e99 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/firework_tube.json @@ -0,0 +1,3 @@ +{ + "parent": "valoria:block/firework_tube" +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_axe.json b/src/main/resources/assets/valoria/models/item/lunar_axe.json new file mode 100644 index 000000000..5bce91767 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "valoria:item/lunar_axe" + } +} diff --git a/src/main/resources/assets/valoria/models/item/lunar_bow.json b/src/main/resources/assets/valoria/models/item/lunar_bow.json new file mode 100644 index 000000000..22c833b96 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_bow.json @@ -0,0 +1,98 @@ +{ + "parent": "minecraft:item/generated", + "display": { + "thirdperson_righthand": { + "rotation": [ + -80, + 260, + -40 + ], + "translation": [ + -1, + -2, + 2.5 + ], + "scale": [ + 0.9, + 1.2, + 0.9 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + -80, + 280, + 40 + ], + "translation": [ + -1, + -2, + 2.5 + ], + "scale": [ + 0.9, + 1.2, + 0.9 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + -90, + 25 + ], + "translation": [ + 1.13, + 3.2, + 1.13 + ], + "scale": [ + 0.68, + 0.88, + 0.68 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + 90, + -25 + ], + "translation": [ + 1.13, + 3.2, + 1.13 + ], + "scale": [ + 0.68, + 0.88, + 0.68 + ] + } + }, + "textures": { + "layer0": "valoria:item/lunar_bow" + }, + "overrides": [ + { + "predicate": { + "minecraft:pulling": 1 + }, + "model": "valoria:item/lunar_bow_pulling_0" + }, + { + "predicate": { + "minecraft:pulling": 1, + "minecraft:pull": 0.65 + }, + "model": "valoria:item/lunar_bow_pulling_1" + }, + { + "predicate": { + "minecraft:pulling": 1, + "minecraft:pull": 0.9 + }, + "model": "valoria:item/lunar_bow_pulling_2" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_0.json b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_0.json new file mode 100644 index 000000000..c8cf0df68 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_0.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/lunar_bow", + "textures": { + "layer0": "valoria:item/lunar_bow_pulling_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_1.json b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_1.json new file mode 100644 index 000000000..56fe04264 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_1.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/lunar_bow", + "textures": { + "layer0": "valoria:item/lunar_bow_pulling_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_2.json b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_2.json new file mode 100644 index 000000000..041f32e46 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_bow_pulling_2.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/lunar_bow", + "textures": { + "layer0": "valoria:item/lunar_bow_pulling_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_katana.json b/src/main/resources/assets/valoria/models/item/lunar_katana.json new file mode 100644 index 000000000..403017bd5 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_katana.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "valoria:item/lunar_katana" + } +} diff --git a/src/main/resources/assets/valoria/models/item/lunar_pickaxe.json b/src/main/resources/assets/valoria/models/item/lunar_pickaxe.json new file mode 100644 index 000000000..2a7af39c3 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_pickaxe.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "valoria:item/lunar_pickaxe" + } +} diff --git a/src/main/resources/assets/valoria/models/item/lunar_scythe.json b/src/main/resources/assets/valoria/models/item/lunar_scythe.json new file mode 100644 index 000000000..043116385 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_scythe.json @@ -0,0 +1,18 @@ +{ + "parent": "minecraft:item/handheld", + "loader": "forge:separate_transforms", + "base": { + "parent": "valoria:item/lunar_scythe_in_hand" + }, + "perspectives": { + "gui": { + "parent": "valoria:item/lunar_scythe_icon" + }, + "ground": { + "parent": "valoria:item/lunar_scythe_icon" + }, + "fixed": { + "parent": "valoria:item/lunar_scythe_icon" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_scythe_icon.json b/src/main/resources/assets/valoria/models/item/lunar_scythe_icon.json new file mode 100644 index 000000000..954eea397 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_scythe_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "valoria:item/lunar_scythe" + } +} diff --git a/src/main/resources/assets/valoria/models/item/lunar_scythe_in_hand.json b/src/main/resources/assets/valoria/models/item/lunar_scythe_in_hand.json new file mode 100644 index 000000000..5668845d9 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_scythe_in_hand.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/handheld_large", + "textures": { + "layer0": "valoria:item/lunar_scythe_in_hand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_spear.json b/src/main/resources/assets/valoria/models/item/lunar_spear.json new file mode 100644 index 000000000..c24f511b5 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_spear.json @@ -0,0 +1,21 @@ +{ + "parent": "valoria:item/spear", + "loader": "forge:separate_transforms", + "base": { + "parent": "valoria:item/lunar_spear_in_hand" + }, + "perspectives": { + "gui": { + "parent": "valoria:item/lunar_spear_icon" + }, + "ground": { + "parent": "valoria:item/lunar_spear_icon" + }, + "fixed": { + "parent": "valoria:item/lunar_spear_icon" + }, + "none": { + "parent": "valoria:item/lunar_spear_in_hand" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_spear_icon.json b/src/main/resources/assets/valoria/models/item/lunar_spear_icon.json new file mode 100644 index 000000000..72224d004 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_spear_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/spear", + "textures": { + "layer0": "valoria:item/lunar_spear" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_spear_in_hand.json b/src/main/resources/assets/valoria/models/item/lunar_spear_in_hand.json new file mode 100644 index 000000000..07fc5e863 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_spear_in_hand.json @@ -0,0 +1,6 @@ +{ + "parent": "valoria:item/spear_large", + "textures": { + "layer0": "valoria:item/lunar_spear_in_hand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/lunar_sword.json b/src/main/resources/assets/valoria/models/item/lunar_sword.json new file mode 100644 index 000000000..fccd11989 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/lunar_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "valoria:item/lunar_sword" + } +} diff --git a/src/main/resources/assets/valoria/models/item/red_envelope_common.json b/src/main/resources/assets/valoria/models/item/red_envelope_common.json new file mode 100644 index 000000000..2020a533e --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/red_envelope_common.json @@ -0,0 +1,4 @@ +{ + "parent": "item/generated", + "textures": { "layer0": "valoria:item/red_envelope_common" } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/red_envelope_epic.json b/src/main/resources/assets/valoria/models/item/red_envelope_epic.json new file mode 100644 index 000000000..bf25b130c --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/red_envelope_epic.json @@ -0,0 +1,4 @@ +{ + "parent": "item/generated", + "textures": { "layer0": "valoria:item/red_envelope_epic" } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/red_envelope_rare.json b/src/main/resources/assets/valoria/models/item/red_envelope_rare.json new file mode 100644 index 000000000..28db242f1 --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/red_envelope_rare.json @@ -0,0 +1,4 @@ +{ + "parent": "item/generated", + "textures": { "layer0": "valoria:item/red_envelope_rare" } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/models/item/red_envelope_uncommon.json b/src/main/resources/assets/valoria/models/item/red_envelope_uncommon.json new file mode 100644 index 000000000..95f208d2f --- /dev/null +++ b/src/main/resources/assets/valoria/models/item/red_envelope_uncommon.json @@ -0,0 +1,4 @@ +{ + "parent": "item/generated", + "textures": { "layer0": "valoria:item/red_envelope_uncommon" } +} \ No newline at end of file diff --git a/src/main/resources/assets/valoria/sounds.json b/src/main/resources/assets/valoria/sounds.json index 462fab0df..5d488b872 100644 --- a/src/main/resources/assets/valoria/sounds.json +++ b/src/main/resources/assets/valoria/sounds.json @@ -1,4 +1,197 @@ { + "ambient.valoria.additions": { + "sounds": [ + { + "name": "valoria:ambient/valoria/addition0", + "volume": 0.3 + }, + { + "name": "valoria:ambient/valoria/addition1", + "volume": 0.3 + }, + { + "name": "valoria:ambient/valoria/addition2", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition1", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition2", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition3", + "volume": 0.1 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition4", + "volume": 0.67, + "weight": 5 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition5", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition6", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition7", + "volume": 0.3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/addition8", + "volume": 0.67, + "weight": 5 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/dark1", + "volume": 0.9, + "weight": 5 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/dark2", + "volume": 0.9, + "weight": 5 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/ground1", + "volume": 0.25, + "weight": 3 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/ground2", + "volume": 0.4 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/ground3", + "volume": 0.4 + }, + { + "name": "minecraft:ambient/nether/nether_wastes/ground4", + "volume": 0.4 + } + ] + }, + "ambient.crimson.mood": { + "sounds": [ + "valoria:ambient/valoria/crimson/mood0", + "valoria:ambient/valoria/crimson/mood1", + "valoria:ambient/valoria/crimson/mood2", + "minecraft:ambient/nether/nether_wastes/mood1", + "minecraft:ambient/nether/nether_wastes/mood2", + "minecraft:ambient/nether/nether_wastes/mood4", + "minecraft:ambient/nether/nether_wastes/mood5" + ] + }, + "ambient.valoria.mood": { + "sounds": [ + "valoria:ambient/valoria/mood0", + "valoria:ambient/valoria/mood1", + "valoria:ambient/valoria/mood2", + "valoria:ambient/valoria/mood3", + "valoria:ambient/valoria/mood4", + "minecraft:ambient/nether/nether_wastes/mood1", + "minecraft:ambient/nether/nether_wastes/mood2", + "minecraft:ambient/nether/nether_wastes/mood4", + "minecraft:ambient/nether/nether_wastes/mood5" + ] + }, + "ambient.shade_forest.additions": { + "sounds": [ + { + "name": "minecraft:ambient/nether/crimson_forest/addition1", + "volume": 0.4, + "weight": 3 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/addition2", + "volume": 0.5, + "weight": 3 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/addition3", + "volume": 0.32, + "weight": 3 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/particles1", + "volume": 0.4, + "weight": 35 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/particles2", + "volume": 0.4, + "weight": 35 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/particles3", + "volume": 0.4, + "weight": 35 + }, + { + "name": "valoria:ambient/valoria/forest/addition1", + "pitch": 0.5, + "volume": 0.1, + "weight": 6 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/shroom1", + "volume": 0.25, + "weight": 2 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/shroom2", + "volume": 0.25, + "weight": 2 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/shroom3", + "volume": 0.25, + "weight": 2 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/twang1", + "volume": 0.25, + "weight": 2 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/voom1", + "volume": 0.7, + "weight": 4 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/voom1", + "pitch": 0.8, + "volume": 0.7, + "weight": 4 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/voom2", + "volume": 0.7, + "weight": 4 + }, + { + "name": "minecraft:ambient/nether/crimson_forest/voom2", + "pitch": 0.8, + "volume": 0.7, + "weight": 4 + } + ] + }, + "ambient.shade_forest.mood": { + "sounds": [ + "valoria:ambient/valoria/forest/mood0", + "valoria:ambient/valoria/forest/mood1", + "minecraft:ambient/nether/crimson_forest/mood1", + "minecraft:ambient/nether/crimson_forest/mood2", + "minecraft:ambient/nether/crimson_forest/mood3", + "minecraft:ambient/nether/crimson_forest/mood4" + ] + }, "boss.necromancer.music": { "sounds": [ { diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/addition0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition0.ogg new file mode 100644 index 000000000..f4a2b2942 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/addition1.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition1.ogg new file mode 100644 index 000000000..53f7b4efa Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition1.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/addition2.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition2.ogg new file mode 100644 index 000000000..74e3f16dc Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/addition2.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood0.ogg new file mode 100644 index 000000000..240fc4584 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood1.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood1.ogg new file mode 100644 index 000000000..aa699b229 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood1.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood2.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood2.ogg new file mode 100644 index 000000000..6b10ca6cf Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/crimson/mood2.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/addition0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/addition0.ogg new file mode 100644 index 000000000..b28cfb9cb Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/addition0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood0.ogg new file mode 100644 index 000000000..5a3701b53 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood1.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood1.ogg new file mode 100644 index 000000000..072ae6191 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/forest/mood1.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/hills/additions0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/hills/additions0.ogg new file mode 100644 index 000000000..de8ee84f0 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/hills/additions0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/mood0.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood0.ogg new file mode 100644 index 000000000..dd8f52b45 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood0.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/mood1.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood1.ogg new file mode 100644 index 000000000..3386da95d Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood1.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/mood2.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood2.ogg new file mode 100644 index 000000000..054e4d33f Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood2.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/mood3.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood3.ogg new file mode 100644 index 000000000..7fb3e4cc2 Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood3.ogg differ diff --git a/src/main/resources/assets/valoria/sounds/ambient/valoria/mood4.ogg b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood4.ogg new file mode 100644 index 000000000..a14b3b49c Binary files /dev/null and b/src/main/resources/assets/valoria/sounds/ambient/valoria/mood4.ogg differ diff --git a/src/main/resources/assets/valoria/textures/block/firework_tube.png b/src/main/resources/assets/valoria/textures/block/firework_tube.png new file mode 100644 index 000000000..cdfc22148 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/block/firework_tube.png differ diff --git a/src/main/resources/assets/valoria/textures/entity/nature_golem.png b/src/main/resources/assets/valoria/textures/entity/nature_golem.png index 029a0f743..32b48d485 100644 Binary files a/src/main/resources/assets/valoria/textures/entity/nature_golem.png and b/src/main/resources/assets/valoria/textures/entity/nature_golem.png differ diff --git a/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_0.png b/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_0.png index 7b1bb3d25..b47cd0c08 100644 Binary files a/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_0.png and b/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_0.png differ diff --git a/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_1.png b/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_1.png index ddf1454c6..88e89fd56 100644 Binary files a/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_1.png and b/src/main/resources/assets/valoria/textures/entity/nature_golem_moss_1.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_axe.png b/src/main/resources/assets/valoria/textures/item/lunar_axe.png new file mode 100644 index 000000000..c4e36dd0d Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_axe.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_bow.png b/src/main/resources/assets/valoria/textures/item/lunar_bow.png new file mode 100644 index 000000000..b05519a5f Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_bow.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_0.png b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_0.png new file mode 100644 index 000000000..32d27c111 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_0.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_1.png b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_1.png new file mode 100644 index 000000000..7472ce319 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_1.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_2.png b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_2.png new file mode 100644 index 000000000..afbae8777 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_bow_pulling_2.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_katana.png b/src/main/resources/assets/valoria/textures/item/lunar_katana.png new file mode 100644 index 000000000..fe309a9e7 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_katana.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_pickaxe.png b/src/main/resources/assets/valoria/textures/item/lunar_pickaxe.png new file mode 100644 index 000000000..a33835d62 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_pickaxe.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_scythe.png b/src/main/resources/assets/valoria/textures/item/lunar_scythe.png new file mode 100644 index 000000000..6d03d5a0c Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_scythe.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_scythe_in_hand.png b/src/main/resources/assets/valoria/textures/item/lunar_scythe_in_hand.png new file mode 100644 index 000000000..63573fb16 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_scythe_in_hand.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_spear.png b/src/main/resources/assets/valoria/textures/item/lunar_spear.png new file mode 100644 index 000000000..e431d039e Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_spear.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_spear_in_hand.png b/src/main/resources/assets/valoria/textures/item/lunar_spear_in_hand.png new file mode 100644 index 000000000..60f39b0ec Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_spear_in_hand.png differ diff --git a/src/main/resources/assets/valoria/textures/item/lunar_sword.png b/src/main/resources/assets/valoria/textures/item/lunar_sword.png new file mode 100644 index 000000000..097abcaaf Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/lunar_sword.png differ diff --git a/src/main/resources/assets/valoria/textures/item/red_envelope_common.png b/src/main/resources/assets/valoria/textures/item/red_envelope_common.png new file mode 100644 index 000000000..37e847b90 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/red_envelope_common.png differ diff --git a/src/main/resources/assets/valoria/textures/item/red_envelope_epic.png b/src/main/resources/assets/valoria/textures/item/red_envelope_epic.png new file mode 100644 index 000000000..e77d69507 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/red_envelope_epic.png differ diff --git a/src/main/resources/assets/valoria/textures/item/red_envelope_rare.png b/src/main/resources/assets/valoria/textures/item/red_envelope_rare.png new file mode 100644 index 000000000..728726074 Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/red_envelope_rare.png differ diff --git a/src/main/resources/assets/valoria/textures/item/red_envelope_uncommon.png b/src/main/resources/assets/valoria/textures/item/red_envelope_uncommon.png new file mode 100644 index 000000000..eb7173aed Binary files /dev/null and b/src/main/resources/assets/valoria/textures/item/red_envelope_uncommon.png differ diff --git a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json index d1863b4d0..e0b699669 100644 --- a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json @@ -12,7 +12,9 @@ "valoria:bandage_from_mobs", "valoria:pumpkin_contract_from_mobs", "valoria:blaze_reap_from_ancient_city", - "valoria:candy_corn_from_mobs_effect" + "valoria:candy_corn_from_mobs_effect", + "valoria:red_envelope_from_mobs_feb", + "valoria:red_envelope_from_mobs_jan" ], "replace": false } \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/tools/bows.json b/src/main/resources/data/forge/tags/items/tools/bows.json index 721be580f..c6936e2d1 100644 --- a/src/main/resources/data/forge/tags/items/tools/bows.json +++ b/src/main/resources/data/forge/tags/items/tools/bows.json @@ -6,6 +6,7 @@ "valoria:aquarius_bow", "valoria:bow_of_darkness", "valoria:phantasm_bow", - "valoria:infernal_bow" + "valoria:infernal_bow", + "valoria:lunar_bow" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/axes.json b/src/main/resources/data/minecraft/tags/items/axes.json index 22a2ede45..a3d075201 100644 --- a/src/main/resources/data/minecraft/tags/items/axes.json +++ b/src/main/resources/data/minecraft/tags/items/axes.json @@ -11,6 +11,7 @@ "valoria:aquarius_axe", "valoria:infernal_axe", "valoria:void_axe", - "valoria:ethereal_axe" + "valoria:ethereal_axe", + "valoria:lunar_axe" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/pickaxes.json b/src/main/resources/data/minecraft/tags/items/pickaxes.json index b5f904e0c..b4819ddc1 100644 --- a/src/main/resources/data/minecraft/tags/items/pickaxes.json +++ b/src/main/resources/data/minecraft/tags/items/pickaxes.json @@ -11,6 +11,7 @@ "valoria:void_pickaxe", "valoria:crimtane_pickaxe", "valoria:jade_pickaxe", - "valoria:ethereal_pickaxe" + "valoria:ethereal_pickaxe", + "valoria:lunar_pickaxe" ] } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/swords.json b/src/main/resources/data/minecraft/tags/items/swords.json index 4ecaed8f3..d0402e44d 100644 --- a/src/main/resources/data/minecraft/tags/items/swords.json +++ b/src/main/resources/data/minecraft/tags/items/swords.json @@ -19,6 +19,8 @@ "valoria:coral_reef", "valoria:infernal_sword", "valoria:silken_blade", - "valoria:ethereal_sword" + "valoria:ethereal_sword", + "valoria:lunar_sword" + ] } \ No newline at end of file diff --git a/src/main/resources/data/tridot/tags/items/bows.json b/src/main/resources/data/tridot/tags/items/bows.json index 721be580f..5b935da5d 100644 --- a/src/main/resources/data/tridot/tags/items/bows.json +++ b/src/main/resources/data/tridot/tags/items/bows.json @@ -6,6 +6,8 @@ "valoria:aquarius_bow", "valoria:bow_of_darkness", "valoria:phantasm_bow", - "valoria:infernal_bow" + "valoria:infernal_bow", + "valoria:lunar_bow" + ] } \ No newline at end of file diff --git a/src/main/resources/data/valoria/bosses/necromancer.json b/src/main/resources/data/valoria/bosses/necromancer.json deleted file mode 100644 index 013bc2fb3..000000000 --- a/src/main/resources/data/valoria/bosses/necromancer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "entity": "valoria:necromancer", - "item": "valoria:crypt_locator", - "category": "valoria", - "is_unlocked": false -} \ No newline at end of file diff --git a/src/main/resources/data/valoria/bosses/wicked_crystal.json b/src/main/resources/data/valoria/bosses/wicked_crystal.json deleted file mode 100644 index d7834c1c5..000000000 --- a/src/main/resources/data/valoria/bosses/wicked_crystal.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "entity": "valoria:wicked_crystal", - "category": "valoria", - "is_unlocked": false -} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_feb.json b/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_feb.json new file mode 100644 index 000000000..3351dd8c6 --- /dev/null +++ b/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_feb.json @@ -0,0 +1,25 @@ +{ + "type": "tridot:add_loot", + "chance": 0.015, + "conditions": [ + { + "condition": "tridot:local_date", + "day_of_month": { + "min": 1, + "max": 25 + }, + "month": { + "min": 2, + "max": 2 + } + }, + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "tridot:mob_category", + "mob_category": "monster" + } + ], + "loot_table": "valoria:event/lunar_new_year" +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_jan.json b/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_jan.json new file mode 100644 index 000000000..03d368cf2 --- /dev/null +++ b/src/main/resources/data/valoria/loot_modifiers/red_envelope_from_mobs_jan.json @@ -0,0 +1,25 @@ +{ + "type": "tridot:add_loot", + "chance": 0.015, + "conditions": [ + { + "condition": "tridot:local_date", + "day_of_month": { + "min": 20, + "max": 31 + }, + "month": { + "min": 1, + "max": 1 + } + }, + { + "condition": "minecraft:killed_by_player" + }, + { + "condition": "tridot:mob_category", + "mob_category": "monster" + } + ], + "loot_table": "valoria:event/lunar_new_year" +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_tables/blocks/crypt_pot.json b/src/main/resources/data/valoria/loot_tables/blocks/crypt_pot.json index 5e6cf0541..77909f4d4 100644 --- a/src/main/resources/data/valoria/loot_tables/blocks/crypt_pot.json +++ b/src/main/resources/data/valoria/loot_tables/blocks/crypt_pot.json @@ -98,6 +98,8 @@ "minecraft:projectile_protection", "minecraft:protection" ], + "only_compatible": true, + "include_additional_cost_component": false, "conditions": [] } ] diff --git a/src/main/resources/data/valoria/loot_tables/blocks/decorated_crypt_pot.json b/src/main/resources/data/valoria/loot_tables/blocks/decorated_crypt_pot.json index 2a3f3044e..3a546219f 100644 --- a/src/main/resources/data/valoria/loot_tables/blocks/decorated_crypt_pot.json +++ b/src/main/resources/data/valoria/loot_tables/blocks/decorated_crypt_pot.json @@ -87,7 +87,20 @@ "weight": 2, "functions": [ { - "function": "minecraft:enchant_randomly" + "function": "minecraft:enchant_randomly", + "enchantments": [ + "minecraft:sharpness", + "minecraft:smite", + "minecraft:loyalty", + "minecraft:thorns", + "minecraft:blast_protection", + "minecraft:fire_protection", + "minecraft:projectile_protection", + "minecraft:protection" + ], + "only_compatible": true, + "include_additional_cost_component": false, + "conditions": [] } ] }, diff --git a/src/main/resources/data/valoria/loot_tables/event/lunar_new_year.json b/src/main/resources/data/valoria/loot_tables/event/lunar_new_year.json new file mode 100644 index 000000000..3c5112f1d --- /dev/null +++ b/src/main/resources/data/valoria/loot_tables/event/lunar_new_year.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "valoria:red_envelope_common", + "weight": 25 + }, + { + "type": "minecraft:item", + "name": "valoria:red_envelope_uncommon", + "weight": 15 + }, + { + "type": "minecraft:item", + "name": "valoria:red_envelope_rare", + "weight": 5 + }, + { + "type": "minecraft:item", + "name": "valoria:red_envelope_epic", + "weight": 1 + } + ] + } + ], + "functions": [] +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_tables/items/red_envelope_common.json b/src/main/resources/data/valoria/loot_tables/items/red_envelope_common.json new file mode 100644 index 000000000..ca8d1ad66 --- /dev/null +++ b/src/main/resources/data/valoria/loot_tables/items/red_envelope_common.json @@ -0,0 +1,208 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 3, + "bonus_rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 4 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 4, + "max": 12 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_carrot", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 6 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:glistering_melon_slice", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 5, + "max": 10 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:book", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 5 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:relic_gold", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_apple", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:experience_bottle", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3, + "max": 8 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:firework_rocket", + "weight": 8, + "functions": [{ "function": "minecraft:set_count", "count": { "min": 3, "max": 7 } }] + }, + { + "type": "minecraft:item", + "name": "valoria:firework_tube", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.05 + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "valoria:lunar_sword", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_katana", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_spear", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_scythe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_pickaxe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_axe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_bow", + "weight": 1 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_tables/items/red_envelope_epic.json b/src/main/resources/data/valoria/loot_tables/items/red_envelope_epic.json new file mode 100644 index 000000000..9750fd238 --- /dev/null +++ b/src/main/resources/data/valoria/loot_tables/items/red_envelope_epic.json @@ -0,0 +1,272 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 3, + "bonus_rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 4 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 4, + "max": 12 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_carrot", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 6 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:glistering_melon_slice", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 5, + "max": 10 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:book", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 5 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:relic_gold", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_apple", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:experience_bottle", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3, + "max": 8 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:firework_tube", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:firework_rocket", + "weight": 8, + "functions": [{ "function": "minecraft:set_count", "count": { "min": 3, "max": 7 } }] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "valoria:lunar_sword", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_katana", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_spear", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_scythe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_pickaxe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_axe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_bow", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_tables/items/red_envelope_rare.json b/src/main/resources/data/valoria/loot_tables/items/red_envelope_rare.json new file mode 100644 index 000000000..334c01e19 --- /dev/null +++ b/src/main/resources/data/valoria/loot_tables/items/red_envelope_rare.json @@ -0,0 +1,278 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 3, + "bonus_rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 4 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 4, + "max": 12 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_carrot", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 6 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:glistering_melon_slice", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 5, + "max": 10 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:book", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 5 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:relic_gold", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_apple", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:experience_bottle", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3, + "max": 8 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:firework_tube", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:firework_rocket", + "weight": 8, + "functions": [{ "function": "minecraft:set_count", "count": { "min": 3, "max": 7 } }] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.25 + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "valoria:lunar_sword", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_katana", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_spear", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_scythe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": true + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_pickaxe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_axe", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_bow", + "weight": 1, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": { + "min": 15, + "max": 30 + }, + "treasure": false + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/loot_tables/items/red_envelope_uncommon.json b/src/main/resources/data/valoria/loot_tables/items/red_envelope_uncommon.json new file mode 100644 index 000000000..c7f8df782 --- /dev/null +++ b/src/main/resources/data/valoria/loot_tables/items/red_envelope_uncommon.json @@ -0,0 +1,208 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 3, + "bonus_rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:emerald", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 4 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 4, + "max": 12 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_carrot", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 6 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:glistering_melon_slice", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 5, + "max": 10 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:book", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2, + "max": 5 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "valoria:relic_gold", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_apple", + "weight": 2 + }, + { + "type": "minecraft:item", + "name": "minecraft:experience_bottle", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3, + "max": 8 + } + } + ] + }, + { + "type": "minecraft:item", + "name": "minecraft:firework_rocket", + "weight": 8, + "functions": [{ "function": "minecraft:set_count", "count": { "min": 3, "max": 7 } }] + }, + { + "type": "minecraft:item", + "name": "valoria:firework_tube", + "weight": 1, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + } + ] + }, + { + "rolls": 1, + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.10 + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "valoria:lunar_sword", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_katana", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_spear", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_scythe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_pickaxe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_axe", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "valoria:lunar_bow", + "weight": 1 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/valoria/tags/items/katanas.json b/src/main/resources/data/valoria/tags/items/katanas.json index be8c7ade5..1aed5c643 100644 --- a/src/main/resources/data/valoria/tags/items/katanas.json +++ b/src/main/resources/data/valoria/tags/items/katanas.json @@ -10,6 +10,8 @@ "valoria:murasama", "valoria:jade_katana", "valoria:silken_wakizashi", - "valoria:holiday_katana" + "valoria:holiday_katana", + "valoria:lunar_katana" + ] } \ No newline at end of file diff --git a/src/main/resources/data/valoria/tags/items/scythes.json b/src/main/resources/data/valoria/tags/items/scythes.json index c23ee68e1..8804df9fa 100644 --- a/src/main/resources/data/valoria/tags/items/scythes.json +++ b/src/main/resources/data/valoria/tags/items/scythes.json @@ -11,6 +11,8 @@ "valoria:aquarius_scythe", "valoria:infernal_scythe", "valoria:void_scythe", - "valoria:reaper_scythe" + "valoria:reaper_scythe", + "valoria:lunar_scythe" + ] } \ No newline at end of file diff --git a/src/main/resources/data/valoria/tags/items/spears.json b/src/main/resources/data/valoria/tags/items/spears.json index ee37927ce..8aa225f33 100644 --- a/src/main/resources/data/valoria/tags/items/spears.json +++ b/src/main/resources/data/valoria/tags/items/spears.json @@ -13,6 +13,8 @@ "valoria:aquarius_spear", "valoria:infernal_spear", "valoria:void_spear", - "valoria:ethereal_spear" + "valoria:ethereal_spear", + "valoria:lunar_spear" + ] } \ No newline at end of file diff --git a/src/main/resources/data/valoria/worldgen/biome/barren_ecotone.json b/src/main/resources/data/valoria/worldgen/biome/barren_ecotone.json index 8784ba27c..cd3559f43 100644 --- a/src/main/resources/data/valoria/worldgen/biome/barren_ecotone.json +++ b/src/main/resources/data/valoria/worldgen/biome/barren_ecotone.json @@ -10,13 +10,13 @@ "grass_color": 9794291, "foliage_color": 9794291, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.valoria.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 4 }, "additions_sound": { - "sound": "minecraft:ambient.nether_wastes.additions", + "sound": "valoria:ambient.valoria.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/coast.json b/src/main/resources/data/valoria/worldgen/biome/coast.json index be9a8dcff..088d85f88 100644 --- a/src/main/resources/data/valoria/worldgen/biome/coast.json +++ b/src/main/resources/data/valoria/worldgen/biome/coast.json @@ -10,13 +10,13 @@ "grass_color": 4470594, "foliage_color": 11301619, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.valoria.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 2 }, "additions_sound": { - "sound": "minecraft:ambient.nether_wastes.additions", + "sound": "valoria:ambient.valoria.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/ecotone.json b/src/main/resources/data/valoria/worldgen/biome/ecotone.json index 5c72875e9..2b8407812 100644 --- a/src/main/resources/data/valoria/worldgen/biome/ecotone.json +++ b/src/main/resources/data/valoria/worldgen/biome/ecotone.json @@ -10,13 +10,13 @@ "grass_color": 9466092, "foliage_color": 11566585, "mood_sound": { - "sound": "minecraft:ambient.crimson_forest.mood", + "sound": "valoria:ambient.shade_forest.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 3 }, "additions_sound": { - "sound": "minecraft:ambient.crimson_forest.additions", + "sound": "valoria:ambient.shade_forest.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/meaty_caves.json b/src/main/resources/data/valoria/worldgen/biome/meaty_caves.json index b2197048a..2607e1d73 100644 --- a/src/main/resources/data/valoria/worldgen/biome/meaty_caves.json +++ b/src/main/resources/data/valoria/worldgen/biome/meaty_caves.json @@ -10,7 +10,7 @@ "grass_color": 12386304, "foliage_color": 12386304, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.crimson.mood", "tick_delay": 6000, "block_search_extent": 8, "offset": 2 diff --git a/src/main/resources/data/valoria/worldgen/biome/meaty_lands.json b/src/main/resources/data/valoria/worldgen/biome/meaty_lands.json index 03b430840..5f1a9dee2 100644 --- a/src/main/resources/data/valoria/worldgen/biome/meaty_lands.json +++ b/src/main/resources/data/valoria/worldgen/biome/meaty_lands.json @@ -10,7 +10,7 @@ "grass_color": 12386304, "foliage_color": 12386304, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.crimson.mood", "tick_delay": 6000, "block_search_extent": 8, "offset": 2 diff --git a/src/main/resources/data/valoria/worldgen/biome/ocean_wastes.json b/src/main/resources/data/valoria/worldgen/biome/ocean_wastes.json index 626b50696..8da1d9ece 100644 --- a/src/main/resources/data/valoria/worldgen/biome/ocean_wastes.json +++ b/src/main/resources/data/valoria/worldgen/biome/ocean_wastes.json @@ -10,13 +10,13 @@ "grass_color": 9466092, "foliage_color": 11301619, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.valoria.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 2 }, "additions_sound": { - "sound": "minecraft:ambient.nether_wastes.additions", + "sound": "valoria:ambient.valoria.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/shade_forest.json b/src/main/resources/data/valoria/worldgen/biome/shade_forest.json index 20af4677d..3f49b52cd 100644 --- a/src/main/resources/data/valoria/worldgen/biome/shade_forest.json +++ b/src/main/resources/data/valoria/worldgen/biome/shade_forest.json @@ -10,13 +10,13 @@ "grass_color": 8951007, "foliage_color": 6740479, "mood_sound": { - "sound": "minecraft:ambient.crimson_forest.mood", + "sound": "valoria:ambient.shade_forest.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 3 }, "additions_sound": { - "sound": "minecraft:ambient.crimson_forest.additions", + "sound": "valoria:ambient.shade_forest.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/shaded_barrens.json b/src/main/resources/data/valoria/worldgen/biome/shaded_barrens.json index 6aa82169a..ac2d702da 100644 --- a/src/main/resources/data/valoria/worldgen/biome/shaded_barrens.json +++ b/src/main/resources/data/valoria/worldgen/biome/shaded_barrens.json @@ -10,13 +10,13 @@ "grass_color": 9466092, "foliage_color": 8951007, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.shade_forest.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 4 }, "additions_sound": { - "sound": "minecraft:ambient.nether_wastes.additions", + "sound": "valoria:ambient.shade_forest.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/shaded_ecotone.json b/src/main/resources/data/valoria/worldgen/biome/shaded_ecotone.json index 209ab8e9b..54b52fafa 100644 --- a/src/main/resources/data/valoria/worldgen/biome/shaded_ecotone.json +++ b/src/main/resources/data/valoria/worldgen/biome/shaded_ecotone.json @@ -10,13 +10,13 @@ "grass_color": 7507187, "foliage_color": 9082879, "mood_sound": { - "sound": "minecraft:ambient.crimson_forest.mood", + "sound": "valoria:ambient.shade_forest.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 3 }, "additions_sound": { - "sound": "minecraft:ambient.crimson_forest.additions", + "sound": "valoria:ambient.shade_forest.additions", "tick_chance": 0.0155 }, "music": { diff --git a/src/main/resources/data/valoria/worldgen/biome/void_barren.json b/src/main/resources/data/valoria/worldgen/biome/void_barren.json index e2187b5b7..1e4be6ce7 100644 --- a/src/main/resources/data/valoria/worldgen/biome/void_barren.json +++ b/src/main/resources/data/valoria/worldgen/biome/void_barren.json @@ -10,13 +10,13 @@ "grass_color": 11301619, "foliage_color": 11301619, "mood_sound": { - "sound": "minecraft:ambient.nether_wastes.mood", + "sound": "valoria:ambient.valoria.mood", "tick_delay": 6700, "block_search_extent": 8, "offset": 2 }, "additions_sound": { - "sound": "minecraft:ambient.nether_wastes.additions", + "sound": "valoria:ambient.valoria.additions", "tick_chance": 0.0155 }, "music": {