Compare commits

...
Author SHA1 Message Date
apion 6d67256632 Added delta functions and some cleanup 2024-11-03 01:55:44 -04:00
apion be0753109c Merge branch 'refs/heads/implement_pokemon' into action-effects-improved 2024-11-02 03:48:43 -04:00
apion 0ee36b705e Merge remote-tracking branch 'refs/remotes/origin/move-effects' into action-effects-improved 2024-11-02 03:48:34 -04:00
apion 396a827b37 Added molang query for distance between entities 2024-11-02 03:01:56 -04:00
apion b146892b50 Exposed entity info in action effect 2024-11-02 00:17:09 -04:00
apion 5797838711 Moved to molang for pose conditions in charmander 2024-11-01 21:27:53 -04:00
Tyzillion e048e8a58d Updated particles for Status Effects, Stat buffs/debuffs, Protect, Sand Attack, Quick Attack, and Gastly.
Added the "top" universal locator.
2024-10-31 10:02:34 -04:00
Tyzillion 3656513255 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into move-effects
# Conflicts:
#	common/src/main/resources/assets/cobblemon/sounds.json
2024-10-31 07:52:01 -04:00
Wi2tert 2734f1d00c Update Bulbasaur Ivysaur Venusaur Animation 2024-10-31 12:20:53 +08:00
tmetcalfe89 e66069b270 swapped smeargle colors right way around 2024-10-30 01:49:28 -07:00
tmetcalfe89 a661575451 de-dyed smeargle 2024-10-29 23:16:22 -07:00
Carmendar a23017cd1f Updated scaling of a handful of pokemon, gave pory line dummy sleep cries, fixed mantine antennae, and onix has math.mod now.
- Removed Herobrine.
2024-10-29 22:13:20 -05:00
tmetcalfe89 0df19ce18a integrated retro's changes
Fixed Bellsprout's GEO ("arns" to "arms", "foor" to "foot", etcetera).
Altered Weepinbell's Scale and Hitbox
Altered Victreebel's Walk Speed and Hitbox.
2024-10-29 15:22:53 -07:00
Wi2ter 5a751546ec Update Changelog 2024-10-29 18:38:25 +08:00
Carmendar ee9e1cabc1 remodeled Poliwhirl, Poliwrath, Riolu & Lucario. Added animations for Bagon line, Shellder line, Kecleon, Furret & Spinda. Updated changelog.
- Removed Herobrine.
2024-10-29 01:44:02 -05:00
Wi2ter d78b46155f Update Klink Line animation 2024-10-28 17:26:14 +08:00
Wi2ter 1afd61d517 Update Dreepy Drakloak Animation 2024-10-28 16:27:57 +08:00
Carmendar 97a5083ff5 Updated swim speeds for some water mons & merged main into implement. 2024-10-27 19:43:51 -05:00
Carmendar 0d31e74790 Merge branch 'main' into implement_pokemon 2024-10-27 17:42:35 -05:00
Carmendar 02214196f4 Merge remote-tracking branch 'origin/main' 2024-10-27 17:40:11 -05:00
Carmendar aae268cfc5 New water pokemon can actually water now. 2024-10-27 17:05:46 -05:00
Carmendar 20f37d8799 Third coming of Klawf. (fixed the cry for real this time. 2024-10-27 15:52:46 -05:00
Carmendar 0b825bcda3 The second coming of Klawf (its cry), animation updates for a handful of mons, Portrait/Picture & scale fixes for a handful of mons, added species feature for three-segment dudunsparce, added dummy animation file for sleep cries, and added cries for Magikarp & Gyarados.
- Removed Herobrine.
2024-10-27 15:48:29 -05:00
GenotypeXD-Dev aba3bd22c7 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-26 22:02:04 -06:00
GenotypeXD-Dev b1fc33f5a1 Added Klawf 2024-10-26 22:01:39 -06:00
tmetcalfe89 f2033f5e33 fix alakazam json poser 2024-10-25 12:51:57 -07:00
tmetcalfe89 6c600b7bdb alakazam - kt->json 2024-10-25 12:27:33 -07:00
Wi2ter e93bfb7f0f Update Kleavor Animation 2024-10-25 18:25:09 +08:00
Wi2ter 8976909742 Update Alomomola Animation 2024-10-25 18:23:06 +08:00
Wi2ter 30a9c2f53e Update Mantyke Mantine Animation 2024-10-25 18:18:58 +08:00
Wi2ter ea60790865 I forgot to change the poser! 😭 2024-10-25 11:36:38 +08:00
Wi2ter f906fac8f3 Update Buneary and Lopunny animation 2024-10-25 11:28:57 +08:00
Wi2ter 05b324a3cb Remodel Swinub Piloswine Mamoswine [big guy] 2024-10-25 09:40:37 +08:00
Carmendar 8ce1c7ccf5 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-24 19:06:09 -05:00
Carmendar a37f93241f Slowed Numel, and fixed shiny Staryu emissive texture. 2024-10-24 19:05:14 -05:00
Wi2ter 6689663ca9 remodel Snivy Servin Serperior 🌿 🐍 2024-10-24 19:10:37 +08:00
Carmendar 959b81a58f flashy new models for ✨ Dwebble & Crustle ✨ 2024-10-24 01:27:11 -05:00
Carmendar 62e607b44e Forgot to remove magby line & onix from the kotlin model repository. 2024-10-23 23:22:19 -05:00
Carmendar 407bb6b977 Merge remote-tracking branch 'origin/main' 2024-10-23 20:07:59 -05:00
Carmendar a9efd327b8 Magby line & Onix are now beautiful. 2024-10-23 19:58:34 -05:00
Carmendar 64cb4d2ff8 Removed Herobrine 2024-10-23 00:36:52 -05:00
FrankTheFarmer 54786fa82e I forgot the changelog again 😔 2024-10-23 15:06:56 +10:00
FrankTheFarmer ecab1b7825 Porygon line poser fixes 🖥🦆 2024-10-23 14:57:22 +10:00
FrankTheFarmer 75d7106f46 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-23 14:37:28 +10:00
Carmendar 6f82c09afa angry crying 😠😢 2024-10-22 23:21:40 -05:00
Carmendar 778e5e219c Everyone is crying 😢 so sad. 2024-10-22 22:05:42 -05:00
FrankTheFarmer f4682e0bd2 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-23 11:07:21 +10:00
Tyzillion 906d487ffc Added rootBone to all existing json posers. 2024-10-22 08:08:31 -04:00
Tyzillion 817b801bf7 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/animations/0006_charizard/charizard.animation.json
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/posers/0595_joltik/joltik.json
2024-10-22 07:44:07 -04:00
Sterrezo e401b11ab9 Added a sound keyframe to absol.animation.json 2024-10-22 10:21:08 +02:00
Carmendar 165f70e01d Updated changelog 2024-10-22 02:05:50 -05:00
GenotypeXD-Dev fddfbfb4ed Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-21 20:03:46 -06:00
GenotypeXD-Dev 03e229c511 Implemented Absol and Veluza. Fixed Charizard sleep crash 2024-10-21 20:02:26 -06:00
Sterrezo 0b08372407 Pushed an updated cry checker script. Corrected cries for Smearlge, Ledyba, Ledian, Sunkern, Sunflora, Smeargle.
Thanks to Polymeta for saving the script
2024-10-21 00:43:33 +02:00
Carmendar 6d26b5de20 Joltik can now blink while walking without blowing up your game. 2024-10-20 02:16:00 -05:00
Carmendar ef179410f9 Joltik can now blink while walking without blowing up your game. 2024-10-20 02:08:30 -05:00
FrankTheFarmer 194f6e019a Bellsprout line remodeled and animated 2024-10-18 16:29:15 +10:00
FrankTheFarmer 1f933827b9 Merge branch 'main' into implement_pokemon 2024-10-18 16:08:20 +10:00
FrankTheFarmer 28765bb2ce Merge branch 'main' into implement_pokemon 2024-10-18 13:29:35 +10:00
FrankTheFarmer 136391db04 👨‍🌾🔫🐲 2024-10-18 13:27:26 +10:00
Wi2ter 0cc39e71fc revamp Klink Klang and Klingklang 2024-10-18 10:11:53 +08:00
FrankTheFarmer d65cc08793 Several data fixes for posers and hitboxes 2024-10-17 23:11:43 +10:00
GenotypeXD-Dev a1729a0266 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-17 01:43:17 -06:00
GenotypeXD-Dev 8505634df3 Implement Charmander, Charmeleon, And Charizard Remodels + Gyarados Poser Fixes 2024-10-17 01:42:40 -06:00
FrankTheFarmer 02047c1ec0 Like a bajillion data fixes for posers and hitboxes 2024-10-17 17:24:39 +10:00
FrankTheFarmer 068fa4b2ef Updated Firefox. Make sure to update yours too! 2024-10-17 09:48:45 +10:00
Carmendar bfd266a40e Updated Toxapex, revamped Porygon line, remodeled Gastly and Haunter, updated portraits & pictures for many pokemon. 2024-10-15 23:54:34 -05:00
FrankTheFarmer 6367d4e2aa Tweaked Regional Pokédex orders to allow for proper ordering of the National Pokédex. 2024-10-16 12:59:16 +10:00
FrankTheFarmer f8a680f381 :*: **:** *:*:* :: :***: :;: 2024-10-15 22:32:01 +10:00
GenotypeXD-Dev 81750e6eb9 Added Implemented tag to Finizen and Palafin 2024-10-14 02:17:18 -06:00
GenotypeXD-Dev 818cf682bf Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-14 02:15:11 -06:00
GenotypeXD-Dev 3112a0650f Implemented Finizen and Palafin (+Hero form) 2024-10-14 02:14:51 -06:00
FrankTheFarmer 747ef94f04 Fixed baltoy and claydol exploding the game when scanned. 2024-10-14 15:56:38 +10:00
FrankTheFarmer dbacada48c Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-14 15:16:12 +10:00
FrankTheFarmer 26db8a40cc Un deleted female oinkolognes. This will affect the oinkologne population. 2024-10-14 15:15:30 +10:00
GenotypeXD-Dev 6e5feda00e Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-13 23:12:07 -06:00
GenotypeXD-Dev f04330074b Added implemented tag to all currently implemented 1.6 pokemon 2024-10-13 23:11:46 -06:00
FrankTheFarmer 80d733d329 Merge branch 'main' into implement_pokemon 2024-10-14 14:18:08 +10:00
FrankTheFarmer 0099dcf5c5 Alolan Exeggutor will now appear in front of all pokemon in the dex no matter what lol 2024-10-14 14:16:42 +10:00
GenotypeXD-Dev 0a30551b7d Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-13 19:23:49 -06:00
GenotypeXD-Dev e4ee0227fd Reapply "Implement Magikarp and Gyarados Remodels + Jump Variants"
This reverts commit 4ec7168499.
2024-10-13 19:22:35 -06:00
GenotypeXD-Dev 4ec7168499 Revert "Implement Magikarp and Gyarados Remodels + Jump Variants"
This reverts commit 650647e94b.
2024-10-13 19:20:46 -06:00
GenotypeXD-Dev 650647e94b Implement Magikarp and Gyarados Remodels + Jump Variants 2024-10-13 19:19:46 -06:00
Carmendar a5371f4b5d Updated Tepig line & Baltoy line. 2024-10-13 16:03:10 -05:00
Wi2ter d47e7fb3c4 Implemented Corphish Crawdaunt 2024-10-13 12:32:27 +08:00
Carmendar ef983e17fe Implemented Palossand, updated Bulbasaur texture, Ivysaur model & texture, Mudkip model & texture. Fixed portraits, pictures & scales for many Pokemon. 2024-10-12 22:42:41 -05:00
GenotypeXD-Dev d78975be6e Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-12 01:15:01 -06:00
GenotypeXD-Dev 19a264870c Implemented Scraggy, Scrafty, Hatenna, Hattrem, Hatterene, Wattrel, Kilowattrel, Alola_bias cubone. Fixed Resolver typo from last Push 2024-10-12 01:14:11 -06:00
Carmendar ee1753de67 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-10-11 01:28:24 -05:00
Carmendar 742354b2cb Implemented Slakoth, Vigoroth, Slaking. Adjusted Larvitar scale. 2024-10-11 01:24:30 -05:00
GenotypeXD-Dev e2f6aaa4de Shelgon Basescale adjustment 2024-10-10 18:53:12 -06:00
GenotypeXD-Dev abc2911059 Implemented Bagon, Shelgon, Salamence, Pikipek, Trumbeak, Toucannon, Dondozo, Alolan Marowak 2024-10-10 17:46:09 -06:00
FrankTheFarmer d76caf7093 i forgot to write implemented 😩 2024-10-10 10:37:38 +10:00
FrankTheFarmer bf859f8435 Sand castle :) 2024-10-10 10:06:19 +10:00
FrankTheFarmer b31c10cc52 Took Venusaurs foot off the pedal (bone name changes) 2024-10-04 09:30:45 +10:00
FrankTheFarmer 89e3c7d8b0 Sealeo zfight fix 2024-10-04 08:52:20 +10:00
FrankTheFarmer 167b09f24f Fixed Diggersby using its walk animation in its battle portrait 2024-10-01 21:18:09 +10:00
FrankTheFarmer 39165266d5 🎬🔴👗 👠 2024-10-01 20:35:01 +10:00
FrankTheFarmer 7405f2de75 💍⚡🕶️⚡🧋 2024-10-01 20:34:20 +10:00
FrankTheFarmer 762fe87454 ✨🎡🧣 2024-10-01 20:33:41 +10:00
FrankTheFarmer ebbc81b605 💋🎙️🇫🇷 🎩 2024-10-01 20:33:01 +10:00
FrankTheFarmer 12d41aada1 👁️🍧👁️ 2024-10-01 20:32:20 +10:00
FrankTheFarmer 61fe9c23ce 💅 🪨 👜 🐩 2024-10-01 20:31:20 +10:00
FrankTheFarmer 945c9c60a9 Mmm monkey 2024-10-01 20:30:10 +10:00
FrankTheFarmer 8413b0392e Venusaur scaling stuff for Jazz 😈 2024-10-01 16:26:55 +10:00
FrankTheFarmer 868edcd392 Looped Walreins temp idle animation 2024-10-01 16:21:43 +10:00
FrankTheFarmer a3b2f9b6fc Rotom assets for future implementation 2024-10-01 16:07:26 +10:00
FrankTheFarmer 12b444bb41 Kecleon Assets for future implementation 2024-10-01 16:06:57 +10:00
FrankTheFarmer 0e814fd567 Added Flamigo 🔫🦩 2024-10-01 16:05:42 +10:00
FrankTheFarmer 7b083aa038 Added Walrein 🗡️ 🦭 2024-10-01 15:56:16 +10:00
FrankTheFarmer 4e0a4c84b5 Added Sealeo 🦭 2024-10-01 15:54:30 +10:00
FrankTheFarmer 2d9b47e645 Added Spheal 🪩 2024-10-01 15:53:38 +10:00
FrankTheFarmer 39a2182736 Added Toxapex ☂️ 2024-10-01 15:51:23 +10:00
FrankTheFarmer 5a996abbf3 Added Mareanie ☂️ 2024-10-01 15:50:31 +10:00
FrankTheFarmer a20def5161 Snail textures woops 2024-10-01 15:09:31 +10:00
FrankTheFarmer 030f370290 Added Gastrodon 🐌 2024-10-01 11:15:43 +10:00
FrankTheFarmer f3ade3cb82 Added Shellos 🐌 2024-10-01 11:14:14 +10:00
FrankTheFarmer 315cb6a1ac Added Lumineon 🐠 2024-10-01 10:48:35 +10:00
FrankTheFarmer 60615d32f5 Added Finneon 🐟 2024-10-01 10:48:18 +10:00
FrankTheFarmer 1d27d9cf5b Added Clawitzer 🔫🦞 2024-10-01 10:40:21 +10:00
FrankTheFarmer 2ba760d0f9 Added Clauncher 🦞 2024-10-01 10:38:35 +10:00
FrankTheFarmer c31ec3b418 Added Bruxish 🪥🐟🌈 2024-10-01 10:30:52 +10:00
FrankTheFarmer d0afab9604 Added Wugtrio 🪱🪱🪱 2024-10-01 10:16:39 +10:00
FrankTheFarmer 4e9f8fe1c0 Added Wiglett 🪱 2024-10-01 10:16:18 +10:00
FrankTheFarmer 803f93aa73 Added Corsola 🪸 2024-09-30 17:21:31 +10:00
FrankTheFarmer 853940d009 Added Pincurchin 🦔 2024-09-30 17:16:38 +10:00
FrankTheFarmer 6ddb746d49 Fired for not using indents of 2 again 2024-09-30 17:05:47 +10:00
FrankTheFarmer 2b86b15132 Added Liepard 🐆 2024-09-30 17:05:34 +10:00
FrankTheFarmer 5f0f5d0aa5 Added Purrloin 🐈 2024-09-30 17:02:17 +10:00
FrankTheFarmer 136aab872a Added Mantine 🌊🥞 2024-09-30 17:00:04 +10:00
FrankTheFarmer a1d4702af0 Added Mantyke 🥞 2024-09-30 16:59:33 +10:00
FrankTheFarmer b2777c13b8 Added Milotic 🐍 2024-09-30 16:55:33 +10:00
FrankTheFarmer 26cb473b9d Added Feebas 🎣 2024-09-30 16:55:09 +10:00
FrankTheFarmer 907c639e28 Added Octillery 🐙 2024-09-30 16:52:21 +10:00
FrankTheFarmer 80d2eafed7 Added Remoraid 🐟 2024-09-30 16:51:40 +10:00
FrankTheFarmer 519122e5be Little bit of Rhyhorn line resizing 2024-09-29 22:45:59 +10:00
FrankTheFarmer c211768d5c Forgor to remove Rhyhorn line kotlin posers 2024-09-29 22:45:35 +10:00
FrankTheFarmer 908f318eeb Carvanha remodel 2024-09-29 22:40:27 +10:00
FrankTheFarmer 0143f93577 Rhyperior remodel 🌤🦏 2024-09-29 22:31:46 +10:00
FrankTheFarmer f8615aeb82 Rhyhorn remodel 🦏 2024-09-29 22:26:06 +10:00
FrankTheFarmer b113448a9c Rhydon remodel 🦏 2024-09-29 22:23:56 +10:00
FrankTheFarmer 2930a11c75 Garchomp remodel ✈ 2024-09-29 22:13:00 +10:00
FrankTheFarmer 982de7f5c7 Gabite remodel 🦈 2024-09-29 22:12:08 +10:00
FrankTheFarmer bfdb5e9787 Gible remodel 🐟 2024-09-29 22:11:27 +10:00
FrankTheFarmer d5ea945c6b Krookodile remodel 2024-09-29 22:00:52 +10:00
FrankTheFarmer 5a18d038a2 Wigglytuff remodel 🍎 2024-09-29 21:51:56 +10:00
FrankTheFarmer d0389d6c9c Jigglypuff remodel 🎤 2024-09-29 21:51:32 +10:00
FrankTheFarmer c9bc6e24fe Igglybuff remodel 2024-09-29 21:50:39 +10:00
FrankTheFarmer 8b4a8e9534 oop. Tatsugiri resolver fix 2024-09-29 21:46:25 +10:00
FrankTheFarmer 5adfd00509 Tatsugiri model update 🍙🐟 2024-09-29 21:26:31 +10:00
FrankTheFarmer 4090e038ae Cloyster model update 2024-09-29 21:25:33 +10:00
FrankTheFarmer f3ab282fd1 Shellder model update 2024-09-29 21:25:16 +10:00
FrankTheFarmer 40b97d3c1e Merge branch 'main' into implement_pokemon 2024-09-29 21:17:27 +10:00
FrankTheFarmer 829b97270d Seaking model update 2024-09-29 21:16:49 +10:00
FrankTheFarmer 61111c8038 Goldeen model update 2024-09-29 21:16:34 +10:00
FrankTheFarmer 1f4fbaa177 oop. relicanth resolver update 2024-09-29 21:16:16 +10:00
FrankTheFarmer 9e8ef7e875 Relicanth remodel 2024-09-29 21:15:35 +10:00
FrankTheFarmer 190d90a966 Empoleon remodel 2024-09-29 20:56:38 +10:00
FrankTheFarmer 5a07c82a5d Prinplup remodel 2024-09-29 20:55:57 +10:00
FrankTheFarmer 9c2e56ee8b Cinderace remodel 2024-09-29 20:52:27 +10:00
FrankTheFarmer c83f194dc9 Scorbunny remodel 2024-09-29 20:52:06 +10:00
FrankTheFarmer b9bcb66d2a Swampert remodel 2024-09-29 20:47:43 +10:00
FrankTheFarmer b72050da1d Marshtomp remodel 2024-09-29 20:46:36 +10:00
FrankTheFarmer 82522ad6ab Mudkip remodel 💙 2024-09-29 20:46:02 +10:00
FrankTheFarmer d40e2e6103 Changelog for incoming implementation 2024-09-29 11:41:52 +10:00
FrankTheFarmer 96715770a7 Incineroar Remodel 🔥🧍‍♂️ 2024-09-29 11:41:09 +10:00
FrankTheFarmer 48fa67c2e4 Torracat Remodel 🔥🐆 2024-09-29 11:40:31 +10:00
FrankTheFarmer 9a6217f755 Litten Remodel 🔥🐈 2024-09-29 11:39:38 +10:00
FrankTheFarmer f1f035b5f9 Fired for not using double spaced (2)JSON indents 2024-09-29 11:31:44 +10:00
FrankTheFarmer 19aa53effc Horsea Remodel 2024-09-29 11:24:46 +10:00
FrankTheFarmer be7cb4583c Seadra Remodel 2024-09-29 11:24:36 +10:00
FrankTheFarmer 887891f74d Kingdra Remodel 2024-09-29 11:24:19 +10:00
FrankTheFarmer d83cd34bf4 Removed several pokemon from PokemonModelRepository as they have JSON posers now! 2024-09-28 20:08:54 +10:00
FrankTheFarmer bee41a90f9 Venusaur remodel 2024-09-28 19:59:28 +10:00
FrankTheFarmer 79afe9d812 Ivysaur remodel 2024-09-28 19:59:07 +10:00
FrankTheFarmer 9fe55c5692 Bulbasaur remodel 2024-09-28 19:58:44 +10:00
FrankTheFarmer feddce2575 Merge branch 'main' into implement_pokemon 2024-09-28 19:39:36 +10:00
FrankTheFarmer 4ddc5e3a93 Cetitan can now cry and walk/sleep at the same time! Unfortunately relatable! 2024-09-28 06:43:47 +10:00
FrankTheFarmer f63f1764ab Merge branch 'main' into implement_pokemon 2024-09-28 06:35:49 +10:00
FrankTheFarmer 7c694e9733 Corrected Dachsbun's resolver name. Was using Fidough 2024-09-25 21:19:58 +10:00
FrankTheFarmer 21b6977387 Merge branch 'main' into implement_pokemon 2024-09-25 21:09:08 +10:00
FrankTheFarmer 408735399c Merge branch 'main' into implement_pokemon 2024-09-24 21:13:15 +10:00
FrankTheFarmer f6c856d161 Merge branch 'main' into implement_pokemon 2024-09-24 08:23:07 +10:00
FrankTheFarmer 8173cf13a8 data updates for walking wake and iron leaves 2024-09-17 22:28:39 +10:00
FrankTheFarmer 7d0becf1bd Fixed that one elekid thing that was breaking the thingy™ 2024-09-17 09:45:15 +10:00
FrankTheFarmer 9b4a87ce68 Merge branch 'main' into implement_pokemon 2024-09-16 14:51:53 +10:00
Hiroku 464c4d349d Update CHANGELOG.md 2024-09-15 09:31:47 +00:00
Hiroku a35d3131f8 Update CHANGELOG.md 2024-09-15 09:30:28 +00:00
FrankTheFarmer 9d99d3c331 Merge branch 'main' into implement_pokemon 2024-09-14 19:49:29 +10:00
Paul b100516b24 Fixed JSON posed mons having _issues_ when evolved 2024-09-14 12:31:40 +10:00
FrankTheFarmer 8da5396443 Merge branch 'main' into implement_pokemon 2024-09-13 20:58:59 +10:00
FrankTheFarmer 5d2a727311 Chest Gimmighoul quirk fixes 2024-09-13 20:01:19 +10:00
FrankTheFarmer d7f03215e2 Merge branch 'main' into implement_pokemon 2024-09-13 15:18:46 +10:00
FrankTheFarmer d366471e71 Merge branch 'main' into implement_pokemon 2024-09-12 20:17:22 +10:00
FrankTheFarmer e5163f154a The "true".asExpressionLike fix for the bird wing visibility 2024-09-12 20:16:20 +10:00
FrankTheFarmer cfc497d8ed Consistency update for the first few json posers 2024-09-11 18:39:58 +10:00
FrankTheFarmer 35f8ab0257 Removed life ending comma 2024-09-11 17:35:25 +10:00
FrankTheFarmer e890743c86 Merge branch 'main' into implement_pokemon 2024-09-11 17:34:19 +10:00
FrankTheFarmer ffec6e307d Move over poser! 2024-09-11 16:16:01 +10:00
FrankTheFarmer 7c35db7eaa Temp horse data 2024-09-11 16:15:38 +10:00
FrankTheFarmer 9f0c2296bc Fixed the wing flap placeholder animation 2024-09-09 10:32:27 +10:00
FrankTheFarmer 6b0a06c64d I have restored the named animations. i think they got lost. 2024-09-08 15:18:12 +10:00
FrankTheFarmer 160186931f Merge branch 'main' into implement_pokemon 2024-09-08 14:23:54 +10:00
FrankTheFarmer 22c4a14fbe Changelog and maybe added fortnite 2024-09-08 14:22:14 +10:00
FrankTheFarmer 241a82764b Removal of Kingler kotlin poser. im too lazy to do krabby rn lol 2024-09-08 14:18:58 +10:00
FrankTheFarmer 6e4d48bb07 Cramorant remodel 🐟 2024-09-08 14:16:55 +10:00
FrankTheFarmer 7a383f419a 🦀🦀 Krabby & Kingler updates 🦀🦀 2024-09-08 13:30:16 +10:00
FrankTheFarmer 933b99d349 Wobbuffet! 💁‍♀️ 2024-09-08 11:03:30 +10:00
FrankTheFarmer 72d78084f6 Merge branch 'main' into implement_pokemon 2024-09-08 10:21:30 +10:00
FrankTheFarmer fcee4d2774 Merge branch 'main' into implement_pokemon 2024-09-08 07:47:04 +10:00
FrankTheFarmer 61c7f3bc13 sunkern line look animation fixes 2024-09-08 07:45:15 +10:00
FrankTheFarmer 3830637f3c Stupid ass dinosaur crying in his sleep 2024-09-08 07:45:14 +10:00
FrankTheFarmer 45f8049521 💖🌱Sunkern & Sunflora🌻✨ given Retro's placeholder assets and data 2024-09-06 16:47:43 +10:00
FrankTheFarmer 823774bcfe Merge branch 'main' into implement_pokemon 2024-09-06 10:48:03 +10:00
FrankTheFarmer 920e5211c0 Somebody forgot the changelog again 2024-09-06 10:47:02 +10:00
FrankTheFarmer 7da61e3d8d Fixed the look animations for the ledyba line 2024-09-06 10:41:34 +10:00
FrankTheFarmer 754b60b15c fixed Maushold faints not playing 2024-09-03 21:29:09 +10:00
FrankTheFarmer 839454bfd6 Fixed Slowking battle idle not playing properly 2024-09-03 20:31:41 +10:00
FrankTheFarmer 3b6a0667d6 Adjusted Grafaiai walk speed to reduce feet sliding 2024-09-03 20:05:56 +10:00
FrankTheFarmer f298adaea8 Vivillon will stop being naked when removing Vivillon addons 2024-09-03 09:36:53 +10:00
FrankTheFarmer 641206b811 Merge branch 'main' into implement_pokemon 2024-09-02 14:52:59 +10:00
Tyzillion 117f13b056 Added sounds to mud sport and water sport. 2024-08-10 14:54:26 -04:00
Tyzillion 93a94b4900 Updated model for Beedrill and Kingler.
Implement Cramorant.
2024-08-05 17:43:24 -04:00
Tyzillion 40363c2ea1 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-08-04 14:09:00 -04:00
Tyzillion 056252d2bb Implemented particles for psychic, mudsport, watersport, and updated confusion attack particles. 2024-08-04 13:58:04 -04:00
FrankTheFarmer 6f15d65d90 Unbiases your hisuian starter evolution methods 2024-07-15 16:37:53 +10:00
FrankTheFarmer 02f9b21cff Small changelog tweak. I didn't forget i promise. 2024-07-15 12:56:41 +10:00
FrankTheFarmer 79cf154304 What if we take bikini bottom and push it somewhere else?! 2024-07-15 12:19:29 +10:00
FrankTheFarmer a650683d45 Merge remote-tracking branch 'origin/main' into implement_pokemon 2024-07-15 10:54:23 +10:00
Apion 311dc3dc9c Merge branch 'json-poser-conversion' into 'implement_pokemon'
Json poser conversion

