Compare commits

...
Author SHA1 Message Date
JazzMcNade 6ba2804a46 Added type checking 2024-05-14 00:46:40 -05:00
JazzMcNade d13d5183c8 Implemented missing functions. 2024-05-14 00:24:09 -05:00
Hiroku 920e314444 Merge branch '830-only-player-entity-can-send-out-pokemon' into 'main'
Remove unnecessary cast of phaseTarget to PlayerEntity in PokemonRenderer.renderTransition

Closes #830

See merge request cable-mc/cobblemon!1008
2024-05-12 10:23:34 +00:00
David Sadler 3e4fdc0f22 Remove unnecessary cast of phaseTarget to PlayerEntity in PokemonRenderer.renderTransition 2024-05-12 11:04:52 +01:00
Hiroku 209ac71e06 Merge branch 'FossilTankFixes' into 'main'
Fix for using incorrect item count when applying organic material with right click.

See merge request cable-mc/cobblemon!1007
2024-05-12 08:05:27 +00:00
JazzMcNade ecfc77f311 Updated Changelog 2024-05-12 02:49:19 -05:00
JazzMcNade e64de3aa7d Fixed a bug in which adding organic material was adding the full count of the stack currently in hand 2024-05-12 01:29:55 -05:00
Nick fd7b82dbe3 Merge branch 'build/gradle-updates' into 'main'
gradle and build improvements

See merge request cable-mc/cobblemon!1006
2024-05-11 23:40:09 +00:00
broccolaiandNick 7ef48402fb gradle and build improvements 2024-05-11 23:40:09 +00:00
Nick 81ac6f3b44 Snapshot = true 2024-05-11 16:39:06 -07:00
Paul 347e10d7e4 Snapshot = false 2024-05-12 08:20:46 +10:00
Paul 32270b6176 Attempt at fixing data migration error in species features 2024-05-11 14:39:49 +10:00
Hiroku a0a26a98b5 Merge branch 'V-lpen-main-patch-49919' into 'main'
Update dragapult.json

See merge request cable-mc/cobblemon!996
2024-05-11 04:37:18 +00:00
Hiroku 85836f19b2 Merge branch 'held_item_back' into 'main'
Fixed held items without consumable tags from being consumed or swapped in battle.

See merge request cable-mc/cobblemon!1005
2024-05-11 04:36:47 +00:00
Hiroku 9f251b7070 Update CHANGELOG.md 2024-05-11 04:36:13 +00:00
Segfault Guy 86ddb6d743 Fixed held items without consumable tags from being consumed or swapped in battle. 2024-05-11 00:15:26 -04:00
Paul 9c8a00bbdc Fixed bad moveset JSON for Kyurem 2024-05-11 13:04:50 +10:00
Hiroku 04abf2bd25 Update CHANGELOG.md [skip-ci] 2024-05-11 00:27:36 +00:00
Paul e6553655a6 Changelog update heading [skip-ci] 2024-05-11 10:19:43 +10:00
Paul 5f33d16a75 More changelog cleanup 2024-05-11 09:53:00 +10:00
Hiroku 468f84862e Merge branch '1.5-structure-fixes' into 'main'
Deleted Duplicate Loot Table

See merge request cable-mc/cobblemon!1003
2024-05-10 22:27:50 +00:00
Slippy e863c6d094 Deleted Duplicate Loot Table 2024-05-10 16:19:15 -05:00
Nick 5b2d542fca Merge branch 'Myslippy-main-patch-94569' into 'main'
Update CHANGELOG.md

See merge request cable-mc/cobblemon!1002
2024-05-10 20:06:14 +00:00
Myslippy 95db34c55e Update CHANGELOG.md 2024-05-10 19:41:41 +00:00
Paul 15da48c5c0 Merge remote-tracking branch 'origin/main' 2024-05-10 18:42:29 +10:00
Paul ead62763c1 Changelog cleanup 2024-05-10 18:42:22 +10:00
apion 247c475c2d Fix oversight in incendium fix 2024-05-09 23:44:04 -04:00
Hiroku 44aab4f0e7 Merge branch 'spawn-fixes' into 'main'
Spawn fixes

See merge request cable-mc/cobblemon!1001
2024-05-10 03:02:48 +00:00
Frank The FarmerandHiroku 94edae591c Spawn fixes 2024-05-10 03:02:48 +00:00
Hiroku c83f045b4d Merge branch 'incendium-fix' into 'main'
Fixes #823

Closes #823

See merge request cable-mc/cobblemon!999
2024-05-10 00:16:23 +00:00
apion b5d7786ff7 Fixes #823 2024-05-09 20:05:03 -04:00
Paul 9283794e26 Merge remote-tracking branch 'origin/main' 2024-05-10 09:53:11 +10:00
Hiroku 55580fb564 Merge branch 'sound' into 'main'
Flamethrower sound fixes

See merge request cable-mc/cobblemon!998
2024-05-09 23:52:44 +00:00
Paul 472c9be634 Applied pt-pt translations 2024-05-10 09:49:07 +10:00
Sterrezo a247344ae4 Removed unused audio files 2024-05-10 01:41:03 +02:00
FrankTheFarmer 1fd0a9775c Flamethrower is flamethrowering now 2024-05-10 09:39:32 +10:00
Hiroku 9d9495f1f9 Merge branch 'fix-adorn-compat' into 'main'
Fixed adorn compat

See merge request cable-mc/cobblemon!997
2024-05-09 22:56:26 +00:00
apion 88e301d7c8 Fixed adorn compat 2024-05-09 18:53:44 -04:00
Hiroku b0e16a7f26 Merge branch 'FossilTankCreateFix' into 'main'
Fossil Tank Create Fix

See merge request cable-mc/cobblemon!993
2024-05-09 22:07:43 +00:00
Hiroku 54b5b3cbbc Merge branch 'implement_pokemon' into 'main'
Forgot to merge request

See merge request cable-mc/cobblemon!992
2024-05-09 22:07:14 +00:00
Frank The FarmerandHiroku 7850bc5263 Forgot to merge request 2024-05-09 22:07:14 +00:00
V-lpen 8ce5a927b9 Update dragapult.json 2024-05-09 19:19:22 +00:00
Test 24c34af8bf remove random color from ui text 2024-05-08 22:25:19 +00:00
Hiroku 7402426656 Merge branch 'tmetcalfe89/fletchinder-name-ru' into 'main'
in Russian translation the fletchinder was called fletchling

See merge request cable-mc/cobblemon!990
2024-05-08 20:47:41 +00:00
Hiroku c658e496cc Merge branch 'GildedChestHopperInteractionFix' into 'main'
Hoppers can now interact with all inventory slots in a Gilded Chest, Closes #822

Closes #822

See merge request cable-mc/cobblemon!994
2024-05-08 20:40:42 +00:00
JazzMcNade f3300806a3 Hoppers can now interact with all inventory slots in a Gilded Chest 2024-05-08 02:12:53 -05:00
JazzMcNade 8fee4de49b Graceful transition to new inventory, fixed item scatterer 2024-05-08 01:28:41 -05:00
JazzMcNade 5b951ef511 Added Anti-item clogging technology to the fossil tank 2024-05-07 23:43:40 -05:00
tmetcalfe89 6e0850331a held item too 2024-05-06 12:40:22 -07:00
tmetcalfe89 79b1771e7e quick fix 2024-05-06 10:00:50 -07:00
JazzMcNade c9b2c44083 Fixed create chute crash and item duping when chutes attempt to put items in a restoration tank. Refactored RestorationTankEntity to use SimpleInventory 2024-05-05 20:19:09 -05:00
Hiroku c370076337 Merge branch 'bye-j16' into 'main'
Bye J16

See merge request cable-mc/cobblemon!988
2024-05-05 03:34:07 +00:00
MoeBoy76 d05ae4d535 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into bye-j16 2024-05-03 10:19:18 +10:00
MoeBoy76 3cebfb38ef fix mixin compat level being set to Java 16 for no reason 2024-05-03 10:18:58 +10:00
Apion d69f1f17b6 Merge branch 'implement_pokemon' into 'main'
Daily Implementation Mission

See merge request cable-mc/cobblemon!987
2024-05-02 06:59:35 +00:00
Frank The FarmerandApion 3ba89472fa Daily Implementation Mission 2024-05-02 06:59:35 +00:00
MoeBoy76 573608b6fc Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon 2024-05-02 16:04:01 +10:00
MoeBoy76 f092584f83 changelog blank line at end [skip-ci] 2024-05-02 16:03:52 +10:00
Apion a76146f8e9 Merge branch 'JSON-Poser-Tweaks' into 'main'
Json poser tweaks

See merge request cable-mc/cobblemon!986
2024-05-02 05:53:59 +00:00
Frank The FarmerandApion 548daa84e4 Json poser tweaks 2024-05-02 05:53:59 +00:00
Apion 7f1dd4546b Merge branch 'can-moe-scrape' into 'main'
Blueberry DLC

Closes #757, #649, and #758

See merge request cable-mc/cobblemon!953
2024-05-02 05:48:29 +00:00
MoeBoy76andApion a129c361df Blueberry DLC 2024-05-02 05:48:29 +00:00
Hiroku 5d5508a71e Merge branch '1.5-structure-fixes' into 'main'
1.5 structure fixes

See merge request cable-mc/cobblemon!984
2024-04-29 12:29:34 +00:00
Hiroku 5e5684d9fd Merge branch 'implement_pokemon' into 'main'
A couple fixes

See merge request cable-mc/cobblemon!985
2024-04-29 12:29:16 +00:00
Frank The FarmerandHiroku a1623c04b7 A couple fixes 2024-04-29 12:29:15 +00:00
Slippy a070dc56bd Cleaning up unused files 2024-04-29 01:05:00 -05:00
Slippy 79f9e0f0f2 Gimmi Towers now have more junk it can generate at the top 2024-04-29 00:59:41 -05:00
Slippy 8500eb58ef Removed spam log issues and blended some structures into the world better 2024-04-29 00:49:48 -05:00
Hiroku 97e51eb7b5 Merge branch 'removing-items-is-hard' into 'main'
Update is_held_item.json

See merge request cable-mc/cobblemon!983
2024-04-29 05:44:20 +00:00
dhi_holo ba75dcdf31 Update is_held_item.json
why is removing held items so damn annoying, can't we just get vera to fasttrack the sprites instead /j
2024-04-29 15:19:59 +10:00
Paul 9bf8c0e3ec Fixed MOVING data tracker field not using the new logic that drives the pose 2024-04-29 11:25:12 +10:00
Hiroku 0c62c247ec Merge branch '1.5-bug-fixes' into 'main'
(misleading branch name) Run config changes

See merge request cable-mc/cobblemon!980
2024-04-29 00:16:52 +00:00
Hiroku c70e8872ce Merge branch 'implement_pokemon' into 'main'
Implementation yet again

See merge request cable-mc/cobblemon!982
2024-04-29 00:10:19 +00:00
Frank The FarmerandHiroku ce323ddfbf Implementation yet again 2024-04-29 00:10:19 +00:00
Hiroku ffe7978560 Merge branch 'no-more-heldies' into 'main'
Commented out the Held Items

See merge request cable-mc/cobblemon!981
2024-04-28 07:44:29 +00:00
dhi_holo a58632752a Commented out the Held Items
(just the ones without sprites, ofc, just trying to scare public git readers)
2024-04-28 17:21:23 +10:00
apion 0b93481dbf Remove unneeded imports 2024-04-27 13:10:21 -04:00
apion dda004a66c Change default run configs to generate with a uuid and username 2024-04-27 13:05:44 -04:00
apion 9648a91f4a Fixed fabric server run config, split client and server run folders 2024-04-26 20:35:50 -04:00
Hiroku e0c4bf7fb2 Merge branch 'implement_pokemon' into 'main'
Today's implementation fixes

See merge request cable-mc/cobblemon!977
2024-04-26 23:23:50 +00:00
Frank The FarmerandHiroku ed919f63f0 Today's implementation fixes 2024-04-26 23:23:49 +00:00
Apion 239acc0623 Merge branch '1.5-structure-fixes' into 'main'
One more try

See merge request cable-mc/cobblemon!978
2024-04-26 22:12:46 +00:00
Slippy e835b833b3 One more try 2024-04-26 16:48:04 -05:00
Hiroku 8f1127be46 Merge branch 'pve-fix' into 'main'
Fix BattleBuilder's Successful-ness

See merge request cable-mc/cobblemon!976
2024-04-26 00:44:27 +00:00
Hiroku 26a8bf1ca5 Merge branch 'idev-botarium-crash-fix' into 'main'
Fix for a very specific issue where Botarium and Cobblemon will have mapping...

