Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ba2804a46 | ||
|
|
d13d5183c8 | ||
|
|
920e314444 | ||
|
|
3e4fdc0f22 | ||
|
|
209ac71e06 | ||
|
|
ecfc77f311 | ||
|
|
e64de3aa7d | ||
|
|
fd7b82dbe3 | ||
|
|
7ef48402fb | ||
|
|
81ac6f3b44 | ||
|
|
347e10d7e4 | ||
|
|
32270b6176 | ||
|
|
a0a26a98b5 | ||
|
|
85836f19b2 | ||
|
|
9f251b7070 | ||
|
|
86ddb6d743 | ||
|
|
9c8a00bbdc | ||
|
|
04abf2bd25 | ||
|
|
e6553655a6 | ||
|
|
5f33d16a75 | ||
|
|
468f84862e | ||
|
|
e863c6d094 | ||
|
|
5b2d542fca | ||
|
|
95db34c55e | ||
|
|
15da48c5c0 | ||
|
|
ead62763c1 | ||
|
|
247c475c2d | ||
|
|
44aab4f0e7 | ||
|
|
94edae591c | ||
|
|
c83f045b4d | ||
|
|
b5d7786ff7 | ||
|
|
9283794e26 | ||
|
|
55580fb564 | ||
|
|
472c9be634 | ||
|
|
a247344ae4 | ||
|
|
1fd0a9775c | ||
|
|
9d9495f1f9 | ||
|
|
88e301d7c8 | ||
|
|
b0e16a7f26 | ||
|
|
54b5b3cbbc | ||
|
|
7850bc5263 | ||
|
|
8ce5a927b9 | ||
|
|
24c34af8bf | ||
|
|
7402426656 | ||
|
|
c658e496cc | ||
|
|
f3300806a3 | ||
|
|
8fee4de49b | ||
|
|
5b951ef511 | ||
|
|
6e0850331a | ||
|
|
79b1771e7e | ||
|
|
c9b2c44083 | ||
|
|
c370076337 | ||
|
|
d05ae4d535 | ||
|
|
3cebfb38ef | ||
|
|
d69f1f17b6 | ||
|
|
3ba89472fa | ||
|
|
573608b6fc | ||
|
|
f092584f83 | ||
|
|
a76146f8e9 | ||
|
|
548daa84e4 | ||
|
|
7f1dd4546b | ||
|
|
a129c361df | ||
|
|
5d5508a71e | ||
|
|
5e5684d9fd | ||
|
|
a1623c04b7 | ||
|
|
a070dc56bd | ||
|
|
79f9e0f0f2 | ||
|
|
8500eb58ef | ||
|
|
97e51eb7b5 | ||
|
|
ba75dcdf31 | ||
|
|
9bf8c0e3ec | ||
|
|
0c62c247ec | ||
|
|
c70e8872ce | ||
|
|
ce323ddfbf | ||
|
|
ffe7978560 | ||
|
|
a58632752a | ||
|
|
0b93481dbf | ||
|
|
dda004a66c | ||
|
|
9648a91f4a | ||
|
|
e0c4bf7fb2 | ||
|
|
ed919f63f0 | ||
|
|
239acc0623 | ||
|
|
e835b833b3 | ||
|
|
8f1127be46 | ||
|
|
26a8bf1ca5 | ||
|
|
d3da8c99a8 | ||
|
|
d106deb7f6 | ||
|
|
f1d1e87e47 |
@@ -21,6 +21,8 @@ build
|
||||
# other
|
||||
eclipse
|
||||
run
|
||||
runClient
|
||||
runServer
|
||||
|
||||
# Files from Forge MDK
|
||||
forge*changelog.txt
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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}"
|
||||
}
|
||||
|
||||
@@ -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" ]
|
||||
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
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"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||