mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-26 17:16:25 -04:00
Compare commits
110
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
459e7d3490 | ||
|
|
5a9be8944f | ||
|
|
3bb941b087 | ||
|
|
384b496d76 | ||
|
|
fe940caafc | ||
|
|
c9d148ec9c | ||
|
|
e611bf4a77 | ||
|
|
8093822140 | ||
|
|
f695ec15f9 | ||
|
|
1f6c791ce6 | ||
|
|
570805fdf1 | ||
|
|
ddecb08bc7 | ||
|
|
4d7cfcdf61 | ||
|
|
e56dd6ef64 | ||
|
|
ffe005511d | ||
|
|
1e634a20b8 | ||
|
|
f9f4745e93 | ||
|
|
c700674289 | ||
|
|
c4f0032eee | ||
|
|
d92986016b | ||
|
|
ab57e01242 | ||
|
|
0da1c740a4 | ||
|
|
a7979aa80c | ||
|
|
59804a4e08 | ||
|
|
072c67acad | ||
|
|
60bbe221de | ||
|
|
5f06dc214b | ||
|
|
a6607e585b | ||
|
|
20584f4507 | ||
|
|
9660f1f724 | ||
|
|
c8cbace800 | ||
|
|
a616a24923 | ||
|
|
12035dd589 | ||
|
|
9627b80b01 | ||
|
|
4e9cecc854 | ||
|
|
9d4b19b185 | ||
|
|
aee96d06aa | ||
|
|
23e3c585f7 | ||
|
|
c22a88079f | ||
|
|
2225402082 | ||
|
|
9197207431 | ||
|
|
47c7f7079c | ||
|
|
eb0c1dddfd | ||
|
|
e3dbfe6ff8 | ||
|
|
fac207f36b | ||
|
|
379e794848 | ||
|
|
9081a4b131 | ||
|
|
dc6d75b8ee | ||
|
|
bb297a4448 | ||
|
|
a93922c438 | ||
|
|
f7d21c80d7 | ||
|
|
9248d26fd4 | ||
|
|
b5ac54cd16 | ||
|
|
dc703e67f7 | ||
|
|
f9dd1448e5 | ||
|
|
ecf5d57ad2 | ||
|
|
8663888abc | ||
|
|
f452cd9a05 | ||
|
|
4fe9cd7fd6 | ||
|
|
2c1d11ed11 | ||
|
|
b88adf0479 | ||
|
|
b1066671f5 | ||
|
|
387e85d4ad | ||
|
|
1fa113f5ac | ||
|
|
77ab58d823 | ||
|
|
1a9e736d8b | ||
|
|
aa39c1906e | ||
|
|
a07ff7f442 | ||
|
|
5374569ea1 | ||
|
|
af9c1196bf | ||
|
|
09d5543469 | ||
|
|
c8e408c50a | ||
|
|
e8a0467643 | ||
|
|
2dd0b66b83 | ||
|
|
68374017e1 | ||
|
|
e8dea9773a | ||
|
|
7b31e6bcc4 | ||
|
|
c6ffca639f | ||
|
|
c491a1f7ca | ||
|
|
0b333b743d | ||
|
|
0e2860cd90 | ||
|
|
3259bf032c | ||
|
|
116205cdf1 | ||
|
|
86153419ee | ||
|
|
6e57d77d10 | ||
|
|
2206d96a6e | ||
|
|
33f05858f1 | ||
|
|
8443b88c16 | ||
|
|
bcdfef4886 | ||
|
|
a19adb463b | ||
|
|
b71208299f | ||
|
|
136b5824b0 | ||
|
|
5004edbbb6 | ||
|
|
d8bdd6329a | ||
|
|
82d56637a0 | ||
|
|
7232a43816 | ||
|
|
098eb7d14b | ||
|
|
835b70ed48 | ||
|
|
9d828a86fb | ||
|
|
910551ee70 | ||
|
|
f9189b265f | ||
|
|
94765da04a | ||
|
|
8e1fcc6f14 | ||
|
|
21c4d0233d | ||
|
|
131ef31492 | ||
|
|
b6b067b1d3 | ||
|
|
fb4aaed220 | ||
|
|
c5e1b37ead | ||
|
|
2be9d303ea | ||
|
|
99ac6d213a |
+14
-65
@@ -1,84 +1,33 @@
|
||||
# Changelog
|
||||
## [1.8.3 (MONTH xth, 2026)](#1-8-3)
|
||||
## [1.8.x (MONTH xth, 2026)](#1-8-x)
|
||||
|
||||
### Additions
|
||||
|
||||
### New Rideable Pokémon
|
||||
- Vikavolt
|
||||
### New rideable Pokémon
|
||||
|
||||
### Particles
|
||||
## New Move Animations
|
||||
- Water Shuriken
|
||||
|
||||
### Cries added/updated for the following Pokémon
|
||||
- Hoppip
|
||||
- Skiploom
|
||||
- Jumpluff
|
||||
- Houndour
|
||||
- Houndoom
|
||||
- Wurmple
|
||||
- Silcoon
|
||||
- Beautifly
|
||||
- Cascoon
|
||||
- Dustox
|
||||
- Surskit
|
||||
- Masquerain
|
||||
- Torkoal
|
||||
- Starly
|
||||
- Staravia
|
||||
- Staraptor
|
||||
- Combee
|
||||
- Vespiquen
|
||||
- Dusknoir
|
||||
- Helioptile
|
||||
- Heliolisk
|
||||
- Grubbin
|
||||
- Charjabug
|
||||
- Vikavolt
|
||||
- Applin (updated)
|
||||
- Flapple (updated)
|
||||
- Appletun
|
||||
- Runerigus
|
||||
- Dipplin
|
||||
### Pokémon Added
|
||||
|
||||
### Model updates for the following Pokémon
|
||||
|
||||
### Animation updates for the following Pokémon
|
||||
- Vikavolt
|
||||
- Magby
|
||||
- Magmar
|
||||
|
||||
### Changes
|
||||
- Changed the Misc icon in the Campfire Pot Recipe Book to Health Candy
|
||||
- Moved EXP Candies from the Medicine recipe book category to the Misc category
|
||||
- Prehistoric Eroded Pillar generates slightly more frequently
|
||||
- Reworked spawn presets and added structure tags for spawns
|
||||
|
||||
### Fixes
|
||||
- Fixed datapacks with item interaction evolutions that don't specify an item crashing the world on load.
|
||||
- Fixed the Pokédex evolution tree crashing when a datapack's dex entry is missing an evolution's form.
|
||||
- Fixed the Pokédex evolution tree crashing with a stack overflow on evolutions that loop back on themselves.
|
||||
- Fixed the Pokédex evolution tree crashing when looking at a dex that is not part of the "National Dex" aggregate.
|
||||
- Fixed evolution trees not building properly when a pokemon has several pokedex entries for different regions.
|
||||
- Fixed form-changing evolutions sometimes resolving to the source form in the Pokédex evolution tree.
|
||||
- Broken datapack evolutions are now logged and skipped in the Pokédex evolution tree instead of crashing.
|
||||
- Fixed friendship booster items not being recognised as such
|
||||
- Fixed conflicts with other mods that would make use of recipe books in certain ways (Farmer's Delight Cooking Pot)
|
||||
- Fixed Pokémon battles stalling when a sidemod cancels the `THROWN_POKEBALL_HIT` hit event
|
||||
- Fixed choice feature tab completion in `spawnpokemon/pokegive/pokeedit` commands
|
||||
- Fixed MoLang that's targeting players intermittedly failing when they have died, needing them to relog
|
||||
- Prehistoric Frozen Pond, Prehistoric Frozen Spike, and Prehistoric Lush Den now generate
|
||||
- Fixed Frogadier floating in its battle_idle animation
|
||||
- Fixed Archeops T-posing during its air_cry animation
|
||||
- Fixed blank Cooking Pot recipe book entries and missing tabs on Fabric.
|
||||
- Fixed Minior's "Shields Down" ability not working as intended
|
||||
- Fixed Dusclops using Squirtle's cry
|
||||
- Fixed size error with ceiling attached Orb hitbox
|
||||
|
||||
### Developer
|
||||
- Bumped NeoForge to `21.1.195` to get access to MixinExtras `0.5` and the expressions annotation
|
||||
- New Platform Event `PLAYER_RESPAWN` which is fired when a player respawns (either through death or returning from the end)
|
||||
- Platform Events `SERVER_PLAYER_TICK_PRE` and `SERVER_PLAYER_TICK_POST` no longer fire when the player is dead
|
||||
- it is now tied much closer to the actual entity rather than the player (or their connection)
|
||||
|
||||
### Molang & Datapacks
|
||||
- Fixed `q.pokemon.nature` returning class instance instead of proper string value (`cobblemon:adamant`)
|
||||
- Fixed `q.entity.is_looking_at` result being always `1` for whatever entity passed as target
|
||||
- Added `q.target_fainted` function to move action effects that checks if any opponents fainted from the move.
|
||||
|
||||
### Particles
|
||||
|
||||
#### New Move Animations
|
||||
|
||||
### Localization
|
||||
- Updated translations for:
|
||||
- Updated translations for:
|
||||
@@ -0,0 +1,107 @@
|
||||
# Changelog
|
||||
## [1.8.3 (October 25th, 2026)](#1-8-3)
|
||||
|
||||
### Additions
|
||||
- Added compatability with AppleSkin.
|
||||
|
||||
### New Rideable Pokémon
|
||||
- Vikavolt
|
||||
- Fearow
|
||||
|
||||
### Particles
|
||||
## New Move Animations
|
||||
- Water Shuriken
|
||||
|
||||
### Cries added/updated for the following Pokémon
|
||||
- Hoppip
|
||||
- Skiploom
|
||||
- Jumpluff
|
||||
- Houndour
|
||||
- Houndoom
|
||||
- Wurmple
|
||||
- Silcoon
|
||||
- Beautifly
|
||||
- Cascoon
|
||||
- Dustox
|
||||
- Surskit
|
||||
- Masquerain
|
||||
- Torkoal
|
||||
- Starly
|
||||
- Staravia
|
||||
- Staraptor
|
||||
- Combee
|
||||
- Vespiquen
|
||||
- Dusknoir
|
||||
- Helioptile
|
||||
- Heliolisk
|
||||
- Grubbin
|
||||
- Charjabug
|
||||
- Vikavolt
|
||||
- Applin (updated)
|
||||
- Flapple (updated)
|
||||
- Appletun
|
||||
- Runerigus
|
||||
- Dipplin
|
||||
|
||||
### Animation updates for the following Pokémon
|
||||
- Vikavolt
|
||||
- Magby
|
||||
- Magmar
|
||||
- Ninetales (+ Alolan)
|
||||
- Spearow
|
||||
- Fearow
|
||||
- Squawkabilly
|
||||
- Mudkip
|
||||
- Marshtomp
|
||||
- Swampert
|
||||
|
||||
### Changes
|
||||
- Changed the Misc icon in the Campfire Pot Recipe Book to Health Candy.
|
||||
- Moved EXP Candies from the Medicine recipe book category to the Misc category.
|
||||
- Removed Dynamic Lights data from the Magmarizer item for consistency with the block.
|
||||
- Added `doPokemonPredation` game rule, which controls aggressiveness of Pokémon with the `hate_entity` brain task defined.
|
||||
- Added `predation_chance` server config value, which controls the possibility of attacking the hated entity found in `hate_entity` brain tasks.
|
||||
- Prehistoric Eroded Pillar generates slightly more frequently.
|
||||
- Togekiss was changed from a jet-style mount to bird-style.
|
||||
|
||||
### Fixes
|
||||
- Fixed datapacks with item interaction evolutions that don't specify an item crashing the world on load.
|
||||
- Fixed the Pokédex evolution tree crashing when a datapack's dex entry is missing an evolution's form.
|
||||
- Fixed the Pokédex evolution tree crashing with a stack overflow on evolutions that loop back on themselves.
|
||||
- Fixed the Pokédex evolution tree crashing when looking at a dex that is not part of the "National Dex" aggregate.
|
||||
- Fixed some display names in the Pokédex evolution tree having unintended font colours.
|
||||
- Fixed evolution trees not building properly when a Pokémon has several Pokédex entries for different regions.
|
||||
- Fixed form-changing evolutions sometimes resolving to the source form in the Pokédex evolution tree.
|
||||
- Broken datapack evolutions are now logged and skipped in the Pokédex evolution tree instead of crashing.
|
||||
- Fixed the `alpha` property having no tab completion in commands such as `/pokespawn`, `/pokegive` and `/pokeedit`, and added the missing `dmax_level`, `gmax_factor` and `tradable` aliases to tab completion.
|
||||
- Fixed friendship booster items not being recognised as such.
|
||||
- Fixed conflicts with other mods that would make use of recipe books in certain ways (Farmer's Delight Cooking Pot).
|
||||
- Fixed Pokémon battles stalling when a sidemod cancels the `THROWN_POKEBALL_HIT` hit event.
|
||||
- Fixed choice feature tab completion in `spawnpokemon/pokegive/pokeedit` commands.
|
||||
- Fixed MoLang that's targeting players intermittedly failing when they have died, requiring them to relog.
|
||||
- Fixed a NeoForge bug where none of the Cobblemon plants/berries could be placed into pots.
|
||||
- Fixed party overlay not hiding when the player opens the Pokédex scanner.
|
||||
- Fixed `hate_entity` task focusing on its own entity, therefore enabling deadly warfare between Zangoose and Seviper.
|
||||
- Prehistoric Frozen Pond, Prehistoric Frozen Spike, and Prehistoric Lush Den now actually generate (oops).
|
||||
- Fixed Frogadier floating in its `battle_idle` animation.
|
||||
- Fixed absence or incorrect mergers in spawning conditions, causing the max height/depth of conditions to use the min value instead.
|
||||
- Added stricter riding checks on server side to prevent possible packet forgery when a player tries to ride Pokémon.
|
||||
- Fixed Pokémon cries and animation sounds played from GUIs, such as the starter selection screen and the Pokédex, being tied to the Master volume slider instead of Friendly Creatures.
|
||||
- Fixed Archeops T-posing during its `air_cry` animation.
|
||||
|
||||
### Developer
|
||||
- Bumped NeoForge to `21.1.195` to get access to MixinExtras `0.5` and the expressions annotation.
|
||||
- New Platform Event `PLAYER_RESPAWN` which is fired when a player respawns (either through death or returning from the end).
|
||||
- Platform Events `SERVER_PLAYER_TICK_PRE` and `SERVER_PLAYER_TICK_POST` no longer fire when the player is dead.
|
||||
- It is now tied much closer to the actual entity rather than the player or their connection.
|
||||
|
||||
### Molang & Datapacks
|
||||
- Fixed `q.pokemon.nature` returning class instance instead of proper string value (`cobblemon:adamant`).
|
||||
- Fixed `q.entity.is_looking_at` result being always `1` for whatever entity passed as the target parameter.
|
||||
- Added hate chance optional parameter to `hate_entity` task. `1.0` will make an entity always attack the target.
|
||||
|
||||
### Localization
|
||||
- Updated translations for:
|
||||
- Russian
|
||||
- Japanese
|
||||
- Brazilian Portuguese
|
||||
+1
-1
@@ -69,7 +69,7 @@ public abstract class ClientRecipeBookMixin {
|
||||
value = "INVOKE",
|
||||
target = "Lcom/google/common/collect/ImmutableMap;copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;"
|
||||
))
|
||||
private void addCustomAggregateCategories(Iterable<RecipeHolder<?>> recipes, RegistryAccess registryAccess, CallbackInfo ci, @Local(name = "map2") Map<RecipeBookCategories, List<RecipeCollection>> map2) {
|
||||
private void addCustomAggregateCategories(Iterable<RecipeHolder<?>> recipes, RegistryAccess registryAccess, CallbackInfo ci, @Local(ordinal = 1) Map<RecipeBookCategories, List<RecipeCollection>> map2) {
|
||||
CobblemonRecipeCategories.Companion.getCustomAggregateCategories().forEach((recipeBookCategories, list) -> map2.put(recipeBookCategories, (List) list.stream().flatMap((recipeBookCategoriesx) -> ((List) map2.getOrDefault(recipeBookCategoriesx, ImmutableList.of())).stream()).collect(ImmutableList.toImmutableList())));
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -20,14 +20,14 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||
|
||||
@Mixin(RecipeBookComponent.class)
|
||||
public class RecipeBookComponentMixin {
|
||||
@Definition(id = "recipeBookCategories", local = @Local(name = "recipeBookCategories"))
|
||||
@Definition(id = "recipeBookCategories", local = @Local(type = RecipeBookCategories.class))
|
||||
@Definition(id = "FURNACE_SEARCH", field = "Lnet/minecraft/client/RecipeBookCategories;FURNACE_SEARCH:Lnet/minecraft/client/RecipeBookCategories;")
|
||||
@Expression("recipeBookCategories != FURNACE_SEARCH")
|
||||
@ModifyExpressionValue(
|
||||
method = "updateTabs",
|
||||
at = @At(value = "MIXINEXTRAS:EXPRESSION")
|
||||
)
|
||||
private boolean notCookingPotSearch(boolean original, @Local(name = "recipeBookCategories") RecipeBookCategories recipeBookCategories) {
|
||||
private boolean notCookingPotSearch(boolean original, @Local RecipeBookCategories recipeBookCategories) {
|
||||
return original && recipeBookCategories != CobblemonRecipeCategories.COOKING_POT_SEARCH.toVanillaCategory();
|
||||
}
|
||||
}
|
||||
@@ -845,54 +845,35 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
||||
@JvmField
|
||||
val PEP_UP_FLOWER = this.create("pep_up_flower", FlowerBlock(MobEffects.LEVITATION, 10F, BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).pushReaction(PushReaction.DESTROY)))
|
||||
@JvmField
|
||||
val POTTED_PEP_UP_FLOWER = this.create("potted_pep_up_flower", BlocksInvoker.createFlowerPotBlock(PEP_UP_FLOWER))
|
||||
@JvmField
|
||||
val HEARTY_GRAINS = this.create("hearty_grains", HeartyGrainsBlock(BlockBehaviour.Properties.of().pushReaction(PushReaction.DESTROY).ignitedByLava().mapColor(MapColor.PLANT).noCollission().randomTicks().instabreak()))
|
||||
|
||||
@JvmField
|
||||
val GALARICA_NUT_BUSH = this.create("galarica_nut_bush", NutBushBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().sound(SoundType.SWEET_BERRY_BUSH).pushReaction(PushReaction.DESTROY)))
|
||||
|
||||
@JvmField
|
||||
val POTTED_RED_APRICORN_SAPLING = this.create("potted_red_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(RED_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_YELLOW_APRICORN_SAPLING = this.create("potted_yellow_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(YELLOW_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_GREEN_APRICORN_SAPLING = this.create("potted_green_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(GREEN_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_BLUE_APRICORN_SAPLING = this.create("potted_blue_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(BLUE_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_PINK_APRICORN_SAPLING = this.create("potted_pink_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(PINK_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_BLACK_APRICORN_SAPLING = this.create("potted_black_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(BLACK_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_WHITE_APRICORN_SAPLING = this.create("potted_white_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(WHITE_APRICORN_SAPLING))
|
||||
@JvmField
|
||||
val POTTED_SACCHARINE_SAPLING = this.create("potted_saccharine_sapling", BlocksInvoker.createFlowerPotBlock(SACCHARINE_SAPLING))
|
||||
|
||||
@JvmField
|
||||
val RED_MINT_LEAF_LITTER = this.mintLitter("red_mint_leaf_litter", MapColor.COLOR_RED)
|
||||
@JvmField
|
||||
val POTTED_RED_MINT = this.pottedPlant("potted_red_mint", RED_MINT_LEAF_LITTER)
|
||||
val POTTED_RED_MINT = this.flowerPot("potted_red_mint", RED_MINT_LEAF_LITTER)
|
||||
@JvmField
|
||||
val BLUE_MINT_LEAF_LITTER = this.mintLitter("blue_mint_leaf_litter", MapColor.COLOR_BLUE)
|
||||
@JvmField
|
||||
val POTTED_BLUE_MINT = this.pottedPlant("potted_blue_mint", BLUE_MINT_LEAF_LITTER)
|
||||
val POTTED_BLUE_MINT = this.flowerPot("potted_blue_mint", BLUE_MINT_LEAF_LITTER)
|
||||
@JvmField
|
||||
val CYAN_MINT_LEAF_LITTER = this.mintLitter("cyan_mint_leaf_litter", MapColor.COLOR_CYAN)
|
||||
@JvmField
|
||||
val POTTED_CYAN_MINT = this.pottedPlant("potted_cyan_mint", CYAN_MINT_LEAF_LITTER)
|
||||
val POTTED_CYAN_MINT = this.flowerPot("potted_cyan_mint", CYAN_MINT_LEAF_LITTER)
|
||||
@JvmField
|
||||
val PINK_MINT_LEAF_LITTER = this.mintLitter("pink_mint_leaf_litter", MapColor.COLOR_PINK)
|
||||
@JvmField
|
||||
val POTTED_PINK_MINT = this.pottedPlant("potted_pink_mint", PINK_MINT_LEAF_LITTER)
|
||||
val POTTED_PINK_MINT = this.flowerPot("potted_pink_mint", PINK_MINT_LEAF_LITTER)
|
||||
@JvmField
|
||||
val GREEN_MINT_LEAF_LITTER = this.mintLitter("green_mint_leaf_litter", MapColor.COLOR_GREEN)
|
||||
@JvmField
|
||||
val POTTED_GREEN_MINT = this.pottedPlant("potted_green_mint", GREEN_MINT_LEAF_LITTER)
|
||||
val POTTED_GREEN_MINT = this.flowerPot("potted_green_mint", GREEN_MINT_LEAF_LITTER)
|
||||
@JvmField
|
||||
val WHITE_MINT_LEAF_LITTER = this.mintLitter("white_mint_leaf_litter", MapColor.SNOW)
|
||||
@JvmField
|
||||
val POTTED_WHITE_MINT = this.pottedPlant("potted_white_mint", WHITE_MINT_LEAF_LITTER)
|
||||
val POTTED_WHITE_MINT = this.flowerPot("potted_white_mint", WHITE_MINT_LEAF_LITTER)
|
||||
|
||||
@JvmField
|
||||
val LOBAILA = this.create("lobaila", LobailaFlowerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY)))
|
||||
@@ -1104,145 +1085,163 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
||||
//val BINDING_SOIL = this.create("binding_soil", BindingSoilBlock(BlockBehaviour.Properties.of()))
|
||||
|
||||
@JvmField
|
||||
val POTTED_AGUAV_BERRY = this.create("potted_aguav_berry", BlocksInvoker.createFlowerPotBlock(AGUAV_BERRY))
|
||||
val POTTED_AGUAV_BERRY = this.flowerPot("potted_aguav_berry", AGUAV_BERRY)
|
||||
@JvmField
|
||||
val POTTED_APICOT_BERRY = this.create("potted_apicot_berry", BlocksInvoker.createFlowerPotBlock(APICOT_BERRY))
|
||||
val POTTED_APICOT_BERRY = this.flowerPot("potted_apicot_berry", APICOT_BERRY)
|
||||
@JvmField
|
||||
val POTTED_ASPEAR_BERRY = this.create("potted_aspear_berry", BlocksInvoker.createFlowerPotBlock(ASPEAR_BERRY))
|
||||
val POTTED_ASPEAR_BERRY = this.flowerPot("potted_aspear_berry", ASPEAR_BERRY)
|
||||
@JvmField
|
||||
val POTTED_BABIRI_BERRY = this.create("potted_babiri_berry", BlocksInvoker.createFlowerPotBlock(BABIRI_BERRY))
|
||||
val POTTED_BABIRI_BERRY = this.flowerPot("potted_babiri_berry", BABIRI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_BELUE_BERRY = this.create("potted_belue_berry", BlocksInvoker.createFlowerPotBlock(BELUE_BERRY))
|
||||
val POTTED_BELUE_BERRY = this.flowerPot("potted_belue_berry", BELUE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_BLUK_BERRY = this.create("potted_bluk_berry", BlocksInvoker.createFlowerPotBlock(BLUK_BERRY))
|
||||
val POTTED_BLUK_BERRY = this.flowerPot("potted_bluk_berry", BLUK_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CHARTI_BERRY = this.create("potted_charti_berry", BlocksInvoker.createFlowerPotBlock(CHARTI_BERRY))
|
||||
val POTTED_CHARTI_BERRY = this.flowerPot("potted_charti_berry", CHARTI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CHERI_BERRY = this.create("potted_cheri_berry", BlocksInvoker.createFlowerPotBlock(CHERI_BERRY))
|
||||
val POTTED_CHERI_BERRY = this.flowerPot("potted_cheri_berry", CHERI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CHESTO_BERRY = this.create("potted_chesto_berry", BlocksInvoker.createFlowerPotBlock(CHESTO_BERRY))
|
||||
val POTTED_CHESTO_BERRY = this.flowerPot("potted_chesto_berry", CHESTO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CHILAN_BERRY = this.create("potted_chilan_berry", BlocksInvoker.createFlowerPotBlock(CHILAN_BERRY))
|
||||
val POTTED_CHILAN_BERRY = this.flowerPot("potted_chilan_berry", CHILAN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CHOPLE_BERRY = this.create("potted_chople_berry", BlocksInvoker.createFlowerPotBlock(CHOPLE_BERRY))
|
||||
val POTTED_CHOPLE_BERRY = this.flowerPot("potted_chople_berry", CHOPLE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_COBA_BERRY = this.create("potted_coba_berry", BlocksInvoker.createFlowerPotBlock(COBA_BERRY))
|
||||
val POTTED_COBA_BERRY = this.flowerPot("potted_coba_berry", COBA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_COLBUR_BERRY = this.create("potted_colbur_berry", BlocksInvoker.createFlowerPotBlock(COLBUR_BERRY))
|
||||
val POTTED_COLBUR_BERRY = this.flowerPot("potted_colbur_berry", COLBUR_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CORNN_BERRY = this.create("potted_cornn_berry", BlocksInvoker.createFlowerPotBlock(CORNN_BERRY))
|
||||
val POTTED_CORNN_BERRY = this.flowerPot("potted_cornn_berry", CORNN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_CUSTAP_BERRY = this.create("potted_custap_berry", BlocksInvoker.createFlowerPotBlock(CUSTAP_BERRY))
|
||||
val POTTED_CUSTAP_BERRY = this.flowerPot("potted_custap_berry", CUSTAP_BERRY)
|
||||
@JvmField
|
||||
val POTTED_DURIN_BERRY = this.create("potted_durin_berry", BlocksInvoker.createFlowerPotBlock(DURIN_BERRY))
|
||||
val POTTED_DURIN_BERRY = this.flowerPot("potted_durin_berry", DURIN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_EGGANT_BERRY = this.create("potted_eggant_berry", BlocksInvoker.createFlowerPotBlock(EGGANT_BERRY))
|
||||
val POTTED_EGGANT_BERRY = this.flowerPot("potted_eggant_berry", EGGANT_BERRY)
|
||||
@JvmField
|
||||
val POTTED_ENIGMA_BERRY = this.create("potted_enigma_berry", BlocksInvoker.createFlowerPotBlock(ENIGMA_BERRY))
|
||||
val POTTED_ENIGMA_BERRY = this.flowerPot("potted_enigma_berry", ENIGMA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_FIGY_BERRY = this.create("potted_figy_berry", BlocksInvoker.createFlowerPotBlock(FIGY_BERRY))
|
||||
val POTTED_FIGY_BERRY = this.flowerPot("potted_figy_berry", FIGY_BERRY)
|
||||
@JvmField
|
||||
val POTTED_GANLON_BERRY = this.create("potted_ganlon_berry", BlocksInvoker.createFlowerPotBlock(GANLON_BERRY))
|
||||
val POTTED_GANLON_BERRY = this.flowerPot("potted_ganlon_berry", GANLON_BERRY)
|
||||
@JvmField
|
||||
val POTTED_GREPA_BERRY = this.create("potted_grepa_berry", BlocksInvoker.createFlowerPotBlock(GREPA_BERRY))
|
||||
val POTTED_GREPA_BERRY = this.flowerPot("potted_grepa_berry", GREPA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_HABAN_BERRY = this.create("potted_haban_berry", BlocksInvoker.createFlowerPotBlock(HABAN_BERRY))
|
||||
val POTTED_HABAN_BERRY = this.flowerPot("potted_haban_berry", HABAN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_HONDEW_BERRY = this.create("potted_hondew_berry", BlocksInvoker.createFlowerPotBlock(HONDEW_BERRY))
|
||||
val POTTED_HONDEW_BERRY = this.flowerPot("potted_hondew_berry", HONDEW_BERRY)
|
||||
@JvmField
|
||||
val POTTED_HOPO_BERRY = this.create("potted_hopo_berry", BlocksInvoker.createFlowerPotBlock(HOPO_BERRY))
|
||||
val POTTED_HOPO_BERRY = this.flowerPot("potted_hopo_berry", HOPO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_IAPAPA_BERRY = this.create("potted_iapapa_berry", BlocksInvoker.createFlowerPotBlock(IAPAPA_BERRY))
|
||||
val POTTED_IAPAPA_BERRY = this.flowerPot("potted_iapapa_berry", IAPAPA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_JABOCA_BERRY = this.create("potted_jaboca_berry", BlocksInvoker.createFlowerPotBlock(JABOCA_BERRY))
|
||||
val POTTED_JABOCA_BERRY = this.flowerPot("potted_jaboca_berry", JABOCA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_KASIB_BERRY = this.create("potted_kasib_berry", BlocksInvoker.createFlowerPotBlock(KASIB_BERRY))
|
||||
val POTTED_KASIB_BERRY = this.flowerPot("potted_kasib_berry", KASIB_BERRY)
|
||||
@JvmField
|
||||
val POTTED_KEBIA_BERRY = this.create("potted_kebia_berry", BlocksInvoker.createFlowerPotBlock(KEBIA_BERRY))
|
||||
val POTTED_KEBIA_BERRY = this.flowerPot("potted_kebia_berry", KEBIA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_KEE_BERRY = this.create("potted_kee_berry", BlocksInvoker.createFlowerPotBlock(KEE_BERRY))
|
||||
val POTTED_KEE_BERRY = this.flowerPot("potted_kee_berry", KEE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_KELPSY_BERRY = this.create("potted_kelpsy_berry", BlocksInvoker.createFlowerPotBlock(KELPSY_BERRY))
|
||||
val POTTED_KELPSY_BERRY = this.flowerPot("potted_kelpsy_berry", KELPSY_BERRY)
|
||||
@JvmField
|
||||
val POTTED_LANSAT_BERRY = this.create("potted_lansat_berry", BlocksInvoker.createFlowerPotBlock(LANSAT_BERRY))
|
||||
val POTTED_LANSAT_BERRY = this.flowerPot("potted_lansat_berry", LANSAT_BERRY)
|
||||
@JvmField
|
||||
val POTTED_LEPPA_BERRY = this.create("potted_leppa_berry", BlocksInvoker.createFlowerPotBlock(LEPPA_BERRY))
|
||||
val POTTED_LEPPA_BERRY = this.flowerPot("potted_leppa_berry", LEPPA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_LIECHI_BERRY = this.create("potted_liechi_berry", BlocksInvoker.createFlowerPotBlock(LIECHI_BERRY))
|
||||
val POTTED_LIECHI_BERRY = this.flowerPot("potted_liechi_berry", LIECHI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_LUM_BERRY = this.create("potted_lum_berry", BlocksInvoker.createFlowerPotBlock(LUM_BERRY))
|
||||
val POTTED_LUM_BERRY = this.flowerPot("potted_lum_berry", LUM_BERRY)
|
||||
@JvmField
|
||||
val POTTED_MAGO_BERRY = this.create("potted_mago_berry", BlocksInvoker.createFlowerPotBlock(MAGO_BERRY))
|
||||
val POTTED_MAGO_BERRY = this.flowerPot("potted_mago_berry", MAGO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_MAGOST_BERRY = this.create("potted_magost_berry", BlocksInvoker.createFlowerPotBlock(MAGOST_BERRY))
|
||||
val POTTED_MAGOST_BERRY = this.flowerPot("potted_magost_berry", MAGOST_BERRY)
|
||||
@JvmField
|
||||
val POTTED_MARANGA_BERRY = this.create("potted_maranga_berry", BlocksInvoker.createFlowerPotBlock(MARANGA_BERRY))
|
||||
val POTTED_MARANGA_BERRY = this.flowerPot("potted_maranga_berry", MARANGA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_MICLE_BERRY = this.create("potted_micle_berry", BlocksInvoker.createFlowerPotBlock(MICLE_BERRY))
|
||||
val POTTED_MICLE_BERRY = this.flowerPot("potted_micle_berry", MICLE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_NANAB_BERRY = this.create("potted_nanab_berry", BlocksInvoker.createFlowerPotBlock(NANAB_BERRY))
|
||||
val POTTED_NANAB_BERRY = this.flowerPot("potted_nanab_berry", NANAB_BERRY)
|
||||
@JvmField
|
||||
val POTTED_NOMEL_BERRY = this.create("potted_nomel_berry", BlocksInvoker.createFlowerPotBlock(NOMEL_BERRY))
|
||||
val POTTED_NOMEL_BERRY = this.flowerPot("potted_nomel_berry", NOMEL_BERRY)
|
||||
@JvmField
|
||||
val POTTED_OCCA_BERRY = this.create("potted_occa_berry", BlocksInvoker.createFlowerPotBlock(OCCA_BERRY))
|
||||
val POTTED_OCCA_BERRY = this.flowerPot("potted_occa_berry", OCCA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_ORAN_BERRY = this.create("potted_oran_berry", BlocksInvoker.createFlowerPotBlock(ORAN_BERRY))
|
||||
val POTTED_ORAN_BERRY = this.flowerPot("potted_oran_berry", ORAN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PAMTRE_BERRY = this.create("potted_pamtre_berry", BlocksInvoker.createFlowerPotBlock(PAMTRE_BERRY))
|
||||
val POTTED_PAMTRE_BERRY = this.flowerPot("potted_pamtre_berry", PAMTRE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PASSHO_BERRY = this.create("potted_passho_berry", BlocksInvoker.createFlowerPotBlock(PASSHO_BERRY))
|
||||
val POTTED_PASSHO_BERRY = this.flowerPot("potted_passho_berry", PASSHO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PAYAPA_BERRY = this.create("potted_payapa_berry", BlocksInvoker.createFlowerPotBlock(PAYAPA_BERRY))
|
||||
val POTTED_PAYAPA_BERRY = this.flowerPot("potted_payapa_berry", PAYAPA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PECHA_BERRY = this.create("potted_pecha_berry", BlocksInvoker.createFlowerPotBlock(PECHA_BERRY))
|
||||
val POTTED_PECHA_BERRY = this.flowerPot("potted_pecha_berry", PECHA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PERSIM_BERRY = this.create("potted_persim_berry", BlocksInvoker.createFlowerPotBlock(PERSIM_BERRY))
|
||||
val POTTED_PERSIM_BERRY = this.flowerPot("potted_persim_berry", PERSIM_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PETAYA_BERRY = this.create("potted_petaya_berry", BlocksInvoker.createFlowerPotBlock(PETAYA_BERRY))
|
||||
val POTTED_PETAYA_BERRY = this.flowerPot("potted_petaya_berry", PETAYA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PINAP_BERRY = this.create("potted_pinap_berry", BlocksInvoker.createFlowerPotBlock(PINAP_BERRY))
|
||||
val POTTED_PINAP_BERRY = this.flowerPot("potted_pinap_berry", PINAP_BERRY)
|
||||
@JvmField
|
||||
val POTTED_POMEG_BERRY = this.create("potted_pomeg_berry", BlocksInvoker.createFlowerPotBlock(POMEG_BERRY))
|
||||
val POTTED_POMEG_BERRY = this.flowerPot("potted_pomeg_berry", POMEG_BERRY)
|
||||
@JvmField
|
||||
val POTTED_QUALOT_BERRY = this.create("potted_qualot_berry", BlocksInvoker.createFlowerPotBlock(QUALOT_BERRY))
|
||||
val POTTED_QUALOT_BERRY = this.flowerPot("potted_qualot_berry", QUALOT_BERRY)
|
||||
@JvmField
|
||||
val POTTED_RABUTA_BERRY = this.create("potted_rabuta_berry", BlocksInvoker.createFlowerPotBlock(RABUTA_BERRY))
|
||||
val POTTED_RABUTA_BERRY = this.flowerPot("potted_rabuta_berry", RABUTA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_RAWST_BERRY = this.create("potted_rawst_berry", BlocksInvoker.createFlowerPotBlock(RAWST_BERRY))
|
||||
val POTTED_RAWST_BERRY = this.flowerPot("potted_rawst_berry", RAWST_BERRY)
|
||||
@JvmField
|
||||
val POTTED_RAZZ_BERRY = this.create("potted_razz_berry", BlocksInvoker.createFlowerPotBlock(RAZZ_BERRY))
|
||||
val POTTED_RAZZ_BERRY = this.flowerPot("potted_razz_berry", RAZZ_BERRY)
|
||||
@JvmField
|
||||
val POTTED_RINDO_BERRY = this.create("potted_rindo_berry", BlocksInvoker.createFlowerPotBlock(RINDO_BERRY))
|
||||
val POTTED_RINDO_BERRY = this.flowerPot("potted_rindo_berry", RINDO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_ROSELI_BERRY = this.create("potted_roseli_berry", BlocksInvoker.createFlowerPotBlock(ROSELI_BERRY))
|
||||
val POTTED_ROSELI_BERRY = this.flowerPot("potted_roseli_berry", ROSELI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_ROWAP_BERRY = this.create("potted_rowap_berry", BlocksInvoker.createFlowerPotBlock(ROWAP_BERRY))
|
||||
val POTTED_ROWAP_BERRY = this.flowerPot("potted_rowap_berry", ROWAP_BERRY)
|
||||
@JvmField
|
||||
val POTTED_SALAC_BERRY = this.create("potted_salac_berry", BlocksInvoker.createFlowerPotBlock(SALAC_BERRY))
|
||||
val POTTED_SALAC_BERRY = this.flowerPot("potted_salac_berry", SALAC_BERRY)
|
||||
@JvmField
|
||||
val POTTED_SHUCA_BERRY = this.create("potted_shuca_berry", BlocksInvoker.createFlowerPotBlock(SHUCA_BERRY))
|
||||
val POTTED_SHUCA_BERRY = this.flowerPot("potted_shuca_berry", SHUCA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_SITRUS_BERRY = this.create("potted_sitrus_berry", BlocksInvoker.createFlowerPotBlock(SITRUS_BERRY))
|
||||
val POTTED_SITRUS_BERRY = this.flowerPot("potted_sitrus_berry", SITRUS_BERRY)
|
||||
@JvmField
|
||||
val POTTED_SPELON_BERRY = this.create("potted_spelon_berry", BlocksInvoker.createFlowerPotBlock(SPELON_BERRY))
|
||||
val POTTED_SPELON_BERRY = this.flowerPot("potted_spelon_berry", SPELON_BERRY)
|
||||
@JvmField
|
||||
val POTTED_STARF_BERRY = this.create("potted_starf_berry", BlocksInvoker.createFlowerPotBlock(STARF_BERRY))
|
||||
val POTTED_STARF_BERRY = this.flowerPot("potted_starf_berry", STARF_BERRY)
|
||||
@JvmField
|
||||
val POTTED_TAMATO_BERRY = this.create("potted_tamato_berry", BlocksInvoker.createFlowerPotBlock(TAMATO_BERRY))
|
||||
val POTTED_TAMATO_BERRY = this.flowerPot("potted_tamato_berry", TAMATO_BERRY)
|
||||
@JvmField
|
||||
val POTTED_TANGA_BERRY = this.create("potted_tanga_berry", BlocksInvoker.createFlowerPotBlock(TANGA_BERRY))
|
||||
val POTTED_TANGA_BERRY = this.flowerPot("potted_tanga_berry", TANGA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_TOUGA_BERRY = this.create("potted_touga_berry", BlocksInvoker.createFlowerPotBlock(TOUGA_BERRY))
|
||||
val POTTED_TOUGA_BERRY = this.flowerPot("potted_touga_berry", TOUGA_BERRY)
|
||||
@JvmField
|
||||
val POTTED_WACAN_BERRY = this.create("potted_wacan_berry", BlocksInvoker.createFlowerPotBlock(WACAN_BERRY))
|
||||
val POTTED_WACAN_BERRY = this.flowerPot("potted_wacan_berry", WACAN_BERRY)
|
||||
@JvmField
|
||||
val POTTED_WATMEL_BERRY = this.create("potted_watmel_berry", BlocksInvoker.createFlowerPotBlock(WATMEL_BERRY))
|
||||
val POTTED_WATMEL_BERRY = this.flowerPot("potted_watmel_berry", WATMEL_BERRY)
|
||||
@JvmField
|
||||
val POTTED_WEPEAR_BERRY = this.create("potted_wepear_berry", BlocksInvoker.createFlowerPotBlock(WEPEAR_BERRY))
|
||||
val POTTED_WEPEAR_BERRY = this.flowerPot("potted_wepear_berry", WEPEAR_BERRY)
|
||||
@JvmField
|
||||
val POTTED_WIKI_BERRY = this.create("potted_wiki_berry", BlocksInvoker.createFlowerPotBlock(WIKI_BERRY))
|
||||
val POTTED_WIKI_BERRY = this.flowerPot("potted_wiki_berry", WIKI_BERRY)
|
||||
@JvmField
|
||||
val POTTED_YACHE_BERRY = this.create("potted_yache_berry", BlocksInvoker.createFlowerPotBlock(YACHE_BERRY))
|
||||
val POTTED_YACHE_BERRY = this.flowerPot("potted_yache_berry", YACHE_BERRY)
|
||||
@JvmField
|
||||
val POTTED_PEP_UP_FLOWER = this.flowerPot("potted_pep_up_flower", PEP_UP_FLOWER)
|
||||
@JvmField
|
||||
val POTTED_RED_APRICORN_SAPLING = this.flowerPot("potted_red_apricorn_sapling", RED_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_YELLOW_APRICORN_SAPLING = this.flowerPot("potted_yellow_apricorn_sapling", YELLOW_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_GREEN_APRICORN_SAPLING = this.flowerPot("potted_green_apricorn_sapling", GREEN_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_BLUE_APRICORN_SAPLING = this.flowerPot("potted_blue_apricorn_sapling", BLUE_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_PINK_APRICORN_SAPLING = this.flowerPot("potted_pink_apricorn_sapling", PINK_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_BLACK_APRICORN_SAPLING = this.flowerPot("potted_black_apricorn_sapling", BLACK_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_WHITE_APRICORN_SAPLING = this.flowerPot("potted_white_apricorn_sapling", WHITE_APRICORN_SAPLING)
|
||||
@JvmField
|
||||
val POTTED_SACCHARINE_SAPLING = this.flowerPot("potted_saccharine_sapling", SACCHARINE_SAPLING)
|
||||
|
||||
init {
|
||||
/**
|
||||
@@ -1346,7 +1345,16 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
||||
|
||||
fun typeGemClusters() = typeGemClusters.toMap()
|
||||
|
||||
private fun pottedPlant(name: String, flower: Block) = this.create(name, BlocksInvoker.createFlowerPotBlock(flower))
|
||||
private fun flowerPot(name: String, flower: Block) = this.create(
|
||||
name,
|
||||
FlowerPotBlock(
|
||||
flower,
|
||||
BlockBehaviour.Properties.of()
|
||||
.instabreak()
|
||||
.noOcclusion()
|
||||
.pushReaction(PushReaction.DESTROY)
|
||||
)
|
||||
)
|
||||
|
||||
private fun mintLitter(name: String, color: MapColor) = this.create(
|
||||
name,
|
||||
|
||||
+31
-7
@@ -9,6 +9,7 @@
|
||||
package com.cobblemon.mod.common.api.ai.config.task
|
||||
|
||||
import com.bedrockk.molang.Expression
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.ai.BehaviourConfigurationContext
|
||||
import com.cobblemon.mod.common.api.ai.ExpressionOrEntityVariable
|
||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||
@@ -17,6 +18,7 @@ import com.cobblemon.mod.common.util.asExpression
|
||||
import com.cobblemon.mod.common.util.mainThreadRuntime
|
||||
import com.cobblemon.mod.common.util.resolveBoolean
|
||||
import com.cobblemon.mod.common.util.withQueryValue
|
||||
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
|
||||
import com.mojang.datafixers.util.Either
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
||||
@@ -34,6 +36,8 @@ import net.minecraft.world.entity.ai.sensing.SensorType
|
||||
class HateEntityTaskConfig : SingleTaskConfig {
|
||||
val entityCondition: Expression = "true".asExpression()
|
||||
val range: ExpressionOrEntityVariable = Either.left("24".asExpression())
|
||||
val chance: Float = Cobblemon.config.predationChance
|
||||
private val coercedChance = chance.coerceIn(0f, 1f)
|
||||
|
||||
override fun getVariables(entity: LivingEntity, behaviourConfigurationContext: BehaviourConfigurationContext) = emptyList<MoLangConfigVariable>()
|
||||
override fun createTask(
|
||||
@@ -43,24 +47,44 @@ class HateEntityTaskConfig : SingleTaskConfig {
|
||||
val range = range.resolveFloat(behaviourConfigurationContext.runtime)
|
||||
behaviourConfigurationContext.addMemories(
|
||||
MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES,
|
||||
MemoryModuleType.ANGRY_AT
|
||||
MemoryModuleType.ANGRY_AT,
|
||||
MemoryModuleType.ATTACK_TARGET
|
||||
)
|
||||
behaviourConfigurationContext.addSensors(SensorType.NEAREST_LIVING_ENTITIES)
|
||||
return BehaviorBuilder.create { instance ->
|
||||
instance.group(
|
||||
instance.present(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES),
|
||||
instance.registered(MemoryModuleType.ANGRY_AT)
|
||||
).apply(instance) { entities, angryAt ->
|
||||
instance.registered(MemoryModuleType.ANGRY_AT),
|
||||
instance.registered(MemoryModuleType.ATTACK_TARGET),
|
||||
).apply(instance) { entities, angryAt, attackTarget ->
|
||||
Trigger { world, entity, _ ->
|
||||
val target = instance.get(entities).findClosest {
|
||||
mainThreadRuntime.withQueryValue("entity", entity.asMostSpecificMoLangValue())
|
||||
// bail if gamerule is disabled
|
||||
if (!world.gameRules.getBoolean(CobblemonGameRules.DO_POKEMON_PREDATION)) return@Trigger false
|
||||
val target = instance.get(entities).findClosest { hated ->
|
||||
mainThreadRuntime.withQueryValue("entity", hated.asMostSpecificMoLangValue())
|
||||
return@findClosest mainThreadRuntime.resolveBoolean(entityCondition)
|
||||
}.orElse(null)
|
||||
|
||||
var shouldTrigger = false
|
||||
if (target != null && target.distanceTo(entity) <= range) {
|
||||
angryAt.set(target.uuid)
|
||||
shouldTrigger = when {
|
||||
// set always attacking if activity chance is equal to 1.0
|
||||
coercedChance == 1f -> {
|
||||
angryAt.set(target.uuid)
|
||||
attackTarget.set(target)
|
||||
true
|
||||
}
|
||||
// roll the dice in other way
|
||||
coercedChance != 1f && world.random.nextFloat() < coercedChance -> {
|
||||
angryAt.set(target.uuid)
|
||||
attackTarget.set(target)
|
||||
true
|
||||
}
|
||||
// fallback to peaceful behavior in unattended cases
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
return@Trigger true
|
||||
return@Trigger shouldTrigger
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,6 +239,10 @@ open class PokemonBattle(
|
||||
}
|
||||
|
||||
fun writeShowdownAction(vararg messages: String) {
|
||||
if (messages.any { it.contains("\n") || it.contains("\r") }) {
|
||||
LOGGER.warn("Refusing to forward Showdown action with an embedded line break for battle {}: {}", battleId, messages.joinToString(" | "))
|
||||
return
|
||||
}
|
||||
log(messages.joinToString("\n"))
|
||||
ShowdownService.service.send(battleId, messages.toList().toTypedArray())
|
||||
}
|
||||
|
||||
+6
-6
@@ -88,7 +88,7 @@ fun getToolTipHeaderIcon(tradeEvolution: TradeEvolution): CobblemonDexEvolutionR
|
||||
lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
||||
} else {
|
||||
PokemonSpecies.getByIdentifier(species.asIdentifierDefaultingNamespace())
|
||||
?.let { lang("ui.pokedex.evolution.trade.tooltip.with_species", it.translatedName.green()) }
|
||||
?.let { lang("ui.pokedex.evolution.trade.tooltip.with_species", it.translatedName.plainCopy().green()) }
|
||||
?: lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
||||
}
|
||||
return CobblemonDexEvolutionRequirementDisplay(CobblemonItems.LINK_CABLE, tooltip)
|
||||
@@ -282,7 +282,7 @@ fun buildLevelRequirement(levelRequirement: LevelRequirement): DexEvolutionRequi
|
||||
|
||||
fun buildMoonPhaseRequirement(moonPhaseRequirement: MoonPhaseRequirement): DexEvolutionRequirementDisplay {
|
||||
val icon = Items.CLOCK
|
||||
val moonPhaseComponent = moonPhaseRequirement.moonPhase.displayName().green()
|
||||
val moonPhaseComponent = moonPhaseRequirement.moonPhase.displayName().plainCopy().green()
|
||||
val tooltip = lang("ui.pokedex.requirement.moon_phase.tooltip", moonPhaseComponent)
|
||||
|
||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||
@@ -290,7 +290,7 @@ fun buildMoonPhaseRequirement(moonPhaseRequirement: MoonPhaseRequirement): DexEv
|
||||
|
||||
fun buildMoveSetRequirement(moveSetRequirement: MoveSetRequirement): DexEvolutionRequirementDisplay {
|
||||
val icon = CobblemonItems.TECHNICAL_MACHINE
|
||||
val tooltip = lang("ui.pokedex.requirement.has_move.tooltip", moveSetRequirement.move.displayName.green())
|
||||
val tooltip = lang("ui.pokedex.requirement.has_move.tooltip", moveSetRequirement.move.displayName.plainCopy().green())
|
||||
|
||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||
}
|
||||
@@ -319,7 +319,7 @@ fun buildMoveTypeRequirement(moveTypeRequirement: MoveTypeRequirement): DexEvolu
|
||||
else -> CobblemonItems.NORMAL_GEM
|
||||
}
|
||||
|
||||
val tooltip = lang("ui.pokedex.requirement.has_move_type.tooltip", moveTypeRequirement.type.displayName.green())
|
||||
val tooltip = lang("ui.pokedex.requirement.has_move_type.tooltip", moveTypeRequirement.type.displayName.plainCopy().green())
|
||||
|
||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||
}
|
||||
@@ -437,7 +437,7 @@ fun buildStructureRequirement(structureRequirement: StructureRequirement, negate
|
||||
|
||||
fun buildTimeRangeRequirement(timeRangeRequirement: TimeRangeRequirement): DexEvolutionRequirementDisplay? {
|
||||
val icon = Items.CLOCK
|
||||
val timeRangeComponent = timeRangeRequirement.range.displayName() ?: return null
|
||||
val timeRangeComponent = timeRangeRequirement.range.displayName()?.plainCopy() ?: return null
|
||||
val tooltip = lang("ui.pokedex.requirement.time_range.tooltip", timeRangeComponent.green())
|
||||
|
||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||
@@ -445,7 +445,7 @@ fun buildTimeRangeRequirement(timeRangeRequirement: TimeRangeRequirement): DexEv
|
||||
|
||||
fun buildUseMoveRequirement(useMoveRequirement: UseMoveRequirement): DexEvolutionRequirementDisplay {
|
||||
val icon = CobblemonItems.CHOICE_BAND
|
||||
val tooltip = lang("ui.pokedex.requirement.use_move.tooltip", useMoveRequirement.move.displayName.green())
|
||||
val tooltip = lang("ui.pokedex.requirement.use_move.tooltip", useMoveRequirement.move.displayName.plainCopy().green())
|
||||
|
||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||
}
|
||||
|
||||
+2
-2
@@ -42,8 +42,8 @@ abstract class AreaTypeSpawningCondition<T : AreaSpawnablePosition> : SpawningCo
|
||||
override fun copyFrom(other: SpawningCondition<*>, merger: Merger) {
|
||||
super.copyFrom(other, merger)
|
||||
if (other is AreaTypeSpawningCondition) {
|
||||
merger.mergeSingle(minHeight, other.minHeight)
|
||||
merger.mergeSingle(maxHeight, other.maxHeight)
|
||||
minHeight = merger.mergeSingle(minHeight, other.minHeight)
|
||||
maxHeight = merger.mergeSingle(maxHeight, other.maxHeight)
|
||||
neededNearbyBlocks = merger.merge(neededNearbyBlocks, other.neededNearbyBlocks)?.toMutableList()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ abstract class SubmergedTypeSpawningCondition<T : SubmergedSpawnablePosition> :
|
||||
super.copyFrom(other, merger)
|
||||
if (other is SubmergedTypeSpawningCondition) {
|
||||
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||
maxDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||
maxDepth = merger.mergeSingle(maxDepth, other.maxDepth)
|
||||
fluidIsSource = merger.mergeSingle(fluidIsSource, other.fluidIsSource)
|
||||
fluid = merger.mergeSingle(fluid, other.fluid)
|
||||
}
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ abstract class SurfaceTypeSpawningCondition<T : SurfaceSpawnablePosition> : Area
|
||||
super.copyFrom(other, merger)
|
||||
if (other is SurfaceTypeSpawningCondition) {
|
||||
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||
maxDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||
maxDepth = merger.mergeSingle(maxDepth, other.maxDepth)
|
||||
fluid = merger.mergeSingle(fluid, other.fluid)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,17 @@ interface Spawner {
|
||||
val mid = chunk.getBlockState(startPos)
|
||||
val above = chunk.getBlockState(abovePos)
|
||||
|
||||
return above.isPathfindable(PathComputationType.AIR) && mid.isAir
|
||||
// Above must be non-solid
|
||||
if (!above.isPathfindable(PathComputationType.AIR)) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Position must be non-air
|
||||
if (mid.isAir) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
fun constrainArea(area: SpawningZoneInput): SpawningZoneInput? {
|
||||
|
||||
@@ -117,6 +117,9 @@ abstract class ShowdownActionResponse(val type: ShowdownActionResponseType) {
|
||||
|
||||
data class MoveActionResponse(var moveName: String, var targetPnx: String? = null, var gimmickID: String? = null): ShowdownActionResponse(ShowdownActionResponseType.MOVE) {
|
||||
override fun isValid(activeBattlePokemon: ActiveBattlePokemon, showdownMoveSet: ShowdownMoveset?, forceSwitch: Boolean): Boolean {
|
||||
// Ensure that the gimmick ID the player is sending is valid
|
||||
gimmickID?.let { if (it !in VALID_GIMMICK_IDS) return false }
|
||||
|
||||
if (forceSwitch || showdownMoveSet == null) {
|
||||
return false
|
||||
}
|
||||
@@ -168,6 +171,10 @@ data class MoveActionResponse(var moveName: String, var targetPnx: String? = nul
|
||||
gimmickID = buffer.readNullable { buffer.readString() }
|
||||
return this
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val VALID_GIMMICK_IDS = ShowdownMoveset.Gimmick.entries.map { it.id }.toSet()
|
||||
}
|
||||
}
|
||||
|
||||
data class HealItemActionResponse(var item: String) : ShowdownActionResponse(ShowdownActionResponseType.FORCE_PASS) {
|
||||
@@ -183,7 +190,8 @@ data class HealItemActionResponse(var item: String) : ShowdownActionResponse(Sho
|
||||
}
|
||||
|
||||
override fun isValid(activeBattlePokemon: ActiveBattlePokemon, showdownMoveSet: ShowdownMoveset?, forceSwitch: Boolean): Boolean {
|
||||
return !forceSwitch
|
||||
// Previously checked for !forceSwitch, excepts in the case of a forceSwitch, this couldn't legally be sent anyway.
|
||||
return false
|
||||
}
|
||||
|
||||
override fun toShowdownString(activeBattlePokemon: ActiveBattlePokemon, showdownMoveSet: ShowdownMoveset?): String {
|
||||
|
||||
+11
-2
@@ -37,7 +37,6 @@ import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
|
||||
import com.cobblemon.mod.common.util.battleLang
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
|
||||
/**
|
||||
* Format: |move|POKEMON|MOVE|TARGET
|
||||
@@ -77,7 +76,7 @@ class MoveInstruction(
|
||||
val pokemonName = userPokemon.getName()
|
||||
ShowdownInterpreter.lastCauser[battle.battleId] = message
|
||||
// For Spread targets the message data only gives the pnx strings. So we can't know what pokemon are actually targeted until the previous messages have been interpreted
|
||||
val spreadTargetPokemon = spreadTargets.map { battle.activePokemon.firstOrNull() { poke -> poke.getPNX() == it }?.battlePokemon }
|
||||
val spreadTargetPokemon = spreadTargets.map { battle.activePokemon.firstOrNull { poke -> poke.getPNX() == it }?.battlePokemon }
|
||||
|
||||
val targetPokemonEntity = targetPokemon?.entity
|
||||
if (targetPokemonEntity != null) {
|
||||
@@ -137,10 +136,20 @@ class MoveInstruction(
|
||||
|
||||
val subsequentInstructions = instructionSet.findInstructionsCausedBy(this)
|
||||
val missedTargets = subsequentInstructions.filterIsInstance<MissInstruction>().mapNotNull { it.target }
|
||||
val faintedTargets = subsequentInstructions.filterIsInstance<FaintInstruction>().map { it.faintingPokemon }
|
||||
val failed = subsequentInstructions.any { it is FailInstruction }
|
||||
val failedTargets = subsequentInstructions.filterIsInstance<FailInstruction>().mapNotNull { it.target }
|
||||
val hitCountInstruction = subsequentInstructions.filterIsInstance<HitCountInstruction>().firstOrNull()
|
||||
|
||||
runtime.environment.query.addFunction("target_fainted") { params ->
|
||||
if (params.params.size == 0) {
|
||||
return@addFunction DoubleValue(faintedTargets.isNotEmpty())
|
||||
} else {
|
||||
val entityUUID = params.getString(0)
|
||||
return@addFunction DoubleValue(faintedTargets.any { it.entity?.stringUUID == entityUUID })
|
||||
}
|
||||
}
|
||||
|
||||
runtime.environment.query.addFunction("missed") { params ->
|
||||
if (params.params.size == 0) {
|
||||
return@addFunction DoubleValue(missedTargets.isNotEmpty())
|
||||
|
||||
@@ -30,7 +30,7 @@ class OrbBlock(properties: Properties) : SixFaceRotationalBlock(properties) {
|
||||
|
||||
val FLOOR_NORTH = Shapes.box(0.3125, 0.0, 0.3125, 0.6875, 0.375, 0.6875)
|
||||
val WALL_NORTH = Shapes.box(0.3125, 0.3125, 0.625, 0.6875, 0.6875, 1.0)
|
||||
val CEILING_NORTH = Shapes.box(0.3125, 0.625, 0.375, 0.6875, 1.0, 0.6875)
|
||||
val CEILING_NORTH = Shapes.box(0.3125, 0.625, 0.3125, 0.6875, 1.0, 0.6875)
|
||||
}
|
||||
|
||||
init {
|
||||
|
||||
@@ -85,6 +85,7 @@ class PartyOverlay : Gui(Minecraft.getInstance()) {
|
||||
if (HidePartyBinding.shouldHide) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -558,4 +559,4 @@ class PartyOverlay : Gui(Minecraft.getInstance()) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -34,6 +34,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.bedrock.animatio
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.ModelQuirk
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.QuirkData
|
||||
import com.cobblemon.mod.common.client.sound.instances.UIEntitySoundInstance
|
||||
import com.cobblemon.mod.common.entity.PosableEntity
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
@@ -44,7 +45,6 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException
|
||||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.multiplayer.ClientLevel
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
import net.minecraft.commands.arguments.item.ItemParser
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
import net.minecraft.world.entity.Entity
|
||||
@@ -289,7 +289,7 @@ abstract class PosableState : Schedulable {
|
||||
entity.level().playLocalSound(entity, soundEvent, entity.soundSource, volume, pitch)
|
||||
}
|
||||
} else {
|
||||
Minecraft.getInstance().soundManager.play(SimpleSoundInstance.forUI(soundEvent, volume, pitch))
|
||||
Minecraft.getInstance().soundManager.play(UIEntitySoundInstance(soundEvent, volume, pitch))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -19,6 +19,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Bone
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
|
||||
import com.cobblemon.mod.common.client.sound.instances.AlphaCrySoundInstance
|
||||
import com.cobblemon.mod.common.client.sound.instances.UIEntitySoundInstance
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.util.effectiveName
|
||||
import com.cobblemon.mod.common.util.genericRuntime
|
||||
@@ -31,7 +32,6 @@ import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.client.multiplayer.ClientLevel
|
||||
import net.minecraft.client.resources.sounds.EntityBoundSoundInstance
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
import net.minecraft.world.entity.Entity
|
||||
@@ -121,7 +121,7 @@ class BedrockSoundKeyframe(
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Minecraft.getInstance().soundManager.play(SimpleSoundInstance.forUI(soundEvent, 1F, 1F))
|
||||
Minecraft.getInstance().soundManager.play(UIEntitySoundInstance(soundEvent))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ class DusclopsModel (root: ModelPart) : PokemonPosableModel(root) {
|
||||
lateinit var battleidle: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
animations["cry"] = "q.bedrock_stateful('squirtle', 'cry')".asExpressionLike()
|
||||
animations["cry"] = "q.bedrock_stateful('dusclops', 'cry')".asExpressionLike()
|
||||
|
||||
val blink = quirk { bedrockStateful("dusclops", "blink") }
|
||||
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Cobblemon Contributors
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
package com.cobblemon.mod.common.client.sound.instances
|
||||
|
||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||
import net.minecraft.client.resources.sounds.SoundInstance
|
||||
import net.minecraft.sounds.SoundEvent
|
||||
import net.minecraft.sounds.SoundSource
|
||||
|
||||
/**
|
||||
* Plays a sound for a Pokémon rendered in a GUI, where there is no entity to take the sound source from.
|
||||
* Unlike [SimpleSoundInstance.forUI] this uses [SoundSource.NEUTRAL] so the Friendly Creatures slider applies.
|
||||
*/
|
||||
class UIEntitySoundInstance(sound: SoundEvent, volume: Float = 1F, pitch: Float = 1F) :
|
||||
SimpleSoundInstance(sound.location, SoundSource.NEUTRAL, volume, pitch, SoundInstance.createUnseededRandom(),
|
||||
false, 0, SoundInstance.Attenuation.NONE, 0.0, 0.0, 0.0, true)
|
||||
@@ -164,6 +164,9 @@ class CobblemonConfig {
|
||||
@CobblemonConfigField(Category.Pokemon, lang = "experience_multiplier", SERVER)
|
||||
var experienceMultiplier = 2F
|
||||
|
||||
@CobblemonConfigField(Category.Pokemon, lang = "predation_chance", SERVER)
|
||||
var predationChance = 0.05F
|
||||
|
||||
@CobblemonConfigField(Category.Spawning, lang = "pokemon_per_chunk", SERVER)
|
||||
var pokemonPerChunk = 1F
|
||||
|
||||
|
||||
@@ -1294,16 +1294,7 @@ open class PokemonEntity(
|
||||
}
|
||||
|
||||
private fun showInteractionWheel(player: ServerPlayer, itemStack: ItemStack) {
|
||||
val canRide = ifRidingAvailableSupply(false) { behaviour, settings, state ->
|
||||
if (platform != PlatformType.NONE) return@ifRidingAvailableSupply false
|
||||
if (tethering != null) return@ifRidingAvailableSupply false;
|
||||
if (seats.isEmpty()) return@ifRidingAvailableSupply false;
|
||||
if ((owner as? ServerPlayer)?.isInBattle() == true) return@ifRidingAvailableSupply false;
|
||||
if (this.owner != player && this.passengers.isEmpty()) return@ifRidingAvailableSupply false;
|
||||
if(pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) return@ifRidingAvailableSupply false;
|
||||
if(beamMode == 3) return@ifRidingAvailableSupply false;
|
||||
return@ifRidingAvailableSupply behaviour.isActive(settings, state, this);
|
||||
}
|
||||
val canRide = isRideableFor(player)
|
||||
if (pokemon.getOwnerPlayer() == player) {
|
||||
val cosmeticItemDefinition = CobblemonCosmeticItems.findValidCosmeticForPokemonAndItem(
|
||||
player.level().registryAccess(),
|
||||
@@ -1325,6 +1316,18 @@ open class PokemonEntity(
|
||||
}
|
||||
}
|
||||
|
||||
fun isRideableFor(player: ServerPlayer): Boolean = ifRidingAvailableSupply(false) canRide@{ behaviour, settings, state ->
|
||||
if (!player.canInteractWithEntity(this, player.entityInteractionRange())) return@canRide false
|
||||
if (platform != PlatformType.NONE) return@canRide false
|
||||
if (tethering != null) return@canRide false
|
||||
if (seats.isEmpty()) return@canRide false
|
||||
if ((owner as? ServerPlayer)?.isInBattle() == true) return@canRide false
|
||||
if (this.owner != player && this.passengers.isEmpty()) return@canRide false
|
||||
if (pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) return@canRide false
|
||||
if (beamMode == 3) return@canRide false
|
||||
return@canRide behaviour.isActive(settings, state, this)
|
||||
}
|
||||
|
||||
override fun getDimensions(pose: Pose): EntityDimensions {
|
||||
val scale = effects.mockEffect?.scale ?: (form.baseScale * pokemon.effectiveScale)
|
||||
var result = this.exposedForm.hitbox.scale(scale)
|
||||
@@ -1606,9 +1609,8 @@ open class PokemonEntity(
|
||||
|| stack.`is`(CobblemonItemTags.WHITELISTED_ITEMS_TO_HOLD)
|
||||
|
||||
fun tryRidingPokemon(player: ServerPlayer): Boolean {
|
||||
if (pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) {
|
||||
return false
|
||||
}
|
||||
if (!isRideableFor(player)) return false
|
||||
|
||||
val event = RidePokemonEvent.Pre(player, this)
|
||||
CobblemonEvents.RIDE_EVENT_PRE.post(event)
|
||||
if (!event.isCanceled) {
|
||||
|
||||
+24
@@ -8,9 +8,12 @@
|
||||
|
||||
package com.cobblemon.mod.common.net.serverhandling.battle
|
||||
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
|
||||
import com.cobblemon.mod.common.api.text.red
|
||||
import com.cobblemon.mod.common.battles.BattleRegistry
|
||||
import com.cobblemon.mod.common.battles.HealItemActionResponse
|
||||
import com.cobblemon.mod.common.battles.MoveActionResponse
|
||||
import com.cobblemon.mod.common.exception.IllegalActionChoiceException
|
||||
import com.cobblemon.mod.common.net.messages.client.battle.BattleMakeChoicePacket
|
||||
import com.cobblemon.mod.common.net.messages.client.battle.BattleQueueRequestPacket
|
||||
@@ -25,6 +28,27 @@ object BattleSelectActionsHandler : ServerNetworkPacketHandler<BattleSelectActio
|
||||
if (!actor.mustChoose) {
|
||||
return
|
||||
}
|
||||
|
||||
// Battle command injection attempt detection
|
||||
packet.showdownActionResponses.asSequence()
|
||||
.flatMap {
|
||||
when (it) {
|
||||
is MoveActionResponse -> sequenceOf(it.moveName, it.targetPnx, it.gimmickID)
|
||||
is HealItemActionResponse -> sequenceOf(it.item)
|
||||
else -> emptySequence()
|
||||
}
|
||||
}
|
||||
.filterNotNull()
|
||||
.firstOrNull { field -> field.any(Char::isISOControl) }
|
||||
?.let {
|
||||
// Escapes control chars as \uXXXX to prevent forging logs.
|
||||
val printable = it.replace(Regex("\\p{Cc}")) { "\\u%04x".format(it.value[0].code) }
|
||||
Cobblemon.LOGGER.warn("Blocked battle command injection from ${player.name.string}: $printable")
|
||||
actor.sendUpdate(BattleQueueRequestPacket(actor.request!!))
|
||||
actor.sendUpdate(BattleMakeChoicePacket())
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
actor.setActionResponses(packet.showdownActionResponses)
|
||||
} catch (e: IllegalActionChoiceException) {
|
||||
|
||||
+4
-3
@@ -135,17 +135,18 @@ internal object PropertiesCompletionProvider : DataRegistry {
|
||||
private fun addDefaults() {
|
||||
this.inject(setOf("level", "lvl", "l"), setOf("1", "${Cobblemon.config.maxPokemonLevel}") )
|
||||
this.inject(setOf("shiny", "s"), setOf("yes", "no"))
|
||||
this.inject(setOf("alpha", "is_alpha"), setOf("yes", "no"))
|
||||
this.inject(setOf("gender"), Gender.entries.map { it.name.lowercase() })
|
||||
this.inject(setOf("friendship"), setOf("0", Cobblemon.config.maxPokemonFriendship.toString()))
|
||||
this.inject(setOf("fullness"), setOf("0", "255"))
|
||||
this.inject(setOf("pokeball"), PokeBalls.all().map { it.name.simplify() })
|
||||
this.inject(setOf("nature"), Natures.all().map { it.name.simplify() })
|
||||
this.inject(setOf("ability"), Abilities.all().map { if (it.name.asIdentifierDefaultingNamespace().namespace == Cobblemon.MODID) it.name.asIdentifierDefaultingNamespace().path else it.name })
|
||||
this.inject(setOf("dmax"), setOf("0", Cobblemon.config.maxDynamaxLevel.toString()))
|
||||
this.inject(setOf("gmax"), setOf("yes", "no"))
|
||||
this.inject(setOf("dmax_level", "dmax"), setOf("0", Cobblemon.config.maxDynamaxLevel.toString()))
|
||||
this.inject(setOf("gmax_factor", "gmax"), setOf("yes", "no"))
|
||||
this.inject(setOf("type", "elemental_type"), ElementalTypes.all().map { it.name })
|
||||
this.inject(setOf("tera_type", "tera"), TeraTypes.map { it.id.simplify() })
|
||||
this.inject(setOf("tradeable"), setOf("yes", "no"))
|
||||
this.inject(setOf("tradeable", "tradable"), setOf("yes", "no"))
|
||||
this.inject(setOf("originaltrainer", "ot"), setOf(""))
|
||||
this.inject(setOf("originaltrainertype", "ottype"), setOf("None", "Player", "NPC"))
|
||||
this.inject(setOf("nickname", "nick"), setOf(""))
|
||||
|
||||
+2
-1
@@ -26,5 +26,6 @@ object CobblemonGameRules {
|
||||
val SHINY_STARTERS: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("doShinyStarters", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
||||
@JvmField
|
||||
val HEALERS_HEAL_PC: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("healersHealPC", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
||||
|
||||
@JvmField
|
||||
val DO_POKEMON_PREDATION: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("doPokemonPredation", GameRules.Category.MOBS, BooleanRuleInvoker.`cobblemon$create`(true))
|
||||
}
|
||||
+581
-191
File diff suppressed because it is too large
Load Diff
+62
-24
@@ -23,10 +23,10 @@
|
||||
"tail": {
|
||||
"rotation": ["50-math.sin(q.anim_time*90*2-60)*-3", 0, 0]
|
||||
},
|
||||
"toe_inner_left": {
|
||||
"toe_front_inner_left": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"toe_outer_left": {
|
||||
"toe_front_outer_left": {
|
||||
"rotation": [0, -5, 0]
|
||||
},
|
||||
"neckflap_left": {
|
||||
@@ -83,7 +83,7 @@
|
||||
"tail": {
|
||||
"rotation": ["50-math.cos(q.anim_time*90*16/3*2)*5", 0, 0]
|
||||
},
|
||||
"toe_inner_left": {
|
||||
"toe_front_inner_left": {
|
||||
"rotation": {
|
||||
"0.0": [-55, 10, -7.5],
|
||||
"0.125": {
|
||||
@@ -106,7 +106,7 @@
|
||||
"0.75": [0, -0.75, 0.85]
|
||||
}
|
||||
},
|
||||
"toe_outer_left": {
|
||||
"toe_front_outer_left": {
|
||||
"rotation": {
|
||||
"0.0": [-51.5, -2.5, 10],
|
||||
"0.125": {
|
||||
@@ -235,7 +235,7 @@
|
||||
"0.75": [0, 0.25, 0]
|
||||
}
|
||||
},
|
||||
"toe_back_left": {
|
||||
"toe_back_outer_left": {
|
||||
"rotation": {
|
||||
"0.0": [-20, 0, 0],
|
||||
"0.2083": {
|
||||
@@ -319,7 +319,7 @@
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"toe_back_right": {
|
||||
"toe_back_inner_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
@@ -332,7 +332,7 @@
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"toe_inner_right": {
|
||||
"toe_front_inner_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, -15, 0],
|
||||
"0.25": [0, -15, 0],
|
||||
@@ -356,7 +356,7 @@
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"toe_outer_right": {
|
||||
"toe_front_outer_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, 15, 0],
|
||||
"0.25": [0, 15, 0],
|
||||
@@ -379,6 +379,32 @@
|
||||
"0.5": [0, 0, 0],
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"toe_back_inner_left": {
|
||||
"rotation": {
|
||||
"0.0": [-20, 0, 0],
|
||||
"0.2083": {
|
||||
"pre": [-8.33, 0, 0],
|
||||
"post": [-8.33, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": [0, 0, 0],
|
||||
"0.625": [0, 0, 0],
|
||||
"0.75": [-20, 0, 0]
|
||||
}
|
||||
},
|
||||
"toe_back_inner_right3": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.375": [-20, 0, 0],
|
||||
"0.5833": {
|
||||
"pre": [-8.33, 0, 0],
|
||||
"post": [-8.33, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -647,34 +673,40 @@
|
||||
"rotation": ["-0-math.sin(q.anim_time*90*6-170)*5", 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-67.5, 0, 0]
|
||||
"rotation": [-67.5, 0, -2.5]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*6-30)*-5", -10, "math.sin(q.anim_time*90*3-150)*6"]
|
||||
},
|
||||
"toe_back_left": {
|
||||
"toe_back_outer_left": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_inner_left": {
|
||||
"toe_front_inner_left": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_outer_left": {
|
||||
"toe_front_outer_left": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-67.5, 0, 0]
|
||||
"rotation": [-67.5, 0, 2.5]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*6-30)*-5", 10, "-math.sin(q.anim_time*90*3-150)*6"]
|
||||
},
|
||||
"toe_back_right": {
|
||||
"toe_back_inner_right": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_inner_right": {
|
||||
"toe_front_inner_right": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_outer_right": {
|
||||
"toe_front_outer_right": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_back_inner_left": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_back_inner_right3": {
|
||||
"rotation": [-30, 0, 0]
|
||||
}
|
||||
},
|
||||
"timeline": {
|
||||
@@ -733,34 +765,40 @@
|
||||
"rotation": ["-0-math.sin(q.anim_time*90*6-170)*5", 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-67.5, 0, 0]
|
||||
"rotation": [-67.5, 0, -2.5]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*6-30)*-5", -10, "math.sin(q.anim_time*90*3-150)*6"]
|
||||
},
|
||||
"toe_back_left": {
|
||||
"toe_back_outer_left": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_inner_left": {
|
||||
"toe_front_inner_left": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_outer_left": {
|
||||
"toe_front_outer_left": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-67.5, 0, 0]
|
||||
"rotation": [-67.5, 0, 2.5]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*6-30)*-5", 10, "-math.sin(q.anim_time*90*3-150)*6"]
|
||||
},
|
||||
"toe_back_right": {
|
||||
"toe_back_inner_right": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_inner_right": {
|
||||
"toe_front_inner_right": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_outer_right": {
|
||||
"toe_front_outer_right": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"toe_back_inner_left": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"toe_back_inner_right3": {
|
||||
"rotation": [-30, 0, 0]
|
||||
}
|
||||
},
|
||||
"timeline": {
|
||||
|
||||
+582
-386
File diff suppressed because it is too large
Load Diff
+62
-26
@@ -266,23 +266,41 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_back_left",
|
||||
"name": "toe_back_inner_left",
|
||||
"parent": "foot_left",
|
||||
"pivot": [1.25, 1.92365, 1.01519],
|
||||
"pivot": [0.75, 1.92365, 1.01519],
|
||||
"rotation": [0, -12.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [1.25, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 18]}
|
||||
{"origin": [0.75, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 18]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_back_left",
|
||||
"parent": "toe_back_left",
|
||||
"pivot": [1.25, 1.92365, 2.01519],
|
||||
"name": "toe_back_inner_left2",
|
||||
"parent": "toe_back_inner_left",
|
||||
"pivot": [0.75, 1.92365, 2.01519],
|
||||
"cubes": [
|
||||
{"origin": [1.25, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 14]}
|
||||
{"origin": [0.75, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 14]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_inner_left",
|
||||
"name": "toe_back_outer_left",
|
||||
"parent": "foot_left",
|
||||
"pivot": [1.75, 1.92365, 1.01519],
|
||||
"rotation": [0, 12.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [1.75, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 18]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_back_outer_left2",
|
||||
"parent": "toe_back_outer_left",
|
||||
"pivot": [1.75, 1.92365, 2.01519],
|
||||
"cubes": [
|
||||
{"origin": [1.75, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 14]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_front_inner_left",
|
||||
"parent": "foot_left",
|
||||
"pivot": [1.25, 1.92365, -0.98481],
|
||||
"rotation": [0, 12.5, 0],
|
||||
@@ -291,15 +309,15 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_inner_left",
|
||||
"parent": "toe_inner_left",
|
||||
"name": "toe_front_inner_left2",
|
||||
"parent": "toe_front_inner_left",
|
||||
"pivot": [0.75, 1.92365, -1.98481],
|
||||
"cubes": [
|
||||
{"origin": [0.75, -0.07635, -2.98481], "size": [0, 1, 1], "uv": [4, 13]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_outer_left",
|
||||
"name": "toe_front_outer_left",
|
||||
"parent": "foot_left",
|
||||
"pivot": [1.25, 1.92365, -0.98481],
|
||||
"rotation": [0, -12.5, 0],
|
||||
@@ -308,8 +326,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_outer_left",
|
||||
"parent": "toe_outer_left",
|
||||
"name": "toe_front_outer_left2",
|
||||
"parent": "toe_front_outer_left",
|
||||
"pivot": [1.75, 1.92365, -1.98481],
|
||||
"cubes": [
|
||||
{"origin": [1.75, -0.07635, -2.98481], "size": [0, 1, 1], "uv": [4, 5]}
|
||||
@@ -343,23 +361,41 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_back_right",
|
||||
"name": "toe_back_inner_right",
|
||||
"parent": "foot_right",
|
||||
"pivot": [-1.25, 1.92365, 1.01519],
|
||||
"pivot": [-0.75, 1.92365, 1.01519],
|
||||
"rotation": [0, 12.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [-1.25, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 5]}
|
||||
{"origin": [-0.75, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 5]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_back_right",
|
||||
"parent": "toe_back_right",
|
||||
"pivot": [-1.25, 1.92365, 2.01519],
|
||||
"name": "toe_back_inner_right2",
|
||||
"parent": "toe_back_inner_right",
|
||||
"pivot": [-0.75, 1.92365, 2.01519],
|
||||
"cubes": [
|
||||
{"origin": [-1.25, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 4]}
|
||||
{"origin": [-0.75, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 4]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_inner_right",
|
||||
"name": "toe_back_inner_right3",
|
||||
"parent": "foot_right",
|
||||
"pivot": [-1.75, 1.92365, 1.01519],
|
||||
"rotation": [0, -12.5, 0],
|
||||
"cubes": [
|
||||
{"origin": [-1.75, -0.07635, 1.01519], "size": [0, 1, 1], "inflate": 0.01, "uv": [0, 5]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_back_inner_right4",
|
||||
"parent": "toe_back_inner_right3",
|
||||
"pivot": [-1.75, 1.92365, 2.01519],
|
||||
"cubes": [
|
||||
{"origin": [-1.75, -0.07635, 2.01519], "size": [0, 1, 1], "uv": [4, 4]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_front_inner_right",
|
||||
"parent": "foot_right",
|
||||
"pivot": [-1.25, 1.92365, -0.98481],
|
||||
"rotation": [0, -12.5, 0],
|
||||
@@ -368,15 +404,15 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_inner_right",
|
||||
"parent": "toe_inner_right",
|
||||
"name": "toe_front_inner_right2",
|
||||
"parent": "toe_front_inner_right",
|
||||
"pivot": [-0.75, 1.92365, -1.98481],
|
||||
"cubes": [
|
||||
{"origin": [-0.75, -0.07635, -2.98481], "size": [0, 1, 1], "uv": [4, 0]}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "toe_outer_right",
|
||||
"name": "toe_front_outer_right",
|
||||
"parent": "foot_right",
|
||||
"pivot": [-1.25, 1.92365, -0.98481],
|
||||
"rotation": [0, 12.5, 0],
|
||||
@@ -385,8 +421,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "claw_outer_right",
|
||||
"parent": "toe_outer_right",
|
||||
"name": "toe_front_outer_right2",
|
||||
"parent": "toe_front_outer_right",
|
||||
"pivot": [-1.75, 1.92365, -1.98481],
|
||||
"cubes": [
|
||||
{"origin": [-1.75, -0.07635, -2.98481], "size": [0, 1, 1], "uv": [0, 0]}
|
||||
|
||||
+41
-4
@@ -12,7 +12,11 @@
|
||||
"animations": [
|
||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('fearow', 'ground_idle')"
|
||||
"q.bedrock('fearow', 'ground_idle')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_ground_walk')"
|
||||
}
|
||||
],
|
||||
"transformedParts": [
|
||||
{
|
||||
@@ -38,7 +42,11 @@
|
||||
"animations": [
|
||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('fearow', 'ground_walk')"
|
||||
"q.bedrock('fearow', 'ground_walk')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_ground_walk')"
|
||||
}
|
||||
],
|
||||
"transformedParts": [
|
||||
{
|
||||
@@ -65,7 +73,11 @@
|
||||
"q.pitch_tilt('body')",
|
||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('fearow', 'air_idle')"
|
||||
"q.bedrock('fearow', 'air_idle')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_air_fly')"
|
||||
}
|
||||
],
|
||||
"transformedParts": [
|
||||
{
|
||||
@@ -88,11 +100,16 @@
|
||||
},
|
||||
"fly": {
|
||||
"poseTypes": ["FLY"],
|
||||
"condition": "!q.is_gliding",
|
||||
"animations": [
|
||||
"q.pitch_tilt('body')",
|
||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('fearow', 'air_fly')"
|
||||
"q.bedrock('fearow', 'air_fly')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_air_fly')"
|
||||
}
|
||||
],
|
||||
"transformedParts": [
|
||||
{
|
||||
@@ -117,6 +134,26 @@
|
||||
"poseTypes": ["SLEEP"],
|
||||
"animations": ["q.bedrock('fearow', 'sleep')"],
|
||||
"namedAnimations": {"cry": "q.bedrock_stateful('dummy', 'cry')"}
|
||||
},
|
||||
"glide": {
|
||||
"poseTypes": ["FLY"],
|
||||
"condition": "q.is_gliding",
|
||||
"animations": [
|
||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||
"q.look('head_ai')",
|
||||
"q.bedrock('fearow', 'air_glide')",
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_air_fly')"
|
||||
},
|
||||
{
|
||||
"condition": "q.is_ridden",
|
||||
"animation": "q.bedrock('fearow', 'ride_dive')"
|
||||
}
|
||||
],
|
||||
"quirks": [
|
||||
"q.bedrock_quirk('fearow', 'blink')"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"match": {
|
||||
"items": "cobblemon:magmarizer"
|
||||
},
|
||||
"luminance": 15
|
||||
}
|
||||
@@ -2514,6 +2514,8 @@
|
||||
"cobblemon.config.ui.allow_spectating.tooltip": "Whether to allow battles to be spectated.",
|
||||
"cobblemon.config.ui.experience_multiplier": "Experience Multiplier",
|
||||
"cobblemon.config.ui.experience_multiplier.tooltip": "Additional Exp. multiplier for Exp. calculation.",
|
||||
"cobblemon.config.ui.predation_chance": "Pokémon predation chance",
|
||||
"cobblemon.config.ui.predation_chance.tooltip": "Chance of Pokémon predating the enemy",
|
||||
"cobblemon.config.ui.pokemon_per_chunk": "Pokémon per Chunk",
|
||||
"cobblemon.config.ui.pokemon_per_chunk.tooltip": "The amount of Pokémon allowed within a Chunk when spawning.",
|
||||
"cobblemon.config.ui.poke_snack_pokemon_per_chunk": "Poké Snack Pokémon per Chunk",
|
||||
@@ -3650,7 +3652,6 @@
|
||||
"tag.item.cobblemon.mochis": "Mochis",
|
||||
"tag.item.cobblemon.poke_food": "Poké Foods",
|
||||
"tag.item.cobblemon.full_heal_bottles": "Full Heal Bottles",
|
||||
"tag.item.cobblemon.small_flowers": "Small Flowers",
|
||||
"tag.item.cobblemon.held.blacklisted_items_to_hold": "Blacklisted Held Items",
|
||||
"tag.item.cobblemon.held.whitelisted_items_to_hold": "Whitelisted Held Items",
|
||||
"tag.item.cobblemon.recipe_filters.poke_puff_seasoning": "Poké Puff Seasoning Items",
|
||||
|
||||
@@ -855,7 +855,7 @@
|
||||
"advancements.cobblemon.obtain_berry.description": "地表に育ち多くの用途を持つ、きのみを手に入れる",
|
||||
"advancements.cobblemon.obtain_mutated_berry": "想定外の結果",
|
||||
"advancements.cobblemon.obtain_mutated_berry.description": "違う種類のきのみの木を隣り合わせに植えて突然変異を目撃する",
|
||||
"advancements.cobblemon.obtain_all_berries": "もぎもぎフルーツ",
|
||||
"advancements.cobblemon.obtain_all_berries": "もぎってナッツ",
|
||||
"advancements.cobblemon.obtain_all_berries.description": "Cobblemonに登場する全てのきのみを集める",
|
||||
"advancements.cobblemon.use_pasture": "みんなのポケモン牧場",
|
||||
"advancements.cobblemon.use_pasture.description": "ぼくじょうブロックを作りポケモンを放し飼いにする",
|
||||
@@ -6219,7 +6219,7 @@
|
||||
"cobblemon.egg_group.water_2": "水中②",
|
||||
"cobblemon.egg_group.ditto": "メタモン",
|
||||
"cobblemon.egg_group.dragon": "ドラゴン",
|
||||
"cobblemon.egg_group.undiscovered": "タマゴ未発見",
|
||||
"cobblemon.egg_group.undiscovered": "未発見",
|
||||
"cobblemon.trade.canceled.sender": "%1$s との交換リクエストをキャンセルしました。",
|
||||
"cobblemon.trade.canceled.receiver": "%1$s が交換リクエストをキャンセルしました...",
|
||||
"cobblemon.trade.sent": "%1$s との交換をリクエストしました。",
|
||||
@@ -6981,7 +6981,7 @@
|
||||
"cobblemon.mark.ribbon_contest_sinnoh_tough_3.desc": "スーパーコンテスト たくましさ部門 ウルトラランク 優勝!",
|
||||
"cobblemon.mark.ribbon_contest_sinnoh_tough_4": "パワフルリボンマスター",
|
||||
"cobblemon.mark.ribbon_contest_super_master_beauty": "うつくしさマスターリボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_beauty.title": "とうじきれいだった %1$s",
|
||||
"cobblemon.mark.ribbon_contest_super_master_beauty.title": "とうじからきれいな %1$s",
|
||||
"cobblemon.mark.ribbon_contest_super_master_beauty.desc": "コンテストで うつくしさを 発揮した ポケモンに 贈られる 記念リボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_cleverness": "かしこさマスターリボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_cleverness.title": "てんさいとよばれた %1$s",
|
||||
@@ -7002,7 +7002,7 @@
|
||||
"cobblemon.mark.ribbon_contest_super_master_coolness": "かっこよさマスターリボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_cuteness.desc": "コンテストで かわいさを 発揮した ポケモンに 贈られる 記念リボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_toughness": "たくましさマスターリボン",
|
||||
"cobblemon.mark.ribbon_contest_super_master_toughness.title": "ムキムキの %1$s",
|
||||
"cobblemon.mark.ribbon_contest_super_master_toughness.title": "むかしからムキムキの %1$s",
|
||||
"cobblemon.mark.ribbon_contest_super_master_toughness.desc": "コンテストで たくましさを 発揮した ポケモンに 贈られる 記念リボン",
|
||||
"cobblemon.mark.ribbon_contest_super_star": "コンテストスターリボン",
|
||||
"cobblemon.mark.ribbon_contest_super_star.title": "でんせつてきスターの %1$s",
|
||||
@@ -9243,7 +9243,7 @@
|
||||
"cobblemon.ui.moves.learnset.tm.discovered": "発見済み",
|
||||
"cobblemon.ui.moves.level": "レベルアップ",
|
||||
"cobblemon.ui.moves.egg": "タマゴ技",
|
||||
"cobblemon.ui.moves.tm": "わざマシン",
|
||||
"cobblemon.ui.moves.tm": "わざマシン",
|
||||
"cobblemon.ui.tm_machine.can_learn": "覚えられる",
|
||||
"cobblemon.ui.tm_machine.cannot_learn": "覚えられない",
|
||||
"cobblemon.ui.tm_machine.learned": "覚えている",
|
||||
@@ -9596,5 +9596,42 @@
|
||||
"cobblemon.config.ui.world_spawning_blocklist": "ワールドごとのスポーンブロックリスト",
|
||||
"cobblemon.config.ui.world_spawning_blocklist.tooltip": "ポケモンの出現ロジックを無効にするワールド。",
|
||||
"advancements.cobblemon.obtain_tm": "Show Me Your Moves!",
|
||||
"advancements.cobblemon.obtain_tm.description": "わざマシンを見つけるか、印刷する"
|
||||
"advancements.cobblemon.obtain_tm.description": "わざマシンを見つけるか、印刷する",
|
||||
"itemGroup.cobblemon.tm_item": "Cobblemon:わざマシン",
|
||||
"block.cobblemon.wistensu": "フジブヨウ",
|
||||
"block.cobblemon.lobaila": "ミゾグレン",
|
||||
"block.cobblemon.pauvillea": "フラビリア",
|
||||
"block.cobblemon.pomohana": "ポンノハナ",
|
||||
"block.cobblemon.voltaconia": "ボルトコニア",
|
||||
"block.cobblemon.verdroot": "ミノルート",
|
||||
"block.cobblemon.lucibell": "サイヴェル",
|
||||
"block.cobblemon.mistleaf": "ミストリーフ",
|
||||
"cobblemon.ui.pokedex.info.evolution_tree": "進化の流れ",
|
||||
"cobblemon.ui.pokedex.evolution.item_interact.tooltip": "%1$sが必要",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_species": "%1$sとのポケモン交換で進化",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_any_species": "ポケモン交換で進化",
|
||||
"cobblemon.ui.pokedex.evolution.shedder.tooltip": "予備のモンスターボールと手持ちの空きが必要",
|
||||
"cobblemon.ui.pokedex.evolution.or": "または",
|
||||
"cobblemon.ui.pokedex.evolution.one_of": "以下のいずれか:",
|
||||
"cobblemon.ui.pokedex.requirement.advancement.tooltip": "プレイヤーが進捗 %1$sを達成している必要あり",
|
||||
"cobblemon.ui.pokedex.requirement.battle_critical_hits.tooltip": "バトルで%1$s回急所に当てる",
|
||||
"cobblemon.ui.pokedex.requirement.biome.anticondition.tooltip": "%1$sバイオームでは進化出来ない",
|
||||
"cobblemon.ui.pokedex.requirement.biome.both.tooltip": "%2$sを除いた%1$sバイオームでのみ進化",
|
||||
"cobblemon.ui.pokedex.requirement.biome.tooltip": "%1$sバイオームでのみ進化",
|
||||
"cobblemon.ui.pokedex.requirement.blocks_traveled.tooltip": "%1$sブロック分旅をする",
|
||||
"cobblemon.ui.pokedex.requirement.damage_taken.tooltip": "バトルで倒れず%1$sダメージ受ける",
|
||||
"cobblemon.ui.pokedex.requirement.defeat.tooltip": "進化するためにはバトルで%1$sを倒す",
|
||||
"cobblemon.ui.pokedex.requirement.friendship.tooltip": "なかよし度%1$sが必要",
|
||||
"cobblemon.ui.pokedex.requirement.has_move.tooltip": "%1$sを覚える必要がある",
|
||||
"cobblemon.ui.pokedex.requirement.has_move_type.tooltip": "%1$sタイプの技を覚えておく必要がある",
|
||||
"cobblemon.ui.pokedex.requirement.held_item.tooltip": "%1$sを持っている必要がある",
|
||||
"cobblemon.ui.pokedex.requirement.level.tooltip.min": "レベル%1$sから進化",
|
||||
"cobblemon.ui.pokedex.requirement.party_member.tooltip": "レベルが%1$sから%2$sの間で進化",
|
||||
"cobblemon.ui.pokedex.requirement.pokemon_properties.tooltip": "%1$sでなければいけない",
|
||||
"cobblemon.ui.pokedex.requirement.properties.and": "%1$s と %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.level.tooltip.between": "レベルが%1$sから%2$sの間で進化",
|
||||
"cobblemon.ui.pokedex.requirement.moon_phase.tooltip": "月の満ち欠けが%1$sでなければいけない",
|
||||
"cobblemon.ui.pokedex.requirement.nature.toxtricity_amped": "性格が§aがんばりや§r、 §aゆうかん§r、 §aいじっぱり§r、 §aやんちゃ§r、 §aすなお§r、 §aわんぱく§r、 §aのうてんき§r、 §aせっかち§r、 §aようき§r、 §aむじゃき§r、 §aうっかりや§r、 §aなまいき§r、 §aきまぐれ§rのどれか",
|
||||
"cobblemon.ui.pokedex.requirement.nature.toxtricity_low_key": "性格が§aさみしがり§r、 §aずぶとい§r、 §aのんき§r、 §aおくびょう§r、 §aまじめ§r、 §aひかえめ§r、 §aおっとり§r、 §aれいせい§r、 §aてれや§r、 §aおだやか§r、 §a\tおとなしい§r、 §aしんちょう§rのどれか",
|
||||
"cobblemon.ui.pokedex.requirement.nickname.malamar": "ニックネームを§aDinnerbone§rか§aGrumm§rにする"
|
||||
}
|
||||
|
||||
@@ -9413,5 +9413,114 @@
|
||||
"cobblemon.ui.pokedex.info.form.tatsugiri-stretchymega": "Mega Tatsugiri Forma Estendida",
|
||||
"cobblemon.species.tatsugiri-stretchymega.desc": "Usando a energia da Mega Evolução, cria um prato onde repousar, permitindo com que se mova com mobilidade total até mesmo pelo ar.",
|
||||
"cobblemon.ui.pokedex.info.form.baxcalibur-mega": "Mega Baxcalibur",
|
||||
"cobblemon.species.baxcalibur-mega.desc": "A lâmina dorsal de Baxcalibur ficou ainda maior graças à Mega Evolução. Esse Pokémon dispara feixes do cabo localizado em seu peito."
|
||||
"cobblemon.species.baxcalibur-mega.desc": "A lâmina dorsal de Baxcalibur ficou ainda maior graças à Mega Evolução. Esse Pokémon dispara feixes do cabo localizado em seu peito.",
|
||||
"itemGroup.cobblemon.tm_item": "Cobblemon: Máquinas Técnicas",
|
||||
"block.cobblemon.pomohana": "Pomohana",
|
||||
"block.cobblemon.pauvillea": "Pa'uvillea",
|
||||
"block.cobblemon.lobaila": "Lobaila",
|
||||
"block.cobblemon.wistensu": "Wistensu",
|
||||
"block.cobblemon.voltaconia": "Voltaconia",
|
||||
"block.cobblemon.verdroot": "Verdroot",
|
||||
"block.cobblemon.lucibell": "Lucibell",
|
||||
"block.cobblemon.mistleaf": "Mistleaf",
|
||||
"cobblemon.ui.pokedex.info.evolution_tree": "Árvore Evolutiva",
|
||||
"cobblemon.ui.pokedex.evolution.item_interact.tooltip": "Precisa do item %1$s para evoluir",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_species": "Evolui quando trocado segurando %1$s",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_any_species": "Evolui quando trocado",
|
||||
"cobblemon.ui.pokedex.evolution.shedder.tooltip": "Também requer uma Pokébola extra e um espaço vazio na equipe",
|
||||
"cobblemon.ui.pokedex.evolution.or": "OU",
|
||||
"cobblemon.ui.pokedex.evolution.one_of": "Um de:",
|
||||
"cobblemon.ui.pokedex.requirement.advancement.tooltip": "Jogador precisa ter a conquista %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.battle_critical_hits.tooltip": "Precisa acertar %1$s acertos críticos em batalha",
|
||||
"cobblemon.ui.pokedex.requirement.biome.anticondition.tooltip": "Não pode estar no bioma %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.biome.both.tooltip": "Precisa estar no bioma %1$s e não no bioma %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.biome.tooltip": "Precisa estar no bioma %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.blocks_traveled.tooltip": "Precisa viajar %1$s blocos",
|
||||
"cobblemon.ui.pokedex.requirement.damage_taken.tooltip": "Precisa receber %1$s de dano em uma batalha sem desmaiar",
|
||||
"cobblemon.ui.pokedex.requirement.defeat.tooltip": "Precisa derrotar %1$s em batalha para evoluir",
|
||||
"cobblemon.ui.pokedex.requirement.friendship.tooltip": "Requer no mínimo %1$s de amizade",
|
||||
"cobblemon.ui.pokedex.requirement.has_move.tooltip": "Precisa conhecer o movimento %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.has_move_type.tooltip": "Precisa conhecer um movimento do tipo %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.held_item.tooltip": "Precisa estar segurando %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.level.tooltip.min": "Evolui ao ultrapassar o nível %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.level.tooltip.between": "Evoluiu entre os níveis %1$s e %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.moon_phase.tooltip": "Precisa evoluir na fase %1$s da lua",
|
||||
"cobblemon.ui.pokedex.requirement.nature.toxtricity_amped": "Precisa ter a natureza §aDestemida§r, §aValente§r, §aRígida§r, §aTeimosa§r, §aDócil§r, §aInquieta§r, §aRelaxada§r, §aApressada§r, §aAlegre§r, §aInguênua§r, §aImprudente§r, §aAtrevida§r, ou §aPeculiar§r",
|
||||
"cobblemon.ui.pokedex.requirement.nature.toxtricity_low_key": "Precisa ter a natureza §aSolitária§r, §aCorajosa§r, §aDescontraída§r, §aTímida§r, §aSéria§r, §aModesta§r, §aMansa§r, §aQuieta§r, §aAtrapalhada§r, §aCalma§r, §aGentil§r, ou §aCuidadosa§r",
|
||||
"cobblemon.ui.pokedex.requirement.negate.tooltip": "Não: %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.nickname.malamar": "Precisa se chamar §aDinnerbone§r ou §aGrumm§r",
|
||||
"cobblemon.ui.pokedex.requirement.party_member.anticondition.tooltip": "Equipe não pode ter um Pokémon com %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.party_member.tooltip": "Equipe precisa ter um Pokémon com %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.pokemon_properties.tooltip": "Precisa estar %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.and": "%1$s e %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.custom.cocoon_species": "Casulo %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.held_item": "Segurando %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.int_feature": "%1$s %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.nature": "Natureza %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.nickname": "Nomeado %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.properties.type": "Tipo %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.property_range.tooltip": "Requer %1$s entre %2$s e %3$s",
|
||||
"cobblemon.ui.pokedex.requirement.recoil.tooltip": "Precisa sofrer %1$s unidades de recuo em batalha",
|
||||
"cobblemon.ui.pokedex.requirement.stat_compare.tooltip": "Precisa ter seu %1$s acima de %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.stat_equal.tooltip": "Precisa ter seu %1$s igual ao seu %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.structure.anticondition.tooltip": "Não pode estar na estrutura %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.structure.both.tooltip": "Precisa estar na estrutura %1$s e não na estrutura %2$s",
|
||||
"cobblemon.ui.pokedex.requirement.structure.tooltip": "Precisa estar na estrutura %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.time_range.tooltip": "Precisa evoluir durante %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.use_move.tooltip": "Precisa usar o movimento %1$s em batalha",
|
||||
"cobblemon.ui.pokedex.requirement.weather.tooltip.raining": "Precisa estar na chuva para evoluir",
|
||||
"cobblemon.ui.pokedex.requirement.weather.tooltip.thundering": "Precisa estar em uma tempestade para evoluir",
|
||||
"cobblemon.ui.moon_phase.full_moon": "Lua Cheia",
|
||||
"cobblemon.ui.moon_phase.waning_gibbous": "Crescente Gibosa",
|
||||
"cobblemon.ui.moon_phase.third_quarter": "Quarto Crescente",
|
||||
"cobblemon.ui.moon_phase.waning_crescent": "Crescente",
|
||||
"cobblemon.ui.moon_phase.new_moon": "Lua Nova",
|
||||
"cobblemon.ui.moon_phase.waxing_crescent": "Minguante",
|
||||
"cobblemon.ui.moon_phase.first_quarter": "Quarto Minguante",
|
||||
"cobblemon.ui.moon_phase.waxing_gibbous": "Minguante Gibosa",
|
||||
"cobblemon.ui.time_range.any": "Qualquer",
|
||||
"cobblemon.ui.time_range.day": "Dia",
|
||||
"cobblemon.ui.time_range.night": "Noite",
|
||||
"cobblemon.ui.time_range.noon": "Meio-dia",
|
||||
"cobblemon.ui.time_range.midnight": "Meia-noite",
|
||||
"cobblemon.ui.time_range.dawn": "Alvorecer",
|
||||
"cobblemon.ui.time_range.dusk": "Entardecer",
|
||||
"cobblemon.ui.time_range.twilight": "Crepúsculo",
|
||||
"cobblemon.ui.time_range.morning": "Manhã",
|
||||
"cobblemon.ui.time_range.afternoon": "Tarde",
|
||||
"cobblemon.ui.time_range.predawn": "Pré-amanhecer",
|
||||
"cobblemon.ui.time_range.evening": "Tardinha",
|
||||
"cobblemon.subtitle.item.bright_powder.use": "Pó Brilhante ilumina",
|
||||
"cobblemon.config.ui.type_gem_max_connected": "Máximo de Blocos de Gema de Tipo Conectados",
|
||||
"cobblemon.config.ui.type_gem_min_growth": "Mínimo de Crescimento de Gema de Tipo",
|
||||
"cobblemon.config.ui.type_gem_growth_chance": "Chance de Crescimento de Gema de Tipo",
|
||||
"cobblemon.config.ui.type_gem_initial_expansion_cycles": "Cíclos de Expansão Iniciais de Gemas de Tipo",
|
||||
"cobblemon.battle.activate.ficklebeam": "%1$s vai com tudo neste próximo ataque!",
|
||||
"tag.item.cobblemon.oricorio_flowers": "Flores de Néctar",
|
||||
"tag.item.cobblemon.terrain_plants": "Plantas de Terreno",
|
||||
"tag.item.cobblemon.tall_flowers": "Flores Altas",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.bergmite_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.bergmite_kalosbiome": "Kalosiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.cubone_alolabiome": "Alolano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.cubone_kantobiome": "Kantoniano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.dartrix_alolabiome": "Alolano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.dartrix_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.dewott_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.dewott_unovabiome": "Unovano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.exeggcute_alolabiome": "Alolano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.exeggcute_kantobiome": "Kantoniano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.goomy_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.goomy_kalosbiome": "Kalosiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.koffing_galarbiome": "Galariano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.koffing_kantobiome": "Kantoniano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.mimejr_galarbiome": "Galariano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.mimejr_sinnohbiome": "Sinnohano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.petilil_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.petilil_unovabiome": "Unovano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.pikachu_alolabiome": "Alolano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.pikachu_kantobiome": "Kantoniano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.quilava_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.quilava_johtobiome": "Johtoniano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.rufflet_hisuibiome": "Hisuiano",
|
||||
"tag.worldgen.biome.cobblemon.evolution.regional.rufflet_unovabiome": "Unovano"
|
||||
}
|
||||
|
||||
@@ -9021,5 +9021,34 @@
|
||||
"cobblemon.config.ui.world_spawning_blocklist.tooltip": "Миры, в которых отключается принцип появления покемонов.",
|
||||
"advancements.cobblemon.obtain_tm.description": "Найдите или напечатайте ТМ",
|
||||
"cobblemon.species.victreebel-mega.desc": "В результате Мега эволюции объём кислоты у этого покемона увеличился, заполняя весь его рот. Если он не будет осторожен, кислота переполнится и выльется наружу.",
|
||||
"cobblemon.ui.pokedex.info.form.victreebel-mega": "Мега Виктрибелл"
|
||||
"cobblemon.ui.pokedex.info.form.victreebel-mega": "Мега Виктрибелл",
|
||||
"itemGroup.cobblemon.tm_item": "Технические машины",
|
||||
"block.cobblemon.pomohana": "Помохана",
|
||||
"block.cobblemon.pauvillea": "Па'увилия",
|
||||
"block.cobblemon.lobaila": "Лобалия",
|
||||
"block.cobblemon.wistensu": "Вистенсу",
|
||||
"block.cobblemon.voltaconia": "Вольтакония",
|
||||
"block.cobblemon.verdroot": "Вердрут",
|
||||
"block.cobblemon.lucibell": "Люсибель",
|
||||
"block.cobblemon.mistleaf": "Мистлиф",
|
||||
"cobblemon.ui.pokedex.info.evolution_tree": "Древо эволюции",
|
||||
"cobblemon.ui.pokedex.evolution.item_interact.tooltip": "Требуется %1$s для эволюции",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_species": "Эволюционирует при обмене с %1$s",
|
||||
"cobblemon.ui.pokedex.evolution.trade.tooltip.with_any_species": "Эволюционирует при обмене",
|
||||
"cobblemon.ui.pokedex.evolution.shedder.tooltip": "Также требует запасной покебол и свободное место в команде",
|
||||
"cobblemon.ui.pokedex.evolution.or": "ИЛИ",
|
||||
"cobblemon.ui.pokedex.evolution.one_of": "Один из:",
|
||||
"cobblemon.ui.pokedex.requirement.advancement.tooltip": "У игрока должно быть достижение %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.battle_critical_hits.tooltip": "Должен попасть %1$s критическими ударами в битве",
|
||||
"cobblemon.ui.pokedex.requirement.biome.anticondition.tooltip": "Не должен быть в %1$s биоме",
|
||||
"cobblemon.ui.pokedex.requirement.biome.both.tooltip": "Должен быть в %1$s биоме и не в %2$s биоме",
|
||||
"cobblemon.ui.pokedex.requirement.biome.tooltip": "Должен быть в %1$s биоме",
|
||||
"cobblemon.ui.pokedex.requirement.blocks_traveled.tooltip": "Должен пройти %1$s блоков",
|
||||
"cobblemon.ui.pokedex.requirement.damage_taken.tooltip": "Должен получить %1$s урона в битве без поражения",
|
||||
"cobblemon.ui.pokedex.requirement.defeat.tooltip": "Должен победить против %1$s в битве для эволюции",
|
||||
"cobblemon.ui.pokedex.requirement.friendship.tooltip": "Требует как минимум %1$s дружбы",
|
||||
"cobblemon.ui.pokedex.requirement.has_move.tooltip": "Должен знать приём %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.has_move_type.tooltip": "Должен знать приём %1$s типа",
|
||||
"cobblemon.ui.pokedex.requirement.held_item.tooltip": "Должен удерживать %1$s",
|
||||
"cobblemon.ui.pokedex.requirement.level.tooltip.min": "Эволюционирует начиная с %1$s уровня"
|
||||
}
|
||||
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"showdownVersion": 18
|
||||
"showdownVersion": 19
|
||||
}
|
||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"condition": {
|
||||
"minY": 62,
|
||||
"minY": 48,
|
||||
"neededBaseBlocks": [
|
||||
"minecraft:sandstone"
|
||||
],
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"minecraft:end_city"
|
||||
],
|
||||
"neededBaseBlocks": [
|
||||
"minecraft:end_stone_bricks",
|
||||
"minecraft:purpur_block",
|
||||
"minecraft:purpur_pillar"
|
||||
],
|
||||
"neededNearbyBlocks": [
|
||||
"#cobblemon:end_city_blocks"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"minecraft:pillager_outpost",
|
||||
"minecraft:swamp_hut",
|
||||
"minecraft:mansion"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"condition": {
|
||||
"minY": 62,
|
||||
"minY": 48,
|
||||
"neededBaseBlocks": [
|
||||
"minecraft:cobblestone",
|
||||
"minecraft:mossy_cobblestone"
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"minecraft:bastion_remnant",
|
||||
"minecraft:fortress"
|
||||
],
|
||||
"neededBaseBlocks": [
|
||||
"minecraft:chiseled_polished_blackstone",
|
||||
"minecraft:cracked_polished_blackstone_bricks",
|
||||
"minecraft:gilded_blackstone",
|
||||
"minecraft:nether_bricks",
|
||||
"minecraft:polished_basalt",
|
||||
"minecraft:polished_blackstone_bricks"
|
||||
],
|
||||
"neededNearbyBlocks": [
|
||||
"#cobblemon:nether_structure_blocks"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"#minecraft:ocean_ruin"
|
||||
],
|
||||
"maxY": 62,
|
||||
"neededNearbyBlocks": [
|
||||
"#cobblemon:ocean_ruin_blocks"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"condition": {
|
||||
"structures": [
|
||||
"minecraft:pillager_outpost"
|
||||
],
|
||||
"minY": 62,
|
||||
"neededNearbyBlocks": [
|
||||
"#cobblemon:pillager_outpost_blocks"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,9 @@
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"biomes": [
|
||||
"#cobblemon:is_spooky",
|
||||
"#cobblemon:is_freezing"
|
||||
@@ -188,6 +191,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -232,6 +240,37 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "zubat-8",
|
||||
"pokemon": "zubat",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "1-25",
|
||||
"weight": 27.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 2.0,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 0,
|
||||
"maxSkyLight": 7,
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"biomes": [
|
||||
"#cobblemon:is_spooky",
|
||||
"#cobblemon:is_freezing"
|
||||
@@ -188,6 +191,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -232,6 +240,37 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "golbat-8",
|
||||
"pokemon": "golbat",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "22-46",
|
||||
"weight": 2.7,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 2.0,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 0,
|
||||
"maxSkyLight": 7,
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -155,7 +155,7 @@
|
||||
"#cobblemon:is_arid"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -163,8 +163,7 @@
|
||||
"id": "meowth-alolan-5",
|
||||
"pokemon": "meowth alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
"illager_structures"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -191,7 +190,11 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"isRaining": false
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -204,8 +207,7 @@
|
||||
"id": "meowth-alolan-6",
|
||||
"pokemon": "meowth alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
"illager_structures"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -232,15 +234,16 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_arid",
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "meowth-alolan-7",
|
||||
"pokemon": "meowth alolan",
|
||||
"presets": [
|
||||
"illager_structures"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "uncommon",
|
||||
@@ -257,6 +260,9 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
@@ -312,7 +318,7 @@
|
||||
"#cobblemon:is_taiga"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -155,7 +155,7 @@
|
||||
"#cobblemon:is_arid"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -163,8 +163,7 @@
|
||||
"id": "persian-alolan-5",
|
||||
"pokemon": "persian alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
"illager_structures"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -191,7 +190,11 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"isRaining": false
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -204,8 +207,7 @@
|
||||
"id": "persian-alolan-6",
|
||||
"pokemon": "persian alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
"illager_structures"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -232,15 +234,16 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_arid",
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "persian-alolan-7",
|
||||
"pokemon": "persian alolan",
|
||||
"presets": [
|
||||
"illager_structures"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "uncommon",
|
||||
@@ -257,6 +260,9 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_structure"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -220,7 +220,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -339,7 +339,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -414,7 +414,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -220,7 +220,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -339,7 +339,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -414,7 +414,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"#aether:is_aether",
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxLight": 7
|
||||
"maxLight": 0
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -88,6 +88,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"maxLight": 7
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -107,6 +112,36 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "gastly-5",
|
||||
"pokemon": "gastly",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "6-31",
|
||||
"weight": 72.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#minecraft:is_nether"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"#aether:is_aether",
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxLight": 7
|
||||
"maxLight": 0
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -88,6 +88,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"maxLight": 7
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -107,6 +112,36 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "haunter-5",
|
||||
"pokemon": "haunter",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "25-41",
|
||||
"weight": 7.6,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#minecraft:is_nether"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"#aether:is_aether",
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"maxLight": 7
|
||||
"maxLight": 0
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -88,6 +88,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"maxLight": 7
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -107,6 +112,36 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "gengar-5",
|
||||
"pokemon": "gengar",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "36-50",
|
||||
"weight": 0.4,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#minecraft:is_nether"
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -36,7 +36,37 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cubone-alola-2",
|
||||
"id": "cubone-2",
|
||||
"pokemon": "cubone",
|
||||
"presets": [
|
||||
"natural",
|
||||
"wild"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "7-32",
|
||||
"weight": 43.2,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cubone-alola-3",
|
||||
"pokemon": "cubone region_bias=alola",
|
||||
"presets": [
|
||||
"natural",
|
||||
@@ -62,7 +92,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cubone-alola-3",
|
||||
"id": "cubone-alola-4",
|
||||
"pokemon": "cubone region_bias=alola",
|
||||
"presets": [
|
||||
"natural",
|
||||
|
||||
@@ -36,7 +36,37 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "marowak-alolan-2",
|
||||
"id": "marowak-2",
|
||||
"pokemon": "marowak",
|
||||
"presets": [
|
||||
"natural",
|
||||
"wild"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "28-43",
|
||||
"weight": 4.8,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "marowak-alolan-3",
|
||||
"pokemon": "marowak alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
@@ -62,7 +92,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "marowak-alolan-3",
|
||||
"id": "marowak-alolan-4",
|
||||
"pokemon": "marowak alolan",
|
||||
"presets": [
|
||||
"natural",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -141,7 +141,7 @@
|
||||
"#cobblemon:is_freezing"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"#cobblemon:is_freezing"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -186,8 +186,7 @@
|
||||
"id": "dratini-7",
|
||||
"pokemon": "dratini",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -204,7 +203,11 @@
|
||||
"canSeeSky": true,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -252,8 +255,7 @@
|
||||
"id": "dratini-10",
|
||||
"pokemon": "dratini",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -272,7 +274,11 @@
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -186,8 +186,7 @@
|
||||
"id": "dragonair-7",
|
||||
"pokemon": "dragonair",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -204,7 +203,11 @@
|
||||
"canSeeSky": true,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -252,8 +255,7 @@
|
||||
"id": "dragonair-10",
|
||||
"pokemon": "dragonair",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -272,7 +274,11 @@
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -135,8 +135,7 @@
|
||||
"id": "dragonite-7",
|
||||
"pokemon": "dragonite",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -147,7 +146,11 @@
|
||||
"canSeeSky": true,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -195,8 +198,7 @@
|
||||
"id": "dragonite-10",
|
||||
"pokemon": "dragonite",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_ruins"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -209,7 +211,11 @@
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_ruins"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"biomes": [
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
@@ -102,6 +106,37 @@
|
||||
{
|
||||
"id": "spinarak-5",
|
||||
"pokemon": "spinarak",
|
||||
"presets": [
|
||||
"natural",
|
||||
"treetop"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "1-25",
|
||||
"weight": 54.0,
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "spinarak-6",
|
||||
"pokemon": "spinarak",
|
||||
"presets": [
|
||||
"mansion"
|
||||
],
|
||||
@@ -118,11 +153,6 @@
|
||||
"neededNearbyBlocks": [
|
||||
"minecraft:cobweb"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"minecraft:sulfur_caves"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -33,6 +33,10 @@
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"biomes": [
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
@@ -126,6 +130,43 @@
|
||||
{
|
||||
"id": "ariados-5",
|
||||
"pokemon": "ariados",
|
||||
"presets": [
|
||||
"natural",
|
||||
"treetop"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "22-40",
|
||||
"weight": 4.8,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_freezing"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ariados-6",
|
||||
"pokemon": "ariados",
|
||||
"presets": [
|
||||
"mansion"
|
||||
],
|
||||
@@ -148,11 +189,6 @@
|
||||
"neededNearbyBlocks": [
|
||||
"minecraft:cobweb"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"minecraft:sulfur_caves"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"biomes": [
|
||||
"#cobblemon:is_spooky",
|
||||
"#cobblemon:is_freezing"
|
||||
@@ -188,6 +191,11 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"isRaining": false
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -232,6 +240,37 @@
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "crobat-8",
|
||||
"pokemon": "crobat",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "41-54",
|
||||
"weight": 0.3,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 2.0,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 0,
|
||||
"maxSkyLight": 7,
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -28,6 +28,12 @@
|
||||
"#cobblemon:is_spooky"
|
||||
],
|
||||
"isPokeSnack": true
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -52,6 +58,12 @@
|
||||
],
|
||||
"timeRange": "night",
|
||||
"isPokeSnack": true
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -66,6 +78,38 @@
|
||||
"bucket": "common",
|
||||
"level": "16-41",
|
||||
"weight": 57.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.5,
|
||||
"condition": {
|
||||
"timeRange": "night"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure",
|
||||
"#cobblemon:spawns/is_graveyard"
|
||||
],
|
||||
"minY": 62,
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "murkrow-4",
|
||||
"pokemon": "murkrow",
|
||||
"presets": [
|
||||
"natural",
|
||||
"treetop"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "16-41",
|
||||
"weight": 57.0,
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
|
||||
@@ -119,6 +119,11 @@
|
||||
"#cobblemon:is_swamp"
|
||||
],
|
||||
"timeRange": "night"
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -131,6 +136,36 @@
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "19-44",
|
||||
"weight": 76.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"minSkyLight": 8,
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_witch_structure"
|
||||
],
|
||||
"minY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "misdreavus-6",
|
||||
"pokemon": "misdreavus",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "19-44",
|
||||
"weight": 45.6,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
@@ -145,7 +180,7 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "misdreavus-6",
|
||||
"id": "misdreavus-7",
|
||||
"pokemon": "misdreavus",
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -168,11 +203,6 @@
|
||||
],
|
||||
"minY": -41,
|
||||
"maxY": 9
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_deep_dark"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -37,8 +37,7 @@
|
||||
"id": "qwilfish-2",
|
||||
"pokemon": "qwilfish",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_monument"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -55,7 +54,11 @@
|
||||
"canSeeSky": true,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
],
|
||||
"maxY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -82,7 +85,7 @@
|
||||
"anticondition": {
|
||||
"minLureLevel": 1,
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -111,7 +114,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -136,7 +139,7 @@
|
||||
"#cobblemon:is_ocean"
|
||||
],
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -174,7 +177,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -182,8 +185,7 @@
|
||||
"id": "qwilfish-7",
|
||||
"pokemon": "qwilfish",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_monument"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -202,7 +204,11 @@
|
||||
"maxSkyLight": 15,
|
||||
"biomes": [
|
||||
"#cobblemon:is_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
],
|
||||
"maxY": 62
|
||||
},
|
||||
"anticondition": {
|
||||
"biomes": [
|
||||
@@ -231,7 +237,7 @@
|
||||
"anticondition": {
|
||||
"minLureLevel": 1,
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -262,7 +268,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -289,7 +295,7 @@
|
||||
"#cobblemon:is_ocean"
|
||||
],
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -417,7 +423,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -425,8 +431,7 @@
|
||||
"id": "qwilfish-hisuian-15",
|
||||
"pokemon": "qwilfish hisuian",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_monument"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -444,7 +449,11 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_cold_ocean",
|
||||
"#cobblemon:is_frozen_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -464,7 +473,7 @@
|
||||
"anticondition": {
|
||||
"minLureLevel": 1,
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -492,7 +501,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -518,7 +527,7 @@
|
||||
"#cobblemon:is_frozen_ocean"
|
||||
],
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -549,7 +558,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -557,8 +566,7 @@
|
||||
"id": "qwilfish-hisuian-20",
|
||||
"pokemon": "qwilfish hisuian",
|
||||
"presets": [
|
||||
"water",
|
||||
"ocean_monument"
|
||||
"water"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "submerged",
|
||||
@@ -578,7 +586,11 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_cold_ocean",
|
||||
"#cobblemon:is_frozen_ocean"
|
||||
]
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
],
|
||||
"maxY": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -600,7 +612,7 @@
|
||||
"anticondition": {
|
||||
"minLureLevel": 1,
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -630,7 +642,7 @@
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -658,7 +670,7 @@
|
||||
"#cobblemon:is_frozen_ocean"
|
||||
],
|
||||
"structures": [
|
||||
"minecraft:monument"
|
||||
"#cobblemon:spawns/is_ocean_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
"id": "poochyena-2",
|
||||
"pokemon": "poochyena",
|
||||
"presets": [
|
||||
"natural",
|
||||
"pillager_outpost"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -43,6 +42,10 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_outpost"
|
||||
],
|
||||
"minY": 62,
|
||||
"isPokeSnack": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,8 +29,7 @@
|
||||
"id": "mightyena-2",
|
||||
"pokemon": "mightyena",
|
||||
"presets": [
|
||||
"natural",
|
||||
"pillager_outpost"
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
@@ -43,6 +42,10 @@
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_illager_outpost"
|
||||
],
|
||||
"minY": 62,
|
||||
"isPokeSnack": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
],
|
||||
"isPokeSnack": true
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
],
|
||||
"isPokeSnack": true
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
],
|
||||
"isPokeSnack": true
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -114,7 +114,7 @@
|
||||
"#cobblemon:is_freezing"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
],
|
||||
"isRaining": false,
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
@@ -144,7 +144,7 @@
|
||||
"#cobblemon:is_freezing"
|
||||
],
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -49,6 +49,37 @@
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_jungle_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "meditite-3",
|
||||
"pokemon": "meditite",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "5-30",
|
||||
"weight": 540.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 0.25,
|
||||
"condition": {
|
||||
"timeRange": "night"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_jungle_monument"
|
||||
],
|
||||
"minY": 48
|
||||
}
|
||||
|
||||
@@ -65,6 +65,45 @@
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_jungle_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "medicham-3",
|
||||
"pokemon": "medicham",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "37-43",
|
||||
"weight": 30.0,
|
||||
"weightMultipliers": [
|
||||
{
|
||||
"multiplier": 0.25,
|
||||
"condition": {
|
||||
"timeRange": "night"
|
||||
}
|
||||
},
|
||||
{
|
||||
"multiplier": 2.0,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"condition": {
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_jungle_monument"
|
||||
],
|
||||
"minY": 48
|
||||
}
|
||||
|
||||
@@ -45,12 +45,38 @@
|
||||
"canSeeSky": false,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_desert_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "baltoy-3",
|
||||
"pokemon": "baltoy",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "5-30",
|
||||
"weight": 540.0,
|
||||
"condition": {
|
||||
"canSeeSky": false,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_desert_monument"
|
||||
],
|
||||
"minY": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "baltoy-3",
|
||||
"id": "baltoy-4",
|
||||
"pokemon": "baltoy",
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
|
||||
@@ -57,12 +57,44 @@
|
||||
"canSeeSky": false,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
]
|
||||
},
|
||||
"anticondition": {
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_desert_monument"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "claydol-3",
|
||||
"pokemon": "claydol",
|
||||
"presets": [
|
||||
"natural"
|
||||
],
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
"bucket": "common",
|
||||
"level": "36-50",
|
||||
"weight": 48.0,
|
||||
"weightMultiplier": {
|
||||
"multiplier": 1.25,
|
||||
"condition": {
|
||||
"isPokeSnack": true
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"canSeeSky": false,
|
||||
"biomes": [
|
||||
"#cobblemon:is_overworld"
|
||||
],
|
||||
"structures": [
|
||||
"#cobblemon:spawns/is_desert_monument"
|
||||
],
|
||||
"minY": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "claydol-3",
|
||||
"id": "claydol-4",
|
||||
"pokemon": "claydol",
|
||||
"type": "pokemon",
|
||||
"spawnablePositionType": "grounded",
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
],
|
||||
"timeRange": "night",
|
||||
"structures": [
|
||||
"#minecraft:village"
|
||||
"#cobblemon:spawns/is_civilization"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user