See merge request cable-mc/cobblemon!975
2024-04-25 23:43:58 +00:00
Stampede d3da8c99a8 Simplify battle success fix and apply to 1v1s 2024-04-25 16:41:56 -05:00
Stampede d106deb7f6 Fix PvE battles not returning successful even it was 2024-04-25 14:32:57 -05:00
Waterpicker f1d1e87e47 Fix for a very specific issue where Botarium and Cobblemon will have mapping conflicts indev when the project uses mojang due to how kotlin syntax works. 2024-04-25 12:20:48 -05:00
1197 changed files with 5922 additions and 3356 deletions
+2
View File
@@ -21,6 +21,8 @@ build
# other
eclipse
run
runClient
runServer
# Files from Forge MDK
forge*changelog.txt
+84 -71
View File
@@ -1,42 +1,46 @@
# Changelog
## [1.5.0](#1-5-0)
## [1.5.1](#1-5-1)
### Fixes
-Fixed a bug in which adding organic material to the fossil tank via right click was adding the full count of the stack currently in hand
## [1.5.0 - The Ruins and Revival Update (May Xth, 2024)](#1-5-0)
#### "You're telling me that Mojang has added archaeology to the game? Hmm... that gives me an idea."
### Additions
- Added 17 ruin structures, where you can find Pokémon-themed Armor Trims and Pottery Sherds, Tumblestones, and more.
- Added 22 fossil structures, where you can brush Suspicious Sand/Gravel for Fossils.
- Added the Data Monitor, Fossil Compartment, and Restoration Tank. Placed in the correct formation, you can use these to create a Restoration Machine where you can bring fossils back to life.
- Added 3 variants of Tumblestones, which can be planted near Lava or Magma to grow harvestable Tumblestone Clusters.
- Added 23 fossil structures, where you can brush Suspicious Sand/Gravel for [Fossils](https://wiki.cobblemon.com/index.php/Fossil). You can add [custom fossils using datapacks](https://wiki.cobblemon.com/index.php/Fossils_File).
- Added the Data Monitor, Fossil Compartment, and Restoration Tank blocks. Placed in the correct formation, you can use these to create a [Restoration Machine](https://wiki.cobblemon.com/index.php/Resurrection_Machine) where you can bring fossils back to life. Use organic material to fill the tank first!
- Added 3 variants of [Tumblestone](https://wiki.cobblemon.com/index.php/Tumblestone), which can be planted near Lava or Magma to grow harvestable Tumblestone Clusters.
- Added Tumblestone Blocks, a storage block crafted from 9 Tumblestones.
- Added Ancient Poké Balls, which are aesthetic variants crafted from Tumblestones.
- Added the Ancient Feather, Wing, and Jet Balls, which fly further than regular Poké Balls.
- Added the Ancient Heavy, Leaden, and Gigaton Balls, which are heavier and don't fly as far as regular Poké Balls. These will receive more functionality in a future update.
- Added Original Trainer functionality. To edit the OT through commands, you must specify originaltrainertype=<Player/NPC>, and originaltrainer=<Username or UUID/NPC Name>
- Added visual effects for many Poké Balls when sending out or capturing Pokémon.
- Added a new send-out ball toss animation that showcases the ball used for the Pokémon.
- Added simple move animations for Pokémon in battle with a proof of concept (Flamethrower) for more complicated animations. More and more specific animations will come in future updates.
- Added Original Trainer to the summary menu. To edit the OT through commands, you must specify originaltrainertype=<Player/NPC>, and originaltrainer=<Username or UUID/NPC Name>
- Added support for planting Apricorn trees, berries, and mints in [Botany Pots](https://modrinth.com/mod/botany-pots)
- Added the hidden "True Vivillionaire" advancement.
- The "Poké Ball" Vivillon variant is now obtainable by evolving a Spewpa after obtaining the "Aspiring Vivillionaire" advancement.
- Added dynamic lighting support for any Species or Forms when using [LambDynamicLights](https://modrinth.com/mod/lambdynamiclights) or [Dynamic Lights Reforged](https://www.curseforge.com/minecraft/mc-mods/dynamiclights-reforged), at this time we don't ship with any defaults for this feature but addon creators can make use of this feature.
- Added a Display Case block! Use it to display your archaeological findings, or other items.
- Added 6 Pokémon-themed Pottery Sherds, obtained from ruin structures.
- Added the [Display Case](https://wiki.cobblemon.com/index.php/Display_Case) block. Use it to display your archaeological findings, Poké Balls, or other items.
- Added 6 Pokémon-themed Pottery Sherds, obtained from ruin structures. Sherds... sh-erds. Weird word.
- Added a Pokémon-themed armor trim, obtained from ruin structures.
- You can now find Nether Fire Stone Ore in, surprisingly, the Nether.
- You'll also find Terracotta Sun Stone Ore in Badlands biomes.
- Added effects for many Poké Balls when sending out Pokémon or capturing.
- Added a new send-out ball toss animation that showcases the ball used for the Pokémon.
- Added simple move animations for Pokémon in battle with a proof of concept for more complicated animations.
- Added Nether Fire Stone Ore to, surprisingly, the Nether.
- Added Terracotta Sun Stone Ore to Badlands biomes.
- Added the EV Boosting Feathers.
- Added various new tags for searchability and better compatibility.
- Added the [Ability Capsule](https://bulbapedia.bulbagarden.net/wiki/Ability_Capsule) and [Patch](https://bulbapedia.bulbagarden.net/wiki/Ability_Patch), these have no acquisition method for now and only work as intended with the traditional ability format of 1 to 2 common abilities and 1 hidden ability.
- Added Gilded Chests, available in all Apricorn colors.
- Added Relic Coins, Relic Coin Pouches, and Relic Coin Sacks.
- Added Type Gems. These items hold no functionality for now. Start collecting though...
- Added cries to Meowth, Alolan Meowth, Galaraian Meowth,
- Completed the advancement for placing a Tumblestone near Lava or Magma to make it grow.
- Added [Gilded Chests](https://wiki.cobblemon.com/index.php/Gilded_Chest), available in all Apricorn colors.
- Added Relic Coins, Relic Coin Pouches, and Relic Coin Sacks. Gimmighoul might be interested in these.
- Added Type Gems. These will have additional uses later, so you should start collecting them.
- Added new held items: Ability Shield, Absorb Bulb, Air Balloon, Binding Band, Blunder Policy, Cell Battery, Covert Cloak, Damp Rock, Eject Button, Eviolite, Expert Belt, Float Stone, Focus Sash, Heat Rock, Icy Rock, Iron Ball, Light Ball, Loaded Dice, Red Card, Shell Bell, Sticky Barb, Smooth Rock, Soothe Bell and Weakness Policy.
- Added Hisui starters to the starter selection menu.
- Added bubble quirk to Krabby that only play during clear sunset's.
- Added Hisui starters to the starter selection menu. They come inside of ancient Poké Balls.
- Added a bubble quirk to Krabby that only plays during clear sunsets. It looks familiar...
- Added forfeit option to PVP battles.
- Added visual changes for entities affected by Illusion, Imposter, or Transform in battle.
- Added shoulder mounting for Squirtle, Ralts, Roggenrola, Charcadet, Sizzlipede, Litwick, Cutiefly, Flabebe, Flittle, and Scatterbug
- Added species data for Hydrapple, Iron Boulder, Iron Crown, Pecharunt, Raging Bolt, and Terapagos
- Added various new tags for search-ability and better mod compatibility.
- Added the [Ability Capsule](https://bulbapedia.bulbagarden.net/wiki/Ability_Capsule) and [Patch](https://bulbapedia.bulbagarden.net/wiki/Ability_Patch). These have no way of getting them (for now) and only work as intended with the traditional ability format of 1 to 2 common abilities and 1 hidden ability.
### Pokémon Added
#### Gen 2
@@ -167,7 +171,7 @@
#### Gen 9
- Gimmighoul
- Using Relic Coins, you can increase Gimmighoul's Coin Stash. Upon reaching 999, it can be evolved into Gholdengo.
- Additionally, if you give Gimmighoul a Netherite Scrap, you can increase its Netherite Stash. Who knows what might happen if it fills up?
- Additionally, if you give Gimmighoul a Netherite Scrap, you can increase its Netherite Stash. But what will that do to when you evolve it?
- Gholdengo
#### Cobblemon Exclusives
@@ -180,6 +184,8 @@
- Hisui Bias Goomy
- Hisui Bias Petilil
These are our compromise for having both regular and Hisuian forms of these Pokémon in the game. Hisui Biased variations will evolve into the Hisuian evolutions under most conditions. They are otherwise purely cosmetic differences.
### Added cries to the following Pokémon
- Alolan Raticate
- Vulpix, Ninetales
@@ -245,82 +251,86 @@
### Changes
- Alolan Pikachu and Exeggcute changed to Alola bias.
- Alolan Pikachu and Exeggcute changed to Alola Bias.
- Pokémon now transition more smoothly between different poses.
- Updated models for Mimikyu, Alcremie, Squirtle, Wartortle, Blastoise, Pidgey, Pidgeotto, Pidgeot, Omanyte, Omastar, Growlithe, Arcanine, Nidoran Male, Nidoran Female, Lapras, Swinub, Piloswine, Basculin, Rowlet, Dartrix, Decidueye, Kabuto, Kabutops, Piplup, Prinplup, Elekid, Electabuzz, Cubone, Marowak, Paras, Mawile, Drifloon, Drifblim, Venonat, Venomoth, Yanma, Yanmega, Psyduck, Dusknoir, Diglett, Dugtrio, Natu, Xatu, Oshawott, Samurott, Torchic, Grovyle, Sceptile, Sizzlipede, and Raboot.
- Updated models for Mimikyu, Alcremie, Squirtle, Wartortle, Blastoise, Pidgey, Pidgeotto, Pidgeot, Omanyte, Omastar, Growlithe, Arcanine, Nidoran Male, Nidoran Female, Lapras, Swinub, Piloswine, Basculin, Rowlet, Dartrix, Decidueye, Kabuto, Kabutops, Piplup, Prinplup, Elekid, Electabuzz, Cubone, Marowak, Paras, Mawile, Drifloon, Drifblim, Venonat, Venomoth, Yanma, Yanmega, Psyduck, Dusknoir, Diglett, Dugtrio, Natu, Xatu, Oshawott, Samurott, Torchic, Grovyle, Sceptile, Sizzlipede, Mismagius, and Raboot.
- Updated animations for Squirtle, Wartortle, Blastoise, Pidgey, Pidgeotto, Diglett, Dugtrio, Magikarp, Dragonite, Omanyte, Omastar, Kabuto, Pinsir, Chinchou, Lanturn, Ralts, Kirlia, Gardevoir, Gallade, Buizel, Garchomp, Pumpkaboo, Falinks, Lechonk, Litwick, Lampent, Chandelure, Carnivine, Galarian Meowth, Galarian Rapidash, Venonat, Venomoth, Phanphy, Donphan, Dratini, Dragonair, Happiny, Chansey, Blissey, Volbeat, Illumise, Numel, Sizzlipede, Centiskorch, Obstagoon, Timburr, Gurdurr, Conkeldurr, Drifloon, and Drifblim.
- Resized Drifloon.
- Added more held items to the held item tag, and Metal Coat to the held item tab.
- Added all ores to the modloader ore tags, and added tags for each ore type to the mod (both blocks and items).
- Changed the Destiny Knot to be crafted with a Ghast Tear, rather than a diamond.
- You can now punch grown apricorns to harvest them.
- Changed the Destiny Knot to be crafted with a Ghast Tear rather than a diamond. We have big plans for the Destiny Knot...
- You can now punch grown apricorns to harvest them. We saw so many content creators breaking apricorns with their fists that it was making us die inside.
- The "Poké Ball" Vivillon variant is now obtainable by evolving a Spewpa after obtaining the "Aspiring Vivillionaire" advancement.
- Renamed the "Vivillionaire" advancement to "Aspiring Vivillionaire"
- Removed the Inferno, Forsaken, Poké Ball, and Void patterns from the Aspiring Vivillionaire advancement.
- Updated movesets to add Gen 9 DLC moves.
- Updated the biome tags for Spewpa's evolutions into the various Vivillon patterns. You should mostly be getting one evolution option at a time now.
- Apricorn Sprouts can now be planted directly on Apricorn leaves to create a new Apricorn of the same color.
- Added tooltips to interaction GUIs to make it clearer what they do.
- Poké Ball recipes now use tags for their center ingredient, rather than specificied Copper Ingot, Iron Ingot, Gold Ingot, and Diamond, allowing for further datapack customisation.
- Starter Toast now closes once corresponding button is pressed once.
- Moved some items in the vanilla Food & Drinks category.
- Poké Ball recipes now use tags for their center ingredient, rather than specifically Copper Ingots, Iron Ingots, Gold Ingots, and Diamonds, allowing for further datapack customisation and mod compatibility.
- Starter Toast now closes once the corresponding button is pressed once.
- Moved some items into the vanilla Food & Drinks category.
- Stacked Cobblemon Potion Bases can now be quick moved into Brewing Stands.
- Changed Healer recipe to swap the Max Revive for a Revive.
- Upped the rate that Gastly drop Ghast Tears from 2.5% to 5%.
- Changed the Healing Machine recipe to swap the Max Revive for a Revive so that it is a bit easier to craft.
- Upped the rate that Gastly drop Ghast Tears from 2.5% to 5%, further helping the crafting of a Healing Machine.
- Pokémon with a low Blaze Powder drop chance now drop it more frequently in the Nether.
- Reorganised a few advancements.
- Pokémon entity shadows now scale when the Pokémon is being sent out or recalled.
- Remade Torkoal particles, now they only appear when in battle.
- Updated shiny icon within summary and PC interfaces.
- Changed the Poison Barb sprite so that it doesn't look like a sword when held.
- Moon Stone ore generates more frequently in Taigas and has been added to Magical and Spooky biomes.
- Improved the shiny icon within summary and PC interfaces.
- Changed the Poison Barb sprite so that it doesn't look like a sword when held. It's a Poison Barb, not a Poison Sword. Wait, that gives me an idea.
- Moon Stone ore generates more frequently in Taigas and has been added to Magical and Spooky biomes. Ooo... Sorry.
- Density, Season, and Nether biome tags have been moved and renamed within the biome tags directory.
- Added particles to Lucario when in battle.
- Added particles to Lucario when in battle. Lucario is special.
- Movesets updated for Blueberry DLC.
### Fixes
- Resized Snorlax
- Re-added the recipe for the Iron Vitamin.
- Cleaned up empty evolutions declaration in species files (no, I'm not listing all 169 by name).
- Re-added the recipe for the Iron vitamin. Well, technically it's a mineral.
- Fixed Exeggcute and Pikachu not being able to evolve.
- Fixed battle lang for Poison Touch Ability
- Fixed Cubone not being able to evolve into Alolan Marowak.
- Fixed evolution priority for Exeggcute and Pikachu regional evolutions. Using a thunder stone on Kantonian Pikachu on the beach will give Alolan Raichu. A second thunder stone would then give Kantonian Raichu.
- Fixed battle text for the Poison Touch Ability.
- Finally found Sudowoodo and Bonsly. They were missing spawn data. Same with Drifloon and Litwick. Uh... sorry about that.
- Fixed Squawkabilly forms not being recognized.
- Fixed the bounce animation for Poké Balls being delayed by like, a full second.
- Note blocks now play the correct sound on the Apricorn Plank based blocks.
- Fixed the bounce animation for Poké Balls being delayed by like, a full second. It's enough to drive you mad.
- Note blocks now play the correct sound on the Apricorn Plank-based blocks.
- Fixed an issue with transformed parts in posers causing whacky positional issues.
- Fixed Poké Balls freezing in an open state if you look away when it's meant to close.
- Adds a translation string name to the Empty Pokeball entity.
- Fixed very many issues with Bedrock particle effects.
- Fixed Arbok patterns not being as specific in spawning as they were intended.
- Fixed Poké Balls freezing in an open state if you're looking away at the moment that it's meant to close. This actually fixes some other things but it's hard to explain.
- Fixed thrown Poké Balls technically having no name.
- Fixed very many issues with Bedrock particle effects. There are probably many more. Life goes on.
- Fixed Arbok patterns not being as specific in spawning as they were intended to be.
- Fixed Pokémon not avoiding danger at all when pathfinding.
- Fixed Pokémon pathing over snow layers and carpets.
- Fixed Sobble line not being able to swim or breathe underwater.
- Fixed incompatibility with [Just Enough Resources](https://modrinth.com/mod/just-enough-resources-jer).
- Fixed incompatibility with [Visual Overhaul](https://modrinth.com/mod/visual-overhaul).
- Fixed an issue that allowed Pokemon to spawn on rails.
- Fixed the Sobble line not being able to swim or breathe underwater.
- Fixed mod incompatibility with [Just Enough Resources](https://modrinth.com/mod/just-enough-resources-jer).
- Fixed mod incompatibility with [Visual Overhaul](https://modrinth.com/mod/visual-overhaul).
- Fixed an issue that allowed Pokémon to spawn on rails.
- Fixed the data set on Pokémon when abilities are given via properties such as in ``/spawnpokemon``.
- Fixed sometimes Pokémon losing hidden abilities when evolving, this fix will only take effect to newly created Pokémon.
- Fixed capture messages not displaying.
- Fixed illusion ability causing the wrong Pokémon to be targeted in battle.
- Battles starting with fainted party members no longer cause a softlock on defeat.
- Fixed some issues with eyes in the faint animations for Hitmonlee and Phantump
- Fixed Pokémon sometimes losing hidden abilities when evolving. This fix will only take effect for newly created Pokémon because of technical reasons that were explained to me but which I then forgot.
- Fixed capture messages not displaying in battle.
- Fixed the Illusion ability causing the wrong Pokémon to be targeted in battle.
- Fixed battles started with fainted party members causing a soft-lock on defeat.
- Fixed some issues with eyes in the faint animations of Hitmonlee and Phantump
- Fixed missing evolution moves, for example Stone Axe for Kleavor.
- Cleaned up empty evolutions declaration in species data (And no, I'm not listing all 169. No I don't care what you pay me, I'm not doing it).
- Fixed non-consumable held items being consumed or swapped in battle permanently.
### Developer
- Significantly changed the way properties in PokemonEntity work. This could break some plugins (not in a big way, but changes will be needed).
- Rebuilt the scheduling API to more clearly force side choices and temporal frames of reference for tasks.
- Added dialogue API and data registry.
- Significantly changed the way the properties in PokemonEntity work. This could break some plugins (not in a big way, but changes will be needed for some things).
- Rebuilt the scheduling API to more clearly force side choices and temporal frames of reference for tasks. The developers say that how it works is cool but I stopped listening.
- Added dialogue API and data registry. This is powerful, and there is a full example in the Cobblemon mod you can trigger using /opendialogue \<username\> cobblemon:example. The example JSON is inside the data folder of the mod.
- Opened up the ItemDropEntry class to allow for it to be extended.
- Added a new "advancement" evolution variant that takes an advancement identifier and succeeds if the player has the advancement.
- Made spawning API capable of non-entity spawning
- Made PokemonProperties.parse more interoperable with Java.
- Made the spawning API capable of non-entity spawning. You can make it 'spawn' commands if you want. Go nuts.
- Made PokemonProperties.parse more interoperable with Java. Save yourself and stop using Java.
- Added the ``HeldItemEvent``, this comes with 2 implementation ``HeldItemEvent.Pre`` and ``HeldItemEvent.Post``.
- API to support dynamic lighting in any mod that implements this feature has been added to all Species & Forms, see LightingData class for details.
- Added a Mixin for the BrewingStandScreenHandler to fix the incorrect handling of quickMove in Fabric.
- Corrections to the ability implementation have been made that make ``Ability.forced`` function as intended and never reroll an ability for a Pokémon, please check your implementations to ensure the corrected behavior is intended for your use case.
- ``Pokemon.ability`` no longer has a public setter, please migrate to using ``Pokemon#updateAbility``, this handles the ability coordinate storage for you when necessary.
- ``Pokemon.ability`` no longer has a public setter. Please migrate to using ``Pokemon#updateAbility``, this handles the ability coordinate storage for you when necessary.
- ``Ability.forced``, ``Ability.index`` and ``Ability.priority`` have all had their setters internalized, there is no longer any need to manually adjust these migrate to the method mentioned above to handle that process for you.
- ``AbilityChanger`` has been added to API alongside some implementations, this is subject to change as the ability capsule and patch currently only expect the traditional behaviour in the Pokémon games of 1 to 2 regular abilities and 1 hidden.
- ``Pokemon#rollAbility`` has been added, this rerolls a legal ability for the Pokémon.
- `docs/cobblemon-tags` tags and spawn-presets can now be auto-generated from the current tags in the cobblemon mod with the `generateSpawnPresetList.py` and `generateTagList.py` scripts.
- ``AbilityChanger`` has been added to API alongside some implementations, this is subject to change as the ability capsule and patch currently only expect the traditional behaviour in the Pokémon games of 1 or 2 regular abilities and 1 hidden ability.
- ``Pokemon#rollAbility`` has been added which rerolls for a legal ability for the Pokémon.
- `docs/cobblemon-tags` tags and spawn-presets can now be auto-generated from the current tags in the Cobblemon mod with the `generateSpawnPresetList.py` and `generateTagList.py` scripts.
- `public_spawns_to_json.py` script has been added to give the powerful spawn.json generator a simplistic UI.
- Updated Showdown with Gen 9 DLC.
- Updated Showdown with Gen 9 DLC.
- Changed mixins to be Java 17 for compatibility level instead of 16, removing a warning from startup logs.
### Datapack & Resourcepack Creators
- The maximum amount of fossils that can fit in the Fossil Analyzer can be adjusted in the config.
@@ -490,6 +500,7 @@
Thank you so much to all of our community translators that bring the mod to the rest of the world!
## [1.4.0 - The Friends and Farms Update (October 13th, 2023)](#1-4-0)
#### "No, we don't provide the friends."
### Additions
- Added pasture blocks, used to let your PC Pokémon roam around an area.
- Added nicknaming from the summary menu of a Pokémon (click their name).
@@ -1030,6 +1041,7 @@ Thank you so much to all of our community translators that bring the mod to the
- All the translators that contributed are amazing.
## [1.3.0 - The Foundation Update (March 17th, 2023)](#1-3-0)
#### "Now we can start doing the really cool stuff."
### Dependencies
- Upgraded Fabric API dependence to 0.75.1+1.19.2
@@ -1179,6 +1191,7 @@ Thank you so much to all of our community translators that bring the mod to the
- Thank you to all of the fantastic volunteer translators for taking the time to help with this!
## [1.2.0 - The Customization Update (January 1st, 2023)](#1-2-0)
#### "There are going to be so many fakemon..."
### Additions
- Added models for Natu and Xatu, Murkrow and Honchkrow, Wailmer and Wailord.
- Added new PC interface and it is beautiful.
@@ -1292,4 +1305,4 @@ Thank you so much to all of our community translators that bring the mod to the
- Added species, ability, and move translations for `ko_ko`, `jp_jp`, `fr_fr`, `es_es`, `it_it`, and `zh_cn`.
## [1.0.0 (November 12th, 2022)](#1-0-0)
- Initial release.
- Initial release.
-10
View File
@@ -1,10 +0,0 @@
import ca.stellardrift.build.configurate.ConfigFormats
import ca.stellardrift.build.configurate.catalog.PolyglotVersionCatalogExtension
plugins {
id("ca.stellardrift.polyglot-version-catalogs") version "5.0.1"
}
extensions.configure<PolyglotVersionCatalogExtension> {
from(ConfigFormats.YAML, file("../gradle/libs.versions.yml"))
}
@@ -1,32 +0,0 @@
plugins {
id("cobblemon.base-conventions")
id("com.github.johnrengelman.shadow")
}
val bundle: Configuration by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = true
}
tasks {
jar {
archiveBaseName.set("Cobblemon-${project.name}")
archiveClassifier.set("dev-slim")
}
shadowJar {
archiveClassifier.set("dev-shadow")
archiveBaseName.set("Cobblemon-${project.name}")
configurations = listOf(bundle)
mergeServiceFiles()
}
remapJar {
dependsOn(shadowJar)
inputFile.set(shadowJar.flatMap { it.archiveFile })
archiveBaseName.set("Cobblemon-${project.name}")
archiveVersion.set("${rootProject.version}")
}
}
@@ -1,21 +0,0 @@
plugins {
`java-library`
}
tasks {
val collectJars by registering(Copy::class) {
val tasks = subprojects.filter { it.path != ":common" }.map { it.tasks.named("remapJar") }
dependsOn(tasks)
from(tasks)
into(buildDir.resolve("libs"))
}
assemble {
dependsOn(collectJars)
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
+2 -3
View File
@@ -1,13 +1,12 @@
plugins {
base
id("cobblemon.root-conventions")
id ("net.nemerosa.versioning") version "2.8.2"
}
group = "com.cobblemon.mod"
version = "${project.property("mod_version")}+${project.property("mc_version")}"
val isSnapshot = project.property("snapshot")?.equals("true") ?: false
if (isSnapshot) {
version = "$version-${versioning.info.branch}-${versioning.info.build}"
val fixedBranchName = versioning.info.branch.substringAfter("/")
version = "$version-${fixedBranchName}-${versioning.info.build}"
}
+18 -24
View File
@@ -1,5 +1,5 @@
import extensions.isSnapshot
import extensions.version
import utilities.isSnapshot
import utilities.version
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
@@ -20,7 +20,7 @@ plugins {
id("net.kyori.blossom")
id("org.jetbrains.gradle.plugin.idea-ext")
id ("net.nemerosa.versioning") version "2.8.2"
id("net.nemerosa.versioning") version "2.8.2"
}
architectury {
@@ -34,31 +34,26 @@ repositories {
}
dependencies {
implementation(libs.stdlib)
implementation(libs.reflect)
modImplementation(libs.fabricLoader)
//Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
implementation(libs.bundles.kotlin)
modImplementation(libs.fabric.loader)
modApi(libs.molang)
compileOnlyApi(libs.jeiApi)
modCompileOnly(libs.adornFabric)
modCompileOnly(libs.lambDynamicLights) { isTransitive = false }
// For Showdown
// Integrations
compileOnlyApi(libs.jei.api)
modCompileOnly(libs.bundles.fabric.integrations.compileOnly) {
isTransitive = false
}
// Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
// Showdown
modCompileOnly(libs.graal)
//shadowCommon group: 'commons-io', name: 'commons-io', version: '2.6'
// Data Storage
modCompileOnly(libs.bundles.mongo)
// For datastore
modCompileOnly(libs.mongoDriverCore)
modCompileOnly(libs.mongoDriverSync)
testImplementation(libs.fabricJunit)
testImplementation(libs.junitParams)
testImplementation(libs.mockito)
testImplementation(libs.mockk)
testImplementation(libs.classgraph)
// Unit Testing
testImplementation(libs.bundles.unitTesting)
}
tasks.withType<Test> {
@@ -94,7 +89,6 @@ sourceSets {
property("gitCommit", versioning.info.commit)
property("branch", versioning.info.branch)
System.getProperty("buildNumber")?.let { property("buildNumber", it) }
property("timestamp", OffsetDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss")) + " UTC")
}
}
}
@@ -26,7 +26,6 @@ public final class CrashReportMixin {
cobblemon.add("Is Snapshot", CobblemonBuildDetails.SNAPSHOT);
cobblemon.add("Git Commit", CobblemonBuildDetails.INSTANCE.smallCommitHash() + " (" + "https://gitlab.com/cable-mc/cobblemon/-/commit/" + CobblemonBuildDetails.GIT_COMMIT + ")");
cobblemon.add("Branch", CobblemonBuildDetails.BRANCH);
cobblemon.add("Timestamp", CobblemonBuildDetails.TIMESTAMP);
cobblemon.addStackTrace(builder);
builder.append("\n\n");
@@ -0,0 +1,33 @@
/*
* 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.mixin.invoker;
import com.cobblemon.mod.common.integration.adorn.AdornCompatibility;
import java.util.List;
import juuxel.adorn.block.variant.BlockVariantSet;
import juuxel.adorn.block.variant.BlockVariantSets;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//This is a yucky hack but better than what we were doing before
@Mixin(BlockVariantSets.class)
public abstract class AdornRegisterInvoker {
@Final
@Shadow(remap = false)
private static List<BlockVariantSet> variantSets;
@Inject(method = "register()V", at = @At("HEAD"), remap = false)
void register(CallbackInfo ci) {
variantSets.add(AdornCompatibility.INSTANCE);
}
}
@@ -10,7 +10,6 @@ object CobblemonBuildDetails {
const val GIT_COMMIT = "{{ gitCommit | default("Not Specified") }}"
const val BRANCH = "{{ branch | default("Not Specified") }}"
const val TIMESTAMP = "{{ timestamp }}"
fun smallCommitHash(): String {
return this.GIT_COMMIT.substring(0, 7)
@@ -179,7 +179,6 @@ object Cobblemon {
if(CobblemonBuildDetails.SNAPSHOT) {
this.LOGGER.info(" - Git Commit: ${smallCommitHash()} (https://gitlab.com/cable-mc/cobblemon/-/commit/${CobblemonBuildDetails.GIT_COMMIT})")
this.LOGGER.info(" - Branch: ${CobblemonBuildDetails.BRANCH}")
this.LOGGER.info(" - Timestamp: ${CobblemonBuildDetails.TIMESTAMP}")
}
implementation.registerPermissionValidator()
@@ -667,8 +667,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val CHOICE_SPECS = heldItem("choice_specs")
@JvmField
val CLEANSE_TAG = heldItem("cleanse_tag")
@JvmField
val CLEAR_AMULET = heldItem("clear_amulet")
// @JvmField
// val CLEAR_AMULET = heldItem("clear_amulet")
@JvmField
val COVERT_CLOAK = heldItem("covert_cloak")
@JvmField
@@ -697,16 +697,16 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val FOCUS_BAND = heldItem("focus_band")
@JvmField
val FOCUS_SASH = heldItem("focus_sash")
@JvmField
val GRIP_CLAW = heldItem("grip_claw")
// @JvmField
// val GRIP_CLAW = heldItem("grip_claw")
@JvmField
val HARD_STONE = heldItem("hard_stone")
@JvmField
val HEAVY_DUTY_BOOTS = heldItem("heavy_duty_boots")
@JvmField
val IRON_BALL = heldItem("iron_ball")
@JvmField
val LAGGING_TAIL = heldItem("lagging_tail")
// @JvmField
// val LAGGING_TAIL = heldItem("lagging_tail")
@JvmField
val LEFTOVERS = heldItem("leftovers")
@JvmField
@@ -719,12 +719,12 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val LOADED_DICE = heldItem("loaded_dice")
@JvmField
val LUCKY_EGG = heldItem("lucky_egg")
@JvmField
val LUMINOUS_MOSS = heldItem("luminous_moss")
// @JvmField
// val LUMINOUS_MOSS = heldItem("luminous_moss")
@JvmField
val MAGNET = heldItem("magnet")
@JvmField
val METRONOME = heldItem("metronome")
// @JvmField
// val METRONOME = heldItem("metronome")
@JvmField
val MIRACLE_SEED = heldItem("miracle_seed")
@JvmField
@@ -747,10 +747,10 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val POWER_LENS = heldItem("power_lens")
@JvmField
val POWER_WEIGHT = heldItem("power_weight")
@JvmField
val PROTECTIVE_PADS = heldItem("protective_pads")
@JvmField
val PUNCHING_GLOVE = heldItem("punching_glove")
// @JvmField
// val PROTECTIVE_PADS = heldItem("protective_pads")
// @JvmField
// val PUNCHING_GLOVE = heldItem("punching_glove")
@JvmField
val QUICK_CLAW = heldItem("quick_claw")
@JvmField
@@ -759,16 +759,16 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val RING_TARGET = heldItem("ring_target")
@JvmField
val ROCKY_HELMET = heldItem("rocky_helmet")
@JvmField
val ROOM_SERVICE = heldItem("room_service")
// @JvmField
// val ROOM_SERVICE = heldItem("room_service")
@JvmField
val SAFETY_GOGGLES = heldItem("safety_goggles")
@JvmField
val SCOPE_LENS = heldItem("scope_lens")
// @JvmField
// val SCOPE_LENS = heldItem("scope_lens")
@JvmField
val SHARP_BEAK = heldItem("sharp_beak")
@JvmField
val SHED_SHELL = heldItem("shed_shell")
// @JvmField
// val SHED_SHELL = heldItem("shed_shell")
@JvmField
val SHELL_BELL = heldItem("shell_bell")
@JvmField
@@ -785,24 +785,24 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val SOOTHE_BELL = heldItem("soothe_bell")
@JvmField
val STICKY_BARB = heldItem("sticky_barb")
@JvmField
val TERRAIN_EXTENDER = heldItem("terrain_extender")
@JvmField
val THROAT_SPRAY = heldItem("throat_spray")
// @JvmField
// val TERRAIN_EXTENDER = heldItem("terrain_extender")
// @JvmField
// val THROAT_SPRAY = heldItem("throat_spray")
@JvmField
val TOXIC_ORB = heldItem("toxic_orb")
@JvmField
val TWISTED_SPOON = heldItem("twisted_spoon")
@JvmField
val UTILITY_UMBRELLA = heldItem("utility_umbrella")
// @JvmField
// val UTILITY_UMBRELLA = heldItem("utility_umbrella")
@JvmField
val WEAKNESS_POLICY = heldItem("weakness_policy")
@JvmField
val WIDE_LENS = heldItem("wide_lens")
// @JvmField
// val WIDE_LENS = heldItem("wide_lens")
@JvmField
val WISE_GLASSES = heldItem("wise_glasses")
@JvmField
val ZOOM_LENS = heldItem("zoom_lens")
// @JvmField
// val ZOOM_LENS = heldItem("zoom_lens")
@JvmField
val MENTAL_HERB = compostableHeldItem("mental_herb", null, 1F)
@JvmField
@@ -35,11 +35,13 @@ class TimeRange : IntRanges {
"night" to TimeRange(12542..23459),
"noon" to TimeRange(5000..6999),
"midnight" to TimeRange(17000..18999),
"dawn" to TimeRange(22300..23999, 0..166),
"dawn" to TimeRange(22300..23999, 0..999),
"dusk" to TimeRange(11834..13701),
"twilight" to TimeRange(11834..13701, 22300..23999, 0..166),
"morning" to TimeRange(0..4999),
"afternoon" to TimeRange(7000..12039)
"morning" to TimeRange(23000..23999, 0..4999),
"afternoon" to TimeRange(7000..12999),
"predawn" to TimeRange(19000..22999),
"evening" to TimeRange(13000..16999)
)
}
@@ -30,8 +30,8 @@ import net.minecraft.server.world.ServerWorld
*/
interface SpawningContextCalculator<I : SpawningContextInput, O : SpawningContext> {
companion object {
val isAirCondition: (BlockState) -> Boolean = { it.isAir || (!it.isSolid && !it.isLiquid) }
val isSolidCondition: (BlockState) -> Boolean = { it.isSolid && !it.isIn(BlockTags.LEAVES) }
val isAirCondition: (BlockState) -> Boolean = { it.isAir || (!it.isSolid && !it.fluidState.isIn(FluidTags.WATER)) }
val isSolidCondition: (BlockState) -> Boolean = { it.isSolid }
val isWaterCondition: (BlockState) -> Boolean = { it.fluidState.isIn(FluidTags.WATER) && it.fluidState.isStill }
val isLavaCondition: (BlockState) -> Boolean = { it.fluidState.isIn(FluidTags.LAVA) && it.fluidState.isStill }
@@ -48,7 +48,7 @@ abstract class SpawnDetailPreset {
var weightMultipliers: MutableList<WeightMultiplier>? = null
var weight: Float? = null
var percentage: Float? = null
var mergeMode = MergeMode.KEEP
var mergeMode = MergeMode.INSERT
open fun apply(spawnDetail: SpawnDetail) {
bucket?.let { spawnDetail.bucket = it }
@@ -71,7 +71,6 @@ object BattleBuilder {
player1Actor.battleTheme = player2.getBattleTheme()
player2Actor.battleTheme = player1.getBattleTheme()
}
errors
} else {
errors
}
@@ -140,7 +139,6 @@ object BattleBuilder {
}
playerActor.battleTheme = pokemonEntity.getBattleTheme()
}
errors
} else {
errors
}
@@ -35,7 +35,7 @@ class BoostInstruction(val instructionSet: InstructionSet, val message: BattleMe
val severity = Stats.getSeverity(stages)
val rootKey = if (isBoost) "boost" else "unboost"
battle.dispatchWaiting(1.5F) {
battle.dispatchWaiting {
val lang = when {
message.hasOptionalArgument("zeffect") -> battleLang("$rootKey.$severity.zeffect", pokemon.getName(), stat)
else -> battleLang("$rootKey.$severity", pokemon.getName(), stat)
@@ -29,11 +29,17 @@ class FossilAnalyzerBlockEntity(
class FossilAnalyzerInventory(val analyzerEntity: FossilAnalyzerBlockEntity) : SidedInventory {
override fun clear() {
TODO("Not yet implemented")
if(analyzerEntity.multiblockStructure != null && analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
val fossilMultiblockStructure = analyzerEntity.multiblockStructure as FossilMultiblockStructure
fossilMultiblockStructure.fossilInventory.clear()
}
}
override fun size(): Int {
TODO("Not yet implemented")
if (analyzerEntity.multiblockStructure != null) {
return 3
}
return 0
}
override fun isEmpty(): Boolean {
@@ -41,19 +47,37 @@ class FossilAnalyzerBlockEntity(
}
override fun getStack(slot: Int): ItemStack {
if (analyzerEntity.multiblockStructure != null && analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
val fossilMultiblockStructure = analyzerEntity.multiblockStructure as FossilMultiblockStructure
if (fossilMultiblockStructure.fossilInventory.size > slot) {
return fossilMultiblockStructure.fossilInventory[slot]
}
}
return ItemStack.EMPTY
}
override fun removeStack(slot: Int, amount: Int): ItemStack {
if (analyzerEntity.multiblockStructure != null && analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
val fossilMultiblockStructure = analyzerEntity.multiblockStructure as FossilMultiblockStructure
if (fossilMultiblockStructure.fossilInventory.size > slot) {
return fossilMultiblockStructure.fossilInventory[slot]
}
}
return ItemStack.EMPTY
}
override fun removeStack(slot: Int): ItemStack {
if(analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
val fossilMultiblockStructure = analyzerEntity.multiblockStructure as FossilMultiblockStructure
if (fossilMultiblockStructure.fossilInventory.size > slot) {
return fossilMultiblockStructure.fossilInventory.removeAt(slot)
}
}
return ItemStack.EMPTY
}
override fun setStack(slot: Int, stack: ItemStack) {
if (analyzerEntity.multiblockStructure != null) {
if (analyzerEntity.multiblockStructure != null && analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
val struct = analyzerEntity.multiblockStructure as FossilMultiblockStructure
analyzerEntity.world?.let {
struct.insertFossil(stack, it)
@@ -72,6 +96,9 @@ class FossilAnalyzerBlockEntity(
}
override fun getAvailableSlots(side: Direction?): IntArray {
if(analyzerEntity.multiblockStructure != null && analyzerEntity.multiblockStructure is FossilMultiblockStructure) {
return intArrayOf(0,1,2)
}
return IntArray(1)
}
@@ -86,7 +86,7 @@ class GildedChestBlockEntity(pos: BlockPos, state: BlockState, val type: Type =
}
override fun getAvailableSlots(side: Direction): IntArray {
return if (type == Type.FAKE) IntArray(0) else IntArray(NUM_SLOTS)
return if (type == Type.FAKE) IntArray(0) else IntArray(NUM_SLOTS) { it }
}
override fun canInsert(slot: Int, stack: ItemStack?, dir: Direction?): Boolean {
@@ -36,8 +36,8 @@ import net.minecraft.util.math.BlockPos
@Suppress("MemberVisibilityCanBePrivate", "unused")
class HealingMachineBlockEntity(
val blockPos: BlockPos,
val blockState: BlockState
blockPos: BlockPos,
blockState: BlockState
) : BlockEntity(CobblemonBlockEntities.HEALING_MACHINE, blockPos, blockState) {
var currentUser: UUID? = null
private set
@@ -114,7 +114,7 @@ class HealingMachineBlockEntity(
this.setUser(player.uuid)
alreadyHealing.add(player.uuid)
updateBlockChargeLevel(HealingMachineBlock.MAX_CHARGE_LEVEL + 1)
if (world != null && !world!!.isClient) world!!.playSoundServer(position = blockPos.toVec3d(), sound = CobblemonSounds.HEALING_MACHINE_ACTIVE, volume = 1F, pitch = 1F)
if (world != null && !world!!.isClient) world!!.playSoundServer(position = pos.toVec3d(), sound = CobblemonSounds.HEALING_MACHINE_ACTIVE, volume = 1F, pitch = 1F)
}
fun completeHealing() {
@@ -217,10 +217,10 @@ class HealingMachineBlockEntity(
else floor((healingCharge / maxCharge) * HealingMachineBlock.MAX_CHARGE_LEVEL).toInt()
).coerceIn(0..HealingMachineBlock.MAX_CHARGE_LEVEL + 1)
val state = world!!.getBlockState(blockPos)
val state = world!!.getBlockState(pos)
if (state != null && state.block is HealingMachineBlock) {
val currentCharge = state.get(HealingMachineBlock.CHARGE_LEVEL).toInt()
if (chargeLevel != currentCharge) world!!.setBlockState(blockPos, state.with(HealingMachineBlock.CHARGE_LEVEL, chargeLevel))
if (chargeLevel != currentCharge) world!!.setBlockState(pos, state.with(HealingMachineBlock.CHARGE_LEVEL, chargeLevel))
}
}
}
@@ -26,24 +26,24 @@ import net.minecraft.util.math.Box
import net.minecraft.world.World
class PCBlockEntity(
val blockPos: BlockPos,
val blockState: BlockState
blockPos: BlockPos,
blockState: BlockState
) : BlockEntity(CobblemonBlockEntities.PC, blockPos, blockState) {
companion object {
internal val TICKER = BlockEntityTicker<PCBlockEntity> { world, _, _, blockEntity ->
if (world.isClient) return@BlockEntityTicker
blockEntity.togglePCOn(blockEntity.getInRangeViewerCount(world, blockEntity.blockPos) > 0)
blockEntity.togglePCOn(blockEntity.getInRangeViewerCount(world, blockEntity.pos) > 0)
}
}
private fun togglePCOn(on: Boolean) {
val pcBlock = blockState.block as PCBlock
val pcBlock = cachedState.block as PCBlock
if (world != null && !world!!.isClient) {
val world = world!!
val posBottom = pcBlock.getBasePosition(blockState, blockPos)
val posBottom = pcBlock.getBasePosition(cachedState, pos)
val stateBottom = world.getBlockState(posBottom)
val posTop = pcBlock.getPositionOfOtherPart(stateBottom, posBottom)
@@ -71,7 +71,7 @@ class PCBlockEntity(
val pcLink = PCLinkManager.getLink(player.uuid)
return pcLink != null
&& pcLink is ProximityPCLink
&& pcLink.pos == blockPos
&& pcLink.pos == pos
&& pcLink.world!!.dimension == player.world.dimension
}
@@ -48,7 +48,7 @@ import net.minecraft.world.World
import java.util.*
import kotlin.math.ceil
class PokemonPastureBlockEntity(pos: BlockPos, val state: BlockState) : BlockEntity(CobblemonBlockEntities.PASTURE, pos, state) {
class PokemonPastureBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(CobblemonBlockEntities.PASTURE, pos, state) {
open class Tethering(
val minRoamPos: BlockPos,
val maxRoamPos: BlockPos,
@@ -173,11 +173,11 @@ class PokemonPastureBlockEntity(pos: BlockPos, val state: BlockState) : BlockEnt
}
private fun togglePastureOn(on: Boolean) {
val pastureBlock = state.block as PastureBlock
val pastureBlock = cachedState.block as PastureBlock
if (world != null && !world!!.isClient) {
val world = world!!
val posBottom = pastureBlock.getBasePosition(state, pos)
val posBottom = pastureBlock.getBasePosition(cachedState, pos)
val stateBottom = world.getBlockState(posBottom)
val posTop = pastureBlock.getPositionOfOtherPart(stateBottom, posBottom)
@@ -12,13 +12,16 @@ import com.cobblemon.mod.common.CobblemonBlockEntities
import com.cobblemon.mod.common.api.fossil.NaturalMaterials
import com.cobblemon.mod.common.api.multiblock.builder.MultiblockStructureBuilder
import com.cobblemon.mod.common.block.multiblock.FossilMultiblockStructure
import net.minecraft.block.Block
import net.minecraft.block.BlockState
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.inventory.Inventories
import net.minecraft.inventory.SidedInventory
import net.minecraft.inventory.SimpleInventory
import net.minecraft.item.Item
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtList
import net.minecraft.registry.Registries
import net.minecraft.util.collection.DefaultedList
import net.minecraft.util.math.BlockPos
@@ -27,88 +30,71 @@ import net.minecraft.util.math.Direction
class RestorationTankBlockEntity(
pos: BlockPos, state: BlockState,
multiblockBuilder: MultiblockStructureBuilder
) : FossilMultiblockEntity(pos, state, multiblockBuilder, CobblemonBlockEntities.RESTORATION_TANK) {
) : FossilMultiblockEntity(pos, state, multiblockBuilder, CobblemonBlockEntities.RESTORATION_TANK) {
val inv = RestorationTankInventory(this)
override fun writeNbt(nbt: NbtCompound) {
super.writeNbt(nbt)
Inventories.writeNbt(nbt, inv.items)
nbt.put("inventory", inv.toNbtList())
}
override fun readNbt(nbt: NbtCompound) {
super.readNbt(nbt)
Inventories.readNbt(nbt, inv.items)
if (nbt.contains("Items")) {
// Old format
val items = DefaultedList.ofSize(inv.size(), ItemStack.EMPTY)
Inventories.readNbt(nbt, items)
RestorationTankInventory(this, *items.toTypedArray())
} else if (nbt.contains("inventory")) {
// New format
inv.readNbtList(nbt.get("inventory") as NbtList)
}
}
class RestorationTankInventory(val tankEntity: RestorationTankBlockEntity) : SidedInventory {
class RestorationTankInventory(val tankEntity: RestorationTankBlockEntity, vararg items: ItemStack) : SimpleInventory(*items), SidedInventory {
val items: DefaultedList<ItemStack> = DefaultedList.ofSize(8, ItemStack.EMPTY)
constructor(tankEntity: RestorationTankBlockEntity) : this(tankEntity, *Array(8) { ItemStack.EMPTY })
override fun clear() {
for (i in items.indices) {
items[i] = ItemStack.EMPTY
}
}
override fun size(): Int {
return 8
}
override fun isEmpty(): Boolean {
return items.all { it == ItemStack.EMPTY }
}
override fun getStack(slot: Int): ItemStack {
if(slot == -1 || slot >= size()) {
return ItemStack.EMPTY
}
return items[slot]
}
override fun removeStack(slot: Int, amount: Int): ItemStack {
if(slot < 0 || slot >= size()) {
return ItemStack.EMPTY
}
val result = items[slot].split(amount)
if(items[slot].count == 0) {
items[slot] = ItemStack.EMPTY
}
return result
}
override fun removeStack(slot: Int): ItemStack {
return removeStack(slot, 1)
}
override fun setStack(slot: Int, stack: ItemStack) {
val struct = tankEntity.multiblockStructure as? FossilMultiblockStructure
tankEntity.world?.let {
struct?.insertOrganicMaterial(stack, it)
val returnIdentifier = NaturalMaterials.getReturnItem((stack))
if(returnIdentifier != null ) {
// Store the return item
val returnItem = Registries.ITEM.get(returnIdentifier)
storeReturnItem(returnItem, stack.count)
}
}
}
private fun storeReturnItem(returnItem: Item, count: Int) {
val destStack = items.withIndex().firstOrNull {
it.value == ItemStack.EMPTY || (it.value.count < it.value.maxCount && it.value.item == returnItem)
}
if (destStack != null) {
if(destStack.value == ItemStack.EMPTY) {
items[destStack.index] = ItemStack(returnItem, 1)
} else {
destStack.value.increment(count)
}
}
}
override fun markDirty() {
super.markDirty()
for(i in 0 until size()) { // iterate over inventory, consume items, generate and place return items
val itemStack : ItemStack = this.getStack(i)
if(!itemStack.isEmpty) {
val struct = tankEntity.multiblockStructure as? FossilMultiblockStructure
val returnIdentifier = NaturalMaterials.getReturnItem(itemStack)
if(tankEntity.world != null) {
if(struct?.insertOrganicMaterial(itemStack, tankEntity.world!!) == true) {
removeStack(i)
if (returnIdentifier != null) {
val returnItem = Registries.ITEM.get(returnIdentifier)
val returnStack = ItemStack(returnItem, itemStack.count)
var done = false
if (returnStack.maxCount > 1) { // Only search for a merge if merging could be possible
for(j in 0 until size()) {
// Look for a inventory slot to merge with
val existingStack : ItemStack = getStack(j)
if (Registries.ITEM.getId(existingStack.item) == returnIdentifier && existingStack.count + returnStack.count < existingStack.maxCount) {
setStack(j, ItemStack(returnItem, existingStack.count + returnStack.count))
done = true
}
}
}
if (!done) {
setStack(i, ItemStack(returnItem, itemStack.count))
}
}
}
}
}
}
tankEntity.world?.let {
// tankEntity.world!!.updateListeners(tankEntity.pos, tankEntity.cachedState, tankEntity.cachedState, Block.NOTIFY_ALL)
// tankEntity.world!!.updateComparators(tankEntity.pos, tankEntity.world!!.getBlockState(tankEntity.pos).block)
tankEntity.markDirty()
tankEntity.multiblockStructure?.markDirty(it)
}
}
@@ -118,7 +104,7 @@ class RestorationTankBlockEntity(
}
override fun getAvailableSlots(side: Direction?): IntArray {
return if(side == Direction.DOWN) intArrayOf(0,1,2,3,4,5,6,7) else intArrayOf(-1)
return intArrayOf(0,1,2,3,4,5,6,7)
}
override fun canInsert(slot: Int, stack: ItemStack?, dir: Direction?): Boolean {
@@ -129,12 +115,26 @@ class RestorationTankBlockEntity(
&& structure.organicMaterialInside < FossilMultiblockStructure.MATERIAL_TO_START
&& structure.createdPokemon == null
val returnItem = NaturalMaterials.getReturnItem(stack!!) ?: return canUtilize
if(canUtilize) {
// See if there's room
for (i in items.indices ) {
if(items[i] == ItemStack.EMPTY || (items[i].count < items[i].maxCount
&& items[i].item == Registries.ITEM.get(returnItem))) {
return true
val returnStack = ItemStack(Registries.ITEM.get(returnItem), stack.count)
if(canUtilize && super.canInsert(returnStack)) {
// See if there's room for the return
if(returnStack == ItemStack.EMPTY) {
return true
}
var emptyCount = 0
for(i in 0 until size()) {
val existingStack : ItemStack = getStack(i)
if(existingStack == ItemStack.EMPTY) {
emptyCount += 1
if(emptyCount > 1) {
// 2 empty slots, safe to insert
return true
}
} else if(returnStack.maxCount > 1) {
if(Registries.ITEM.getId(existingStack.item) == returnItem && existingStack.count + returnStack.count < existingStack.maxCount) {
// Return item can merge with an item already in the inventory
return true
}
}
}
return false
@@ -188,7 +188,7 @@ class FossilMultiblockStructure (
// Check if the player is holding a natural material and if so, feed it to the machine.
if (NaturalMaterials.isNaturalMaterial(stack)) {
if (!this.isRunning() && this.createdPokemon == null && this.organicMaterialInside < MATERIAL_TO_START && insertOrganicMaterial(stack, world)) {
if (!this.isRunning() && this.createdPokemon == null && this.organicMaterialInside < MATERIAL_TO_START && insertOrganicMaterial(ItemStack(stack.item, 1), world)) {
this.lastInteraction = world.time
if (!player.isCreative) {
val returnItem = NaturalMaterials.getReturnItem(stack)
@@ -331,11 +331,9 @@ class FossilMultiblockStructure (
}
}
if(tankBaseEntity is RestorationTankBlockEntity) {
tankBaseEntity.inv.items.forEach {
val stack = ItemStack(it.item, 1)
ItemScatterer.spawn(world, pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble(), stack)
tankBaseEntity.inv.clearToList().forEach {
ItemScatterer.spawn(world, pos.x.toDouble(), pos.y.toDouble(), pos.z.toDouble(), it)
}
tankBaseEntity.inv.clear()
}
@@ -533,12 +531,13 @@ class FossilMultiblockStructure (
//Returns false if material wasnt inserted
fun insertOrganicMaterial(stack: ItemStack, world: World): Boolean {
val natureValue = NaturalMaterials.getContent(stack)
var natureValue = NaturalMaterials.getContent(stack)
if (timeRemaining > 0 || this.organicMaterialInside >= MATERIAL_TO_START || natureValue == null) {
return false
}
natureValue *= stack.count
if (natureValue < 0 && organicMaterialInside == 0) return false
if (natureValue <= 0 && organicMaterialInside == 0) return false
val oldFillStage = organicMaterialInside * 8 / MATERIAL_TO_START
// to prevent over/under filling the tank causing a crash
@@ -318,7 +318,6 @@ class PCGUI(
centered = true,
shadow = true,
scale = SCALE,
colour = 0x32CBFF,
pMouseX = mouseX,
pMouseY = mouseY
)
@@ -154,6 +154,7 @@ abstract class PoseableEntityModel<T : Entity>(
val maxPitch = params.getDoubleOrNull(3) ?: 70F
val minPitch = params.getDoubleOrNull(4) ?: -45F
val maxYaw = params.getDoubleOrNull(5) ?: 45F
val minYaw = params.getDoubleOrNull(6) ?: -45F
ObjectValue(
SingleBoneLookAnimation<T>(
frame = this,
@@ -162,7 +163,8 @@ abstract class PoseableEntityModel<T : Entity>(
yawMultiplier = yawMultiplier.toFloat(),
maxPitch = maxPitch.toFloat(),
minPitch = minPitch.toFloat(),
maxYaw = maxYaw.toFloat()
maxYaw = maxYaw.toFloat(),
minYaw = minYaw.toFloat()
)
)
}
@@ -33,7 +33,7 @@ class SingleBoneLookAnimation<T : Entity>(
val pitchMultiplier: Float = 1F,
val yawMultiplier: Float = 1F,
val maxPitch: Float = 70F,
val minPitch: Float = 45F,
val minPitch: Float = -45F,
val maxYaw: Float = 45F,
val minYaw: Float = -45F,
) : StatelessAnimation<T, ModelFrame>(frame) {
@@ -54,8 +54,8 @@ class SingleBoneLookAnimation<T : Entity>(
bone = frame.head,
pitchMultiplier = pitchMultiplier ?: if (disableX) 0F else if (invertX) -1F else 1F,
yawMultiplier = yawMultiplier ?: if (disableY) 0F else if (invertY) -1F else 1F,
maxPitch = maxPitch ?: 45F,
minPitch = minPitch ?: -70F,
maxPitch = maxPitch ?: 70F,
minPitch = minPitch ?: -45F,
maxYaw = maxYaw ?: 45F,
minYaw = minYaw ?: -45F,
)
@@ -20,6 +20,10 @@ import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.util.adapters.ExpressionLikeAdapter
import com.cobblemon.mod.common.util.adapters.Vec3dAdapter
import com.cobblemon.mod.common.util.isDusk
import com.cobblemon.mod.common.util.isStandingOnRedSand
import com.cobblemon.mod.common.util.isStandingOnSand
import com.cobblemon.mod.common.util.isStandingOnSandOrRedSand
import com.google.gson.ExclusionStrategy
import com.google.gson.FieldAttributes
import com.google.gson.GsonBuilder
@@ -163,6 +167,30 @@ class JsonPokemonPoseableModel(override val rootPart: Bone) : PokemonPoseableMod
if (mustBeTouchingWater != null) {
conditionsList.add { mustBeTouchingWater == it.isTouchingWater }
}
val mustBeTouchingWaterOrRain = json.get("isTouchingWaterOrRain")?.asBoolean
if (mustBeTouchingWaterOrRain != null) {
conditionsList.add { mustBeTouchingWaterOrRain == it.isTouchingWaterOrRain }
}
val mustBeSubmergedInWater = json.get("isSubmergedInWater")?.asBoolean
if (mustBeSubmergedInWater != null) {
conditionsList.add { mustBeSubmergedInWater == it.isSubmergedInWater }
}
val mustBeStandingOnRedSand = json.get("isStandingOnRedSand")?.asBoolean
if (mustBeStandingOnRedSand != null) {
conditionsList.add { mustBeStandingOnRedSand == it.isStandingOnRedSand() }
}
val mustBeStandingOnSand = json.get("isStandingOnSand")?.asBoolean
if (mustBeStandingOnSand != null) {
conditionsList.add { mustBeStandingOnSand == it.isStandingOnSand() }
}
val mustBeStandingOnSandOrRedSand = json.get("isStandingOnSandOrRedSand")?.asBoolean
if (mustBeStandingOnSandOrRedSand != null) {
conditionsList.add { mustBeStandingOnSandOrRedSand == it.isStandingOnSandOrRedSand() }
}
val mustBeDusk = json.get("isDusk")?.asBoolean
if (mustBeDusk != null) {
conditionsList.add { mustBeDusk == it.isDusk() }
}
val poseCondition: ((PokemonEntity) -> Boolean)? = if (conditionsList.isEmpty()) null else conditionsList.reduce { acc, function -> { acc(it) && function(it) } }
@@ -58,7 +58,6 @@ class RattataAlolanModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame,
poseTypes = setOf(PoseType.NONE, PoseType.PROFILE, PoseType.STAND, PoseType.FLOAT, PoseType.PORTRAIT, PoseType.SHOULDER_LEFT, PoseType.SHOULDER_RIGHT),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.dataTracker.get(PokemonEntity.MOVING) },
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("rattata_alolan", "ground_idle")
@@ -69,7 +68,6 @@ class RattataAlolanModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame,
poseType = PoseType.WALK,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.dataTracker.get(PokemonEntity.MOVING) },
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("rattata_alolan", "ground_walk")
@@ -57,7 +57,6 @@ class RattataModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Quadr
poseTypes = setOf(PoseType.NONE, PoseType.PROFILE, PoseType.STAND, PoseType.FLOAT, PoseType.PORTRAIT, PoseType.SHOULDER_LEFT, PoseType.SHOULDER_RIGHT),
transformTicks = 10,
quirks = arrayOf(blink),
condition = { !it.dataTracker.get(PokemonEntity.MOVING) },
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("rattata", "ground_idle")
@@ -68,7 +67,6 @@ class RattataModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Quadr
poseType = PoseType.WALK,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.dataTracker.get(PokemonEntity.MOVING) },
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("rattata", "ground_walk")
@@ -46,7 +46,7 @@ class SudowoodoModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Bip
poseTypes = STATIONARY_POSES + UI_POSES,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(yawMultiplier = 0F),
bedrock("sudowoodo", "ground_idle")
)
)
@@ -56,7 +56,7 @@ class SudowoodoModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Bip
poseTypes = MOVING_POSES,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(yawMultiplier = 0F),
bedrock("sudowoodo", "ground_idle"),
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
@@ -9,6 +9,7 @@
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.createTransformation
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.PokemonPose
@@ -34,6 +35,12 @@ class ZigzagoonGalarianModel (root: ModelPart) : PokemonPoseableModel(), HeadedF
lateinit var standing: PokemonPose
lateinit var walk: PokemonPose
lateinit var shoulderLeft: PokemonPose
lateinit var shoulderRight: PokemonPose
val shoulderOffsetX = 0
val shoulderOffsetY = 0
val shoulderOffsetZ = -0.5
override fun registerPoses() {
val blink = quirk { bedrockStateful("zigzagoon_galarian", "blink") }
@@ -57,6 +64,30 @@ class ZigzagoonGalarianModel (root: ModelPart) : PokemonPoseableModel(), HeadedF
bedrock("zigzagoon_galarian", "ground_idle")
)
)
shoulderLeft = registerPose(
poseType = PoseType.SHOULDER_LEFT,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("zigzagoon", "shoulder_left")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(shoulderOffsetX, shoulderOffsetY, shoulderOffsetZ)
)
)
shoulderRight = registerPose(
poseType = PoseType.SHOULDER_RIGHT,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("zigzagoon", "shoulder_right")
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(-shoulderOffsetX, shoulderOffsetY, shoulderOffsetZ)
)
)
}
// override fun getFaintAnimation(
@@ -35,7 +35,7 @@ class MismagiusModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(yawMultiplier = 0.5F),
bedrock("mismagius", "ground_idle")
)
)
@@ -45,7 +45,7 @@ class MismagiusModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
poseTypes = PoseType.MOVING_POSES,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(yawMultiplier = 0.5F),
bedrock("mismagius", "ground_idle")
//bedrock("mismagius", "ground_walk")
)
@@ -8,15 +8,12 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntityState
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.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import net.minecraft.client.model.ModelPart
import net.minecraft.util.math.Vec3d
@@ -8,13 +8,11 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntityState
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.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import net.minecraft.client.model.ModelPart
import net.minecraft.util.math.Vec3d
@@ -51,7 +49,7 @@ class AurorusModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
condition = { !it.isBattling },
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(minPitch = -15F),
bedrock("aurorus", "ground_idle")
)
)
@@ -63,7 +61,7 @@ class AurorusModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
quirks = arrayOf(blink),
condition = { it.isBattling },
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(minPitch = -15F),
bedrock("aurorus", "battle_idle")
)
)
@@ -74,7 +72,7 @@ class AurorusModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
singleBoneLook(minPitch = -15F),
bedrock("aurorus", "ground_walk")
)
)
@@ -36,7 +36,7 @@ class KlefkiModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
val blink = quirk { bedrockStateful("klefki", "blink") }
standing = registerPose(
poseName = "standing",
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES + PoseType.SLEEP,
quirks = arrayOf(blink),
condition = { !it.isBattling },
idleAnimations = arrayOf(
@@ -47,7 +47,7 @@ class KlefkiModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
battleidle = registerPose(
poseName = "battle_idle",
poseTypes = PoseType.STATIONARY_POSES,
poseTypes = PoseType.STATIONARY_POSES + PoseType.SLEEP,
transformTicks = 10,
quirks = arrayOf(blink),
condition = { it.isBattling },
@@ -20,7 +20,7 @@ import net.minecraft.util.math.Vec3d
class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("arctozolt")
override val head = getPart("head")
override val head = getPart("head_ai")
override var portraitTranslation = Vec3d(-0.45, 2.15, 0.0)
override var portraitScale = 0.85F
@@ -85,6 +85,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink, quirk),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "ground_idle")
)
)
@@ -96,6 +97,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "ground_walk")
)
)
@@ -107,6 +109,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "water_idle")
)
)
@@ -118,6 +121,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "water_swim")
)
)
@@ -129,6 +133,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink, quirk),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "surfacewater_idle")
)
)
@@ -140,6 +145,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "surfacewater_swim")
)
)
@@ -151,6 +157,7 @@ class ArctozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink, quirk),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("arctozolt", "battle_idle")
)
)
@@ -18,9 +18,9 @@ import net.minecraft.util.math.Vec3d
class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("dracovish")
override val head = getPart("head")
override val head = getPart("head_ai")
override var portraitTranslation = Vec3d(-0.25, 2.15, 0.0)
override var portraitTranslation = Vec3d(-0.25, 1.90, 0.0)
override var portraitScale = 0.55F
override var profileScale = 0.3F
@@ -74,6 +74,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "ground_idle")
)
)
@@ -84,6 +85,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "ground_walk")
)
)
@@ -94,6 +96,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "water_idle")
)
)
@@ -104,6 +107,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "water_swim")
)
)
@@ -115,6 +119,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "battle_idle")
)
)
@@ -126,6 +131,7 @@ class DracovishModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracovish", "water_battle_idle")
)
)
@@ -18,7 +18,7 @@ import net.minecraft.util.math.Vec3d
class DracozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("dracozolt")
override val head = getPart("head")
override val head = getPart("head_ai")
override var portraitScale = 0.85F
override var portraitTranslation = Vec3d(-0.55, 1.45, 0.0)
@@ -53,6 +53,7 @@ class DracozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracozolt", "ground_idle")
)
)
@@ -63,6 +64,7 @@ class DracozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracozolt", "ground_walk")
)
)
@@ -74,6 +76,7 @@ class DracozoltModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
transformTicks = 10,
quirks = arrayOf(blink),
idleAnimations = arrayOf(
singleBoneLook(),
bedrock("dracozolt", "battle_idle")
)
)
@@ -41,7 +41,6 @@ import net.minecraft.client.render.entity.model.EntityModel
import net.minecraft.client.render.item.ItemRenderer
import net.minecraft.client.util.math.MatrixStack
import net.minecraft.entity.Entity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.text.Text
import net.minecraft.util.Identifier
import net.minecraft.util.math.MathConstants.PI
@@ -153,7 +152,6 @@ class PokemonRenderer(
var beamSourcePosition = if (phaseTarget is EmptyPokeBallEntity) {
(phaseTarget.delegate as PokeBallPoseableState).locatorStates["beam"]?.getOrigin() ?: phaseTarget.pos
} else {
phaseTarget as PlayerEntity
if (phaseTarget.uuid == MinecraftClient.getInstance().player?.uuid) {
val lookVec = phaseTarget.rotationVector.rotateY(PI / 2).multiply(1.0, 0.0, 1.0).normalize()
phaseTarget.getCameraPosVec(partialTicks).subtract(0.0, 0.4, 0.0).subtract(lookVec.multiply(0.3))
@@ -65,12 +65,6 @@ object CobblemonInfoCommand {
.append(this.SPACE)
.append(CobblemonBuildDetails.BRANCH)
message.append(this.NEW_LINE)
.append(this.INDENT)
.append(Text.literal("Timestamp:").styled { it.withColor(Formatting.GRAY) })
.append(this.SPACE)
.append(CobblemonBuildDetails.TIMESTAMP)
ctx.source.sendMessage(message)
0
}
@@ -109,9 +109,9 @@ class StarterConfig {
name = "Hisui Bias",
displayName = "cobblemon.starterselection.category.hisui_bias",
pokemon = mutableListOf(
PokemonProperties.parse("Rowlet region_bias=hisui level=10"),
PokemonProperties.parse("Cyndaquil region_bias=hisui level=10"),
PokemonProperties.parse("Oshawott region_bias=hisui level=10"),
PokemonProperties.parse("Rowlet region_bias=hisui level=10 pokeball=ancient_poke_ball"),
PokemonProperties.parse("Cyndaquil region_bias=hisui level=10 pokeball=ancient_poke_ball"),
PokemonProperties.parse("Oshawott region_bias=hisui level=10 pokeball=ancient_poke_ball"),
)
),
StarterCategory(
@@ -172,14 +172,14 @@ class PokemonServerDelegate : PokemonSideDelegate {
}
entity.dataTracker.set(PokemonEntity.ASPECTS, trackedAspects)
entity.dataTracker.set(PokemonEntity.LABEL_LEVEL, entity.pokemon.level)
entity.dataTracker.set(PokemonEntity.MOVING, !entity.navigation.isIdle)
entity.dataTracker.set(PokemonEntity.MOVING, entity.velocity.multiply(1.0, if (entity.isOnGround) 0.0 else 1.0, 1.0).length() > 0.005F)
updatePoseType()
}
fun updatePoseType() {
val isSleeping = entity.pokemon.status?.status == Statuses.SLEEP && entity.behaviour.resting.canSleep
val isMoving = entity.velocity.multiply(1.0, if (entity.isOnGround) 0.0 else 1.0, 1.0).length() > 0.005F
val isMoving = entity.dataTracker.get(PokemonEntity.MOVING)
val isPassenger = entity.hasVehicle()
val isUnderwater = entity.getIsSubmerged()
val isFlying = entity.getBehaviourFlag(PokemonBehaviourFlag.FLYING)
@@ -10,6 +10,7 @@ package com.cobblemon.mod.common.integration.adorn
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.ResourcePackActivationBehaviour
import com.cobblemon.mod.common.mixin.invoker.AdornRegisterInvoker
import com.cobblemon.mod.common.util.cobblemonResource
import juuxel.adorn.block.variant.BlockKind
import juuxel.adorn.block.variant.BlockVariant
@@ -20,29 +21,7 @@ import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
object AdornCompatibility : BlockVariantSet {
override val woodVariants: List<BlockVariant> = listOf(
BlockVariant.Wood("${Cobblemon.MODID}/apricorn")
)
private val registerMethod by lazy {
BlockVariantSets::class.java.getDeclaredMethod("register", BlockKind::class.java, BlockVariant::class.java).apply { isAccessible = true }
}
@ApiStatus.Internal
fun register() {
var count = 0
Cobblemon.implementation.registerBuiltinResourcePack(cobblemonResource("adorncompatibility"), Text.literal("Adorn Compatibility"), ResourcePackActivationBehaviour.ALWAYS_ENABLED)
BlockKind.values().forEach { kind ->
this.woodVariants.forEach { variant ->
// We use this hack because we can't just call BlockVariantSets#register
// This would attempt to register blocks and items multiple times
// Unfortunately Adorn does all these registrations on mod initialization on all implementations making it impossible to "correctly" add our things
this.registerMethod.invoke(BlockVariantSets, kind, variant)
count++
}
}
Cobblemon.LOGGER.info("Registered {} blocks to Adorn", count)
}
}
@@ -117,7 +117,7 @@ class PokemonDTO : Encodable, Decodable {
this.featuresBuffer = PacketByteBuf(Unpooled.buffer())
val visibleFeatures = pokemon.features
.filterIsInstance<SynchronizedSpeciesFeature>()
.filter { (SpeciesFeatures.getFeature(it.name)!! as SynchronizedSpeciesFeatureProvider<*>).visible }
.filter { (SpeciesFeatures.getFeature(it.name) as? SynchronizedSpeciesFeatureProvider<*>)?.visible == true }
featuresBuffer.writeCollection(visibleFeatures) { _, value ->
featuresBuffer.writeString(value.name)
value.encode(featuresBuffer)
@@ -24,10 +24,11 @@ import net.minecraft.world.gen.structure.Structure
*/
class StructureRequirement : EntityQueryRequirement {
val structureCondition: RegistryLikeCondition<Structure>? = null
val structureAnticondition: RegistryLikeCondition<Structure>? = null
override fun check(pokemon: Pokemon, queriedEntity: LivingEntity): Boolean {
val structures = queriedEntity.world.getChunk(queriedEntity.blockPos).structureReferences
val registry = queriedEntity.world.registryManager.get(RegistryKeys.STRUCTURE)
return (structureCondition == null || structures.any { structureCondition.fits(it.key, registry) })
return (structureCondition == null || structures.any { structureCondition.fits(it.key, registry) }) && (structureAnticondition == null || !structures.any { structureAnticondition.fits(it.key, registry) })
}
companion object {
@@ -13,6 +13,7 @@ import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.pokemon.helditem.HeldItemManager
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
import com.cobblemon.mod.common.battles.actor.PlayerBattleActor
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.battleLang
@@ -87,7 +88,7 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
val battlerName = pokemon.getName()
// Airballoon is the only item using the null effect gimmick
if (effect == null) {
battle.broadcastChatMessage(battleLang("item.$itemID.start", battlerName))
battle.broadcastChatMessage(battleLang("item.$itemID", battlerName))
return
}
val sourceName = battleMessage.battlePokemonFromOptional(battle)?.getName() ?: Text.of("UNKNOWN")
@@ -104,26 +105,33 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
if (this.takeItemEffect.contains(effectId) && this.giveItemEffect.contains(effectId) && !consumeHeldItems) {
return
}
if (this.giveItemEffect.contains(effectId)) {
// Block item swapping in PVP until we have a rule
if (battle.isPvP && !consumeHeldItems) {
return
}
// if items aren't consumed, then we don't want to give them to wild pokemon (dupe)
if (this.giveItemEffect.contains(effectId) && (pokemon.actor is PlayerBattleActor || consumeHeldItems)) {
this.give(pokemon, itemID)
}
if (this.takeItemEffect.contains(effectId)) {
// allow players to steal wild held items
if (this.takeItemEffect.contains(effectId) && (pokemon.actor !is PlayerBattleActor || consumeHeldItems)) {
battleMessage.actorAndActivePokemonFromOptional(battle)?.second?.battlePokemon?.let { this.take(it, itemID) }
}
}
override fun handleEndInstruction(pokemon: BattlePokemon, battle: PokemonBattle, battleMessage: BattleMessage) {
val itemID = battleMessage.effectAt(1)?.id ?: return
val consumeHeldItems = this.shouldConsumeItem(pokemon, battle, itemID)
// These are sent when showdown wants the client to animate something but not produce any text
if (battleMessage.hasOptionalArgument("silent")) {
this.take(pokemon, itemID)
if (consumeHeldItems) this.take(pokemon, itemID)
return
}
val battlerName = pokemon.getName()
val itemName = this.nameOf(itemID)
if (battleMessage.hasOptionalArgument("eat")) {
battle.broadcastChatMessage(battleLang("item.eat", battlerName, itemName))
this.take(pokemon, itemID)
if (consumeHeldItems) this.take(pokemon, itemID)
return
}
val sourceName = battleMessage.battlePokemonFromOptional(battle)?.getName() ?: Text.of("UNKNOWN")
@@ -135,7 +143,7 @@ object CobblemonHeldItemManager : BaseCobblemonHeldItemManager() {
else -> battleLang("enditem.$itemID", battlerName)
}
}
this.take(pokemon, itemID)
if (consumeHeldItems) this.take(pokemon, itemID)
battle.broadcastChatMessage(text)
}
@@ -8,6 +8,13 @@
"texture": "textures/particles/impact-fire"
}
},
"events": {
"flamethrower_cast": {
"sound_effect": {
"event_name": "flamethrower.cast"
}
}
},
"components": {
"minecraft:emitter_rate_steady": {
"spawn_rate": 50,
@@ -16,8 +23,11 @@
"minecraft:emitter_lifetime_once": {
"active_time": 1.25
},
"minecraft:emitter_lifetime_events": {
"creation_event": "flamethrower_cast"
},
"minecraft:emitter_shape_point": {
"direction": [0, "math.random(-0.1,0.1)", -1.0]
"direction": [0, "math.random(-0.1,0.1)", -1]
},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.8
@@ -8,6 +8,13 @@
"texture": "textures/particles/hit"
}
},
"events": {
"flamethrower_impact": {
"sound_effect": {
"event_name": "flamethrower.impact"
}
}
},
"components": {
"minecraft:emitter_rate_instant": {
"num_particles": 1
@@ -15,6 +22,9 @@
"minecraft:emitter_lifetime_once": {
"active_time": 1
},
"minecraft:emitter_lifetime_events": {
"creation_event": "flamethrower_impact"
},
"minecraft:emitter_shape_point": {},
"minecraft:particle_lifetime_expression": {
"max_lifetime": 0.5
@@ -732,6 +732,9 @@
},
"torso": {
"rotation": [0, 0, 0]
},
"wings_open": {
"scale": 0
}
}
},
@@ -823,6 +826,9 @@
},
"torso": {
"rotation": [0, 0, 0]
},
"wings_open": {
"scale": 0
}
}
}
@@ -482,89 +482,379 @@
"animation.krabby.quirk_bubble": {
"animation_length": 24,
"bones": {
"torso": {
"rotation": {
"0.0": [0, 0, 0],
"0.375": {
"pre": [3, 0, 0],
"post": [3, 0, 0],
"lerp_mode": "catmullrom"
},
"0.75": {
"post": [3, 0, 0],
"lerp_mode": "catmullrom"
},
"1.4583": {
"post": [-8, 2, 0],
"lerp_mode": "catmullrom"
},
"3.2083": {
"post": [-7.41, -1.07, 1.44],
"lerp_mode": "catmullrom"
},
"5.875": {
"post": [-3, -5, 3],
"lerp_mode": "catmullrom"
},
"7.4583": {
"post": [0.02, -1.27, 0.87],
"lerp_mode": "catmullrom"
},
"9.125": {
"post": [-7.94, 2.86, -1.52],
"lerp_mode": "catmullrom"
},
"10.875": {
"post": [-10.1, -0.03, -0.81],
"lerp_mode": "catmullrom"
},
"11.625": {
"post": [-13.91, -1.34, -0.34],
"lerp_mode": "catmullrom"
},
"12.125": {
"post": [-6.1, -1, 0],
"lerp_mode": "catmullrom"
},
"12.5417": {
"post": [1.41, -0.84, 0.06],
"lerp_mode": "catmullrom"
},
"13.125": {
"post": [3.15, -0.76, 0.06],
"lerp_mode": "catmullrom"
},
"17.1667": [0, 0, 0]
}
},
"arm_right": {
"rotation": {
"0.0": [0, 0, 0],
"1.0417": {
"pre": [0, -12, 0],
"post": [0, -12, 0],
"lerp_mode": "catmullrom"
},
"3.4583": {
"post": [0, 9, 0],
"lerp_mode": "catmullrom"
},
"4.4167": {
"post": [-17.03, 10.99, 0],
"lerp_mode": "catmullrom"
},
"5.25": {
"post": [-12.56, 11.18, 0],
"lerp_mode": "catmullrom"
},
"6.0833": {
"post": [-23.84, 11.17, 0],
"lerp_mode": "catmullrom"
},
"7.0": {
"post": [-16, 10.89, 0],
"lerp_mode": "catmullrom"
},
"10.6667": {
"post": [0, 9, 0],
"lerp_mode": "catmullrom"
},
"11.9583": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"12.7083": [0, 0, 0]
}
},
"arm_right2": {
"rotation": {
"0.0": [0, 0, 0],
"0.6667": {
"pre": [0, 4, 0],
"post": [0, 4, 0],
"lerp_mode": "catmullrom"
},
"1.8333": {
"post": [-4.25, -25.17, -0.96],
"lerp_mode": "catmullrom"
},
"10.9583": {
"post": [-23.76, -28.06, -1.04],
"lerp_mode": "catmullrom"
},
"11.9167": {
"post": [-24, -27, -1],
"lerp_mode": "catmullrom"
},
"12.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"14.0": [0, 0, 0]
}
},
"claw_right": {
"rotation": {
"0.0417": {
"pre": [0, 0, 0],
"0.0": [0, 0, 0],
"0.7917": {
"pre": [18, 23.5, 0],
"post": [18, 23.5, 0],
"lerp_mode": "catmullrom"
},
"2.125": {
"post": [-7, 0, 0],
"lerp_mode": "catmullrom"
},
"7.0417": {
"post": [10.95, 0, 0],
"lerp_mode": "catmullrom"
},
"11.0417": {
"post": [-7, 0, 0],
"lerp_mode": "catmullrom"
},
"12.3333": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [-2.5, -20, -37.5],
"13.625": [0, 0, 0]
}
},
"claw_mandible_right": {
"rotation": {
"0.0": [0, 0, 0],
"0.625": {
"pre": [0, 0, -20],
"post": [0, 0, -20],
"lerp_mode": "catmullrom"
},
"10.7083": {
"post": [-2.5, -20, -37.5],
"2.6667": {
"post": [0, 0, 27.5],
"lerp_mode": "catmullrom"
},
"11.3333": {
"3.375": {
"post": [0, 0, -12.38],
"lerp_mode": "catmullrom"
},
"4.0417": {
"post": [0, 0, 30.12],
"lerp_mode": "catmullrom"
},
"4.9167": {
"post": [0, 0, -11.85],
"lerp_mode": "catmullrom"
},
"5.7083": {
"post": [0, 0, 30.41],
"lerp_mode": "catmullrom"
},
"6.2917": {
"post": [0, 0, 27.5],
"lerp_mode": "catmullrom"
},
"7.0": {
"post": [0, 0, -12.38],
"lerp_mode": "catmullrom"
},
"7.6667": {
"post": [0, 0, 30.12],
"lerp_mode": "catmullrom"
},
"8.5417": {
"post": [0, 0, -11.85],
"lerp_mode": "catmullrom"
},
"9.3333": {
"post": [0, 0, 30.41],
"lerp_mode": "catmullrom"
},
"11.2083": {
"post": [0, 0, 27.5],
"lerp_mode": "catmullrom"
},
"11.9167": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
},
"12.6667": [0, 0, 0]
}
},
"arm_left": {
"rotation": {
"0.0417": {
"pre": [0, 0, 0],
"0.0": [0, 0, 0],
"1.0417": {
"pre": [0, 12, 0],
"post": [0, 12, 0],
"lerp_mode": "catmullrom"
},
"3.4583": {
"post": [0, -9, 0],
"lerp_mode": "catmullrom"
},
"4.4167": {
"post": [-17.03, -10.99, 0],
"lerp_mode": "catmullrom"
},
"5.25": {
"post": [-12.56, -11.18, 0],
"lerp_mode": "catmullrom"
},
"6.0833": {
"post": [-23.84, -11.17, 0],
"lerp_mode": "catmullrom"
},
"7.0": {
"post": [-16, -10.89, 0],
"lerp_mode": "catmullrom"
},
"10.6667": {
"post": [0, -9, 0],
"lerp_mode": "catmullrom"
},
"11.9583": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [5, -10, 0],
"lerp_mode": "catmullrom"
},
"10.7083": {
"post": [5, -10, 0],
"lerp_mode": "catmullrom"
},
"11.3333": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
"12.7083": [0, 0, 0]
}
},
"arm_left2": {
"rotation": {
"0.0417": {
"pre": [0, 0, 0],
"0.0": [0, 0, 0],
"0.6667": {
"pre": [0, -4, 0],
"post": [0, -4, 0],
"lerp_mode": "catmullrom"
},
"1.9167": {
"post": [83, 18, 17],
"lerp_mode": "catmullrom"
},
"11.5417": {
"post": [84.5, 27.33, 17.31],
"lerp_mode": "catmullrom"
},
"11.9167": {
"post": [83, 18, 17],
"lerp_mode": "catmullrom"
},
"12.7083": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [-12.5, -2.5, -5],
"lerp_mode": "catmullrom"
},
"10.7083": {
"post": [-12.5, -2.5, -5],
"lerp_mode": "catmullrom"
},
"11.3333": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
}
"14.0": [0, 0, 0]
}
},
"claw_left": {
"rotation": {
"0.0417": {
"pre": [0, 0, 0],
"post": [0, 0, 0],
"0.0": [0, 0, 0],
"0.7917": {
"pre": [18, -16, -15],
"post": [18, -16, -15],
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": [-10, -7.5, 55],
"1.5417": {
"post": [-77, -2.5, 22.5],
"lerp_mode": "catmullrom"
},
"10.7083": {
"post": [-10, -7.5, 55],
"2.75": {
"post": [-69.4, -0.44, 25.82],
"lerp_mode": "catmullrom"
},
"11.3333": {
"post": [0, 0, 0],
"4.25": {
"post": [-73.16, -0.17, 24.04],
"lerp_mode": "catmullrom"
}
},
"7.0417": {
"post": [-72, -2.5, 22.5],
"lerp_mode": "catmullrom"
},
"11.0417": {
"post": [-67, -2.5, 22.5],
"lerp_mode": "catmullrom"
},
"11.7083": {
"post": [-53.26, -1.2, 28.8],
"lerp_mode": "catmullrom"
},
"12.3333": {
"post": [-32, 0, 0],
"lerp_mode": "catmullrom"
},
"13.625": [0, 0, 0]
}
},
"claw_mandible_left": {
"rotation": {
"0.0": [0, 0, 0],
"0.625": {
"pre": [0, 0, 20],
"post": [0, 0, 20],
"lerp_mode": "catmullrom"
},
"2.2917": {
"post": [0, 0, -27.5],
"lerp_mode": "catmullrom"
},
"2.9583": {
"post": [0, 0, 12.38],
"lerp_mode": "catmullrom"
},
"3.625": {
"post": [0, 0, -30.12],
"lerp_mode": "catmullrom"
},
"4.5": {
"post": [0, 0, 11.85],
"lerp_mode": "catmullrom"
},
"5.2917": {
"post": [0, 0, -30.41],
"lerp_mode": "catmullrom"
},
"5.9167": {
"post": [0, 0, -27.5],
"lerp_mode": "catmullrom"
},
"6.5833": {
"post": [0, 0, 12.38],
"lerp_mode": "catmullrom"
},
"7.25": {
"post": [0, 0, -30.12],
"lerp_mode": "catmullrom"
},
"8.125": {
"post": [0, 0, 11.85],
"lerp_mode": "catmullrom"
},
"8.9167": {
"post": [0, 0, -30.41],
"lerp_mode": "catmullrom"
},
"11.2083": {
"post": [0, 0, -27.5],
"lerp_mode": "catmullrom"
},
"11.9167": {
"post": [0, 0, 0],
"lerp_mode": "catmullrom"
},
"12.6667": [0, 0, 0]
}
},
"claw_left3": {
"rotation": [0, 0, 0]
}
},
"particle_effects": {
@@ -117,6 +117,22 @@
},
"right_foot": {
"rotation": [0, 12.5, 0]
},
"bone_torso": {
"rotation": [4.99527, 0.21782, -2.4905]
},
"bone_upper_torso": {
"rotation": [-4.89169, 2.70615, 2.27522]
},
"bone_right_upper_arm": {
"rotation": [48.86565, 2.2249, -21.49591],
"position": [0, -0.25, -0.25]
},
"bone_right_lower_arm": {
"rotation": [0, -7.5, 0]
},
"bone": {
"position": [0.5, 0, -0.25]
}
}
},
@@ -126,15 +142,27 @@
"left_eyelid": {
"position": {
"0.0": [0.1, 0, 0],
"0.125": {"pre": [0.1, 0, 0], "post": [0.1, 0, 0]},
"0.1667": {"pre": [0.1, 0, 0], "post": [0, 0, 0]}
"0.125": {
"pre": [0.1, 0, 0],
"post": [0.1, 0, 0]
},
"0.1667": {
"pre": [0.1, 0, 0],
"post": [0, 0, 0]
}
}
},
"right_eyelid": {
"position": {
"0.0": [-0.1, 0, 0],
"0.125": {"pre": [-0.1, 0, 0], "post": [-0.1, 0, 0]},
"0.1667": {"pre": [-0.1, 0, 0], "post": [0, 0, 0]}
"0.125": {
"pre": [-0.1, 0, 0],
"post": [-0.1, 0, 0]
},
"0.1667": {
"pre": [-0.1, 0, 0],
"post": [0, 0, 0]
}
}
}
}
@@ -199,11 +227,6 @@
}
}
}
},
"sound_effects": {
"0.2083": {
"effect": "pokemon.cubone.cry"
}
}
}
}
@@ -61,7 +61,8 @@
},
"pillar_connected_left": {
"rotation": [-0.08508, -0.64686, 14.98637],
"position": [-0.27434, 9.83489, -0.09301]
"position": [-0.27434, 9.83489, -0.09301],
"scale": 0
},
"arm_right": {
"rotation": [-15, 0, 0],
@@ -103,7 +104,8 @@
},
"pillar_connected_right": {
"rotation": [-0.08508, 0.64686, -14.98637],
"position": [0.27434, 9.83489, -0.09301]
"position": [0.27434, 9.83489, -0.09301],
"scale": 0
},
"head": {
"rotation": ["-12.5+3*math.sin(q.anim_time*90*1-50)", 0, 0],
@@ -493,7 +495,8 @@
},
"pillar_connected_left": {
"rotation": [-0.08508, -0.64686, 14.98637],
"position": [-0.27434, 9.83489, -0.09301]
"position": [-0.27434, 9.83489, -0.09301],
"scale": 0
},
"arm_right": {
"rotation": {
@@ -605,7 +608,8 @@
},
"pillar_connected_right": {
"rotation": [-0.08508, 0.64686, -14.98637],
"position": [0.27434, 9.83489, -0.09301]
"position": [0.27434, 9.83489, -0.09301],
"scale": 0
},
"head": {
"rotation": ["-12.5+3*math.sin(q.anim_time*90*4-50)", "10*math.sin(q.anim_time*90*2)", 0]
@@ -1265,7 +1269,8 @@
},
"pillar_connected_left": {
"rotation": [-0.08508, -0.64686, 14.98637],
"position": [-0.27434, 9.83489, -0.09301]
"position": [-0.27434, 9.83489, -0.09301],
"scale": 0
},
"arm_right": {
"rotation": {
@@ -1436,7 +1441,8 @@
},
"pillar_connected_right": {
"rotation": [-0.08508, 0.64686, -14.98637],
"position": [0.27434, 9.83489, -0.09301]
"position": [0.27434, 9.83489, -0.09301],
"scale": 0
},
"head": {
"rotation": ["-10+2*math.sin(q.anim_time*90*4-90)", 0, 0],
@@ -1968,28 +1974,64 @@
"mouth_closed": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [0, 0, 0]},
"0.1667": {"pre": [0, 0, 0], "post": [0, -0.03059, 0.09521]},
"1.375": {"pre": [0, -0.03059, 0.09521], "post": [0, -0.03059, 0.09521]},
"1.4167": {"pre": [0, -0.03059, 0.09521], "post": [0, 0, 0]}
"0.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.1667": {
"pre": [0, 0, 0],
"post": [0, -0.03059, 0.09521]
},
"1.375": {
"pre": [0, -0.03059, 0.09521],
"post": [0, -0.03059, 0.09521]
},
"1.4167": {
"pre": [0, -0.03059, 0.09521],
"post": [0, 0, 0]
}
}
},
"mouth_open": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [0, 0, 0]},
"0.1667": {"pre": [0, 0, 0], "post": [0, 0.03059, -0.09521]},
"1.375": {"pre": [0, 0.03059, -0.09521], "post": [0, 0.03059, -0.09521]},
"1.4167": {"pre": [0, 0.03059, -0.09521], "post": [0, 0, 0]}
"0.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.1667": {
"pre": [0, 0, 0],
"post": [0, 0.03059, -0.09521]
},
"1.375": {
"pre": [0, 0.03059, -0.09521],
"post": [0, 0.03059, -0.09521]
},
"1.4167": {
"pre": [0, 0.03059, -0.09521],
"post": [0, 0, 0]
}
}
},
"mouth_frown": {
"position": {
"0.0": [0, 0, 0],
"0.125": {"pre": [0, 0, 0], "post": [0, 0, 0]},
"0.1667": {"pre": [0, 0, 0], "post": [0, -0.03059, 0.09521]},
"1.375": {"pre": [0, -0.03059, 0.09521], "post": [0, -0.03059, 0.09521]},
"1.4167": {"pre": [0, -0.03059, 0.09521], "post": [0, 0, 0]}
"0.125": {
"pre": [0, 0, 0],
"post": [0, 0, 0]
},
"0.1667": {
"pre": [0, 0, 0],
"post": [0, -0.03059, 0.09521]
},
"1.375": {
"pre": [0, -0.03059, 0.09521],
"post": [0, -0.03059, 0.09521]
},
"1.4167": {
"pre": [0, -0.03059, 0.09521],
"post": [0, 0, 0]
}
}
},
"hand_left": {
@@ -2167,6 +2209,12 @@
"pillar_disconnected_right": {
"rotation": [-3.29767, -14.6123, 3.9999],
"position": [27, 11.25, -12]
},
"pillar_connected_left": {
"scale": 0
},
"pillar_connected_right": {
"scale": 0
}
}
},
@@ -2238,7 +2286,8 @@
},
"pillar_connected_left": {
"rotation": [-0.08508, -0.64686, 14.98637],
"position": [-0.27434, 9.83489, -0.09301]
"position": [-0.27434, 9.83489, -0.09301],
"scale": 0
},
"arm_right": {
"rotation": [80.69367, 5.68422, 13.9042],
@@ -2280,7 +2329,8 @@
},
"pillar_connected_right": {
"rotation": [-0.08508, 0.64686, -14.98637],
"position": [0.27434, 9.83489, -0.09301]
"position": [0.27434, 9.83489, -0.09301],
"scale": 0
},
"head": {
"rotation": ["2.5+3*math.sin(q.anim_time*90*1-50)", 0, 0]
@@ -2657,7 +2707,8 @@
},
"pillar_connected_left": {
"rotation": [-0.08508, -0.64686, 14.98637],
"position": [-0.27434, 9.83489, -0.09301]
"position": [-0.27434, 9.83489, -0.09301],
"scale": 0
},
"arm_right": {
"rotation": {
@@ -2752,7 +2803,8 @@
},
"pillar_connected_right": {
"rotation": [-0.08508, 0.64686, -14.98637],
"position": [0.27434, 9.83489, -0.09301]
"position": [0.27434, 9.83489, -0.09301],
"scale": 0
},
"head": {
"rotation": {
@@ -212,7 +212,6 @@
}
},
"animation.zoroark.cry": {
"loop": true,
"animation_length": 1.04167,
"bones": {
"head": {
@@ -1230,7 +1230,6 @@
}
},
"animation.zoroark_hisuian.cry": {
"loop": true,
"animation_length": 1.0417,
"bones": {
"head": {
@@ -71,7 +71,7 @@
"tail9": {
"rotation": ["12.5-2*math.cos(q.anim_time*90*1-270)*1", 0, "-0.5*math.cos(q.anim_time*90*0.75-270)*1"]
},
"tailten": {
"tail_10": {
"rotation": ["44.9746-3*math.cos(q.anim_time*90*1-300)*1", -0.34107, "0.0929-0.5*math.cos(q.anim_time*90*0.75-300)*1"]
},
"tail12": {
@@ -101,7 +101,7 @@
"head": {
"rotation": [5, 0, 0]
},
"taileleven": {
"tail_11": {
"rotation": ["32.5-3*math.cos(q.anim_time*90*1-330)*1", 0, "-0.5*math.cos(q.anim_time*90*0.75-330)*1"]
},
"head_sail_left1": {
@@ -270,7 +270,7 @@
"tail9": {
"rotation": ["8.75-2*math.cos(q.anim_time*90*2-270)*1", 0, "-0.5*math.cos(q.anim_time*90*1.25-270)*1"]
},
"tailten": {
"tail_10": {
"rotation": ["36.9746-3*math.cos(q.anim_time*90*2-300)*1", -0.34107, "0.0929-0.5*math.cos(q.anim_time*90*1.25-300)*1"]
},
"tail12": {
@@ -300,7 +300,7 @@
"head": {
"rotation": ["2.75+2*math.cos(q.anim_time*90*2-160)*1", 0, 0]
},
"taileleven": {
"tail_11": {
"rotation": ["25.25-3*math.cos(q.anim_time*90*2-330)*1", 0, "-0.5*math.cos(q.anim_time*90*1.25-330)*1"]
},
"head_sail_left1": {
@@ -788,7 +788,7 @@
"tail9": {
"rotation": ["12.5-1*math.cos(q.anim_time*90*4-270)*1", "-0.5*math.cos(q.anim_time*90*2-270)*1", "-0.5*math.cos(q.anim_time*90*2-270)*1"]
},
"tailten": {
"tail_10": {
"rotation": ["44.9746-2*math.cos(q.anim_time*90*4-300)*1", "-0.5*math.cos(q.anim_time*90*2-300)*1", "0.0929-0.5*math.cos(q.anim_time*90*2-300)*1"]
},
"tail12": {
@@ -818,7 +818,7 @@
"head": {
"rotation": [5, 0, 0]
},
"taileleven": {
"tail_11": {
"rotation": ["32.5-3*math.cos(q.anim_time*90*4-330)*1", "-0.5*math.cos(q.anim_time*90*2-330)*1", "-0.5*math.cos(q.anim_time*90*2-330)*1"]
},
"head_sail_left1": {
@@ -1008,7 +1008,7 @@
"tail9": {
"rotation": ["2*math.cos(q.anim_time*90*1-270)*1", -3.15697, 0.19154]
},
"tailten": {
"tail_10": {
"rotation": ["29.9746+2*math.cos(q.anim_time*90*1-300)*1", -0.34107, 0.09288]
},
"tail12": {
@@ -1038,7 +1038,7 @@
"head": {
"rotation": [24.2014, -5.73534, 1.95662]
},
"taileleven": {
"tail_11": {
"rotation": ["46.75+1*math.cos(q.anim_time*90*1-330)*1", 0, 0]
},
"head_sail_left1": {
@@ -1659,7 +1659,7 @@
"tail9": {
"rotation": [12.5, 0, 0]
},
"tailten": {
"tail_10": {
"rotation": [44.97461, -0.34107, 0.09288]
},
"tail12": {
@@ -1689,7 +1689,7 @@
"head": {
"rotation": [5, 0, 0]
},
"taileleven": {
"tail_11": {
"rotation": [32.5, 0, 0]
},
"head_sail_left1": {
@@ -78,6 +78,9 @@
},
"front_attenna_right": {
"scale": 0
},
"head": {
"rotation": [10, 0, 0]
}
}
},
@@ -132,11 +132,6 @@
},
"animation.particle_dummy.flamethrower_target": {
"animation_length": 2,
"sound_effects": {
"0.0": {
"effect": "effective"
}
},
"particle_effects": {
"0.0833": [
{
@@ -21,9 +21,298 @@
"pivot": [0, 0, 0]
},
{
"name": "head",
"name": "neck",
"parent": "body",
"pivot": [0, 0, 1],
"pivot": [0, 18, 0.5],
"cubes": [
{"origin": [-3, 21, -3], "size": [6, 3, 6], "uv": [74, 12]},
{"origin": [-2, 18, -1], "size": [4, 3, 3], "uv": [66, 0]}
]
},
{
"name": "dress",
"parent": "neck",
"pivot": [0, 18, -1],
"cubes": [
{"origin": [-2.5, 17, -1], "size": [5, 1, 4], "inflate": 0.01, "uv": [60, 42]}
]
},
{
"name": "gems",
"parent": "dress",
"pivot": [0, 16.5, -1.5]
},
{
"name": "gem_middle",
"parent": "gems",
"pivot": [0, 16.3, -1.5],
"cubes": [
{"origin": [-1, 14.3, -2], "size": [2, 4, 1], "uv": [98, 17]}
]
},
{
"name": "gem_right",
"parent": "gems",
"pivot": [-2, 16.7, -1],
"cubes": [
{"origin": [-2.5, 15.7, -1.5], "size": [1, 2, 1], "uv": [18, 16]}
]
},
{
"name": "gem_left",
"parent": "gems",
"pivot": [2, 16.7, -1],
"cubes": [
{"origin": [1.5, 15.7, -1.5], "size": [1, 2, 1], "uv": [0, 0]}
]
},
{
"name": "dress_front",
"parent": "dress",
"pivot": [0, 17, -1]
},
{
"name": "arm_right",
"parent": "dress_front",
"pivot": [-2.7, 14, -0.99],
"cubes": [
{"origin": [-5.2, 14, -4.99], "size": [3, 0, 4], "uv": [66, 6]}
]
},
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-2.2, 14, -4.99],
"cubes": [
{"origin": [-6.2, 14, -9.99], "size": [4, 0, 5], "inflate": 0.01, "uv": [47, 42]}
]
},
{
"name": "arm_right3",
"parent": "arm_right2",
"pivot": [-2.2, 14, -9.99],
"cubes": [
{"origin": [-7.2, 14, -14.99], "size": [6, 0, 5], "inflate": 0.02, "uv": [75, 0]}
]
},
{
"name": "arm_right4",
"parent": "arm_right3",
"pivot": [-1.2, 14, -14.99],
"cubes": [
{"origin": [-4.2, 14, -19.99], "size": [3, 0, 5], "uv": [91, 5]}
]
},
{
"name": "arm_left",
"parent": "dress_front",
"pivot": [2.7, 14, -0.99],
"cubes": [
{"origin": [2.2, 14, -4.99], "size": [3, 0, 4], "uv": [62, 47]}
]
},
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [2.2, 14, -4.99],
"cubes": [
{"origin": [2.2, 14, -9.99], "size": [4, 0, 5], "inflate": 0.01, "uv": [46, 25]}
]
},
{
"name": "arm_left3",
"parent": "arm_left2",
"pivot": [2.2, 14, -9.99],
"cubes": [
{"origin": [1.2, 14, -14.99], "size": [6, 0, 5], "inflate": 0.02, "uv": [87, 0]}
]
},
{
"name": "arm_left4",
"parent": "arm_left3",
"pivot": [1.2, 14, -14.99],
"cubes": [
{"origin": [1.2, 14, -19.99], "size": [3, 0, 5], "uv": [85, 5]}
]
},
{
"name": "dress_front_middle",
"parent": "dress_front",
"pivot": [0, 2, 0],
"cubes": [
{"origin": [-8.5, 4.3, -0.99], "size": [17, 13, 0], "uv": [0, 38]},
{"origin": [-5.45, 12.89, -0.99], "size": [6, 0, 11], "uv": [105, 0]},
{"origin": [-0.55, 12.9, -0.99], "size": [6, 0, 11], "uv": [93, 0]}
]
},
{
"name": "dress_front_right",
"parent": "dress_front",
"pivot": [-2.5, 17, -1],
"rotation": [0, 0, 36.2],
"cubes": [
{"origin": [-2.51, 4, -1], "size": [2, 14, 0], "uv": [124, 11]}
]
},
{
"name": "dress_front_left",
"parent": "dress_front",
"pivot": [2.5, 17, -1],
"rotation": [0, 0, -36.2],
"cubes": [
{"origin": [0.51, 4, -1], "size": [2, 14, 0], "uv": [120, 11]}
]
},
{
"name": "dress_right",
"parent": "dress",
"pivot": [-2.5, 17, 0],
"rotation": [0, 0, 36.2]
},
{
"name": "dress_right_front",
"parent": "dress_right",
"pivot": [-0.5, -1, 0],
"cubes": [
{"origin": [-2.51, 4, -1], "size": [0, 14, 2], "uv": [116, 9]}
]
},
{
"name": "dress_right_bottom",
"parent": "dress_right_front",
"pivot": [-2.51, 4, 1],
"rotation": [27, 0, 0],
"cubes": [
{"origin": [-2.495, 4, 1], "size": [0, 2, 11], "uv": [22, 46]}
]
},
{
"name": "dress_right_flap",
"parent": "dress_right_bottom",
"pivot": [-2.51, 4, 6],
"cubes": [
{"origin": [-2.495, 2, 1], "size": [0, 2, 11], "uv": [0, 46]}
]
},
{
"name": "dress_right_middle",
"parent": "dress_right",
"pivot": [-0.5, -1, 1.4],
"cubes": [
{"origin": [-2.49, 6, 0.4], "size": [0, 12, 9], "uv": [34, 33]}
]
},
{
"name": "dress_right_back",
"parent": "dress_right",
"pivot": [-2.5, 17, 3],
"rotation": [54.5, 0, 0],
"cubes": [
{"origin": [-2.5, 6, 1], "size": [0, 13, 2], "uv": [66, 4]}
]
},
{
"name": "dress_right2",
"parent": "dress_right_back",
"pivot": [-2.5, 14, 3]
},
{
"name": "dress_left",
"parent": "dress",
"pivot": [2.5, 17, 0],
"rotation": [0, 0, -36.2]
},
{
"name": "dress_left_front",
"parent": "dress_left",
"pivot": [0.5, -1, 0],
"cubes": [
{"origin": [2.51, 4, -1], "size": [0, 14, 2], "uv": [18, 0]}
]
},
{
"name": "dress_left_bottom",
"parent": "dress_left_front",
"pivot": [2.51, 4, 1],
"rotation": [27, 0, 0],
"cubes": [
{"origin": [2.495, 4, 1], "size": [0, 2, 11], "uv": [29, 16]}
]
},
{
"name": "dress_left_flap",
"parent": "dress_left_bottom",
"pivot": [2.51, 4, 6],
"cubes": [
{"origin": [2.495, 2, 1], "size": [0, 2, 11], "uv": [29, 14]}
]
},
{
"name": "dress_left_middle",
"parent": "dress_left",
"pivot": [0.5, -1, 1.4],
"cubes": [
{"origin": [2.49, 6, 0.4], "size": [0, 12, 9], "uv": [0, 1]}
]
},
{
"name": "dress_left_back",
"parent": "dress_left",
"pivot": [2.5, 17, 3],
"rotation": [54.5, 0, 0],
"cubes": [
{"origin": [2.5, 6, 1], "size": [0, 13, 2], "uv": [112, 9]}
]
},
{
"name": "dress_left2",
"parent": "dress_left_back",
"pivot": [2.5, 14, 3]
},
{
"name": "dress_back",
"parent": "dress",
"pivot": [2, 17, 3],
"rotation": [60, 0, 0]
},
{
"name": "dress_back_middle",
"parent": "dress_back",
"pivot": [2, 17, 3],
"cubes": [
{"origin": [-4.5, 6, 2.99], "size": [9, 11, 0], "uv": [110, 25]}
]
},
{
"name": "dress_back2",
"parent": "dress_back_middle",
"pivot": [0, 6, 3],
"cubes": [
{"origin": [-4.5, 4, 2.99], "size": [9, 2, 0], "uv": [0, 5]}
]
},
{
"name": "dress_back_left",
"parent": "dress_back",
"pivot": [2.5, 17, 3],
"rotation": [0, 0, -20.1],
"cubes": [
{"origin": [0.5, 6, 3], "size": [2, 12, 0], "uv": [70, 10]}
]
},
{
"name": "dress_back_right",
"parent": "dress_back",
"pivot": [-2.5, 17, 3],
"rotation": [0, 0, 20.1],
"cubes": [
{"origin": [-2.5, 6, 3], "size": [2, 12, 0], "uv": [108, 11]}
]
},
{
"name": "head",
"parent": "neck",
"pivot": [0, 23, 0],
"cubes": [
{"origin": [-4.5, 23, -4], "size": [9, 4, 8], "uv": [34, 30]}
]
@@ -213,295 +502,6 @@
{"origin": [0, 36.5, -4], "size": [0, 6, 7], "pivot": [0, 39.5, -0.5], "rotation": [0, -45, 0], "uv": [80, 18]},
{"origin": [0, 35.5, -0.3], "size": [0, 6, 5], "uv": [80, 0]}
]
},
{
"name": "neck",
"parent": "head",
"pivot": [0, 23, 0],
"cubes": [
{"origin": [-3, 21, -2], "size": [6, 3, 6], "uv": [74, 12]},
{"origin": [-2, 18, 0], "size": [4, 3, 3], "uv": [66, 0]}
]
},
{
"name": "dress",
"parent": "neck",
"pivot": [0, 18, 0],
"cubes": [
{"origin": [-2.5, 17, 0], "size": [5, 1, 4], "inflate": 0.01, "uv": [60, 42]}
]
},
{
"name": "gems",
"parent": "dress",
"pivot": [0, 16.5, -0.5]
},
{
"name": "gem_middle",
"parent": "gems",
"pivot": [0, 16.3, -0.5],
"cubes": [
{"origin": [-1, 14.3, -1], "size": [2, 4, 1], "uv": [98, 17]}
]
},
{
"name": "gem_right",
"parent": "gems",
"pivot": [-2, 16.7, 0],
"cubes": [
{"origin": [-2.5, 15.7, -0.5], "size": [1, 2, 1], "uv": [18, 16]}
]
},
{
"name": "gem_left",
"parent": "gems",
"pivot": [2, 16.7, 0],
"cubes": [
{"origin": [1.5, 15.7, -0.5], "size": [1, 2, 1], "uv": [0, 0]}
]
},
{
"name": "dress_front",
"parent": "dress",
"pivot": [0, 17, 0]
},
{
"name": "arm_right",
"parent": "dress_front",
"pivot": [-2.7, 14, 0.01],
"cubes": [
{"origin": [-5.2, 14, -3.99], "size": [3, 0, 4], "uv": [66, 6]}
]
},
{
"name": "arm_right2",
"parent": "arm_right",
"pivot": [-2.2, 14, -3.99],
"cubes": [
{"origin": [-6.2, 14, -8.99], "size": [4, 0, 5], "inflate": 0.01, "uv": [47, 42]}
]
},
{
"name": "arm_right3",
"parent": "arm_right2",
"pivot": [-2.2, 14, -8.99],
"cubes": [
{"origin": [-7.2, 14, -13.99], "size": [6, 0, 5], "inflate": 0.02, "uv": [75, 0]}
]
},
{
"name": "arm_right4",
"parent": "arm_right3",
"pivot": [-1.2, 14, -13.99],
"cubes": [
{"origin": [-4.2, 14, -18.99], "size": [3, 0, 5], "uv": [91, 5]}
]
},
{
"name": "arm_left",
"parent": "dress_front",
"pivot": [2.7, 14, 0.01],
"cubes": [
{"origin": [2.2, 14, -3.99], "size": [3, 0, 4], "uv": [62, 47]}
]
},
{
"name": "arm_left2",
"parent": "arm_left",
"pivot": [2.2, 14, -3.99],
"cubes": [
{"origin": [2.2, 14, -8.99], "size": [4, 0, 5], "inflate": 0.01, "uv": [46, 25]}
]
},
{
"name": "arm_left3",
"parent": "arm_left2",
"pivot": [2.2, 14, -8.99],
"cubes": [
{"origin": [1.2, 14, -13.99], "size": [6, 0, 5], "inflate": 0.02, "uv": [87, 0]}
]
},
{
"name": "arm_left4",
"parent": "arm_left3",
"pivot": [1.2, 14, -13.99],
"cubes": [
{"origin": [1.2, 14, -18.99], "size": [3, 0, 5], "uv": [85, 5]}
]
},
{
"name": "dress_front_middle",
"parent": "dress_front",
"pivot": [0, 2, 1],
"cubes": [
{"origin": [-8.5, 4.3, 0.01], "size": [17, 13, 0], "uv": [0, 38]},
{"origin": [-5.45, 12.89, 0.01], "size": [6, 0, 11], "uv": [105, 0]},
{"origin": [-0.55, 12.9, 0.01], "size": [6, 0, 11], "uv": [93, 0]}
]
},
{
"name": "dress_front_right",
"parent": "dress_front",
"pivot": [-2.5, 17, 0],
"rotation": [0, 0, 36.2],
"cubes": [
{"origin": [-2.51, 4, 0], "size": [2, 14, 0], "uv": [124, 11]}
]
},
{
"name": "dress_front_left",
"parent": "dress_front",
"pivot": [2.5, 17, 0],
"rotation": [0, 0, -36.2],
"cubes": [
{"origin": [0.51, 4, 0], "size": [2, 14, 0], "uv": [120, 11]}
]
},
{
"name": "dress_right",
"parent": "dress",
"pivot": [-2.5, 17, 1],
"rotation": [0, 0, 36.2]
},
{
"name": "dress_right_front",
"parent": "dress_right",
"pivot": [-0.5, -1, 1],
"cubes": [
{"origin": [-2.51, 4, 0], "size": [0, 14, 2], "uv": [116, 9]}
]
},
{
"name": "dress_right_bottom",
"parent": "dress_right_front",
"pivot": [-2.51, 4, 2],
"rotation": [27, 0, 0],
"cubes": [
{"origin": [-2.495, 4, 2], "size": [0, 2, 11], "uv": [22, 46]}
]
},
{
"name": "dress_right_flap",
"parent": "dress_right_bottom",
"pivot": [-2.51, 4, 7],
"cubes": [
{"origin": [-2.495, 2, 2], "size": [0, 2, 11], "uv": [0, 46]}
]
},
{
"name": "dress_right_middle",
"parent": "dress_right",
"pivot": [-0.5, -1, 2.4],
"cubes": [
{"origin": [-2.49, 6, 1.4], "size": [0, 12, 9], "uv": [34, 33]}
]
},
{
"name": "dress_right_back",
"parent": "dress_right",
"pivot": [-2.5, 17, 4],
"rotation": [54.5, 0, 0],
"cubes": [
{"origin": [-2.5, 6, 2], "size": [0, 13, 2], "uv": [66, 4]}
]
},
{
"name": "dress_right2",
"parent": "dress_right_back",
"pivot": [-2.5, 14, 4]
},
{
"name": "dress_left",
"parent": "dress",
"pivot": [2.5, 17, 1],
"rotation": [0, 0, -36.2]
},
{
"name": "dress_left_front",
"parent": "dress_left",
"pivot": [0.5, -1, 1],
"cubes": [
{"origin": [2.51, 4, 0], "size": [0, 14, 2], "uv": [18, 0]}
]
},
{
"name": "dress_left_bottom",
"parent": "dress_left_front",
"pivot": [2.51, 4, 2],
"rotation": [27, 0, 0],
"cubes": [
{"origin": [2.495, 4, 2], "size": [0, 2, 11], "uv": [29, 16]}
]
},
{
"name": "dress_left_flap",
"parent": "dress_left_bottom",
"pivot": [2.51, 4, 7],
"cubes": [
{"origin": [2.495, 2, 2], "size": [0, 2, 11], "uv": [29, 14]}
]
},
{
"name": "dress_left_middle",
"parent": "dress_left",
"pivot": [0.5, -1, 2.4],
"cubes": [
{"origin": [2.49, 6, 1.4], "size": [0, 12, 9], "uv": [0, 1]}
]
},
{
"name": "dress_left_back",
"parent": "dress_left",
"pivot": [2.5, 17, 4],
"rotation": [54.5, 0, 0],
"cubes": [
{"origin": [2.5, 6, 2], "size": [0, 13, 2], "uv": [112, 9]}
]
},
{
"name": "dress_left2",
"parent": "dress_left_back",
"pivot": [2.5, 14, 4]
},
{
"name": "dress_back",
"parent": "dress",
"pivot": [2, 17, 4],
"rotation": [60, 0, 0]
},
{
"name": "dress_back_middle",
"parent": "dress_back",
"pivot": [2, 17, 4],
"cubes": [
{"origin": [-4.5, 6, 3.99], "size": [9, 11, 0], "uv": [110, 25]}
]
},
{
"name": "dress_back2",
"parent": "dress_back_middle",
"pivot": [0, 6, 4],
"cubes": [
{"origin": [-4.5, 4, 3.99], "size": [9, 2, 0], "uv": [0, 5]}
]
},
{
"name": "dress_back_left",
"parent": "dress_back",
"pivot": [2.5, 17, 4],
"rotation": [0, 0, -20.1],
"cubes": [
{"origin": [0.5, 6, 4], "size": [2, 12, 0], "uv": [70, 10]}
]
},
{
"name": "dress_back_right",
"parent": "dress_back",
"pivot": [-2.5, 17, 4],
"rotation": [0, 0, 20.1],
"cubes": [
{"origin": [-2.5, 6, 4], "size": [2, 12, 0], "uv": [108, 11]}
]
}
]
}
@@ -6,7 +6,7 @@
"identifier": "geometry.elgyem",
"texture_width": 64,
"texture_height": 32,
"visible_bounds_width": 2,
"visible_bounds_width": 3,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
@@ -445,7 +445,7 @@
]
},
{
"name": "tailten",
"name": "tail_10",
"parent": "tail9",
"pivot": [0, 21.5, 66],
"cubes": [
@@ -453,8 +453,8 @@
]
},
{
"name": "taileleven",
"parent": "tailten",
"name": "tail_11",
"parent": "tail_10",
"pivot": [0, 21.5, 69],
"cubes": [
{"origin": [-1, 21.5, 69], "size": [2, 2, 4], "uv": [0, 7]}
@@ -462,7 +462,7 @@
},
{
"name": "tail12",
"parent": "taileleven",
"parent": "tail_11",
"pivot": [0, 21.5, 73],
"cubes": [
{"origin": [-1, 21.5, 73], "size": [2, 2, 4], "inflate": 0.01, "uv": [53, 9]}
@@ -2410,6 +2410,8 @@
"cobblemon.move.hydrocannon.desc": "The target is hit with a watery blast. The user can’t move on the next turn.",
"cobblemon.move.hydropump": "Hydro Pump",
"cobblemon.move.hydropump.desc": "The target is blasted by a huge volume of water launched under great pressure.",
"cobblemon.move.hydrostream": "Hydro Stream",
"cobblemon.move.hydrostream.desc": "The user blasts the target with boiling-hot water. This move's power is not lowered in harsh sunlight but rather boosted by 50 percent.",
"cobblemon.move.hydrovortex": "Hydro Vortex",
"cobblemon.move.hydrovortex.desc": "The user creates a huge whirling current using its Z-Power to swallow the target with full force. The power varies, depending on the original move.",
"cobblemon.move.hyperbeam": "Hyper Beam",
@@ -5521,6 +5523,8 @@
"cobblemon.species.ironcrown.desc": "There was supposedly an incident in which it launched shining blades to cut everything around it to pieces. Little else is known about it.",
"cobblemon.species.terapagos.name": "Terapagos",
"cobblemon.species.terapagos.desc": "It's thought that this Pokémon lived in ancient Paldea until it got caught in seismic shifts and went extinct.",
"cobblemon.species.pecharunt.name": "Pecharunt",
"cobblemon.species.pecharunt.desc": "Its peach-shaped shell serves as storage for a potent poison. It makes poisonous mochi and serves them to people and Pokémon.",
"cobblemon.ability.adaptability": "Adaptability",
"cobblemon.ability.adaptability.desc": "Powers up moves of the same type as the Pokémon.",
@@ -5872,6 +5876,8 @@
"cobblemon.ability.poisonheal.desc": "Restores HP if the Pokémon is poisoned instead of losing HP.",
"cobblemon.ability.poisonpoint": "Poison Point",
"cobblemon.ability.poisonpoint.desc": "Contact with the Pokémon may poison the attacker.",
"cobblemon.ability.poisonpuppeteer": "Poison Puppeteer",
"cobblemon.ability.poisonpuppeteer.desc": "Pokémon poisoned by Pecharunt's moves will also become confused.",
"cobblemon.ability.poisontouch": "Poison Touch",
"cobblemon.ability.poisontouch.desc": "May poison a target when the Pokémon makes contact.",
"cobblemon.ability.powerconstruct": "Power Construct",
@@ -90,8 +90,8 @@
"item.cobblemon.ribbon_sweet": "Doce de Laço",
"item.cobblemon.chipped_pot": "Bule Lascado",
"item.cobblemon.cracked_pot": "Bule Rachado",
"item.cobblemon.masterpiece_teacup": "Masterpiece Teacup",
"item.cobblemon.unremarkable_teacup": "Unremarkable Teacup",
"item.cobblemon.masterpiece_teacup": "Chávena de Chá Magistral",
"item.cobblemon.unremarkable_teacup": "Chávena de Chá Insignificante",
"item.cobblemon.sweet_apple": "Maçã Doce",
"item.cobblemon.tart_apple": "Maçã Azeda",
"item.cobblemon.galarica_cuff": "Pulseira de Galarica",
@@ -132,7 +132,7 @@
"item.cobblemon.clever_feather": "Pena Esperta",
"item.cobblemon.swift_feather": "Pena Rápida",
"item.cobblemon.ability_capsule": "Cápsula de Habilidade",
"item.cobblemon.ability_patch": "Ability Patch",
"item.cobblemon.ability_patch": "Adesivo de Habilidade",
"item.cobblemon.red_mint_leaf": "Folha de Hortelã Vermelha",
"item.cobblemon.red_mint_leaf.tooltip": "Capaz de influenciar o atributo de ataque de um Pokémon",
"item.cobblemon.blue_mint_leaf": "Folha de Hortelã Azul",
@@ -167,36 +167,36 @@
"item.cobblemon.naive_mint": "Hortelã Ingénua",
"item.cobblemon.serious_mint": "Hortelã Séria",
"item.cobblemon.ability_shield": "Escudo de Habilidade",
"item.cobblemon.absorb_bulb": "Absorb Bulb",
"item.cobblemon.absorb_bulb": "Bulbo de Absorção",
"item.cobblemon.air_balloon": "Balão de Ar",
"item.cobblemon.assault_vest": "Colete de Assalto",
"item.cobblemon.auspicious_armor": "Armadura Peculiar",
"item.cobblemon.malicious_armor": "Armadura Maliciosa",
"item.cobblemon.binding_band": "Binding Band",
"item.cobblemon.binding_band": "Banda de Ligação",
"item.cobblemon.black_belt": "Cinturão Preto",
"item.cobblemon.black_glasses": "Óculos Negros",
"item.cobblemon.black_sludge": "Lodo Preto",
"item.cobblemon.blunder_policy": "Blunder Policy",
"item.cobblemon.cell_battery": "Cell Battery",
"item.cobblemon.blunder_policy": "Política de Erro",
"item.cobblemon.cell_battery": "Pilha",
"item.cobblemon.charcoal_stick": "Vara de Carvão",
"item.cobblemon.choice_band": "Faixa de Escolha",
"item.cobblemon.choice_scarf": "Cachecol de Escolha",
"item.cobblemon.choice_specs": "Lentes de Escolha",
"item.cobblemon.cleanse_tag": "Etiqueta Purificadora",
"item.cobblemon.clear_amulet": "Amuleto Claro",
"item.cobblemon.covert_cloak": "Covert Cloak",
"item.cobblemon.covert_cloak": "Capa de Cobertura",
"item.cobblemon.dragon_fang": "Presa de Dragão",
"item.cobblemon.eject_button": "Botão de Fuga",
"item.cobblemon.eject_pack": "Eject Pack",
"item.cobblemon.eject_pack": "Mochila de Fuga",
"item.cobblemon.everstone": "Pedra Eterna",
"item.cobblemon.eviolite": "Eviolite",
"item.cobblemon.exp_share": "Partilha de Exp.",
"item.cobblemon.expert_belt": "Expert Belt",
"item.cobblemon.expert_belt": "Cinturão Especialista",
"item.cobblemon.fairy_feather": "Pena Encantada",
"item.cobblemon.float_stone": "Float Stone",
"item.cobblemon.float_stone": "Pedra Flutuante",
"item.cobblemon.focus_band": "Faixa de Foco",
"item.cobblemon.focus_sash": "Cinta de Foco",
"item.cobblemon.grip_claw": "Grip Claw",
"item.cobblemon.grip_claw": "Garra de Aderência",
"item.cobblemon.hard_stone": "Pedra Rígida",
"item.cobblemon.heavy_duty_boots": "Botas de Trabalho",
"item.cobblemon.iron_ball": "Bola de Ferro",
@@ -208,36 +208,36 @@
"item.cobblemon.lucky_egg": "Ovo Sortudo",
"item.cobblemon.luminous_moss": "Musgo Luminoso",
"item.cobblemon.magnet": "Íman",
"item.cobblemon.metronome": "Metronome",
"item.cobblemon.metronome": "Metrónomo",
"item.cobblemon.miracle_seed": "Semente Milagrosa",
"item.cobblemon.muscle_band": "Faixa de Músculo",
"item.cobblemon.mystic_water": "Água Mística",
"item.cobblemon.never_melt_ice": "Gelo Nunca-Derrete",
"item.cobblemon.poison_barb": "Farpa de Veneno",
"item.cobblemon.protective_pads": "Protective Pads",
"item.cobblemon.protective_pads": "Amortecedores Protetores",
"item.cobblemon.punching_glove": "Luva de Boxe",
"item.cobblemon.quick_claw": "Garra Rápida",
"item.cobblemon.razor_claw": "Garra Afiada",
"item.cobblemon.razor_fang": "Presa Afiada",
"item.cobblemon.red_card": "Cartão Vermelho",
"item.cobblemon.ring_target": "Ring Target",
"item.cobblemon.ring_target": "Alvo de Anel",
"item.cobblemon.rocky_helmet": "Capacete Rochoso",
"item.cobblemon.room_service": "Room Service",
"item.cobblemon.room_service": "Serviço de Quartos",
"item.cobblemon.safety_goggles": "Óculos de Segurança",
"item.cobblemon.scope_lens": "Lente de Escopo",
"item.cobblemon.sharp_beak": "Bico Afiado",
"item.cobblemon.shed_shell": "Shed Shell",
"item.cobblemon.shed_shell": "Carapaça Vazia",
"item.cobblemon.shell_bell": "Sino de Concha",
"item.cobblemon.silk_scarf": "Cachecol de Seda",
"item.cobblemon.silver_powder": "Pó de Prata",
"item.cobblemon.soft_sand": "Areia Suave",
"item.cobblemon.soothe_bell": "Soothe Bell",
"item.cobblemon.soothe_bell": "Sino Calmante",
"item.cobblemon.spell_tag": "Etiqueta de Feitiço",
"item.cobblemon.sticky_barb": "Farpa Pegajosa",
"item.cobblemon.terrain_extender": "Extensor de Terreno",
"item.cobblemon.throat_spray": "Spray de Garganta",
"item.cobblemon.twisted_spoon": "Colher Torcida",
"item.cobblemon.utility_umbrella": "Utility Umbrella",
"item.cobblemon.utility_umbrella": "Guarda-chuva de Utilidade",
"item.cobblemon.weakness_policy": "Política de Fraqueza",
"item.cobblemon.wide_lens": "Lente Ampla",
"item.cobblemon.wise_glasses": "Óculos Sábios",
@@ -379,9 +379,9 @@
"item.cobblemon.fossilized_bird": "Pássaro Fossilizado",
"item.cobblemon.claw_fossil": "Fóssil Garra",
"item.cobblemon.cover_fossil": "Fóssil Capa",
"item.cobblemon.fossilized_dino": "Fossilized Dino",
"item.cobblemon.fossilized_dino": "Dino Fossilizado",
"item.cobblemon.dome_fossil": "Fóssil Cúpula",
"item.cobblemon.fossilized_drake": "Fossilized Drake",
"item.cobblemon.fossilized_drake": "Drago Fossilizado",
"item.cobblemon.fossilized_fish": "Peixe Fossilizado",
"item.cobblemon.helix_fossil": "Fóssil Hélice",
"item.cobblemon.jaw_fossil": "Fóssil Mandíbula",
@@ -391,25 +391,25 @@
"item.cobblemon.sail_fossil": "Fóssil Vela",
"item.cobblemon.skull_fossil": "Fóssil Caveira",
"item.cobblemon.bygone_sherd": "Fragmento de Cerâmica Desaparecido",
"item.cobblemon.capture_sherd": "Capture Pottery Sherd",
"item.cobblemon.capture_sherd": "Fragmento de Cerâmica de Captura",
"item.cobblemon.dome_sherd": "Fragmento de Cerâmica Cúpula",
"item.cobblemon.helix_sherd": "Fragmento de Cerâmica Hélice",
"item.cobblemon.nostalgic_sherd": "Fragmento de Cerâmica Nostálgico",
"item.cobblemon.suspicious_sherd": "Fragmento de Cerâmica Suspeito",
"item.cobblemon.tumblestone": "Tumblestone",
"item.cobblemon.black_tumblestone": "Black Tumblestone",
"item.cobblemon.sky_tumblestone": "Sky Tumblestone",
"item.cobblemon.relic_coin": "Relic Coin",
"block.cobblemon.relic_coin_pouch": "Relic Coin Pouch",
"block.cobblemon.relic_coin_sack": "Relic Coin Sack",
"trim_pattern.cobblemon.automaton": "Automaton Armour Trim",
"item.cobblemon.tumblestone": "Seixo",
"item.cobblemon.black_tumblestone": "Seixo Preto",
"item.cobblemon.sky_tumblestone": "Seixo do Céu",
"item.cobblemon.relic_coin": "Moeda Relíquia",
"block.cobblemon.relic_coin_pouch": "Bolsa de Moedas Relíquia",
"block.cobblemon.relic_coin_sack": "Saco de Moedas Relíquia",
"trim_pattern.cobblemon.automaton": "Revestimento de Armadura Autómato",
"cobblemon.fossil.armor": "Armadura",
"cobblemon.fossil.bird": "Pássaro",
"cobblemon.fossil.claw": "Garra",
"cobblemon.fossil.cover": "Capa",
"cobblemon.fossil.dino": "Dino",
"cobblemon.fossil.dome": "Cúpula",
"cobblemon.fossil.drake": "Drake",
"cobblemon.fossil.drake": "Drago",
"cobblemon.fossil.fish": "Peixe",
"cobblemon.fossil.helix": "Hélice",
"cobblemon.fossil.jaw": "Mandíbula",
@@ -466,7 +466,7 @@
"block.cobblemon.vivichoke_seeds": "Sementes de Alcachofra",
"block.cobblemon.pep_up_flower": "Flor Estimulante",
"block.cobblemon.potted_pep_up_flower": "Flor Estimulante Envasada",
"block.cobblemon.gilded_chest": "Gilded Chest",
"block.cobblemon.gilded_chest": "Baú Dourado",
"block.cobblemon.gimmighoul_chest": "Baú de Gimmighoul",
"block.cobblemon.blue_gilded_chest": "Baú Dourado Azul",
"block.cobblemon.yellow_gilded_chest": "Baú Dourado Amarelo",
@@ -474,22 +474,22 @@
"block.cobblemon.black_gilded_chest": "Baú Dourado Preto",
"block.cobblemon.green_gilded_chest": "Baú Dourado Verde",
"block.cobblemon.white_gilded_chest": "Baú Dourado Branco",
"block.cobblemon.display_case": "Display Case",
"block.cobblemon.small_budding_tumblestone": "Small Tumblestone Bud",
"block.cobblemon.medium_budding_tumblestone": "Medium Tumblestone Bud",
"block.cobblemon.large_budding_tumblestone": "Large Tumblestone Bud",
"block.cobblemon.tumblestone_cluster": "Tumblestone Cluster",
"block.cobblemon.tumblestone_block": "Block of Tumblestone",
"block.cobblemon.small_budding_sky_tumblestone": "Small Sky Tumblestone Bud",
"block.cobblemon.medium_budding_sky_tumblestone": "Medium Sky Tumblestone Bud",
"block.cobblemon.large_budding_sky_tumblestone": "Large Sky Tumblestone Bud",
"block.cobblemon.sky_tumblestone_cluster": "Sky Tumblestone Cluster",
"block.cobblemon.sky_tumblestone_block": "Block of Sky Tumblestone",
"block.cobblemon.small_budding_black_tumblestone": "Small Black Tumblestone Bud",
"block.cobblemon.medium_budding_black_tumblestone": "Medium Black Tumblestone Bud",
"block.cobblemon.large_budding_black_tumblestone": "Large Black Tumblestone Bud",
"block.cobblemon.black_tumblestone_cluster": "Black Tumblestone Cluster",
"block.cobblemon.black_tumblestone_block": "Block of Black Tumblestone",
"block.cobblemon.display_case": "Vitrine",
"block.cobblemon.small_budding_tumblestone": "Broto Pequeno de Seixo",
"block.cobblemon.medium_budding_tumblestone": "Broto Médio de Seixo",
"block.cobblemon.large_budding_tumblestone": "Broto Grande de Seixo",
"block.cobblemon.tumblestone_cluster": "Aglomerado de Seixos",
"block.cobblemon.tumblestone_block": "Bloco de Seixo",
"block.cobblemon.small_budding_sky_tumblestone": "Broto Pequeno de Seixo do Céu",
"block.cobblemon.medium_budding_sky_tumblestone": "Broto Médio de Seixo do Céu",
"block.cobblemon.large_budding_sky_tumblestone": "Broto Grande de Seixo do Céu",
"block.cobblemon.sky_tumblestone_cluster": "Aglomerado de Seixos do Céu",
"block.cobblemon.sky_tumblestone_block": "Bloco de Seixo do Céu",
"block.cobblemon.small_budding_black_tumblestone": "Broto Pequeno de Seixo Preto",
"block.cobblemon.medium_budding_black_tumblestone": "Broto Médio de Seixo Preto",
"block.cobblemon.large_budding_black_tumblestone": "Broto Grande de Seixo Preto",
"block.cobblemon.black_tumblestone_cluster": "Aglomerado de Seixos Pretos",
"block.cobblemon.black_tumblestone_block": "Bloco de Seixo Preto",
"cobblemon.overflow_no_pc": "A tua equipa estava cheia e não tens um PC!",
"cobblemon.overflow_no_space": "A tua equipa estava cheia e %1$s também!",
"cobblemon.overflow_to_pc": "A tua equipa está cheia! %1$s foi adicionado(a) a %2$s.",
@@ -530,7 +530,7 @@
"cobblemon.ui.stats.sp_def": "Defesa Especial",
"cobblemon.ui.stats.speed": "Velocidade",
"cobblemon.ui.gold_hoard": "Saco de Moedas",
"cobblemon.ui.netherite_hoard": "Scrap Stash",
"cobblemon.ui.netherite_hoard": "Saco de Sucata",
"cobblemon.ui.info": "Informação",
"cobblemon.ui.info.pokedex_number": "N.º Dex",
"cobblemon.ui.info.species": "Espécie",
@@ -558,7 +558,7 @@
"cobblemon.ui.pasture.recall_all": "Retirar Todos",
"cobblemon.ui.pasture.owned_name": "%1$s (%2$s)",
"cobblemon.pasture.too_many_nearby": "Há demasiados Pokémon por perto.",
"cobblemon.ui.interact.give.item": "Change held item",
"cobblemon.ui.interact.give.item": "Mudar o equipamento",
"cobblemon.ui.interact.spectate": "Assistir",
"cobblemon.ui.interact.trade": "Trocar",
"cobblemon.ui.interact.battle": "Batalhar",
@@ -570,26 +570,26 @@
"key.cobblemon.pokenavigator": "Abrir PokéNav",
"key.cobblemon.summary": "Abrir Sumário",
"key.cobblemon.categories.cobblemon": "Pedramon",
"key.cobblemon.scaleportraitup": "Scale Portrait Up",
"key.cobblemon.scaleportraitdown": "Scale Portrait Down",
"key.cobblemon.translateportraitup": "Translate Portrait Up",
"key.cobblemon.translateportraitdown": "Translate Portrait Down",
"key.cobblemon.translateportraitleft": "Translate Portrait Left",
"key.cobblemon.translateportraitright": "Translate Portrait Right",
"key.cobblemon.printmodelsettings": "Print Model Settings",
"key.cobblemon.categories.cobblemon.debug": "Cobblemon Debug",
"cobblemon.subtitle.poke_ball.capture_succeeded": "Poké Ball capture succeeds",
"key.cobblemon.scaleportraitup": "Dimensionar o Retrato Cima",
"key.cobblemon.scaleportraitdown": "Dimensionar o Retrato Baixo",
"key.cobblemon.translateportraitup": "Converter o Retrato Cima",
"key.cobblemon.translateportraitdown": "Converter o Retrato Baixo",
"key.cobblemon.translateportraitleft": "Converter o Retrato Esquerda",
"key.cobblemon.translateportraitright": "Converter o Retrato Direito",
"key.cobblemon.printmodelsettings": "Configurações de Impressão de Modelo",
"key.cobblemon.categories.cobblemon.debug": "Depuração do Cobblemon",
"cobblemon.subtitle.poke_ball.capture_succeeded": "Captura de Pokébola teve sucesso",
"cobblemon.subtitle.fossilmachine.activate": "Máquina de Restauração ativa-se",
"cobblemon.subtitle.fossilmachine.active_loop": "Restoration Machine hums",
"cobblemon.subtitle.fossilmachine.active_loop": "Máquina de Restauração zumbe",
"cobblemon.subtitle.fossilmachine.dna_full": "Tanque de Restauração alcança a capacidade",
"cobblemon.subtitle.fossilmachine.finished": "Máquina de Restauração acaba",
"cobblemon.subtitle.fossilmachine.insert_dna": "Tanque de Restauração salpica",
"cobblemon.subtitle.fossilmachine.insert_dna_small": "Tanque de restauração salpica levemente",
"cobblemon.subtitle.fossilmachine.insert_fossil": "Fóssil inserido",
"cobblemon.subtitle.fossilmachine.retrieve_fossil": "Fóssil recuperado",
"cobblemon.subtitle.fossilmachine.retrieve_pokemon": "Fossil Pokémon retrieved",
"cobblemon.subtitle.fossilmachine.retrieve_pokemon": "Pokémon Fóssil recuperado",
"cobblemon.subtitle.fossilmachine.unprotected": "Proteção da Máquina de Restauração acaba",
"cobblemon.subtitle.fossilmachine.assemble": "Restoration Machine assembles",
"cobblemon.subtitle.fossilmachine.assemble": "Máquina de Restauração reúne",
"cobblemon.healingmachine.alreadyinuse": "Esta máquina de cura já está a ser utilizada!",
"cobblemon.healingmachine.nopokemon": "Não tens nenhum Pokémon na tua equipa para curar!",
"cobblemon.healingmachine.alreadyhealed": "A tua equipa de Pokémon já está completamente curada!",
@@ -859,9 +859,9 @@
"advancements.cobblemon.obtain_all_berries.description": "Obtém um de cada Baga em Cobblemon",
"advancements.cobblemon.use_pasture": "Um Novo Jardim Zoológico",
"advancements.cobblemon.use_pasture.description": "Cria um Bloco de Pastagem e permite que os teus amigos vagueiem",
"advancements.cobblemon.catch_all_vivillon": "Aspiring Vivillionaire",
"advancements.cobblemon.catch_all_vivillon": "Aspirante a Vivillionário",
"advancements.cobblemon.catch_all_vivillon.description": "Obtém todos os padrões de Vivillon...",
"advancements.cobblemon.catch_all_vivillon_but_actually": "True Vivillionaire",
"advancements.cobblemon.catch_all_vivillon_but_actually": "Verdadeiro Vivillionário",
"advancements.cobblemon.catch_all_vivillon_but_actually.description": "Obtém o resto.",
"advancements.cobblemon.evolve_veevees": "Veevees Valorizadas",
"advancements.cobblemon.evolve_veevees.description": "Evolui Eevee em 8 formas diferentes",
@@ -879,16 +879,16 @@
"advancements.cobblemon.own_zangoose_seviper.description": "Tenha um Zangoose e um Seviper na sua equipa ao mesmo tempo",
"advancements.cobblemon.obtain_fossil": "Consulta o Fóssil",
"advancements.cobblemon.obtain_fossil.description": "Descobre um fóssil enterrado em ruínas ancestrais",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cover thee in Debris",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolve a Gimmighoul into a fully netherite-coated Gholdengo",
"advancements.cobblemon.resurrect_pokemon": "Life Finds a Way",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cobre-te em Detritos",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolui um Gimmighoul para um Gholdengo totalmente revestido em netherite",
"advancements.cobblemon.resurrect_pokemon": "A Vida Encontra um Caminho",
"advancements.cobblemon.resurrect_pokemon.description": "Obtém um Pokémon Fóssil a partir de uma Máquina de Ressurreição",
"advancements.cobblemon.obtain_tumblestone": "The Rolling Stone",
"advancements.cobblemon.obtain_tumblestone.description": "Safely extract a Tumblestone from suspicious sand or gravel",
"advancements.cobblemon.grow_tumblestone": "Tumbling Down",
"advancements.cobblemon.grow_tumblestone.description": "Place a Tumblestone near Lava or Magma to grow it over time",
"advancements.cobblemon.craft_ancient_balls": "A true Antiquarian",
"advancements.cobblemon.craft_ancient_balls.description": "Utilize Tumblestones to craft all fifteen Ancient Balls",
"advancements.cobblemon.obtain_tumblestone": "De Volta ao Passado",
"advancements.cobblemon.obtain_tumblestone.description": "Extrai com segurança um Seixo de areia suspeita ou cascalho",
"advancements.cobblemon.grow_tumblestone": "Uma Plantação Bastante Quente",
"advancements.cobblemon.grow_tumblestone.description": "Coloca um Seixo perto de Lava ou Magma para fazê-lo crescer com o tempo",
"advancements.cobblemon.craft_ancient_balls": "Um verdadeiro Antiquário",
"advancements.cobblemon.craft_ancient_balls.description": "Utiliza Seixos para fabricar todas as quinze Bolas Ancestrais",
"cobblemon.battle.crash": "Ocorreu um erro de batalha. Se está a jogar em single-player, reporte isto à equipe de mods. Caso contrário, reporte isto ao administrador do servidor.",
"cobblemon.battle.damage_dealt": "%1$s sofreu %2$s de dano!",
"cobblemon.battle.used_move": "%1$s usou %2$s!",
@@ -897,7 +897,7 @@
"cobblemon.battle.owned_pokemon": "%2$s de %1$s",
"cobblemon.battle.fainted": "%1$s desmaiou!",
"cobblemon.battle.win": "%1$s ganhou!",
"cobblemon.battle.lose": "%1$s is out of usable Pokémon!",
"cobblemon.battle.lose": "%1$s já não tem mais Pokémon disponíveis!",
"cobblemon.battle.forfeit": "%1$s desistiu da batalha!",
"cobblemon.battle.flee": "Fugiste da batalha.",
"cobblemon.battle.switch_option": "Trocar Pokémon: ",
@@ -1202,7 +1202,7 @@
"cobblemon.battle.damage.spikyshield": "%1$s foi magoado(a) pelo contacto!",
"cobblemon.battle.damage.flameburst": "A rajada das chamas atingiu o(a) %1$s!",
"cobblemon.battle.damage.dryskin": "%1$s foi magoado pela sua Pele Seca!",
"cobblemon.battle.damage.sandtomb": "%1$s is hurt by Sand Tomb!",
"cobblemon.battle.damage.sandtomb": "%1$s é magoado(a) pelo Túmulo de Areia!",
"cobblemon.battle.end.bind": "%1$s já não está a ser espremido!",
"cobblemon.battle.end.wrap": "%1$s libertou-se da constrição!",
"cobblemon.battle.end.magnetrise": "O eletromagnetismo do(a) %1$s acabou!",
@@ -1293,7 +1293,7 @@
"cobblemon.battle.enditem.whiteherb": "%1$s voltou ao seu estado normal graças à sua Erva Branca!",
"cobblemon.battle.enditem.corrosivegas": "%3$s corroeu o(a) %2$s do(a) %1$s!",
"cobblemon.battle.enditem.stealeat": "%3$s roubou e comeu o(a) %2$s do seu alvo!",
"cobblemon.battle.enditem.cellbattery": "%1$s used its Cell Battery!",
"cobblemon.battle.enditem.cellbattery": "%1$s usou a sua Pilha!",
"cobblemon.battle.enditem.ejectbutton": "%1$s foi mandado(a) para fora com o Botão de Fuga!",
"cobblemon.battle.enditem.snowball": "%1$s usou a sua Bola de Neve!",
"cobblemon.battle.heal.zeffect": "O HP do(a) %1$s foi restaurado pelo Poder-Z!",
@@ -1311,12 +1311,12 @@
"cobblemon.battle.heal.generic": "%1$s restaurou a sua própria Vida.",
"cobblemon.battle.heal.bagitempotion": "Restaurou o HP do(a) %1$s",
"cobblemon.battle.heal.poisonheal": "%1$s restaurou HP graças à Cura de Veneno!",
"cobblemon.battle.heal.cheekpouch": "%1$s restored HP from its Cheek Pouch!",
"cobblemon.battle.heal.cheekpouch": "%1$s restaurou HP graças à sua Bolsa de Bochechas!",
"cobblemon.battle.heal.dryskin": "%1$s restaurou HP graças à sua Pela Seca!",
"cobblemon.battle.heal.eartheater": "%1$s restaurou HP graças a Comedor de Terra!",
"cobblemon.battle.heal.icybody": "%1$s restaurou HP graças ao seu Corpo Gelado!",
"cobblemon.battle.heal.voltabsorb": "%1$s restored HP from Volt Absorb!",
"cobblemon.battle.heal.waterabsorb": "%1$s restored HP from Water Absorb!",
"cobblemon.battle.heal.voltabsorb": "%1$s restaurou HP graças à Absorção de Volts!",
"cobblemon.battle.heal.waterabsorb": "%1$s restaurou HP graças à Absorção de Água!",
"cobblemon.battle.curestatus.naturalcure": "%1$s foi curado por Cura Natural!",
"cobblemon.battle.bagitem.use": "O(A) %2$s do(a) %1$s foi usado(a) no(a) %3$s!",
"cobblemon.battle.bagitem.cannot": "Tu não podes usar itens agora.",
@@ -1435,12 +1435,12 @@
"block.cobblemon.deepslate_thunder_stone_ore": "Minério de Pedra de Trovão de ardósia",
"block.cobblemon.deepslate_water_stone_ore": "Minério de Pedra de Água de ardósia",
"block.cobblemon.dripstone_moon_stone_ore": "Minério de Pedra da Lua de espeleotema",
"block.cobblemon.nether_fire_stone_ore": "Nether Fire Stone Ore",
"block.cobblemon.terracotta_sun_stone_ore": "Terracotta Sun Stone Ore",
"block.cobblemon.nether_fire_stone_ore": "Minério de Pedra de Fogo do Nether",
"block.cobblemon.terracotta_sun_stone_ore": "Minério de Pedra do Sol de Terracota",
"block.cobblemon.pasture": "Bloco de Pastagem",
"gamerule.doPokemonSpawning": "Gerar Pokémon",
"gamerule.doShinyStarters": "Iniciantes serão brilhantes",
"gamerule.doPokemonLoot": "Drop Pokémon Loot",
"gamerule.doPokemonLoot": "Dropar o Loot de Pokémon",
"cobblemon.command.checkspawns.invalid-bucket": "Categoria Inválida de Geração",
"cobblemon.command.checkspawns.spawns": "Gerações",
"cobblemon.command.checkspawns.nothing": "Nada pode gerar aqui neste momento.",
@@ -1462,9 +1462,9 @@
"tag.item.cobblemon.held.destiny_knot": "Nós do Destino",
"tag.item.cobblemon.held.everstone": "Pedras Eternas",
"tag.item.cobblemon.held.experience_share": "Partilhas de Experiência",
"tag.item.cobblemon.held.consumed_in_npc_battle": "Held Items consumed in NPC Battles",
"tag.item.cobblemon.held.consumed_in_pvp_battle": "Held Items consumed in PvP Battles",
"tag.item.cobblemon.held.consumed_in_wild_battle": "Held Items consumed in Wild Battles",
"tag.item.cobblemon.held.consumed_in_npc_battle": "Equipamentos consumidos em Batalhas NPC",
"tag.item.cobblemon.held.consumed_in_pvp_battle": "Equipamentos consumidos em Batalhas PvP",
"tag.item.cobblemon.held.consumed_in_wild_battle": "Equipamentos consumidos nas Batalhas Selvagens",
"tag.item.cobblemon.held.is_held_item": "Equipamentos",
"tag.item.cobblemon.held.lucky_egg": "Ovos sortudos",
"tag.item.cobblemon.held.power_anklet": "Tornozeleiras do Poder",
@@ -1483,55 +1483,55 @@
"tag.item.cobblemon.zinc_ingredients": "Ingredientes de Zinco",
"tag.item.cobblemon.seeds": "Sementes",
"tag.item.cobblemon.boats": "Barcos",
"tag.item.cobblemon.hanging_signs": "Hanging Signs",
"tag.item.cobblemon.signs": "Signs",
"tag.item.cobblemon.dawn_stone_ores": "Dawn Stone Ores",
"tag.item.cobblemon.dusk_stone_ores": "Dusk Stone Ores",
"tag.item.cobblemon.fire_stone_ores": "Fire Stone Ores",
"tag.item.cobblemon.ice_stone_ores": "Ice Stone Ores",
"tag.item.cobblemon.leaf_stone_ores": "Leaf Stone Ores",
"tag.item.cobblemon.shiny_stone_ores": "Shiny Stone Ores",
"tag.item.cobblemon.moon_stone_ores": "Moon Stone Ores",
"tag.item.cobblemon.sun_stone_ores": "Sun Stone Ores",
"tag.item.cobblemon.thunder_stone_ores": "Thunder Stone Ores",
"tag.item.cobblemon.water_stone_ores": "Water Stone Ores",
"tag.item.cobblemon.fossil_machine_parts": "Fossil Machine Parts",
"tag.item.cobblemon.hanging_signs": "Tabuletas Penduradas",
"tag.item.cobblemon.signs": "Tabuletas",
"tag.item.cobblemon.dawn_stone_ores": "Minérios de Pedra do Amanhecer",
"tag.item.cobblemon.dusk_stone_ores": "Minérios de Pedra do Crepúsculo",
"tag.item.cobblemon.fire_stone_ores": "Minérios de Pedra de Fogo",
"tag.item.cobblemon.ice_stone_ores": "Minérios de Pedra de Gelo",
"tag.item.cobblemon.leaf_stone_ores": "Minérios de Pedra de Folha",
"tag.item.cobblemon.shiny_stone_ores": "Minérios de Pedra Brilhante",
"tag.item.cobblemon.moon_stone_ores": "Minérios de Pedra da Lua",
"tag.item.cobblemon.sun_stone_ores": "Minérios de Pedra do Sol",
"tag.item.cobblemon.thunder_stone_ores": "Minérios de Pedra de Trovão",
"tag.item.cobblemon.water_stone_ores": "Minérios de Pedra de Água",
"tag.item.cobblemon.fossil_machine_parts": "Peças de Máquina de Fósseis",
"tag.item.cobblemon.machines": "Máquinas",
"tag.item.cobblemon.poke_balls": "Pokébolas",
"tag.item.cobblemon.apricorn_poke_balls": "Pokébolas de Bolotas",
"tag.item.cobblemon.ancient_poke_balls": "Pokébolas Ancestrais",
"tag.item.cobblemon.tier_1_poke_balls": "Copper Tier Poké Balls",
"tag.item.cobblemon.tier_2_poke_balls": "Iron Tier Poké Balls",
"tag.item.cobblemon.tier_3_poke_balls": "Gold Tier Poké Balls",
"tag.item.cobblemon.tier_4_poke_balls": "Diamond Tier Poké Balls",
"tag.item.cobblemon.tier_5_poke_balls": "Nether Star Tier Poké Balls",
"tag.item.cobblemon.tier_1_poke_ball_materials": "Copper Tier Poké Ball Materials",
"tag.item.cobblemon.tier_2_poke_ball_materials": "Iron Tier Poké Ball Materials",
"tag.item.cobblemon.tier_3_poke_ball_materials": "Gold Tier Poké Ball Materials",
"tag.item.cobblemon.tier_4_poke_ball_materials": "Diamond Tier Poké Ball Materials",
"tag.item.cobblemon.tier_1_poke_balls": "Pokébolas Nível de Cobre",
"tag.item.cobblemon.tier_2_poke_balls": "Pokébolas Nível de Ferro",
"tag.item.cobblemon.tier_3_poke_balls": "Pokébolas Nível de Ouro",
"tag.item.cobblemon.tier_4_poke_balls": "Pokébolas Nível de Diamante",
"tag.item.cobblemon.tier_5_poke_balls": "Pokébolas Nível de Estrela do Nether",
"tag.item.cobblemon.tier_1_poke_ball_materials": "Materiais de Pokébola Nível de Cobre",
"tag.item.cobblemon.tier_2_poke_ball_materials": "Materiais de Pokébola Nível de Ferro",
"tag.item.cobblemon.tier_3_poke_ball_materials": "Materiais de Pokébola Nível de Ouro",
"tag.item.cobblemon.tier_4_poke_ball_materials": "Materiais de Pokébola Nível de Diamante",
"tag.item.cobblemon.potions": "Poções",
"tag.item.cobblemon.ethers": "Ethers and Elixirs",
"tag.item.cobblemon.ethers": "Éteres e Elixires",
"tag.item.cobblemon.remedies": "Remédios",
"tag.item.cobblemon.restores": "Restores",
"tag.item.cobblemon.revives": "Revives",
"tag.item.cobblemon.x_items": "X Battle Items",
"tag.item.cobblemon.restores": "Restauradores",
"tag.item.cobblemon.revives": "Reviveres",
"tag.item.cobblemon.x_items": "Itens de Batalha X",
"tag.item.cobblemon.vitamins": "Vitaminas",
"tag.item.cobblemon.tumblestones": "Tumblestones",
"tag.item.cobblemon.red_tumblestones": "Tumblestones",
"tag.item.cobblemon.black_tumblestones": "Black Tumblestones",
"tag.item.cobblemon.sky_tumblestones": "Sky Tumblestones",
"tag.item.cobblemon.tumblestones": "Seixos",
"tag.item.cobblemon.red_tumblestones": "Seixos",
"tag.item.cobblemon.black_tumblestones": "Seixos Pretos",
"tag.item.cobblemon.sky_tumblestones": "Seixos do Céu",
"tag.item.cobblemon.apples": "Maçãs",
"tag.item.cobblemon.deep_seas": "Itens do Fundo do Mar",
"tag.item.cobblemon.sweets": "Doces",
"tag.item.cobblemon.teapots": "Teapots",
"tag.item.cobblemon.teacups": "Teacups",
"tag.item.cobblemon.teapots": "Bules",
"tag.item.cobblemon.teacups": "Chávenas de Chá",
"tag.item.cobblemon.raw_meat": "Carne Crua",
"tag.item.cobblemon.cooked_meat": "Cooked Meat",
"tag.item.cobblemon.cooked_meat": "Carne Assada",
"tag.item.cobblemon.fossils": "Fósseis",
"tag.item.cobblemon.held.leaves_leftovers": "Leftover Foods",
"tag.item.cobblemon.decorated_pot_sherds": "Decorated Pot Sherds",
"tag.item.cobblemon.held.leaves_leftovers": "Alimentos de Sobra",
"tag.item.cobblemon.decorated_pot_sherds": "Fragmentos de Pote Decorados",
"tag.item.cobblemon.type_gems": "Gemas de Tipos",
"tag.item.cobblemon.feathers": "Penas",
"tag.item.cobblemon.ability_changers": "Ability Changers",
"tag.item.cobblemon.held.is_friendship_booster": "Friendship Boosters"
"tag.item.cobblemon.ability_changers": "Modificadores de Habilidade",
"tag.item.cobblemon.held.is_friendship_booster": "Propulsores de Amizade"
}
@@ -643,7 +643,7 @@
"cobblemon.pc.inbattle": "Вы не можете использовать ПК во время битвы!",
"cobblemon.held_item": "Предмет",
"cobblemon.held_item.give": "%Вы дали 1$s %2$s.",
"cobblemon.held_item.give": "Вы дали %1$s %2$s.",
"cobblemon.held_item.replace": "Вы забрали %1$s у %2$s и дали %3$s.",
"cobblemon.held_item.take": "Вы забрали %1$s у %2$s.",
"cobblemon.held_item.already_holding": "%1$s уже держит %2$s!",
@@ -4792,7 +4792,7 @@
"cobblemon.species.diggersby.desc": "The fur on its belly retains heat exceptionally well. People used to make heavy winter clothing from fur shed by this Pokémon.",
"cobblemon.species.fletchling.name": "Флетчлинг",
"cobblemon.species.fletchling.desc": "When this Pokémon gets excited, its body temperature increases sharply. If you touch a Fletchling with bare hands, you might get burned.",
"cobblemon.species.fletchinder.name": "Флетчлинг",
"cobblemon.species.fletchinder.name": "Флетчлиндер",
"cobblemon.species.fletchinder.desc": "Fletchinder are exceedingly territorial and aggressive. These Pokémon fight among themselves over feeding grounds.",
"cobblemon.species.talonflame.name": "Талонфлейм",
"cobblemon.species.talonflame.desc": "Talonflame dives toward prey at speeds of up to 310 mph and assaults them with powerful kicks, giving the prey no chance to escape.",
@@ -391,8 +391,11 @@
"cobblemon:block/gilded_chest/gilded_chest_step_4"
]
},
"flamethrower": {
"sounds": [ "cobblemon:attacks/flamethrower" ]
"flamethrower.cast": {
"sounds": [ "cobblemon:attacks/flamethrower/flamethrower_cast" ]
},
"flamethrower.impact": {
"sounds": [ "cobblemon:attacks/flamethrower/flamethrower_impact" ]
},
"effective": {
"sounds": [ "cobblemon:effective" ]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -29,11 +29,6 @@
"name": "minecraft:coal",
"weight": 6
},
{
"type": "minecraft:item",
"name": "minecraft:bone",
"weight": 6
},
{
"type": "minecraft:item",
"name": "cobblemon:big_root",
@@ -483,5 +483,21 @@
{
"content": 256,
"item": "minecraft:dragon_egg"
},
{
"content": 8,
"item": "minecraft:dried_kelp_block"
},
{
"content": 8,
"item": "minecraft:melon"
},
{
"content": 2,
"item": "minecraft:vine"
},
{
"content": 4,
"item": "minecraft:sea_pickle"
}
]
@@ -5,7 +5,7 @@
],
"minY": 62,
"neededBaseBlocks": [
"#minecraft:cobblestone",
"minecraft:cobblestone",
"#minecraft:mossy_cobblestone"
],
"neededNearbyBlocks": [
@@ -26,7 +26,8 @@
"id": "slowpoke-2",
"pokemon": "slowpoke",
"presets": [
"natural"
"natural",
"river"
],
"type": "pokemon",
"context": "grounded",
@@ -11,9 +11,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "8-33",
"weight": 0.18,
"weight": 1.8,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -37,9 +37,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "8-33",
"weight": 0.54,
"weight": 5.4,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -63,9 +63,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "8-33",
"weight": 0.54,
"weight": 5.4,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -11,9 +11,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "38-50",
"weight": 0.02,
"weight": 0.2,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -37,9 +37,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "38-50",
"weight": 0.06,
"weight": 0.6,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -63,9 +63,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "38-50",
"weight": 0.06,
"weight": 0.6,
"weightMultiplier": {
"multiplier": 1.5,
"condition": {
@@ -16,7 +16,10 @@
"level": "1-20",
"weight": 9.9,
"condition": {
"canSeeSky": true
"canSeeSky": true,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -28,12 +31,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "1-20",
"weight": 0.18,
"weight": 1.8,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -62,9 +68,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "1-20",
"weight": 0.18,
"weight": 1.8,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -16,7 +16,10 @@
"level": "20-54",
"weight": 0.1,
"condition": {
"canSeeSky": true
"canSeeSky": true,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -28,12 +31,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "20-54",
"weight": 0.02,
"weight": 0.2,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -62,9 +68,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "20-54",
"weight": 0.02,
"weight": 0.2,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -13,7 +13,7 @@
"context": "surface",
"bucket": "uncommon",
"level": "29-54",
"weight": 0.2,
"weight": 2.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -0,0 +1,32 @@
{
"enabled": true,
"neededInstalledMods": [],
"neededUninstalledMods": [],
"spawns": [
{
"id": "sudowoodo-1",
"pokemon": "sudowoodo",
"presets": [
"natural"
],
"type": "pokemon",
"context": "grounded",
"bucket": "uncommon",
"level": "16-41",
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_forest"
],
"isRaining": false
},
"anticondition": {
"biomes": [
"#cobblemon:is_spooky"
]
}
}
]
}
@@ -12,12 +12,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "14-39",
"weight": 0.54,
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "day",
"isRaining": false
}
@@ -30,9 +33,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "14-39",
"weight": 0.18,
"weight": 1.8,
"condition": {
"minSkyLight": 0,
"maxSkyLight": 7,
@@ -49,9 +52,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "14-39",
"weight": 0.18,
"weight": 1.8,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -31,9 +31,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "1-22",
"weight": 0.54,
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -31,9 +31,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "14-34",
"weight": 0.054,
"weight": 0.54,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -31,9 +31,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "29-48",
"weight": 0.006,
"weight": 0.06,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -12,13 +12,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "2-27",
"weight": 0.18,
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"timeRange": "night",
"biomes": [
"#cobblemon:is_freshwater"
],
"isRaining": false
}
},
@@ -30,9 +32,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "2-27",
"weight": 0.9,
"weight": 9.0,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -12,13 +12,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "22-45",
"weight": 0.02,
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"timeRange": "night",
"biomes": [
"#cobblemon:is_freshwater"
],
"isRaining": false
}
},
@@ -30,9 +32,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "22-45",
"weight": 0.1,
"weight": 1.0,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -19,6 +19,9 @@
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "night",
"isRaining": false
}
@@ -32,12 +35,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "18-43",
"weight": 0.5,
"weight": 5.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "night",
"isRaining": false
}
@@ -69,9 +75,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "18-43",
"weight": 0.3,
"weight": 3.0,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -19,6 +19,9 @@
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "night",
"isRaining": false
}
@@ -32,12 +35,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "18-43",
"weight": 0.5,
"weight": 5.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "night",
"isRaining": false
}
@@ -69,9 +75,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "18-43",
"weight": 0.3,
"weight": 3.0,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -12,12 +12,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "1-25",
"weight": 0.9,
"weight": 9.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -34,7 +37,10 @@
"weight": 9.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
}
]
@@ -17,7 +17,10 @@
"weight": 1.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -25,16 +28,19 @@
"pokemon": "bibarel",
"presets": [
"freshwater",
"underwater"
"water_surface"
],
"type": "pokemon",
"context": "submerged",
"bucket": "common",
"context": "surface",
"bucket": "uncommon",
"level": "15-41",
"weight": 1.0,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
}
]
@@ -17,7 +17,10 @@
"weight": 1.8,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -33,7 +36,10 @@
"level": "8-33",
"weight": 1.8,
"condition": {
"canSeeSky": true
"canSeeSky": true,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -45,12 +51,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "8-33",
"weight": 0.18,
"weight": 1.8,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
}
]
@@ -17,7 +17,10 @@
"weight": 0.2,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -33,7 +36,10 @@
"level": "26-50",
"weight": 0.2,
"condition": {
"canSeeSky": true
"canSeeSky": true,
"biomes": [
"#cobblemon:is_freshwater"
]
}
},
{
@@ -45,12 +51,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "26-50",
"weight": 0.02,
"weight": 0.2,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
]
}
}
]
@@ -0,0 +1,32 @@
{
"enabled": true,
"neededInstalledMods": [],
"neededUninstalledMods": [],
"spawns": [
{
"id": "bonsly-1",
"pokemon": "bonsly",
"presets": [
"natural"
],
"type": "pokemon",
"context": "grounded",
"bucket": "uncommon",
"level": "4-29",
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_forest"
],
"isRaining": false
},
"anticondition": {
"biomes": [
"#cobblemon:is_spooky"
]
}
}
]
}
@@ -8,7 +8,8 @@
"pokemon": "carnivine",
"presets": [
"natural",
"treetop"
"treetop",
"foliage"
],
"type": "pokemon",
"context": "grounded",
@@ -12,12 +12,15 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "33-52",
"weight": 0.06,
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_freshwater"
],
"timeRange": "day",
"isRaining": false
}
@@ -30,9 +33,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "33-52",
"weight": 0.02,
"weight": 0.2,
"condition": {
"minSkyLight": 0,
"maxSkyLight": 7,
@@ -49,9 +52,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "33-52",
"weight": 0.02,
"weight": 0.2,
"condition": {
"biomes": [
"#the_bumblezone:the_bumblezone"
@@ -31,7 +31,7 @@
"context": "submerged",
"bucket": "uncommon",
"level": "21-46",
"weight": 10.0,
"weight": 0.1,
"condition": {
"canSeeSky": true,
"moonPhase": "6,7,8"
@@ -82,7 +82,7 @@
"context": "submerged",
"bucket": "uncommon",
"level": "21-46",
"weight": 10.0,
"weight": 0.1,
"condition": {
"canSeeSky": true,
"moonPhase": "2,3,4"
@@ -116,7 +116,7 @@
"context": "submerged",
"bucket": "uncommon",
"level": "21-46",
"weight": 9.0,
"weight": 0.09,
"condition": {
"canSeeSky": true,
"moonPhase": "1,5"
@@ -36,9 +36,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "9-34",
"weight": 0.54,
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -56,15 +56,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "9-34",
"weight": 0.54,
"weightMultiplier": {
"multiplier": 5.0,
"condition": {
"moonPhase": "1"
}
},
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -72,6 +66,30 @@
"#cobblemon:is_ocean"
],
"timeRange": "night"
},
"anticondition": {
"moonPhase": "1"
}
},
{
"id": "frillish-4",
"pokemon": "frillish",
"presets": [
"water_surface"
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"level": "9-34",
"weight": 5.4,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_ocean"
],
"timeRange": "night",
"moonPhase": "1"
}
}
]
@@ -36,9 +36,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "40-48",
"weight": 0.06,
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -56,15 +56,9 @@
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"bucket": "uncommon",
"level": "40-48",
"weight": 0.06,
"weightMultiplier": {
"multiplier": 5.0,
"condition": {
"moonPhase": "1"
}
},
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
@@ -72,6 +66,30 @@
"#cobblemon:is_ocean"
],
"timeRange": "night"
},
"anticondition": {
"moonPhase": "1"
}
},
{
"id": "jellicent-4",
"pokemon": "jellicent",
"presets": [
"water_surface"
],
"type": "pokemon",
"context": "surface",
"bucket": "common",
"level": "40-48",
"weight": 0.6,
"condition": {
"minSkyLight": 8,
"maxSkyLight": 15,
"biomes": [
"#cobblemon:is_ocean"
],
"timeRange": "night",
"moonPhase": "1"
}
}
]

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