See merge request cable-mc/cobblemon!1081
2024-06-27 23:50:31 +00:00
FrankTheFarmer bda1f80ecc Corrected Zangoose's egg moves being in its leveled move list. 2024-06-26 14:28:03 +10:00
FrankTheFarmer 817796bf40 Corrected Klevin's stats to match current databases post S/V patch 2024-06-26 10:22:02 +10:00
FrankTheFarmer 8a48eeab8b Merge branch 'main' into implement_pokemon 2024-06-23 20:48:59 +10:00
FrankTheFarmer 0061104c0d I did not forget the changelog this time 2024-06-23 20:47:37 +10:00
FrankTheFarmer 5110a1be17 Removed Chikorita's ability to look due to some awkward pivots and head structure 2024-06-23 20:28:37 +10:00
FrankTheFarmer 4cbb998106 Adjusted Shroomish's Yaw range for looks. Yeehaw 2024-06-23 20:24:20 +10:00
FrankTheFarmer 17de3f496c Adjusted Bellossom shoulder pose to clip a lot less than before. 2024-06-23 20:08:22 +10:00
FrankTheFarmer b54181e93a Glimmet and Tatsugiri are now shoulder mountable 2024-06-23 20:05:21 +10:00
FrankTheFarmer eaf7edcd94 Fletchling, Skrelp, Klefki, Fomantis, Morelull and Shroodle are now shoulder mountable 2024-06-23 19:46:16 +10:00
FrankTheFarmer cdf1631e2b ZORUA 2 STOP FLOATING 2024-06-23 18:51:40 +10:00
FrankTheFarmer 841f49553e Pidove, Petilil, Hisui Bias Petilil, Zorua, Zorua 2 and Elgyem are now shoulder mountable 2024-06-23 18:51:22 +10:00
FrankTheFarmer 57d7d5a1b9 Minun, Beldum, Starly, Buneary, Combee and Pachirisu are now shoulder mountable 2024-06-23 17:46:41 +10:00
FrankTheFarmer b1f2ab2ed7 Merge branch 'main' into implement_pokemon 2024-06-23 17:26:01 +10:00
FrankTheFarmer f629d95844 Spearow, Murkrow, Mew, Larvitar, Taillow and Plusleare now shoulder mountable 2024-06-23 16:58:37 +10:00
FrankTheFarmer 30904fbdda Caterpie, Weedle, and Smoochum are now shoulder mountable 2024-06-23 16:00:14 +10:00
FrankTheFarmer 9a3be6a85a Roaming Gimmighoul is now shoulder mountable 2024-06-23 15:01:17 +10:00
FrankTheFarmer 88c91d9bdd Reverted Hisuian Zoroark stats to be different from base Zoroark 2024-06-23 09:50:05 +10:00
FrankTheFarmer 5d2efe3e6b Merge branch 'main' into implement_pokemon 2024-06-23 09:41:59 +10:00
FrankTheFarmer d6354d3d94 Fixed Duskull and Dusclops spawn data 2024-06-14 11:51:33 +10:00
FrankTheFarmer 4ddfdd828c Merge branch 'main' into implement_pokemon 2024-06-14 11:30:43 +10:00
FrankTheFarmer 06b70c6204 After nearly 2 years, the Magby line received their placeholder walks 2024-06-12 14:05:54 +10:00
FrankTheFarmer 2dc9d11f79 Merge branch 'main' into implement_pokemon 2024-06-12 14:00:10 +10:00
FrankTheFarmer fbb161c511 I FORGOT THE CHANGELOG 2024-06-04 14:36:35 +10:00
FrankTheFarmer f84bc62d61 Dreepy can now float on your shoulders 2024-06-04 14:17:39 +10:00
FrankTheFarmer 2e20554d1e Fixed Chimchar and Monferno sleeping T pose 2024-06-04 13:55:16 +10:00
apion bb9fcc64ed Started working on Aerodactyl JSON poser 2024-05-24 21:52:16 -04:00
apion 2d908468ea Fixed issue where singular conditions not met, abra is now completely working with a JSON poser 2024-05-24 11:21:01 -04:00
apion c9ae148d86 Moved Abra to JSON poser, pose conditions not properly working 2024-05-24 10:24:50 -04:00
723 changed files with 78765 additions and 15553 deletions
+202 -5
View File
@@ -13,13 +13,12 @@
- Added support for Double Battles, Triple Battles, and Multi-battles.
- CriticalCaptures and Pokédex progress capture multiplier now work with the Pokédex.
- Added extra visuals to early berry growth stages.
- Hidden Power now displays its effective typing.
- Moves impacted by the abilities Pixelate, Refrigerate, Aerilate, Galvanize, and Normalize now display as their altered typing.
- Added Polished Tumblestone and Tumblestone Brick block sets from Tumblestone, Black Tumblestone, and Sky Tumblestone.
- Added Metronome, Protective Pads, Punching Glove, Room Service, Scope Lens, Shed Shell, Terrain Extender, Throat Spray, Utility Umbrella, Wide Lens, and Zoom Lens held items
- Added particles for moves: Watersport, Mud Sport, and Psychic.
- Added Fire, Water, Thunder, Leaf, Ice, Sun, Moon, Shiny, Dawn, and Dusk Stone storage blocks.
- Added Eject Pack, Metronome, Protective Pads, Punching Glove, Room Service, Scope Lens, Shed Shell, Terrain Extender, Throat Spray, Utility Umbrella, Wide Lens, and Zoom Lens held items
- Moves can now be benched without specifying a replacement move, allowing for empty move slots.
- Moves learned via Sketch now persist after battle.
- Added `stonjourner_henge_ruins`, `luna_henge_ruins`, and `sol_henge_ruins` structures.
- Added a `battleInvulnerability` gamerule to make players invulnerable to any damage during a battle.
- Added a `mobTargetInBattle` gamerule to exclude players from being targeted by mobs during a battle.
@@ -33,8 +32,16 @@
- Added `no_ai` and `freeze_frame` options to the `/spawnpokemon` command.
- Added shiny Pokémon particles with sound effects.
- Added animation for trading.
- Added shiny Pokémon effects.
- Added effects for the burn status effect.
- Added effects for the moves: Psychic, Water Sport, and Mud Sport.
- Added a new universal locator called "top".
### Pokémon Added
#### Gen 1
- Alola Bias Cubone
- Alolan Marowak
#### Gen 2
- Ledyba
- Ledian
@@ -42,13 +49,39 @@
- Sunflora
- Wobbuffet
- Girafarig
- Corsola
- Remoraid
- Octillery
- Mantine
- Smeargle
- Remoraid
- Octillery
- Mantine
- Corsola
#### Gen 3
- Slakoth
- Vigoroth
- Slaking
- Corphish
- Crawdaunt
- Feebas
- Milotic
- Wynaut
- Absol
- Spheal
- Sealeo
- Walrein
- Bagon
- Shelgon
- Salamence
#### Gen 4
- Shellos [East Sea form]
- Gastrodon [East Sea form]
- Finneon
- Lumineon
- Mantyke
- Feebas
- Milotic
- Spheal
@@ -67,12 +100,28 @@
#### Gen 5
- Purrloin
- Liepard
- Scraggy
- Scrafty
#### Gen 6
- Clauncher
- Clawitzer
#### Gen 7
- Pikipek
- Trumbeak
- Toucannon
- Mareanie
- Toxapex
- Sandygast
- Palossand
- Bruxish
#### Gen 8
- Cramorant
- Hatenna
- Hattrem
- Hatterene
- Bruxish
- Mareanie
- Toxapex
@@ -82,16 +131,156 @@
- Pincurchin
#### Gen 9
- Wattrel
- Kilowattrel
- Wiglett
- Wugtrio
- Flamigo
- Veluza
- Farigiraf
- Klawf
- Finizen
- Palafin
- Wiglett
- Wugtrio
- Flamigo
#### Unique Forms
- Magikarp Jump Variants
- Gyarados Jump Variants
### Added cries to the following Pokémon
- Sandshrew, Sandslash
- Magnemite, Magneton, Magnezone
- Gastly, Haunter, Gengar
- Rhyhorn, Rhydon, Rhyperior
- Happiny, Chansey
- Horsea, Seadra, Kingdra
- Magby, Magmar, Magmortar
- Porygon, Porygon2, Porygon-Z
- Sentret, Furret
- Misdreavus, Mismagius
- Corsola
- Mantyke, Mantine
- Girafarig, Farigiraf
- Wynaut, Wobbuffet
- Lunatone
- Solrock
- Corphish, Crawdaunt
- Feebas, Milotic
- Kecleon
- Absol
- Spheal, Sealeo, Walrein
- Relicanth
- Bagon, Shelgon, Salamence
- Munchlax
- Finneon, Lumineon
- Purrloin, Liepard
- Timburr, Gurdurr, Conkeldurr
- Joltik, Galvantula
- Elgyem, Beheeyem
- Golett, Golurk
- Deino, Zweilous, Hydreigon
- Flabébé, Floette, Florges
- Clauncher, Clawitzer
- Mareanie, Toxapex
- Wimpod, Golisopod
- Bruxish
- Hatenna, Hattrem, Hatterene
- Pincurchin
- Klawf
- Finizen, Palafin [Zero], Palafin [Hero]
- Dondozo
### Added shoulder mounts for the following Pokémon
- Weedle
- Caterpie
- Spearow
- Mew
- Murkrow
- Smoochum
- Larvitar
- Tailow
- Plusle
- Minun
- Beldum
- Starly
- Buneary
- Combee
- Pachirisu
- Pidove
- Petilil, Hisui Bias Petilil
- Zorua, Hisui Bias Zorua
- Elgyem
- Fletchling
- Skrelp
- Klefki
- Fomantis
- Morelull
- Dreepy
- Shroodle
- Tatsugiri
- Glimmet
- Gimmighoul [Roaming]
### Animation updates for the following Pokémon
- Bellsprout, Weepinbel, Victreebel
- Shellder, Cloyster
- Porygon, Porygon2, Porygon-Z
- Furret
- Swinub, Piloswine, Mamoswine
- Skarmory
- Spinda
- Torkoal
- Nincada, Ninjask
- Lunatone
- Solrock
- Buneary, Lopunny
- Alomomola
- Dreepy, Drakloak
- Kleavor
### Model updates for the following Pokémon
- Bulbasaur, Ivysaur, Venusaur
- Charmander, Charmeleon, Charizard
- Kakuna, Beedrill
- Porygon, Porygon2, Porygon-Z
- Igglybuff, Jigglypuff, Wigglytuff
- Poliwhirl, Poliwrath
- Bellsprout, Weepinbell, Victreebel
- Shellder, Cloyster
- Gastly, Haunter
- Onix
- Krabby, Kingler
- Rhyhorn, Rhydon, Rhyperior
- Horsea, Seadra, Kingdra
- Goldeen, Seaking
- Magby, Magmar, Magmortar
- Magikarp, Gyarados
- Munchlax, Snorlax
- Swinub, Piloswine, Mamoswine
- Mudkip, Marshtomp, Swampert
- Baltoy, Claydol
- Carvanha
- Relicanth
- Prinplup, Empoleon
- Gible, Gabite, Garchomp
- Riolu, Lucario
- Snivy, Servine, Serperior
- Tepig, Pignite, Emboar
- Krookodile
- Dwebble, Crustle
- Joltik, Galvantula
- Klink, Klang, Klinglang
- Golett, Golurk
- Fennekin, Braixen, Delphox
- Phantump, Trevenant
- Litten, Torracat, Incineroar
- Popplio, Brionne, Primarina
- Lurantis
- Scorbunny, Cinderace
- Quaxly
- Tatsugiri
### Changes
- Buffed Dusk Ball catch multipliers: Increased multiplier to 3.5 (from 3.0) in light level 0. Increased multiplier to 3.0 (from 1.5) in light levels 1-7.
@@ -99,9 +288,7 @@
- Adjusted some berry balance values like yield and growth times.
- Adjusted volumes of sounds made by Display Cases, Berry Bushes, Energy Root, Medicinal Leek, Vivichoke, Mints, Revival Herbs and Gilded Chests.
- Changes to mulch buffs/durations.
- Dreepy is now shoulder mountable.
- Updated potion sprites.
- Weedle, Caterpie, Spearow, Smoochum, Mew, Murkrow, Larvitar, Taillow, Plusle, Minun, Beldum, Starly, Buneary, Combee, Pachirisu, Pidove, Petilil, Hisui Bias Petilil, Zorua, Hisuian Zorua, Elgyem, Fletchling, Skrelp, Klefki, Fomantis, Morelull, Dreepy, Shroodle, Tatsugiri, Glimmet, and Roaming Gimmighoul are now shoulder mountable.
- Link Cable recipe has been redesigned.
- Updated sounds for Medicinal Leeks, Big Roots, Energy Roots and Revival Herbs.
- Updated UI sounds for clicking and evolving Pokémon.
@@ -124,6 +311,15 @@
- The default number of digits for the Pokédex number in the summary has been increased, from 3 to 4.
- The pasture block model's screen is now off by default.
- The Poké Balls creative tab is now named Utility Items as it also encompasses Poké Rod and Pokédex items.
- Moves can now be benched without specifying a replacement move, allowing for empty move slots.
- Moves learned via Sketch now persist after battle.
- Updated potion sprites
- Removed the interchangeable evolution results for the first stage Hisuian starters to prevent confusion. The method still exists for stage 2 to 3, but stage 1 to 2 was not distinguishable enough for many users.
- Hidden Power now displays its effective typing.
- Updated particles for moves: Confusion, Protect, Sand Attack, and Quick Attack.
- Updated particles for status effects: Paralysis, Poison, and Sleep.
- Updated particles on Gastly.
- Revamped stat buff and de-buff particles.
### Fixes
- Scaled down Amaura's fetus model to avoid clipping through the tank while animating.
@@ -179,6 +375,7 @@
- Fixed Slowking's battle idle.
- Fixed Grafaiai's walk speed to prevent model sliding.
- Fixed Alolan Exeggutor's tail not showing in the party UI. It will now also stand in front of all Pokémon in the party menu :)
- Fixed Timburr duplicating its log while fainting.
- Fixed reviving items throwing an exception when used in battle.
- Fixed messages for Focus Sash, Confusion, Mummy, Ice Face, Own Tempo, and Revive.
- Improve error handling when loading spawn-sets to ensure invalid configurations don't crash the server.
@@ -277,6 +277,7 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(BattleChallengeExpiredPacket.ID, BattleChallengeExpiredPacket::decode, BattleChallengeExpiredHandler))
list.add(PacketRegisterInfo(BattleReplacePokemonPacket.ID, BattleReplacePokemonPacket::decode, BattleReplacePokemonHandler))
list.add(PacketRegisterInfo(BattleTransformPokemonPacket.ID, BattleTransformPokemonPacket::decode, BattleTransformPokemonHandler))
list.add(PacketRegisterInfo(BattleAppendTargetedEntityPacket.ID, BattleAppendTargetedEntityPacket::decode, BattleSetTargetedEntityHandler))
// MultiBattleTeam Packets
list.add(PacketRegisterInfo(TeamRequestNotificationPacket.ID, TeamRequestNotificationPacket::decode, TeamRequestNotificationHandler))
@@ -9,11 +9,16 @@
package com.cobblemon.mod.common.battles.interpreter.instructions
import com.bedrockk.molang.runtime.MoLangRuntime
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.bedrockk.molang.runtime.value.DoubleValue
import com.bedrockk.molang.runtime.value.StringValue
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.interpreter.Effect
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addEntityFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addPokemonEntityFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addPokemonFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addStandardFunctions
import com.cobblemon.mod.common.api.moves.Moves
import com.cobblemon.mod.common.api.moves.animations.ActionEffectContext
@@ -26,9 +31,14 @@ import com.cobblemon.mod.common.battles.dispatch.InstructionSet
import com.cobblemon.mod.common.battles.dispatch.InterpreterInstruction
import com.cobblemon.mod.common.battles.dispatch.UntilDispatch
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.net.messages.client.battle.BattleAppendTargetedEntityPacket
import com.cobblemon.mod.common.pokemon.evolution.progress.UseMoveEvolutionProgress
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.ai.targeting.TargetingConditions
import net.minecraft.world.phys.AABB
import java.util.concurrent.CompletableFuture
/**
@@ -97,6 +107,13 @@ class MoveInstruction(
val runtime = MoLangRuntime().also {
battle.addQueryFunctions(it.environment.query).addStandardFunctions()
}
userPokemon.effectedPokemon.entity?.let {
val queryStruct = QueryStruct(hashMapOf())
queryStruct.addEntityFunctions(it)
queryStruct.addPokemonEntityFunctions(it)
queryStruct.addPokemonFunctions(it.pokemon)
runtime.environment.variable.setDirectly("user", queryStruct)
}
actionEffect ?: return@dispatch GO
val context = ActionEffectContext(
@@ -130,6 +147,17 @@ class MoveInstruction(
runtime.environment.query.addFunction("move") { move.struct }
runtime.environment.query.addFunction("instruction_id") { StringValue(cobblemonResource("move").toString()) }
if (userPokemon.entity != null && targetPokemon?.entity != null) {
//Not the most elegant solution, maybe we should just make the targeted entity a piece of SyncedData
val serverLevel = userPokemon.entity!!.level() as? ServerLevel
serverLevel?.getNearbyPlayers(
TargetingConditions.forNonCombat(),
userPokemon.entity!!,
AABB.ofSize(userPokemon.entity!!.position(), 128.0, 128.0, 128.0)
)?.mapNotNull { it as? ServerPlayer }?.forEach { it.sendPacket(BattleAppendTargetedEntityPacket(userPokemon.entity!!.id, targetPokemon.entity!!.id)) }
battle.sendUpdate(BattleAppendTargetedEntityPacket(userPokemon.entity!!.id, targetPokemon.entity!!.id))
}
this.future = actionEffect.run(context)
holds = context.holds // Reference so future things can check on this action effect's holds
future.thenApply { holds.clear() }
@@ -14,6 +14,7 @@ import com.bedrockk.molang.runtime.value.StringValue
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.entity.PokemonSideDelegate
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addEntityFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addFunctions
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
import com.cobblemon.mod.common.api.scheduling.ScheduledTask
@@ -45,8 +46,6 @@ import net.minecraft.world.InteractionHand
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.player.Player
import net.minecraft.world.phys.Vec3
import java.util.UUID
import java.util.concurrent.ConcurrentHashMap
class PokemonClientDelegate : PosableState(), PokemonSideDelegate {
companion object {
@@ -94,6 +93,8 @@ class PokemonClientDelegate : PosableState(), PokemonSideDelegate {
private var scaleAnimTask: ScheduledTask? = null
private var cryAnimation: ActiveAnimation? = null
var targetedEntityId: Int? = null
override fun onSyncedDataUpdated(data: EntityDataAccessor<*>) {
super.onSyncedDataUpdated(data)
if (this::currentEntity.isInitialized) {
@@ -339,6 +340,7 @@ class PokemonClientDelegate : PosableState(), PokemonSideDelegate {
struct.addFunctions(functions.functions)
struct.addFunctions(ClientMoLangFunctions.clientFunctions)
runtime.environment.query = struct
addEnemyFunctions(struct)
}
override fun initialize(entity: PokemonEntity) {
@@ -0,0 +1,18 @@
package com.cobblemon.mod.common.client.net.battle
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.client.entity.PokemonClientDelegate
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.net.messages.client.battle.BattleAppendTargetedEntityPacket
import net.minecraft.client.Minecraft
object BattleSetTargetedEntityHandler : ClientNetworkPacketHandler<BattleAppendTargetedEntityPacket> {
override fun handle(packet: BattleAppendTargetedEntityPacket, client: Minecraft) {
val sourceEntity = Minecraft.getInstance().level?.getEntity(packet.sourceEntityId)
val sourcePokemon = sourceEntity as? PokemonEntity
if (sourcePokemon != null) {
(sourcePokemon.delegate as PokemonClientDelegate).targetedEntityId = packet.targetedEntityId
}
}
}
@@ -16,12 +16,10 @@ import com.cobblemon.mod.common.client.particle.BedrockParticleOptionsRepository
import com.cobblemon.mod.common.client.particle.ParticleStorm
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.entity.PosableEntity
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormEntityParticlePacket
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.client.Minecraft
import net.minecraft.world.entity.Entity
import kotlin.text.get
import kotlin.math.pow
object SpawnSnowstormEntityParticleHandler : ClientNetworkPacketHandler<SpawnSnowstormEntityParticlePacket> {
override fun handle(packet: SpawnSnowstormEntityParticlePacket, client: Minecraft) {
@@ -35,6 +33,55 @@ object SpawnSnowstormEntityParticleHandler : ClientNetworkPacketHandler<SpawnSno
val particleRuntime = MoLangRuntime().setup().setupClient()
particleRuntime.environment.query.addFunction("entity") { state.runtime.environment.query }
particleRuntime.environment.query.addFunction("point_on_curve") {
//All this just finds a curve that goes through the given points + 0, 0
//And calcs where we are on it at t
val t = it.getDouble(0)
val x1 = it.getDouble(1)
val y1 = it.getDouble(2)
val x2 = it.getDouble(3)
val y2 = it.getDouble(4)
val a0 = 0.0
val a1 = x1.pow(2)
val a2 = x2.pow(2)
val b0 = 0.0
val b1 = x1
val b2 = x2
val c0 = 1.0
val c1 = 1.0
val c2 = 1.0
val d0 = 0.0
val d1 = y1
val d2 = y2
val matrix = arrayOf(
arrayOf(a2, b2, c2, d2),
arrayOf(a1, b1, c1, d1),
arrayOf(a0, b0, c0, d0)
)
for (i in 0 until 3) {
var pivot = matrix[i][i]
if (pivot != 0.0) {
for (j in 0 until 4) {
matrix[i][j] /= pivot
}
}
// Make other elements in the current column 0
for (k in 0 until 3) {
if (k != i) {
val factor = matrix[k][i]
for (j in 0 until 4) {
matrix[k][j] -= factor * matrix[i][j]
}
}
}
}
return@addFunction matrix[0][3] * t.pow(2) + matrix[1][3] * t + matrix[2][3]
}
val storm = ParticleStorm(
effect = effect,
@@ -15,6 +15,7 @@ import com.cobblemon.mod.common.api.snowstorm.BedrockParticleOptions
import com.cobblemon.mod.common.api.snowstorm.ParticleEmitterAction
import com.cobblemon.mod.common.client.render.MatrixWrapper
import com.cobblemon.mod.common.client.render.SnowstormParticle
import com.cobblemon.mod.common.entity.AttackingEntity
import com.cobblemon.mod.common.entity.PosableEntity
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.particle.SnowstormParticleOptions
@@ -62,6 +63,9 @@ class ParticleStorm(
}
if (entity is PosableEntity) {
runtime.environment.query.addFunction("entity") { entity.struct }
if (entity is AttackingEntity) {
addAttackingFunctions()
}
} else if (entity is Player) {
runtime.environment.query.addFunction("entity") { entity.asMoLangValue() }
}
@@ -76,6 +80,33 @@ class ParticleStorm(
Minecraft.getInstance().particleEngine.add(this)
}
fun addAttackingFunctions(attackingEntity: AttackingEntity) {
attackingEntity as Entity
runtime.environment.query.addFunction("target_deltax") {
val targetedEntity = getEntityById(attackingEntity.getAttackingEntityId())?: return@addFunction 1.0
matrixWrapper.transformWorldToParticle(attackingEntity.position()).x - matrixWrapper.transformWorldToParticle(targetedEntity.position()).x
}
runtime.environment.query.addFunction("target_deltay") {
val targetedEntity = getEntityById(attackingEntity.getAttackingEntityId())?: return@addFunction 1.0
matrixWrapper.transformWorldToParticle(attackingEntity.position()).y - matrixWrapper.transformWorldToParticle(targetedEntity.position()).y
}
runtime.environment.query.addFunction("target_deltaz") {
val targetedEntity = getEntityById(attackingEntity.getAttackingEntityId())?: return@addFunction 1.0
matrixWrapper.transformWorldToParticle(attackingEntity.position()).z - matrixWrapper.transformWorldToParticle(targetedEntity.position()).z
}
runtime.environment.query.addFunction("target_distance") {
val targetedEntity = getEntityById(attackingEntity.getAttackingEntityId())?: return@addFunction 2.0
targetedEntity.position().distanceTo(attackingEntity.position())
}
}
private fun getEntityById(entityId: Int?): Entity? {
if (entityId != null) {
Minecraft.getInstance().level?.getEntity(entityId)
}
return null
}
fun getX() = x
fun getY() = y
fun getZ() = z
@@ -33,4 +33,5 @@ class MatrixWrapper {
fun getOrigin() = position.add(matrix.getOrigin())
fun transformPosition(position: Vec3) = this.position.add(matrix.transformPosition(position))
fun transformWorldToParticle(position: Vec3) = Matrix4f(matrix).invertAffine().transformPosition(position.subtract(this.position))
}
@@ -96,6 +96,12 @@ class LocatorAccess(
state.getOrPut("middle") { MatrixWrapper() }.updateMatrix(matrixStack.last().pose())
matrixStack.popPose()
// If we have the entity, put in a "top" locator for top center of hitbox.
matrixStack.pushPose()
matrixStack.translate(0.0, -entity.boundingBox.ysize, 0.0)
matrixStack.scale(-1F, -1F, 1F)
state.getOrPut("top") { MatrixWrapper() }.updateMatrix(matrixStack.last().pose())
matrixStack.popPose()
}
for ((name, locator) in locators) {
@@ -1,74 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class AlakazamModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("alakazam")
override val head = getPart("head")
override val leftArm = getPart("left_shoulder")
override val rightArm = getPart("right_shoulder")
override val leftLeg = getPart("left_upper_leg")
override val rightLeg = getPart("right_upper_leg")
override var portraitScale = 1.75F
override var portraitTranslation = Vec3(-0.25, 0.85, 0.0)
override var profileScale = 0.73F
override var profileTranslation = Vec3(0.0, 0.65, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
val blink = quirk { bedrockStateful("alakazam", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook() ,
bedrock("alakazam", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("alakazam", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("alakazam", "faint") else null
}
@@ -1,60 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class BellsproutModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("bellsprout")
override val head = getPart("head")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.1, 0.41, 0.0)
override var profileScale = 0.75F
override var profileTranslation = Vec3(0.0, 0.64, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
animations = arrayOf(
singleBoneLook(),
bedrock("bellsprout", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
animations = arrayOf(
singleBoneLook(),
bedrock("bellsprout", "ground_idle")
//bedrock("bellsprout", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("bellsprout", "faint") else null
}
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
@@ -33,6 +34,8 @@ class GengarModel(root: ModelPart) : PokemonPosableModel(root), BipedFrame {
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("gengar", "cry") }
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
@@ -1,68 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class MagmarModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("magmar")
override val head = getPart("head")
override val leftArm = getPart("leftarm")
override val rightArm = getPart("rightarm")
override val leftLeg = getPart("leftleg")
override val rightLeg = getPart("rightleg")
override var portraitScale = 2.8F
override var portraitTranslation = Vec3(-0.1, 0.3, 0.0)
override var profileScale = 0.8F
override var profileTranslation = Vec3(0.0, 0.58, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magmar", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magmar", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("magmar", "faint") else null
}
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
@@ -28,6 +29,8 @@ class MagnemiteModel(root: ModelPart) : PokemonPosableModel(root) {
lateinit var walk: Pose
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("magnemite", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("magnemite", "blink") }
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -28,6 +29,8 @@ class MagnetonModel(root: ModelPart) : PokemonPosableModel(root) {
lateinit var walk: Pose
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("magneton", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("magneton", "blink") }
@@ -1,102 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class OnixModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("onix")
override val head = getPart("head")
override var portraitScale = 1.1F
override var portraitTranslation = Vec3(-0.2, 1.4, 0.0)
override var profileScale = 0.55F
override var profileTranslation = Vec3(-0.1, 0.9, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
lateinit var ui: Pose
lateinit var sleep: Pose
lateinit var battleidle: Pose
override val cryAnimation = CryProvider { bedrockStateful("onix", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("onix", "blink") }
ui = registerPose(
poseName = "ui",
poseTypes = UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("onix", "summary_idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 0,
animations = arrayOf(
bedrock("onix", "sleep"),
bedrock("onix", "slow_boulder_rotation")
)
)
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES,
transformTicks = 1,
condition = { !it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("onix", "ground_idle"),
bedrock("onix", "boulder_rotation")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 1,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("onix", "ground_walk"),
bedrock("onix", "boulder_rotation")
)
)
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
animations = arrayOf(
singleBoneLook(),
bedrock("onix", "battle_idle"),
bedrock("onix", "boulder_rotation")
)
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("onix", "faint")
}
@@ -1,72 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class PoliwhirlModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("poliwhirl")
override var portraitScale = 1.4F
override var portraitTranslation = Vec3(-0.1, 0.2, 0.0)
override var profileScale = 0.8F
override var profileTranslation = Vec3(0.0, 0.5, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
override fun registerPoses() {
val blink = quirk { bedrockStateful("poliwhirl", "blink")}
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("poliwhirl", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STANDING_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwhirl", "ground_idle")
)
)
float = registerPose(
poseName = "float",
poseType = PoseType.FLOAT,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwhirl", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseType = PoseType.SWIM,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwhirl", "water_swim")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("poliwhirl", "faint") else null
}
@@ -1,72 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class PoliwrathModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("poliwrath")
override var portraitScale = 1.3F
override var portraitTranslation = Vec3(-0.1, 0.36, 0.0)
override var profileScale = 0.85F
override var profileTranslation = Vec3(0.0, 0.42, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var float: Pose
lateinit var swim: Pose
override fun registerPoses() {
val blink = quirk { bedrockStateful("poliwrath", "blink")}
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STANDING_POSES + UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwrath", "ground_idle")
)
)
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("poliwrath", "sleep"))
)
float = registerPose(
poseName = "float",
poseType = PoseType.FLOAT,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwrath", "water_idle")
)
)
swim = registerPose(
poseName = "swim",
poseType = PoseType.SWIM,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("poliwrath", "water_swim")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("poliwrath", "faint") else null
}
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -33,6 +34,8 @@ class SandshrewModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("sandshrew", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("sandshrew", "blink")}
standing = registerPose(
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -32,6 +33,8 @@ class SandslashModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("sandslash", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("sandslash", "blink")}
standing = registerPose(
@@ -1,56 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class VictreebelModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("victreebel")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.1, -0.2, 0.0)
override var profileScale = 0.92F
override var profileTranslation = Vec3(0.0, 0.35, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
transformTicks = 10,
animations = arrayOf(
bedrock("victreebel", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
transformTicks = 10,
animations = arrayOf(
bedrock("victreebel", "ground_idle")
//bedrock("victreebel", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("victreebel", "faint") else null
}
@@ -1,54 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class WeepinbellModel(root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("weepinbell")
override var portraitScale = 1.73F
override var portraitTranslation = Vec3(0.0, -1.0, 0.0)
override var profileScale = 1.1F
override var profileTranslation = Vec3(0.0, 0.2, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
bedrock("weepinbell", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
bedrock("weepinbell", "ground_idle")
//bedrock("weepinbell", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("weepinbell", "faint") else null
}
@@ -1,63 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class FurretModel (root: ModelPart) : PokemonPosableModel(root), QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("furret")
override val foreLeftLeg = getPart("arm_left")
override val foreRightLeg = getPart("arm_right")
override val hindLeftLeg = getPart("leg_left")
override val hindRightLeg = getPart("leg_right")
override var portraitScale = 2.1F
override var portraitTranslation = Vec3(-0.6, 0.2, 0.0)
override var profileScale = 0.82F
override var profileTranslation = Vec3(0.0, 0.54, 0.0)
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
override fun registerPoses() {
val blink = quirk { bedrockStateful("furret", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("furret", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
QuadrupedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
bedrock("furret", "pose")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("furret", "faint") else null
}
@@ -1,68 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class MagbyModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("magby")
override val head = getPart("head")
override val leftArm = getPart("lefthand")
override val rightArm = getPart("righthand")
override val leftLeg = getPart("leftleg")
override val rightLeg = getPart("rightleg")
override var portraitScale = 2.4F
override var portraitTranslation = Vec3(-0.05, -0.45, 0.0)
override var profileScale = 0.78F
override var profileTranslation = Vec3(-0.03, 0.61, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magby", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magby", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("magby", "faint") else null
}
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -28,6 +29,8 @@ class MisdreavusModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("misdreavus", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("misdreavus", "blink") }
standing = registerPose(
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.animation.Bimanu
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -35,6 +36,8 @@ class SentretModel (root: ModelPart) : PokemonPosableModel(root), BipedFrame, Bi
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("sentret", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("sentret", "blink") }
@@ -1,106 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BiWingedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class SkarmoryModel (root: ModelPart) : PokemonPosableModel(root), BipedFrame, BiWingedFrame, HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("skarmory")
override val head = getPart("lower_neck")
override val leftLeg = getPart("left_thigh")
override val rightLeg = getPart("right_thigh")
override val leftWing = getPart("left_wing")
override val rightWing = getPart("right_wing")
override var portraitScale = 2.49F
override var portraitTranslation = Vec3(-1.05, 1.1, 0.0)
override var profileScale = 0.69F
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
lateinit var sleeping: CobblemonPose
lateinit var hovering: CobblemonPose
lateinit var flying: CobblemonPose
lateinit var battleidle: CobblemonPose
override fun registerPoses() {
val blink = quirk { bedrockStateful("skarmory", "blink") }
sleeping = registerPose(
poseName = "sleeping",
poseType = PoseType.SLEEP,
animations = arrayOf(
bedrock("skarmory", "sleep")
)
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES - PoseType.HOVER + PoseType.UI_POSES,
condition = { !it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("skarmory", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES - PoseType.FLY,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("skarmory", "ground_idle"),
BipedWalkAnimation(this,0.6F, 1F)
)
)
hovering = registerPose(
poseName = "hovering",
poseType = PoseType.HOVER,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("skarmory", "air_idle")
)
)
flying = registerPose(
poseName = "flying",
poseType = PoseType.FLY,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("skarmory", "air_idle")
)
)
battleidle = registerPose(
poseName = "battleidle",
poseTypes = PoseType.STATIONARY_POSES,
condition = { it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("skarmory", "battle_idle")
)
)
}
}
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
@@ -34,7 +35,7 @@ class SmeargleModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, B
lateinit var standing: Pose
lateinit var walk: Pose
//override val cryAnimation = CryProvider { _, _ -> bedrockStateful("smeargle", "cry") }
override val cryAnimation = CryProvider { bedrockStateful("smeargle", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("smeargle", "blink") }
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen2
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -35,6 +36,8 @@ class StantlerModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame,
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("stantler", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("stantler", "blink") }
@@ -1,49 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class LunatoneModel (root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("lunatone")
override var portraitScale = 1.05F
override var portraitTranslation = Vec3(0.23, 0.53, 0.0)
override var profileScale = 0.73F
override var profileTranslation = Vec3(0.05, 0.68, 0.0)
lateinit var sleep: CobblemonPose
lateinit var standing: CobblemonPose
override fun registerPoses() {
val blink = quirk { bedrockStateful("lunatone", "blink") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("lunatone", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.ALL_POSES - PoseType.SLEEP,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("lunatone", "ground_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(sleep)) bedrockStateful("lunatone", "faint") else null
}
@@ -1,74 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class NincadaModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("nincada")
override val head = getPart("head")
override val foreLeftLeg= getPart("leg_front_left")
override val foreRightLeg = getPart("leg_front_right")
override val hindLeftLeg = getPart("leg_back_left")
override val hindRightLeg = getPart("leg_back_right")
override var portraitScale = 2.0F
override var portraitTranslation = Vec3(-0.26, -1.0, 0.0)
override var profileScale = 0.7F
override var profileTranslation = Vec3(0.0, 0.6, 0.0)
lateinit var sleep: Pose
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("nincada", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("nincada", "blink") }
val flutter = quirk { bedrockStateful("nincada", "quirk_wingflutter") }
sleep = registerPose(
poseType = PoseType.SLEEP,
transformTicks = 10,
animations = arrayOf(bedrock("nincada", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = setOf(PoseType.NONE, PoseType.STAND, PoseType.PORTRAIT, PoseType.PROFILE),
transformTicks = 10,
quirks = arrayOf(blink, flutter),
animations = arrayOf(
singleBoneLook(),
bedrock("nincada", "ground_idle")
)
)
walk = registerPose(
poseName = "walking",
poseTypes = setOf(PoseType.SWIM, PoseType.WALK),
transformTicks = 10,
quirks = arrayOf(blink, flutter),
animations = arrayOf(
singleBoneLook(),
bedrock("nincada", "ground_walk")
)
)
}
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk)) bedrockStateful("nincada", "faint") else null
}
@@ -1,93 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class NinjaskModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("ninjask")
override val head = getPart("head")
override var portraitScale = 1.8F
override var portraitTranslation = Vec3(-0.2, -0.4, 0.0)
override var profileScale = 0.9F
override var profileTranslation = Vec3(0.0, 0.3, 0.0)
lateinit var sleep: Pose
lateinit var stand: Pose
lateinit var walk: Pose
lateinit var hover: Pose
lateinit var fly: Pose
override val cryAnimation = CryProvider { bedrockStateful("ninjask", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("ninjask", "blink") }
val barrelRoll = quirk { bedrockStateful("ninjask", "run_quirk") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("ninjask", "sleep"))
)
stand = registerPose(
poseName = "standing",
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.HOVER,
transformTicks = 10,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("ninjask", "ground_idle")
)
)
hover = registerPose(
poseName = "hover",
poseType = PoseType.HOVER,
transformTicks = 10,
quirks = arrayOf(blink, barrelRoll),
animations = arrayOf(
singleBoneLook(),
bedrock("ninjask", "air_idle")
)
)
fly = registerPose(
poseName = "fly",
poseType = PoseType.FLY,
transformTicks = 10,
quirks = arrayOf(blink, barrelRoll),
animations = arrayOf(
singleBoneLook(),
bedrock("ninjask", "air_fly")
)
)
walk = registerPose(
poseName = "walking",
poseTypes = PoseType.MOVING_POSES - PoseType.FLY,
transformTicks = 10,
quirks = arrayOf(blink, barrelRoll),
animations = arrayOf(
singleBoneLook(),
bedrock("ninjask", "ground_walk")
)
)
}
override fun getFaintAnimation(state: PosableState) = bedrockStateful("ninjask", "faint")
}
@@ -1,49 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class SolrockModel (root: ModelPart) : PokemonPosableModel(root) {
override val rootPart = root.registerChildWithAllChildren("solrock")
override var portraitScale = 1.6F
override var portraitTranslation = Vec3(-0.08, 0.31, 0.0)
override var profileScale = 0.8F
override var profileTranslation = Vec3(0.0, 0.74, 0.0)
lateinit var sleep: CobblemonPose
lateinit var standing: CobblemonPose
override fun registerPoses() {
val blink = quirk { bedrockStateful("solrock", "blink") }
sleep = registerPose(
poseType = PoseType.SLEEP,
animations = arrayOf(bedrock("solrock", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.ALL_POSES - PoseType.SLEEP,
quirks = arrayOf(blink),
animations = arrayOf(
bedrock("solrock", "ground_idle")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(sleep)) bedrockStateful("solrock", "faint") else null
}
@@ -1,57 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class SpindaModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
override val rootPart = root.registerChildWithAllChildren("spinda")
override val head = getPart("head")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 1.9F
override var portraitTranslation = Vec3(-0.5, -0.1, 0.0)
override var profileScale = 0.76F
override var profileTranslation = Vec3(0.0, 0.6, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("spinda", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("spinda", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.7F)
//bedrock("spinda", "ground_walk")
)
)
}
}
@@ -1,74 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen3
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class TorkoalModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
override val rootPart = root.registerChildWithAllChildren("torkoal")
override val head = getPart("neck")
override val foreLeftLeg= getPart("leg_front_left")
override val foreRightLeg = getPart("leg_front_right")
override val hindLeftLeg = getPart("leg_back_left")
override val hindRightLeg = getPart("leg_back_right")
override var portraitScale = 2.5F
override var portraitTranslation = Vec3(-1.3, -0.5, 0.0)
override var profileScale = 0.8F
override var profileTranslation = Vec3(0.0, 0.43, 0.0)
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
lateinit var battleidle: CobblemonPose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
condition = { !it.isBattling },
transformTicks = 10,
animations = arrayOf(
singleBoneLook(),
bedrock("torkoal", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
transformTicks = 10,
animations = arrayOf(
singleBoneLook(),
bedrock("torkoal", "ground_idle"),
QuadrupedWalkAnimation(this, periodMultiplier = 0.7F, amplitudeMultiplier = 0.7F)
)
)
battleidle = registerPose(
poseName = "battleidle",
poseTypes = PoseType.STATIONARY_POSES,
condition = { it.isBattling },
transformTicks = 10,
animations = arrayOf(
singleBoneLook(),
bedrock("torkoal", "battle_idle")
)
)
}
}
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -36,6 +37,8 @@ class HappinyModel(root: ModelPart) : PokemonPosableModel(root), BipedFrame {
lateinit var sleep: CobblemonPose
lateinit var battle_idle: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("happiny", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("happiny", "blink") }
val hairQuirk = quirk { bedrockStateful("happiny", "hairshake_quirk") }
@@ -1,83 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.util.isBattling
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class LucarioModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("lucario")
override val head = getPart("head")
override val leftArm = getPart("arm_left")
override val rightArm = getPart("arm_right")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2.2F
override var portraitTranslation = Vec3(-0.2, 2.2, 0.0)
override var profileScale = 0.6F
override var profileTranslation = Vec3(0.0, 0.83, 0.0)
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
lateinit var battleIdle: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("lucario", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("lucario", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
condition = { !it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("lucario", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("lucario", "ground_idle"),
BimanualSwingAnimation(this),
BipedWalkAnimation(this)
)
)
battleIdle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
condition = { it.isBattling },
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("lucario", "ground_idle"),
bedrock("lucario", "battle_idle_aura_left"),
bedrock("lucario", "battle_idle_aura_right")
)
)
}
}
@@ -1,68 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class MagmortarModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("magmortar")
override val head = getPart("head")
override val leftArm = getPart("leftarm")
override val rightArm = getPart("rightarm")
override val leftLeg = getPart("leftleg")
override val rightLeg = getPart("rightleg")
override var portraitScale = 2.2F
override var portraitTranslation = Vec3(-0.35, 1.2, 0.0)
override var profileScale = 0.65F
override var profileTranslation = Vec3(0.0, 0.73, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magmortar", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("magmortar", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("magmortar", "faint") else null
}
@@ -8,6 +8,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -27,6 +28,8 @@ class MagnezoneModel(root: ModelPart) : PokemonPosableModel(root) {
lateinit var walk: Pose
lateinit var sleep: Pose
override val cryAnimation = CryProvider { bedrockStateful("magnezone", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("magnezone", "blink") }
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
@@ -28,6 +29,8 @@ class MismagiusModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("mismagius", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("mismagius", "blink") }
standing = registerPose(
@@ -1,67 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen4
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class RioluModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
override val rootPart = root.registerChildWithAllChildren("riolu")
override val head = getPart("head")
override val leftArm = getPart("arm_left")
override val rightArm = getPart("arm_right")
override val leftLeg = getPart("leg_left")
override val rightLeg = getPart("leg_right")
override var portraitScale = 2.8F
override var portraitTranslation = Vec3(0.0, -0.3, 0.0)
override var profileScale = 0.85F
override var profileTranslation = Vec3(0.0, 0.5, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("riolu", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("riolu", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("riolu", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("riolu", "ground_idle"),
BipedWalkAnimation(this),
BimanualSwingAnimation(this)
)
)
}
}
@@ -11,6 +11,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType
@@ -35,6 +36,8 @@ class BeheeyemModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame,
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("beheeyem", "cry") }
override fun registerPoses() {
sleep = registerPose(
poseType = PoseType.SLEEP,
@@ -1,61 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class CrustleModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("crustle")
override val head = getPart("head")
override var portraitScale = 4.0F
override var portraitTranslation = Vec3(-0.55, -4.0, 0.0)
override var profileScale = 1.0F
override var profileTranslation = Vec3(0.0, 0.1, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("crustle", "cry") }
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("crustle", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("crustle", "ground_idle")
//bedrock("crustle", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("crustle", "faint") else null
}
@@ -11,6 +11,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -35,7 +36,7 @@ class DeinoModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, Qua
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
// override val cryAnimation = CryProvider { bedrockStateful("deino", "cry") }
override val cryAnimation = CryProvider { bedrockStateful("deino", "cry") }
override fun registerPoses() {
standing = registerPose(
@@ -1,61 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class DwebbleModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("dwebble")
override val head = getPart("head")
override var portraitScale = 2.6F
override var portraitTranslation = Vec3(-0.2, -1.9, 0.0)
override var profileScale = 1.0F
override var profileTranslation = Vec3(0.0, 0.2, 0.0)
lateinit var standing: Pose
lateinit var walk: Pose
override val cryAnimation = CryProvider { bedrockStateful("dwebble", "cry") }
override fun registerPoses() {
standing = registerPose(
poseName = "standing",
poseTypes = STATIONARY_POSES + UI_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("dwebble", "ground_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = MOVING_POSES,
animations = arrayOf(
singleBoneLook(),
bedrock("dwebble", "ground_idle")
//bedrock("dwebble", "ground_walk")
)
)
}
// override fun getFaintAnimation(
// pokemonEntity: PokemonEntity,
// state: PosableState<PokemonEntity>
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("dwebble", "faint") else null
}
@@ -13,6 +13,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.createTransforma
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
@@ -42,6 +43,8 @@ class ElgyemModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, Bi
lateinit var shoulderLeft: Pose
lateinit var shoulderRight: Pose
override val cryAnimation = CryProvider { bedrockStateful("elgyem", "cry") }
val shoulderOffset = 5.6
override fun registerPoses() {
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BiWingedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
@@ -33,7 +34,7 @@ class HydreigonModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
// override val cryAnimation = CryProvider { bedrockStateful("hydreigon", "cry") }
override val cryAnimation = CryProvider { bedrockStateful("hydreigon", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("hydreigon", "blink") }
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.animation.Quadru
import com.cobblemon.mod.common.client.render.models.blockbench.animation.SingleBoneLookAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -41,7 +42,7 @@ class ZweilousModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame,
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
// override val cryAnimation = CryProvider { bedrockStateful("zweilous", "cry") }
override val cryAnimation = CryProvider { bedrockStateful("zweilous", "cry") }
override fun registerPoses() {
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -31,6 +32,8 @@ class FlabebeModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
lateinit var shoulderLeft: CobblemonPose
lateinit var shoulderRight: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("flabebe", "cry") }
val shoulderOffset = 10.5
override fun registerPoses() {
val blink = quirk { bedrockStateful("flabebe", "blink") }
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -27,6 +28,9 @@ class FloetteModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("floette", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("floette", "blink") }
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.entity.PoseType
@@ -27,6 +28,9 @@ class FlorgesModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
override val cryAnimation = CryProvider { bedrockStateful("florges", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("florges", "blink") }
@@ -74,11 +74,9 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("machop", ::MachopModel)
inbuilt("machoke", ::MachokeModel)
inbuilt("machamp", ::MachampModel)
inbuilt("alakazam", ::AlakazamModel)
inbuilt("arbok", ::ArbokModel)
inbuilt("arcanine", ::ArcanineModel)
inbuilt("articuno", ::ArticunoModel)
inbuilt("bellsprout", ::BellsproutModel)
inbuilt("chansey", ::ChanseyModel)
inbuilt("crobat", ::CrobatModel)
inbuilt("cubone", ::CuboneModel)
@@ -118,7 +116,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("koffing", ::KoffingModel)
inbuilt("krabby", ::KrabbyModel)
inbuilt("lickitung", ::LickitungModel)
inbuilt("magmar", ::MagmarModel)
inbuilt("magnemite", ::MagnemiteModel)
inbuilt("magneton", ::MagnetonModel)
inbuilt("marowak", ::MarowakModel)
@@ -137,13 +134,10 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("ninetales", ::NinetalesModel)
inbuilt("omanyte", ::OmanyteModel)
inbuilt("omastar", ::OmastarModel)
inbuilt("onix", ::OnixModel)
inbuilt("persian", ::PersianModel)
inbuilt("pikachu", ::PikachuModel)
inbuilt("pinsir", ::PinsirModel)
inbuilt("poliwag", ::PoliwagModel)
inbuilt("poliwhirl", ::PoliwhirlModel)
inbuilt("poliwrath", ::PoliwrathModel)
inbuilt("politoed", ::PolitoedModel)
inbuilt("ponyta", ::PonytaModel)
inbuilt("psyduck", ::PsyduckModel)
@@ -167,13 +161,10 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("vaporeon", ::VaporeonModel)
inbuilt("venomoth", ::VenomothModel)
inbuilt("venonat", ::VenonatModel)
inbuilt("victreebel", ::VictreebelModel)
inbuilt("vulpix", ::VulpixModel)
inbuilt("weepinbell", ::WeepinbellModel)
inbuilt("weezing", ::WeezingModel)
inbuilt("zapdos", ::ZapdosModel)
inbuilt("elekid", ::ElekidModel)
inbuilt("magby", ::MagbyModel)
inbuilt("pichu", ::PichuModel)
inbuilt("smoochum", ::SmoochumModel)
inbuilt("tyrogue", ::TyrogueModel)
@@ -183,7 +174,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("happiny", ::HappinyModel)
inbuilt("leafeon", ::LeafeonModel)
inbuilt("lickilicky", ::LickilickyModel)
inbuilt("magmortar", ::MagmortarModel)
inbuilt("magnezone", ::MagnezoneModel)
inbuilt("mimejr", ::MimejrModel)
inbuilt("scizor", ::ScizorModel)
@@ -214,8 +204,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("piplup", ::PiplupModel)
inbuilt("yanmega", ::YanmegaModel)
inbuilt("basculin", ::BasculinModel)
inbuilt("crustle", ::CrustleModel)
inbuilt("dwebble", ::DwebbleModel)
inbuilt("emolga", ::EmolgaModel)
inbuilt("maractus", ::MaractusModel)
inbuilt("bounsweet", ::BounsweetModel)
@@ -256,8 +244,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("klinklang", :: KlinklangModel)
inbuilt("morelull", :: MorelullModel)
inbuilt("shiinotic", :: ShiinoticModel)
inbuilt("riolu", :: RioluModel)
inbuilt("lucario", :: LucarioModel)
inbuilt("treecko", :: TreeckoModel)
inbuilt("grovyle", :: GrovyleModel)
inbuilt("sceptile", :: SceptileModel)
@@ -302,7 +288,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("popplio", :: PopplioModel)
inbuilt("brionne", :: BrionneModel)
inbuilt("primarina", ::PrimarinaModel)
inbuilt("spinda", ::SpindaModel)
inbuilt("seedot", ::SeedotModel)
inbuilt("nuzleaf", ::NuzleafModel)
inbuilt("shiftry", ::ShiftryModel)
@@ -315,7 +300,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("walkingwake", ::WalkingwakeModel)
inbuilt("ironleaves", ::IronleavesModel)
inbuilt("miltank", ::MiltankModel)
inbuilt("torkoal", ::TorkoalModel)
inbuilt("froakie", ::FroakieModel)
inbuilt("frogadier", ::FrogadierModel)
inbuilt("greninja", ::GreninjaModel)
@@ -503,8 +487,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("crabominable", ::CrabominableModel)
inbuilt("wimpod", ::WimpodModel)
inbuilt("golisopod", ::GolisopodModel)
inbuilt("nincada", ::NincadaModel)
inbuilt("ninjask", ::NinjaskModel)
inbuilt("shedinja", ::ShedinjaModel)
inbuilt("ralts", ::RaltsModel)
inbuilt("kirlia", ::KirliaModel)
@@ -569,7 +551,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("voltorb_hisuian", ::VoltorbHisuianModel)
inbuilt("electrode_hisuian", ::ElectrodeHisuianModel)
inbuilt("sentret", ::SentretModel)
inbuilt("furret", ::FurretModel)
inbuilt("qwilfish", ::QwilfishModel)
inbuilt("qwilfish_hisuian", ::QwilfishHisuianModel)
inbuilt("overqwil", ::OverqwilModel)
@@ -590,8 +571,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("budew", ::BudewModel)
inbuilt("roselia", ::RoseliaModel)
inbuilt("roserade", ::RoseradeModel)
inbuilt("solrock", ::SolrockModel)
inbuilt("lunatone", ::LunatoneModel)
inbuilt("woobat", ::WoobatModel)
inbuilt("swoobat", ::SwoobatModel)
inbuilt("sandile", ::SandileModel)
@@ -628,7 +607,6 @@ object PokemonModelRepository : VaryingModelRepository<PokemonPosableModel>() {
inbuilt("goodra", ::GoodraModel)
inbuilt("goodra_hisuian", ::GoodraHisuianModel)
inbuilt("heracross", ::HeracrossModel)
inbuilt("skarmory", ::SkarmoryModel)
inbuilt("salandit", ::SalanditModel)
inbuilt("salazzle", ::SalazzleModel)
inbuilt("jangmo-o", ::JangmoOModel)
@@ -0,0 +1,5 @@
package com.cobblemon.mod.common.entity
interface AttackingEntity {
fun getAttackingEntityId(): Int?
}
@@ -34,7 +34,7 @@ class NPCBattleActor(
) : AIBattleActor(
gameId = npc.uuid,
pokemonList = party.toBattleTeam(),
battleAI = StrongBattleAI(skill)
battleAI = RandomBattleAI()
), EntityBackedBattleActor<NPCEntity> {
override val entity = npc
override val type = ActorType.NPC
@@ -45,6 +45,7 @@ import com.cobblemon.mod.common.battles.BattleBuilder
import com.cobblemon.mod.common.battles.BattleRegistry
import com.cobblemon.mod.common.block.entity.PokemonPastureBlockEntity
import com.cobblemon.mod.common.client.entity.PokemonClientDelegate
import com.cobblemon.mod.common.entity.AttackingEntity
import com.cobblemon.mod.common.entity.PosableEntity
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.generic.GenericBedrockEntity
@@ -131,7 +132,7 @@ open class PokemonEntity(
world: Level,
pokemon: Pokemon = Pokemon().apply { isClient = world.isClientSide },
type: EntityType<out PokemonEntity> = CobblemonEntities.POKEMON,
) : ShoulderRidingEntity(type, world), PosableEntity, Shearable, Schedulable, ScannableEntity {
) : ShoulderRidingEntity(type, world), PosableEntity, Shearable, Schedulable, ScannableEntity, AttackingEntity {
companion object {
@JvmStatic val SPECIES = SynchedEntityData.defineId(PokemonEntity::class.java, EntityDataSerializers.STRING)
@JvmStatic val NICKNAME = SynchedEntityData.defineId(PokemonEntity::class.java, EntityDataSerializers.COMPONENT)
@@ -1429,4 +1430,13 @@ open class PokemonEntity(
override fun resolveEntityScan(): LivingEntity {
return this
}
override fun getAttackingEntityId(): Int? {
if (pokemon.isClient) {
return (delegate as PokemonClientDelegate).targetedEntityId
}
else {
TODO("Currently there is nothing that needs to know this on the server")
}
}
}
@@ -0,0 +1,19 @@
package com.cobblemon.mod.common.net.messages.client.battle
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.network.RegistryFriendlyByteBuf
class BattleAppendTargetedEntityPacket(val sourceEntityId: Int, val targetedEntityId: Int) : NetworkPacket<BattleAppendTargetedEntityPacket> {
override val id = ID
override fun encode(buffer: RegistryFriendlyByteBuf) {
buffer.writeVarInt(sourceEntityId)
buffer.writeVarInt(targetedEntityId)
}
companion object {
val ID = cobblemonResource("battle_append_targeted")
fun decode(buffer: RegistryFriendlyByteBuf) = BattleAppendTargetedEntityPacket(buffer.readVarInt(), buffer.readVarInt())
}
}
@@ -0,0 +1,29 @@
{
"format_version": "1.8.0",
"animations": {
"animation.psychic.target": {
"animation_length": 1.70833,
"bones": {
"root_part": {
"rotation": {
"0.0": [0, 0, 0],
"0.5": [0, "math.sin(q.anim_time*90*5-90)*5", 0],
"0.9583": [0, "math.sin(q.anim_time*90*12-90)*5", 0],
"1.0833": [0, 0, 0]
},
"scale": {
"0.0": [1, 1, 1],
"0.5": ["1+math.sin(q.anim_time*90*7-135)*0.15", "1+math.sin(q.anim_time*90*7)*0.15", 1],
"0.9583": ["1+math.sin(q.anim_time*90*7-135)*0.15", "1+math.sin(q.anim_time*90*7)*0.15", 1],
"1.0833": [
"1.2+math.sin(q.anim_time*90*7-135)*0.2+math.sin(q.anim_time*90*350)*0.4",
"1.2+math.sin(q.anim_time*90*7)*0.2+math.sin(q.anim_time*90*350)*0.25",
1.2
],
"1.3333": [1, 1, 1]
}
}
}
}
}
}
@@ -0,0 +1,67 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:burn_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/large-flame"
}
},
"curves": {
"variable.burnflicker": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0, 0.79, 1, 0.97, 0.88, 0.71, 0.5, 0.25, -0.05]
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": "90*(q.entity_radius*1.2)",
"max_particles": 120
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.2
},
"minecraft:emitter_shape_sphere": {
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["math.random(-1.5,1.5)*0.4", "math.random(1,2)", "math.random(-1.5,1.5)*0.4"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.3,0.5)"
},
"minecraft:particle_initial_speed": "math.random(3.75,4.75)*1",
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 4
},
"minecraft:particle_appearance_billboard": {
"size": ["0.1*v.burnflicker+(v.particle_random_2*0.1)", "0.15*v.burnflicker+(v.particle_random_2*0.1)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 56,
"texture_height": 10,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 10],
"step_UV": [8, 0],
"frames_per_second": 10,
"max_frame": 7,
"stretch_to_lifetime": true
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFFFFFF",
"0.63": "#ffffffff",
"1.0": "#00B23000"
}
}
}
}
}
}
@@ -0,0 +1,58 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:burn_actorresidual",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/ember"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 40,
"max_particles": 20
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
},
"minecraft:emitter_shape_sphere": {
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["math.random(-1.5,1.5)", "math.random(0,2)", "math.random(-1.5,1.5)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.25
},
"minecraft:particle_initial_speed": "math.random(2.75,4.75)*0.45",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 6, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": [0.12, 0.12],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 25,
"texture_height": 5,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [5, 5],
"step_UV": [5, 0],
"frames_per_second": 20,
"max_frame": 5
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFFC8B3",
"1.0": "#FFB23000"
}
}
}
}
}
}
@@ -10,28 +10,24 @@
},
"events": {
"paraSparks": {
"particle_effect": {
"effect": "cobblemon:paralysis_actorresidual",
"type": "emitter"
},
"sound_effect": {
"event_name": "cobblemon:status.nonvolatile.paralysis.actor"
"event_name": "cobblemon:status.paralysis.actor"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 28,
"max_particles": 14
"spawn_rate": "math.clamp(30*(q.entity_radius*1.5),30,120)",
"max_particles": 140
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
"active_time": 0.3
},
"minecraft:emitter_lifetime_events": {
"creation_event": "paraSparks"
},
"minecraft:emitter_shape_sphere": {
"radius": "math.clamp(q.entity_radius*0.9,0.7,1.5)",
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["(math.random(-2,2))*math.random(2,4)", "math.random(12,15)", "(math.random(-2,2))*math.random(2,4)"]
},
@@ -44,7 +40,7 @@
"minecraft:particle_initial_speed": "math.random(0.55,0.85)*0.8",
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": ["(0.225-(variable.particle_random_3*0.075))*math.clamp(q.entity_height,1,1.25)", "(0.225-(variable.particle_random_3*0.075))*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
@@ -18,7 +18,7 @@
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, 0],
"radius": "math.clamp(q.entity_radius*0.95,0.75,1.55)",
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["(math.random(-2,2))*math.random(2,4)", "math.random(12,15)", "(math.random(-2,2))*math.random(2,4)"]
},
@@ -31,7 +31,7 @@
"minecraft:particle_initial_speed": "math.random(0.55,0.85)*1",
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": ["(0.3-(variable.particle_random_3*0.085))*math.clamp(q.entity_height,1,1.25)", "(0.3-(variable.particle_random_3*0.085))*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 32,
@@ -18,7 +18,7 @@
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, 0],
"radius": "math.clamp(q.entity_radius*0.9,0.7,1.5)",
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["(math.random(-2,2))*math.random(2,4)", "math.random(12,15)", "(math.random(-2,2))*math.random(2,4)"]
},
@@ -10,42 +10,37 @@
},
"events": {
"poisonHit": {
"particle_effect": {
"effect": "cobblemon:poison_actorresidual",
"type": "emitter_bound"
},
"sound_effect": {
"event_name": "cobblemon:status.nonvolatile.poison.actor"
"event_name": "cobblemon:status.poison.actor"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 24,
"max_particles": 12
"spawn_rate": "math.clamp(30*(q.entity_radius*1.5),30,120)",
"max_particles": 120
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.7
"active_time": 0.2
},
"minecraft:emitter_lifetime_events": {
"creation_event": "poisonHit"
},
"minecraft:emitter_shape_sphere": {
"offset": [0, "((variable.particle_random_3-(variable.particle_random_3*0.5))*math.clamp(q.entity_height*0.6,1,2))", 0],
"radius": "math.clamp(q.entity_radius*0.55,0.65,1.3)",
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["(math.random(-1,1))*math.random(3.75,5.0)", "math.random(3,15)", "(math.random(-1,1))*math.random(3.75,5.0)"]
"direction": ["math.random(-1.5,1.5)*0.4", "math.random(1,2)", "math.random(-1.5,1.5)*0.4"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.7
},
"minecraft:particle_initial_speed": "math.random(2.55,3.75)+(q.entity_height*0.1)",
"minecraft:particle_initial_speed": "math.random(1.55,3.75)+(q.entity_height*0.1)",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -0.125, 0],
"linear_drag_coefficient": 3
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)", "(0.15+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
@@ -33,7 +33,7 @@
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.1+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)", "(0.1+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.1+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.1+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 8,
@@ -30,7 +30,7 @@
"linear_drag_coefficient": 0.4
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.125+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)", "(0.125+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.07+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.07+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
@@ -0,0 +1,58 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:sleep_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/sleep_zzz"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 1.6,
"max_particles": 3
},
"minecraft:emitter_lifetime_once": {
"active_time": 2
},
"minecraft:emitter_shape_point": {
"offset": [0, "q.entity_height*0.5", 0],
"direction": ["math.random(-4,-1)", 0.5, "math.random(-4,-1)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 2.25
},
"minecraft:particle_initial_speed": 0.5,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 1, 0],
"linear_drag_coefficient": 0.5
},
"minecraft:particle_appearance_billboard": {
"size": ["0.15+(v.particle_age*0.125)", "0.15+(v.particle_age*0.125)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 192,
"texture_height": 12,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [12, 12],
"step_UV": [12, 0],
"frames_per_second": 7,
"max_frame": 16
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#ffffffff",
"0.61": "#ffffffff",
"1.0": "#00FFFFFF"
}
}
}
}
}
}
@@ -0,0 +1,58 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:sleep_actorresidual",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/sleep_bubble"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": "math.random(2.075,2.15)",
"max_particles": 16
},
"minecraft:emitter_lifetime_once": {
"active_time": 2.1
},
"minecraft:emitter_shape_point": {
"offset": ["math.random(-0.125,0.125)", "q.entity_height*0.5+math.random(0,0.125)", "math.random(-0.125,0.125)"],
"direction": ["math.random(-1.9,1.9)", "math.random(0.6,0.8)", "math.random(-1.9,1.9)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 1.5
},
"minecraft:particle_initial_speed": "math.random(0.21,0.66)",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, "0.8-(v.particle_random_3*0.33)", 0],
"linear_drag_coefficient": 0.5
},
"minecraft:particle_appearance_billboard": {
"size": ["(v.particle_random_3*0.1)+math.clamp(v.particle_age*0.5, 0, 0.1)", "(v.particle_random_3*0.1)+math.clamp(v.particle_age*0.5, 0, 0.1)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 48,
"texture_height": 8,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 8],
"step_UV": [8, 0],
"frames_per_second": 4,
"max_frame": 6
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#ffffffff",
"0.85": "#ffffffff",
"1.0": "#00FFFFFF"
}
}
}
}
}
}
@@ -0,0 +1,58 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:sleep_passive",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/sleep_passive"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 1.9,
"max_particles": 6
},
"minecraft:emitter_lifetime_looping": {
"active_time": 2.25
},
"minecraft:emitter_shape_point": {
"offset": [0, "q.entity_height*0.5", 0],
"direction": ["math.random(-2,-0.5)", 1, "math.random(-2,-0.5)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 1.25
},
"minecraft:particle_initial_speed": 0.5,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 0.55, 0],
"linear_drag_coefficient": 0.5
},
"minecraft:particle_appearance_billboard": {
"size": ["0.075+(v.particle_age*0.075)", "0.075+(v.particle_age*0.075)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 48,
"texture_height": 8,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 8],
"step_UV": [8, 0],
"frames_per_second": 5,
"max_frame": 6
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#ffffffff",
"0.61": "#ffffffff",
"1.0": "#00FFFFFF"
}
}
}
}
}
}
@@ -10,42 +10,37 @@
},
"events": {
"toxicHit": {
"particle_effect": {
"effect": "cobblemon:toxpoison_actorresidual",
"type": "emitter_bound"
},
"sound_effect": {
"event_name": "cobblemon:status.nonvolatile.toxpoison.actor"
"event_name": "cobblemon:status.badlypoison.actor"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 24,
"max_particles": 12
"spawn_rate": "math.clamp(30*(q.entity_radius*1.5),30,120)",
"max_particles": 120
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.7
"active_time": 0.2
},
"minecraft:emitter_lifetime_events": {
"creation_event": "toxicHit"
},
"minecraft:emitter_shape_sphere": {
"offset": [0, "((variable.particle_random_3-(variable.particle_random_3*0.5))*math.clamp(q.entity_height*0.6,1,2))", 0],
"radius": "math.clamp(q.entity_radius*0.6,0.65,1.3)",
"radius": "(q.entity_radius*(0.95+v.emitter_age))/math.clamp(q.entity_scale*1.1-0.1,1,2)",
"surface_only": true,
"direction": ["(math.random(-1,1))*math.random(3.75,5.0)", "math.random(3,15)", "(math.random(-1,1))*math.random(3.75,5.0)"]
"direction": ["math.random(-1.5,1.5)*0.4", "math.random(1,2)", "math.random(-1.5,1.5)*0.4"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.7
},
"minecraft:particle_initial_speed": "math.random(2.55,3.75)+(q.entity_height*0.1)",
"minecraft:particle_initial_speed": "math.random(1.55,3.75)+(q.entity_height*0.1)",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -0.125, 0],
"linear_drag_coefficient": 3
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)", "(0.15+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.125+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
@@ -70,7 +65,8 @@
"1.0": "#FF7F00C7"
}
}
}
},
"minecraft:particle_appearance_lighting": {}
}
}
}
@@ -41,10 +41,7 @@
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": [
"(0.1+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)",
"(0.1+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"
],
"size": ["0.1+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.1+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 8,
@@ -30,7 +30,7 @@
"linear_drag_coefficient": 0.4
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.125+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)", "(0.125+0.25*v.particle_random_2)*math.clamp(q.entity_height,1,1.25)"],
"size": ["0.07+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)", "0.07+(v.particle_random_2*0.1)*math.clamp(q.entity_height,1,1.25)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
@@ -1,59 +0,0 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:stat_down_circles",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/statdown_orb"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 35,
"max_particles": 150
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_disc": {
"offset": [0, "(q.entity_height+(0.4-(q.entity_height/3.5)))-(v.particle_random_3/2)", 0],
"radius": "math.clamp(q.entity_radius*0.8,0.6,999)",
"surface_only": true,
"direction": [0, -1, 0]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.625
},
"minecraft:particle_initial_speed": "(q.entity_height*1.5)+(math.random(0.4,1.95)*(q.entity_height/2))",
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 1.05
},
"minecraft:particle_appearance_billboard": {
"size": ["0.05+0.15*v.particle_random_2", "0.05+0.15*v.particle_random_2"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 99,
"texture_height": 9,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [9, 9],
"step_UV": [9, 0],
"frames_per_second": 18,
"max_frame": 11
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FF116FFF",
"0.4": "#ffffffff",
"1.0": "#FF116FFF"
}
}
}
}
}
}
@@ -1,59 +0,0 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:stat_down_lines",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/statdown_line"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 21,
"max_particles": 125
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_disc": {
"offset": ["math.sin(v.emitter_age/v.emitter_lifetime*270*9+v.emitter_random_1*360)", "(q.entity_height+(5.5+(q.entity_height/7))) * v.particle_random_1 * 0.2 - 0.15", "math.cos(v.emitter_age/v.emitter_lifetime*270*9+v.emitter_random_1*360)"],
"radius": "q.entity_radius*0.4",
"surface_only": true,
"direction": [0, -1, 0]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.34
},
"minecraft:particle_initial_speed": 3.5,
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 1
},
"minecraft:particle_appearance_billboard": {
"size": [0.06, 0.6],
"facing_camera_mode": "lookat_y",
"uv": {
"texture_width": 27,
"texture_height": 31,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [3, 31],
"step_UV": [3, 0],
"frames_per_second": 24,
"max_frame": 9
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FF116FFF",
"0.4": "#ffffffff",
"1.0": "#FF116FFF"
}
}
}
}
}
}
@@ -1,59 +0,0 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:stat_up_circles",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/statup_orb"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 35,
"max_particles": 150
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_disc": {
"offset": [0, "(q.entity_height-(q.entity_height*1.5))+(v.particle_random_3/2)", 0],
"radius": "math.clamp(q.entity_radius*0.8,0.6,999)",
"surface_only": true,
"direction": [0, 10, 0]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.625
},
"minecraft:particle_initial_speed": "(q.entity_height*1.5)+(math.random(0.4,1.95)*(q.entity_height/2))",
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 1.05
},
"minecraft:particle_appearance_billboard": {
"size": ["0.05+0.15*v.particle_random_2", "0.05+0.15*v.particle_random_2"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 99,
"texture_height": 9,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [9, 9],
"step_UV": [9, 0],
"frames_per_second": 18,
"max_frame": 11
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFF814B",
"0.43": "#ffffffff",
"1.0": "#FFFF814B"
}
}
}
}
}
}
@@ -1,58 +0,0 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:stat_up_lines",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/statup_line"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 21,
"max_particles": 125
},
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_shape_disc": {
"offset": ["math.sin(v.emitter_age/v.emitter_lifetime*270*9+v.emitter_random_1*360)", "((math.random(-2,1)/4)+(q.entity_height/7))", "math.cos(v.emitter_age/v.emitter_lifetime*360*9+v.emitter_random_1*360)"],
"radius": "q.entity_radius*0.4",
"direction": [0, 1, 0]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.34
},
"minecraft:particle_initial_speed": 3.5,
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 1
},
"minecraft:particle_appearance_billboard": {
"size": [0.06, 0.6],
"facing_camera_mode": "lookat_y",
"uv": {
"texture_width": 27,
"texture_height": 31,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [3, 31],
"step_UV": [3, 0],
"frames_per_second": 24,
"max_frame": 9
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFF814B",
"0.43": "#ffffffff",
"1.0": "#FFFF814B"
}
}
}
}
}
}
@@ -0,0 +1,53 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:statdown_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/xs-unboost"
}
},
"curves": {
"variable.shrink": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0, 0.75, 0.94, 1, 1, 1, 1, 1, 0.93, 0.7, 0]
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 30,
"max_particles": 100
},
"minecraft:emitter_lifetime_looping": {
"active_time": 1
},
"minecraft:emitter_shape_point": {},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.48,0.52)"
},
"minecraft:particle_motion_parametric": {
"relative_position": ["(math.sin(v.particle_age*(280-(q.entity_height*8))+(v.particle_random_1*360))*(math.clamp(q.entity_radius*1.1,0.2,4)+(v.particle_age*0.5)))", "(0.15+(v.particle_random_1*0.25)-(v.particle_age*math.clamp(q.entity_height*2,1.5,5))-(v.particle_random_2*0.25))", "(math.cos(v.particle_age*(280-(q.entity_height*8))+(v.particle_random_1*360))*(math.clamp(q.entity_radius*1.1,0.2,4)+(v.particle_age*0.5)))"],
"direction": [0, 1, 0]
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15*math.clamp(q.entity_height*0.85,1,1.75))*variable.shrink", "0.15*math.clamp(q.entity_height*0.85,1,1.75)*variable.shrink"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 45,
"texture_height": 5,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [5, 5],
"step_UV": [5, 0],
"frames_per_second": 10,
"max_frame": 9,
"stretch_to_lifetime": true
}
}
}
}
}
}
@@ -0,0 +1,53 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:statup_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/xs-boost"
}
},
"curves": {
"variable.shrink": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0, 0.75, 0.94, 1, 1, 1, 1, 1, 0.93, 0.7, 0]
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 30,
"max_particles": 100
},
"minecraft:emitter_lifetime_looping": {
"active_time": 1
},
"minecraft:emitter_shape_point": {},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.48,0.52)"
},
"minecraft:particle_motion_parametric": {
"relative_position": ["(math.sin(v.particle_age*(280-(q.entity_height*8))+(v.particle_random_1*360))*(math.clamp(q.entity_radius*1.1,0.2,4)+(v.particle_age*0.5)))", "-0.05+(v.particle_random_1*0.25)+(v.particle_age*math.clamp(q.entity_height*2.5,1.5,5))+(v.particle_random_2*0.25))", "(math.cos(v.particle_age*(280-(q.entity_height*8))+(v.particle_random_1*360))*(math.clamp(q.entity_radius*1.1,0.2,4)+(v.particle_age*0.5)))"],
"direction": [0, 1, 0]
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15*math.clamp(q.entity_height,1,1.75))*variable.shrink", "0.15*math.clamp(q.entity_height,1,1.75)*variable.shrink"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 45,
"texture_height": 5,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [5, 5],
"step_UV": [5, 0],
"frames_per_second": 10,
"max_frame": 9,
"stretch_to_lifetime": true
}
}
}
}
}
}
@@ -5,51 +5,38 @@
"identifier": "cobblemon:confusion_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/medium-fadeorb"
}
},
"events": {
"event_sound": {
"sound_effect": {
"event_name": "cobblemon:move.confusion.actor"
}
"texture": "textures/particles/psyring1"
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 12
"minecraft:emitter_rate_steady": {
"spawn_rate": 8.5,
"max_particles": 100
},
"minecraft:emitter_lifetime_looping": {
"active_time": 0.4
"active_time": 1.25
},
"minecraft:emitter_lifetime_events": {
"creation_event": "event_sound"
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, -0.4],
"radius": "1.075-math.clamp(q.entity_height*0.2,0.2,0.35)",
"surface_only": true,
"direction": "inwards"
"minecraft:emitter_shape_point": {
"offset": ["math.random(-0.03,0.03)", "math.random(-0.03,0.03)", -0.3],
"direction": ["math.random(-1,1)", "math.random(-1,1)", -10]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.5
},
"minecraft:particle_initial_speed": 2.8,
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 2
"max_lifetime": 0.65
},
"minecraft:particle_initial_speed": 0.6,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": ["0.3+(v.emitter_age/2)", "0.3+(v.emitter_age/2)"],
"size": ["0.35+(v.particle_age*0.175)", "0.35+(v.particle_age*0.175)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 99,
"texture_height": 9,
"texture_width": 117,
"texture_height": 13,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [9, 9],
"step_UV": [9, 0],
"frames_per_second": 24,
"max_frame": 11
"size_UV": [13, 13],
"step_UV": [13, 0],
"frames_per_second": 12,
"max_frame": 9
}
}
},
@@ -57,9 +44,11 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.1": "#7088F5FF",
"0.4": "#A0FFABDE",
"1.0": "#00BA16FF"
"0.0": "#009148FF",
"0.2": "#C0C377FF",
"0.6": "#A0EEE4FF",
"0.8": "#A09148FF",
"1.0": "#009148FF"
}
}
}
@@ -2,10 +2,10 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:confusion_releasering",
"identifier": "cobblemon:confusion_actorglint",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/medium-ring"
"material": "particles_alpha",
"texture": "textures/particles/medium-sparkle"
}
},
"components": {
@@ -16,25 +16,25 @@
"active_time": 1
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, -0.4]
"offset": ["math.random(-0.03,0.03)", "math.random(-0.03,0.03)", -0.3]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.4
"max_lifetime": 0.3
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [0.8, 0.8],
"size": [0.25, 0.25],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 90,
"texture_height": 15,
"texture_width": 63,
"texture_height": 9,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [15, 15],
"step_UV": [15, 0],
"frames_per_second": 16,
"max_frame": 6
"size_UV": [9, 9],
"step_UV": [9, 0],
"frames_per_second": 20,
"max_frame": 5
}
}
},
@@ -42,10 +42,9 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFFFFFF",
"0.2": "#F0FFABDE",
"0.5": "#90DE64FF",
"1.0": "#00AC31FF"
"0.0": "#FFFFD2F8",
"0.65": "#FFFF6DD0",
"1.0": "#FFA946FF"
}
}
}
@@ -5,34 +5,36 @@
"identifier": "cobblemon:confusion_impact",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/large-smokeorb"
"texture": "textures/particles/psyring2"
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.4
"minecraft:emitter_lifetime_looping": {
"active_time": 1
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, -0.4]
"offset": [0, 0.1, -0.4]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.45
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [0.75, 0.75],
"size": [0.65, 0.65],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 143,
"texture_height": 13,
"texture_width": 153,
"texture_height": 17,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [13, 13],
"step_UV": [13, 0],
"frames_per_second": 24,
"max_frame": 11
"size_UV": [17, 17],
"step_UV": [17, 0],
"frames_per_second": 20,
"max_frame": 9
}
}
},
@@ -40,10 +42,12 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.1": "#FFFFFFFF",
"0.6": "#9089E4FF",
"0.8": "#6B4BAAFF",
"1.0": "#001E94FF"
"0.0": "#009148FF",
"0.2": "#A09148FF",
"0.4": "#A0EEE4FF",
"0.6": "#A0EEE4FF",
"0.8": "#A09148FF",
"1.0": "#009148FF"
}
}
}
@@ -5,40 +5,40 @@
"identifier": "cobblemon:confusion_impactdots",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/small-fadeorb"
"texture": "textures/particles/xs-fadeorb"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 300,
"max_particles": 16
"spawn_rate": 150,
"max_particles": 12
},
"minecraft:emitter_lifetime_looping": {
"active_time": 0.2
"active_time": 0.5
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, -0.4],
"radius": 0.2,
"offset": [0, 0.1, -0.4],
"radius": 0.5,
"surface_only": true,
"direction": "outwards"
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.45
"max_lifetime": 0.55
},
"minecraft:particle_initial_speed": "math.random(0.6,1.2)*7",
"minecraft:particle_initial_speed": "math.random(0.75,1.5)*2.8",
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 4
"linear_drag_coefficient": 3.5
},
"minecraft:particle_appearance_billboard": {
"size": ["0.225-(v.particle_random_3*0.125)", "0.225-(v.particle_random_3*0.125)"],
"size": [0.15, 0.15],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 63,
"texture_height": 7,
"texture_width": 45,
"texture_height": 5,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [7, 7],
"step_UV": [7, 0],
"size_UV": [5, 5],
"step_UV": [5, 0],
"frames_per_second": 20,
"max_frame": 9
}
@@ -48,10 +48,11 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.1": "#FFFFFFFF",
"0.6": "#9089E4FF",
"0.8": "#6B4BAAFF",
"1.0": "#001E94FF"
"0.0": "#00CB48FF",
"0.2": "#80CB48FF",
"0.5": "#A0FF6DD0",
"0.8": "#80CB48FF",
"1.0": "#00CB48FF"
}
}
}
@@ -5,51 +5,39 @@
"identifier": "cobblemon:confusion_target",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/medium-fadeorb"
}
},
"events": {
"event_sound": {
"sound_effect": {
"event_name": "cobblemon:move.confusion.target"
}
"texture": "textures/particles/psyswirl"
}
},
"components": {
"minecraft:emitter_lifetime_events": {
"creation_event": "event_sound"
},
"minecraft:emitter_rate_instant": {
"num_particles": 12
"minecraft:emitter_rate_steady": {
"spawn_rate": 9,
"max_particles": 100
},
"minecraft:emitter_lifetime_looping": {
"active_time": 1
"active_time": 0.6
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, -0.4],
"radius": "1.2-math.clamp(q.entity_height*0.2,0.2,0.4)",
"surface_only": true,
"direction": "inwards"
"minecraft:emitter_shape_point": {
"offset": ["math.sin(v.emitter_age*1080)*0.03", "0.1+math.cos(v.emitter_age*1080)*0.03", -0.5],
"direction": [0, 0, -10]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.55
},
"minecraft:particle_initial_speed": 4.25,
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 3
"max_lifetime": 0.9
},
"minecraft:particle_initial_speed": -0.05,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": ["0.275+(v.emitter_age*0.75)", "0.275+(v.emitter_age*0.75)"],
"size": [0.55, 0.55],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 99,
"texture_height": 9,
"texture_width": 68,
"texture_height": 17,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [9, 9],
"step_UV": [9, 0],
"size_UV": [17, 17],
"step_UV": [17, 0],
"frames_per_second": 20,
"max_frame": 11
"max_frame": 4,
"loop": true
}
}
},
@@ -57,9 +45,12 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#40FFE563",
"0.35": "#B0FFABDE",
"1.0": "#00BD21FF"
"0.0": "#00CB48FF",
"0.2": "#A09148FF",
"0.35": "#80FF6DD0",
"0.55": "#906E86FF",
"0.8": "#90BF31FF",
"1.0": "#00CB48FF"
}
}
}
@@ -2,7 +2,7 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:ember_froth",
"identifier": "cobblemon:ember_actor",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/ember"
@@ -10,20 +10,20 @@
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 50,
"max_particles": 25
"spawn_rate": "50*math.clamp(q.entity.entity_distance*0.3,1,2)",
"max_particles": 500
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.45
},
"minecraft:emitter_shape_point": {
"offset": ["math.random(-0.41,0.41)*(v.emitter_age*3.5)", "math.random(-0.41,0.41)*(v.emitter_age*3.5)", "math.random(-0.35,0.35)-v.emitter_age*7"],
"offset": ["(math.random(-0.41,0.41)*2)*(0.2+(v.emitter_age*0.5))", "(math.random(-0.41,0.41)*2)*(0.2+(v.emitter_age*0.5))", "(q.entity.entity_distance*0.1)+math.random(-0.25,0.25)-v.emitter_age*(q.entity.entity_distance*2.25)"],
"direction": ["math.random(-0.45,0.45)*(v.emitter_age*3)", "math.random(-0.45,0.45)*(v.emitter_age*3)", "math.random(-2.05,-0.55)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(22,32)/100"
},
"minecraft:particle_initial_speed": "math.random(2.75,4.25)*1.95",
"minecraft:particle_initial_speed": "math.random(2.75,4.25)*(q.entity.entity_distance/2.5)",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 4, 0],
"linear_drag_coefficient": 3
@@ -10,14 +10,14 @@
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 20,
"max_particles": 10
"spawn_rate": "20*math.clamp(q.entity.entity_distance*0.2,1,2)",
"max_particles": 1000
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.4
"active_time": 0.45
},
"minecraft:emitter_shape_point": {
"offset": ["math.random(-0.31,0.31)*(v.emitter_age*3)", "math.random(-0.31,0.31)*(v.emitter_age*3)", "math.random(-0.35,0.35)-v.emitter_age*9"],
"offset": ["math.random(-0.31,0.31)*(v.emitter_age*3)", "math.random(-0.31,0.31)*(v.emitter_age*3)", "(q.entity.entity_distance*0.15)+math.random(-0.35,0.35)-v.emitter_age*(q.entity.entity_distance*2.25)"],
"direction": ["math.random(-0.25,0.25)*(v.emitter_age*2)", "math.random(-0.25,0.25)*(v.emitter_age*2)", "math.random(-2.05,-0.55)"]
},
"minecraft:particle_lifetime_expression": {
@@ -26,7 +26,7 @@
"minecraft:particle_initial_spin": {
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_initial_speed": "math.random(2.75,4.25)*0.75",
"minecraft:particle_initial_speed": "math.random(2.75,4.25)*(q.entity.entity_distance/5)",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 3, 0],
"linear_drag_coefficient": 2
@@ -2,7 +2,7 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:ember_impact",
"identifier": "cobblemon:ember_target",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/ember"
@@ -2,7 +2,7 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:ember_impactlinger",
"identifier": "cobblemon:ember_targetlinger",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/ember"
@@ -0,0 +1,74 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:mudsport_actor",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/mud_splash"
}
},
"curves": {
"variable.mudsize": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [1, 1, 1, 1, 1, 1, 0.5, 0]
}
},
"events": {
"event_sound": {
"sound_effect": {
"event_name": "cobblemon:move.mudsport.actor"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 160,
"max_particles": 60
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
},
"minecraft:emitter_lifetime_events": {
"creation_event": "event_sound"
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, 0.1],
"direction": ["math.random(-10,10)*1", "math.random(1.5,20)*1.75", "math.random(-10,10)*1"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.7
},
"minecraft:particle_initial_spin": {
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_initial_speed": "math.random(6.3,11.2)*1.75",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -15, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15+(v.particle_random_1*0.2))*v.mudsize", "(0.15+(v.particle_random_1*0.2))*v.mudsize"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 8,
"texture_height": 56,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 8],
"step_UV": [0, 8],
"frames_per_second": 12,
"max_frame": 10
}
}
},
"minecraft:particle_motion_collision": {
"collision_drag": 1.8,
"coefficient_of_restitution": 0.1,
"collision_radius": 0.01
}
}
}
}
@@ -0,0 +1,62 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:mudsport_actorbubbles",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/mud_bubble"
}
},
"curves": {
"variable.mudsize": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [1, 1, 1, 1, 1, 1, 0.5, 0]
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 60,
"max_particles": 30
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, 0.1],
"direction": ["math.random(-10,10)*1.1", "math.random(5,20)*1.5", "math.random(-10,10)*1.1"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.4,0.7)"
},
"minecraft:particle_initial_speed": "math.random(6.3,11.2)*1.75",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -15, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.1+(v.particle_random_1*0.05))*v.mudsize", "(0.1+(v.particle_random_1*0.05))*v.mudsize"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 80,
"texture_height": 8,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 8],
"step_UV": [8, 0],
"frames_per_second": 8,
"max_frame": 10,
"stretch_to_lifetime": true
}
}
},
"minecraft:particle_motion_collision": {
"collision_drag": 1.1,
"coefficient_of_restitution": 0.5,
"collision_radius": 0.01
}
}
}
}
@@ -0,0 +1,63 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:mudsport_target",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/mud_splash"
}
},
"curves": {
"variable.mudsize": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [1, 1, 1, 1, 1, 1, 0.5, 0]
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
},
"minecraft:emitter_shape_point": {
"offset": [0, 0.04, 0],
"direction": ["math.random(-10,10)*1.1", 10, "math.random(-10,10)*1.1"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 1
},
"minecraft:particle_initial_spin": {
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_initial_speed": "math.random(6.3,9.2)*0.4",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -7, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.2+(v.particle_random_1*0.1))*v.mudsize", "(0.2+(v.particle_random_1*0.1))*v.mudsize"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 8,
"texture_height": 56,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [8, 8],
"step_UV": [0, 8],
"frames_per_second": 12,
"max_frame": 10
}
}
},
"minecraft:particle_motion_collision": {
"collision_drag": 1.1,
"coefficient_of_restitution": 0.3,
"collision_radius": 0.01
}
}
}
}
@@ -0,0 +1,76 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:mudsport_targetbubbles",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/mud_splash"
}
},
"curves": {
"variable.mudsize": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0, 0, 0, 0, 1, 1, 1, 1, 1, 0]
}
},
"events": {
"puddling": {
"particle_effect": {
"effect": "cobblemon:mudsport_target",
"type": "particle"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 100,
"max_particles": 3000
},
"minecraft:emitter_lifetime_once": {
"active_time": 1.75
},
"minecraft:emitter_shape_disc": {
"offset": ["(v.particle_random_3-0.5)*1", 6, "(v.particle_random_4-0.5)*1"],
"radius": 2.5,
"direction": ["math.random(-0.1,0.1)*6", 0, "math.random(-0.1,0.1)*6"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": "math.random(0.5,0.7)*1.7"
},
"minecraft:particle_lifetime_events": {
"expiration_event": "puddling"
},
"minecraft:particle_initial_spin": {
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_initial_speed": 1,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, -30, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": ["(0.15+(v.particle_random_1*0.15))*v.mudsize", "(0.15+(v.particle_random_1*0.15))*v.mudsize"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 8,
"texture_height": 56,
"flipbook": {
"base_UV": [0, "math.random_integer(0,1)*8"],
"size_UV": [8, 8],
"step_UV": [0, 0],
"max_frame": 1
}
}
},
"minecraft:particle_motion_collision": {
"collision_drag": 1.1,
"coefficient_of_restitution": 0.1,
"collision_radius": 0.01,
"expire_on_contact": true
}
}
}
}
@@ -1,64 +0,0 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:protect-rings",
"basic_render_parameters": {
"material": "particles_alpha",
"texture": "textures/particles/large-ring"
}
},
"events": {
"event_sound": {
"sound_effect": {
"event_name": "cobblemon:move.protect.actor"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 5,
"max_particles": 2
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.45
},
"minecraft:emitter_lifetime_events": {
"creation_event": "event_sound"
},
"minecraft:emitter_shape_point": {
"offset": [0, "1-(math.clamp(q.entity_height*0.33,0,1))", -0.62]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.55
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [1.25, 1.25],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 160,
"texture_height": 20,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [20, 20],
"step_UV": [20, 0],
"frames_per_second": 16,
"max_frame": 8
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFD8FDFF",
"0.57": "#FF6FCCFF",
"1.0": "#FF2C91FF"
}
}
}
}
}
}
@@ -4,10 +4,17 @@
"description": {
"identifier": "cobblemon:protect-shine",
"basic_render_parameters": {
"material": "particles_blend",
"material": "particles_add",
"texture": "textures/particles/protect-shine"
}
},
"events": {
"event_sound": {
"sound_effect": {
"event_name": "cobblemon:move.protect.actor"
}
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
@@ -15,21 +22,20 @@
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_lifetime_events": {
"creation_event": "event_sound"
},
"minecraft:emitter_shape_point": {
"offset": [0, "1-(math.clamp(q.entity_height*0.33,0,1))", -0.621]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.6
"max_lifetime": 0.65
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [1.25, 1.25],
"facing_camera_mode": "lookat_direction",
"direction": {
"mode": "custom",
"custom_direction": [-1, 0, 0]
},
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 200,
"texture_height": 20,
@@ -37,13 +43,20 @@
"base_UV": [0, 0],
"size_UV": [20, 20],
"step_UV": [20, 0],
"frames_per_second": 18,
"frames_per_second": 16,
"max_frame": 10
}
}
},
"minecraft:particle_appearance_tinting": {
"color": [1, 1, 1, 0.6902]
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#70FFFFFF",
"0.5": "#A0FFFFFF",
"1.0": "#70FFFFFF"
}
}
}
}
}
@@ -8,41 +8,58 @@
"texture": "textures/particles/small-sparkle"
}
},
"curves": {
"variable.size": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime / 1.5",
"nodes": [0.2, 0.69, 0.26, 0.78, 0.26, 0.8, 0]
}
},
"events": {
"event_ambient": {
"sound_effect": {
"event_name": "q.sound"
},
"expression": "q.sound('particle.shiny_ambient',0.05,q.random(0.8,1.2))"
}
},
"components": {
"minecraft:emitter_local_space": {
"position": true,
"rotation": false
},
"minecraft:emitter_rate_steady": {
"spawn_rate": 28,
"max_particles": 20
"spawn_rate": 30,
"max_particles": 100
},
"minecraft:emitter_lifetime_looping": {
"active_time": 0.7
"minecraft:emitter_lifetime_once": {
"active_time": 0.5
},
"minecraft:emitter_shape_point": {
"offset": ["(1.1/math.clamp(q.entity_scale*1.1-0.1,1,9))*math.sin(v.emitter_age*360*643)", "(1.1/math.clamp(q.entity_scale*1.1-0.1,1,9))*-math.cos(v.emitter_age*360*643)+(1-(math.clamp(q.entity_height*0.33,0,1)))", -0.625],
"direction": ["math.random(-2,2)", "math.random(1,2)", "math.random(-2,2)"]
"minecraft:emitter_shape_sphere": {
"offset": [0, 0.05, 0],
"radius": "q.entity_radius*1.3/math.clamp((q.entity_scale*1.1)-0.1,0.8,5)",
"surface_only": true,
"direction": ["math.random(-1,1)", 1, "math.random(-1,1)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.325
"max_lifetime": 0.3
},
"minecraft:particle_initial_speed": 0.2,
"minecraft:particle_lifetime_events": {
"creation_event": "event_ambient"
},
"minecraft:particle_initial_speed": 0.5,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 0.4, 0]
"linear_drag_coefficient": 0.1
},
"minecraft:particle_appearance_billboard": {
"size": [0.25, 0.25],
"size": ["math.clamp(q.entity_size * 0.1, 0.15,0.3)", "math.clamp(q.entity_size * 0.1, 0.15,0.3)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 49,
"texture_height": 7,
"flipbook": {
"base_UV": [0, 0],
"base_UV": [7, 0],
"size_UV": [7, 7],
"step_UV": [7, 0],
"frames_per_second": 20,
"max_frame": 7
"frames_per_second": 12,
"max_frame": 4
}
}
},
@@ -51,8 +68,7 @@
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#ffffffff",
"0.5": "#FFE6FFFE",
"1.0": "#FFAEF1FF"
"1.0": "#FF95FFF9"
}
}
}
@@ -0,0 +1,46 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:psychic_actor",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/psychicsend"
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
},
"minecraft:emitter_lifetime_once": {
"active_time": 1.5
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, -0.3]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 1
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [1, 1],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 768,
"texture_height": 32,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [32, 32],
"step_UV": [32, 0],
"frames_per_second": 24,
"max_frame": 24
}
}
},
"minecraft:particle_appearance_tinting": {
"color": [1, 0.7451, 0.97255, 0.62745]
}
}
}
}
@@ -2,7 +2,7 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:confusion_releasedots",
"identifier": "cobblemon:psychic_actordots",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/xs-fadeorb"
@@ -10,27 +10,27 @@
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 150,
"max_particles": 12
"spawn_rate": 30,
"max_particles": 60
},
"minecraft:emitter_lifetime_looping": {
"active_time": 0.5
"active_time": 1
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, -0.4],
"radius": 0.45,
"offset": [0, 0.1, -0.4],
"radius": 0.1,
"surface_only": true,
"direction": "outwards"
"direction": ["math.sin(v.emitter_age*2560)*30", "math.cos(v.emitter_age*2560)*30", "math.random(-75,10)*1.1"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.55
"max_lifetime": 0.5
},
"minecraft:particle_initial_speed": "math.random(0.75,1.5)*2.75",
"minecraft:particle_initial_speed": "math.random(1.05,1.5)*4.5",
"minecraft:particle_motion_dynamic": {
"linear_drag_coefficient": 4
"linear_drag_coefficient": 3.5
},
"minecraft:particle_appearance_billboard": {
"size": [0.175, 0.175],
"size": [0.15, 0.15],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 45,
@@ -39,7 +39,7 @@
"base_UV": [0, 0],
"size_UV": [5, 5],
"step_UV": [5, 0],
"frames_per_second": 20,
"frames_per_second": 16,
"max_frame": 9
}
}
@@ -48,10 +48,12 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFFFFFF",
"0.2": "#F0FFABDE",
"0.5": "#90DE64FF",
"1.0": "#00AC31FF"
"0.0": "#00AE00FF",
"0.25": "#A0FF51CD",
"0.45": "#C0FF87E9",
"0.6": "#D0DD00FF",
"0.75": "#A0B702FF",
"1.0": "#009600FF"
}
}
}
@@ -2,10 +2,10 @@
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:confusion_release",
"identifier": "cobblemon:psychic_impact",
"basic_render_parameters": {
"material": "particles_add",
"texture": "textures/particles/medium-fadeorb"
"material": "particles_blend",
"texture": "textures/particles/psychichit"
}
},
"components": {
@@ -13,26 +13,28 @@
"num_particles": 1
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.55
"active_time": 1.5
},
"minecraft:emitter_shape_point": {
"offset": [0, 0, -0.4]
"offset": [0, 0.15, -0.3]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.45
"max_lifetime": 1
},
"minecraft:particle_initial_speed": 0,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": [0.45, 0.45],
"size": [1, 1],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 99,
"texture_height": 9,
"texture_width": 704,
"texture_height": 32,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [9, 9],
"step_UV": [9, 0],
"frames_per_second": 24,
"max_frame": 11
"size_UV": [32, 32],
"step_UV": [32, 0],
"frames_per_second": 22,
"max_frame": 22
}
}
},
@@ -40,10 +42,10 @@
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#FFFFFFFF",
"0.25": "#F0FFBED2",
"0.55": "#90E77EFF",
"1.0": "#00B531FF"
"0.0": "#70FFC6D4",
"0.25": "#AAFFD5ED",
"0.5": "#80FFFFFF",
"1.0": "#30E3ADFF"
}
}
}
@@ -0,0 +1,58 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:psychic_impactdots",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/small-psychichit"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 25,
"max_particles": 25
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.6
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0.15, -0.4],
"radius": "1.1/math.clamp(q.entity_scale*1.1-0.1,1,9)",
"surface_only": true,
"direction": "outwards"
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.55
},
"minecraft:particle_initial_speed": 0.15,
"minecraft:particle_motion_dynamic": {},
"minecraft:particle_appearance_billboard": {
"size": ["0.2+(v.particle_age*0.2)", "0.2+(v.particle_age*0.2)"],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 192,
"texture_height": 16,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [16, 16],
"step_UV": [16, 0],
"frames_per_second": 20,
"max_frame": 12
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#70FFC6D4",
"0.25": "#AAFFD5ED",
"0.5": "#80FFFFFF",
"1.0": "#30E3ADFF"
}
}
}
}
}
}
@@ -0,0 +1,65 @@
{
"format_version": "1.10.0",
"particle_effect": {
"description": {
"identifier": "cobblemon:psychic_target",
"basic_render_parameters": {
"material": "particles_blend",
"texture": "textures/particles/spiral"
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": "math.clamp(40*q.entity_height,15,40)",
"max_particles": 200
},
"minecraft:emitter_lifetime_looping": {
"active_time": 1.13
},
"minecraft:emitter_shape_disc": {
"offset": [0, "math.random(0.2,(q.entity_height*0.9))/math.clamp(q.entity_scale*1.1-0.1,1,9)", 0],
"radius": "(q.entity_radius*0.95)/math.clamp(q.entity_scale*1.1-0.1,1,9)",
"direction": ["math.random(-0.5,0.5)", 0, "math.random(-0.5,0.5)"]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.95
},
"minecraft:particle_initial_spin": {
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_initial_speed": 1,
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 3, 0],
"linear_drag_coefficient": 2
},
"minecraft:particle_appearance_billboard": {
"size": [0.225, 0.225],
"facing_camera_mode": "rotate_xyz",
"uv": {
"texture_width": 64,
"texture_height": 8,
"flipbook": {
"base_UV": [56, 0],
"size_UV": [8, 8],
"step_UV": [-8, 0],
"frames_per_second": 8,
"max_frame": 8
}
}
},
"minecraft:particle_appearance_tinting": {
"color": {
"interpolant": "v.particle_age / v.particle_lifetime",
"gradient": {
"0.0": "#00AE00FF",
"0.25": "#A0FF51CD",
"0.45": "#C0FF87E9",
"0.6": "#D0DD00FF",
"0.75": "#A0B702FF",
"1.0": "#009600FF"
}
}
}
}
}
}
@@ -8,13 +8,21 @@
"texture": "textures/particles/quickattack_dashlines"
}
},
"curves": {
"variable.qsquish": {
"type": "linear",
"input": "v.particle_age",
"horizontal_range": "v.particle_lifetime",
"nodes": [0, 1, 1, 0]
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 50,
"spawn_rate": 100,
"max_particles": 100
},
"minecraft:emitter_lifetime_once": {
"active_time": 0.2
"active_time": 0.25
},
"minecraft:emitter_shape_sphere": {
"offset": [0, 0, -1],
@@ -24,18 +32,23 @@
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.2
},
"minecraft:particle_initial_speed": 8,
"minecraft:particle_initial_speed": "9+v.particle_age",
"minecraft:particle_motion_dynamic": {
"linear_acceleration": [0, 0, 1]
},
"minecraft:particle_appearance_billboard": {
"size": [0.4, 0.4],
"size": ["0.2*v.qsquish", 0.02],
"facing_camera_mode": "lookat_direction",
"uv": {
"texture_width": 64,
"texture_height": 16,
"uv": ["math.floor(variable.particle_random_2 * 4) * 16", 0],
"uv_size": [16, 16]
"texture_width": 14,
"texture_height": 1,
"flipbook": {
"base_UV": [0, 0],
"size_UV": [2, 1],
"step_UV": [2, 0],
"frames_per_second": 16,
"max_frame": 7
}
}
},
"minecraft:particle_appearance_tinting": {

Some files were not shown because too many files have changed in this diff Show More