Compare commits

...
32 Commits
Author SHA1 Message Date
Hiroku b79dbcca80 no scope. I mean no snap 2026-10-27 19:42:59 +10:00
Hiroku 5ac12a897a Merge remote-tracking branch 'origin/lang-updates' 2026-10-27 19:28:28 +10:00
Polymeta ae5f7c83f2 Merge branch 'implement_pokemon' into 'main'
implement_pokemon

See merge request cable-mc/cobblemon!2507
2026-10-26 23:10:50 +00:00
ewwww f14de9ab58 updated water shuriken 2026-10-26 16:35:00 -04:00
ewwww 8a1c846c2c Merge branch 'main' into implement_pokemon 2026-10-26 16:06:28 -04:00
Polymeta 459e7d3490 this doesnt make any sense
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-10-26 09:16:39 +00:00
Polymeta 5a9be8944f Merge branch 'hotbox-hitfix' into 'main'
Orb Ceiling Hitbox Correction

See merge request cable-mc/cobblemon!2512
2026-10-26 07:09:59 +00:00
Polymeta 3bb941b087 Merge branch 'dusclops-cry-fix' into 'main'
fixed dusclops using squirtle's cry

See merge request cable-mc/cobblemon!2511
2026-10-26 07:07:40 +00:00
dhi_holo 384b496d76 T H E O R B 2026-10-26 13:37:09 +10:00
geumuandWeblate 4caa736e0b Translated using Weblate (Korean)
Currently translated at 99.6% (9549 of 9587 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/ko/
2026-10-26 02:38:47 +00:00
geumuandWeblate c3e9051918 Translated using Weblate (Korean)
Currently translated at 98.5% (9445 of 9587 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/ko/
2026-10-26 02:26:52 +00:00
ewwww fe940caafc fixed dusclops using squirtle's cry 2026-10-25 21:33:38 -04:00
Polymeta c9d148ec9c bump showdown build and changelog
Signed-off-by: Polymeta <4726322-polymeta@users.noreply.gitlab.com>
2026-10-26 00:41:23 +00:00
Polymeta e611bf4a77 Merge branch 'fix-missing-recipe-book-data' into 'main'
Fixed Cooking Pot recipe book tabs and entries on Fabric

See merge request cable-mc/cobblemon!2510
2026-10-26 00:37:47 +00:00
Polymeta 8093822140 Merge branch 'battle-selection-fix' into 'main'
Fixed a bug with battle selection.

See merge request cable-mc/cobblemon!2509
2026-10-26 00:27:00 +00:00
Fyre520 f695ec15f9 Fixed Cooking Pot recipe book tabs and entries on Fabric 2026-10-26 02:01:15 +05:30
Deltric 1f6c791ce6 Fixed a bug with battle selection. 2026-10-25 14:24:44 -04:00
Polymeta 570805fdf1 Merge branch 'structure-tags-for-spawning' into 'main'
Structure Spawn Tags

See merge request cable-mc/cobblemon!2508
2026-10-25 16:53:38 +00:00
dhi_holo ddecb08bc7 Edit is_illager_structure.json 2026-10-26 00:21:36 +10:00
Kenji_64 a1b930a21f More Frogadier fixes (ty Mitchoo) 2026-10-25 14:14:44 +01:00
Kenji_64 7728ff3892 Fixed Fearow missing blink crashing during gliding 2026-10-25 14:11:22 +01:00
阿鱼andWeblate 0b38e063d2 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.7% (9464 of 9587 strings)

Translation: Cobblemon/Mod
Translate-URL: https://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2026-10-25 10:52:25 +00:00
Hiroku 4d7cfcdf61 Added q.target_fainted to MoveInstruction 2026-10-25 11:11:52 +10:00
Hiroku e56dd6ef64 snap it back on 2026-10-25 10:43:01 +10:00
Kenji_64 236b98fa78 I forgot the changelog :( 2026-10-25 02:21:08 +02:00
Kenji_64 ac61e0d4d0 Had to fix Froakie again. Heck 2026-10-25 02:20:20 +02:00
Kenji_64 d8956fd66f Froakie line eye lid and animation fixes 2026-10-25 02:14:01 +02:00
ewwww 50a5a78dd4 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2026-10-24 19:16:59 -04:00
ewwww 76c2654399 it appears my lang tweaks were reverted somehow 2026-10-24 19:16:20 -04:00
dhi_holo b5ac54cd16 Tweaks to prepare for Scrapes 2026-10-21 14:22:17 +10:00
dhi_holo dc703e67f7 Merge branch 'main' into structure-tags-for-spawning 2026-10-21 14:01:10 +10:00
dhi_holo 8e1fcc6f14 Structure Spawn Tags
Feel free to rename, delete, or rework any of these, it's moreso just setting the groundwork

`spawns/is_aquatic_monument` - Ocean Monuments and related structures
`spawns/is_aquatic_ruins` - Ocean Ruins and similar structures
`spawns/is_civilization` - Village and Towns tag, for anything that should spawn at any kind of village/town
`spawns/is_desert_monument` - Desert Pyramids and Temples
`spawns/is_dungeon` - Modded tag, the idea is things of the Stronghold *vibe*, but not being literal strongholds
`spawns/is_end_structure` - End Cities and related structures
`spawns/is_graveyard` - Modded tag, graveyards and crypts
`spawns/is_igloo` - just the vanilla igloo, it's me just wanting stuff in tags where it isn't yet so if some addon wants to give igloos another place they can
`spawns/is_illager_outpost` - small settlements for illagers, such as campsites and other small watchtower-like things
`spawns/is_illager_structure` - Bigger illager structures, the mansion, manors, stuff that has a sense of "infrastructure" I suppose
`spawns/is_jungle_monument` - Jungle Temples and Pyramids
`spawns/is_nether_structure` - is a structure of the Nether
`spawns/is_piglin_structure` - is a structure specifically inhabited by Piglins. Can be used to either add stuff specifically around Piglins, or to prevent things around them
`spawns/is_ruins` - Taking what we have as ruins and just applying that logic to other mods
`spawns/is_shipwreck` - not sure if we use this for spawns, but if we do this can be hooked into, if not then this could be deleted, no hassle, just felt like a logical thing to include. Is related to "surface" shipwrecks, not things like the coves
`spawns/is_witch_structure` - witch structures, like huts, villages, etc. Also added any structures that force black cat spawning, as that's used to reference to witches in the vanilla tags

Mods used within the tags so far:
https://modrinth.com/mod/dungeons-and-taverns (`nova_structures`)
A lot of https://modrinth.com/organization/nuVP8uUG mods (the Yung structure ones, usually starts as `better` and then the structure name)
https://modrinth.com/mod/enderscape
https://modrinth.com/mod/aquamirae
https://modrinth.com/mod/terralith
Will continue to investigate mods to add to these
2026-10-14 17:54:34 +10:00
63 changed files with 4053 additions and 1544 deletions
+15 -97
View File
@@ -1,107 +1,25 @@
# 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
## [1.8.4 (October 27th, 2026)](#1-8-4)
### 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.
- The Froakie line now blinks. The world will never be the same.
### 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.
- Fixed heaps of spawns not working. This was caused by us missing something before release. RIP.
- Fixed a crash caused by Fearow blinking while you're riding one. Makes sense to me.
- Fixed Minior's "Shields Down" ability being very broken.
- Fixed Dusclops using Squirtle's cry sound (lol).
- Fixed blank Cooking Pot recipe book entries and missing tabs on Fabric.
- Fixed a hitbox issue with placeable Orb held items attached to a ceiling.
- Fixed something sneaky. I'll tell you about it later.
### 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.
- Added `q.target_fainted` function to move action effects that checks if any opponents fainted from the move.
### Particles
- Updated Water Shuriken effect to be timed better when the opponent faints.
### Localization
- Updated translations for:
- Russian
- Japanese
- Brazilian Portuguese
- Korean
- Simplified Chinese
+107
View File
@@ -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
@@ -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())));
}
}
@@ -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();
}
}
@@ -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())
}
@@ -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 {
@@ -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 {
@@ -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") }
@@ -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) {
@@ -64,7 +64,7 @@
"rotation": "math.random_integer(0,3)*90"
},
"minecraft:particle_motion_parametric": {
"relative_position": ["-(v.target_deltax+((v.particle_random_1-0.5)*2))*(v.particle_age / v.particle_lifetime)", "(v.target_deltay+((v.particle_random_2-0.5)*2))*(v.particle_age / v.particle_lifetime)", "-v.target_deltaz*(v.particle_age / v.particle_lifetime)"]
"relative_position": ["-(v.target_deltax+((v.particle_random_1-0.5)*1.33))*(v.particle_age / v.particle_lifetime)", "(v.target_deltay+((v.particle_random_2-0.5)*1.33))*(v.particle_age / v.particle_lifetime)", "-v.target_deltaz*(v.particle_age / v.particle_lifetime)"]
},
"minecraft:particle_appearance_billboard": {
"size": ["0.4*v.rsize", "0.4*v.rsize"],
@@ -227,6 +227,14 @@
{"origin": [3.1, 20.8, -0.84], "size": [2, 1, 1], "inflate": 0.1, "uv": [60, 42]}
]
},
{
"name": "eyelid_closed_left",
"parent": "head_left",
"pivot": [3.6, 19.7, -0.91],
"cubes": [
{"origin": [2.1, 17.2, -0.66], "size": [3, 5, 1], "inflate": 0.25, "uv": [98, 2]}
]
},
{
"name": "face_ditto_left",
"parent": "head_left",
@@ -332,6 +340,14 @@
{"origin": [-5.1, 20.8, -0.84], "size": [2, 1, 1], "inflate": 0.1, "uv": [51, 42], "mirror": true}
]
},
{
"name": "eyelid_closed_right",
"parent": "head_right",
"pivot": [-3.6, 19.7, -0.91],
"cubes": [
{"origin": [-5.1, 17.2, -0.66], "size": [3, 5, 1], "inflate": 0.25, "uv": [89, 2], "mirror": true}
]
},
{
"name": "face_ditto_right",
"parent": "head_right",
@@ -134,229 +134,114 @@
"jaw2": [0, 27, -7.35]
}
},
{
"name": "head_right",
"parent": "head_angle",
"pivot": [-3.525, 31, 0.25],
"rotation": [5, 0, 0],
"cubes": [
{"origin": [-4.525, 29.5, -4.75], "size": [2, 5, 5], "uv": [51, 11]},
{"origin": [-3.625, 31.5, 0.25], "size": [0, 3, 5], "uv": [52, 55]}
]
},
{
"name": "locator_eye_right",
"parent": "head_right",
"pivot": [-4.5, 31, -2.5],
"rotation": [0, 90, 0],
"locators": {
"eye1": [-4.5, 31, -2.5]
}
},
{
"name": "eye_right",
"parent": "head_right",
"pivot": [-4.525, 31.35, -2.25],
"cubes": [
{"origin": [-4.525, 28.85, -4.25], "size": [1, 5, 4], "inflate": 0.01, "uv": [66, 2], "mirror": true}
]
},
{
"name": "eye_neutral_right",
"parent": "eye_right",
"pivot": [-4.525, 32.85095, -2.27179],
"cubes": [
{"origin": [-4.505, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [66, 12], "mirror": true}
]
},
{
"name": "eye_angry_right",
"parent": "eye_right",
"pivot": [-4.435, 32.1, -2.5],
"cubes": [
{"origin": [-4.405, 30.85, -4.25], "size": [1, 3, 4], "inflate": 0.05, "uv": [66, 26], "mirror": true},
{"origin": [-4.44, 31.35, -3.27], "size": [1, 1, 1], "inflate": 0.02, "uv": [73, 27], "mirror": true}
]
},
{
"name": "eye_sad_right",
"parent": "eye_right",
"pivot": [-4.435, 32.85, -2.5],
"cubes": [
{"origin": [-4.405, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [66, 19], "mirror": true},
{"origin": [-4.44, 32.35, -3.27], "size": [1, 1, 1], "inflate": 0.02, "uv": [73, 20], "mirror": true}
]
},
{
"name": "pupil_right",
"parent": "eye_right",
"pivot": [-4.525, 30.85095, -3.02179],
"cubes": [
{"origin": [-4.525, 29.35, -4.04], "size": [1, 3, 2], "inflate": 0.02, "uv": [73, 0], "mirror": true}
]
},
{
"name": "pupil_right2",
"parent": "pupil_right",
"pivot": [-4.55, 31.35095, -3.02179],
"cubes": [
{"origin": [-4.55, 30.35, -3.55], "size": [1, 2, 1], "uv": [84, 2], "mirror": true}
]
},
{
"name": "eyelid_right",
"parent": "head_right",
"pivot": [-3.925, 31.35095, -2.27179],
"cubes": [
{"origin": [-4.425, 28.85, -4.25], "size": [1, 5, 4], "inflate": 0.01, "uv": [77, 2], "mirror": true}
]
},
{
"name": "pupil_eyelid_right",
"parent": "eyelid_right",
"pivot": [-4.425, 30.80095, -2.27179],
"cubes": [
{"origin": [-4.435, 30.3, -3.75], "size": [1, 1, 3], "inflate": 0.01, "uv": [77, 14], "mirror": true}
]
},
{
"name": "eyelid_right2",
"parent": "eyelid_right",
"pivot": [-3.925, 32.85095, -2.27179],
"cubes": [
{"origin": [-4.405, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [66, 12], "mirror": true}
]
},
{
"name": "pupil_happy_right",
"parent": "eyelid_right",
"pivot": [-4.325, 30.80095, -2.27179],
"cubes": [
{"origin": [-4.325, 30.30095, -3.77179], "size": [1, 2, 3], "inflate": 0.05, "uv": [77, 20], "mirror": true}
]
},
{
"name": "face_ditto_right",
"parent": "head_right",
"pivot": [-4.435, 32, -2.25]
},
{
"name": "eye_ditto_right",
"parent": "face_ditto_right",
"pivot": [-4.435, 32, -2.25],
"cubes": [
{"origin": [-4.435, 31.5, -2.75], "size": [0, 1, 1], "uv": [113, 1]}
]
},
{
"name": "eye_closed_ditto_right",
"parent": "face_ditto_right",
"pivot": [-4.335, 32, -2.25],
"cubes": [
{"origin": [-4.335, 31.5, -3.25], "size": [0, 1, 2], "uv": [112, 2]},
{"origin": [-4.345, 32, -2.75], "size": [0, 1, 1], "uv": [113, 5]}
]
},
{
"name": "head_left",
"parent": "head_angle",
"pivot": [3.525, 31, 0.25],
"pivot": [3.53, 31, 0.25],
"rotation": [5, 0, 0],
"cubes": [
{"origin": [2.525, 29.5, -4.75], "size": [2, 5, 5], "uv": [51, 21], "mirror": true},
{"origin": [3.625, 31.5, 0.25], "size": [0, 3, 5], "uv": [40, 55], "mirror": true}
{"origin": [2.53, 29.5, -4.75], "size": [2, 5, 5], "uv": [51, 21], "mirror": true},
{"origin": [3.63, 31.5, 0.25], "size": [0, 3, 5], "uv": [40, 55], "mirror": true}
]
},
{
"name": "locator_eye_left",
"parent": "head_left",
"pivot": [4.5, 31, -2.5],
"rotation": [0, -90, 0],
"locators": {
"eye2": [4.5, 31, -2.5]
}
},
{
"name": "eye_left",
"parent": "head_left",
"pivot": [4.525, 31.35, -2.25],
"pivot": [4.53, 31.5, -2.25],
"cubes": [
{"origin": [3.525, 28.85, -4.25], "size": [1, 5, 4], "inflate": 0.01, "uv": [88, 2]}
{"origin": [3.54, 29, -4.25], "size": [1, 5, 4], "uv": [88, 2]}
]
},
{
"name": "eye_neutral_left",
"parent": "eye_left",
"pivot": [4.525, 32.85095, -2.27179],
"pivot": [4.54, 33, -2.25],
"cubes": [
{"origin": [3.505, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [88, 12]}
{"origin": [3.54, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [88, 12]}
]
},
{
"name": "eye_angry_left",
"parent": "eye_left",
"pivot": [4.435, 32.1, -2.5],
"pivot": [4.44, 32.5, -2.25],
"cubes": [
{"origin": [3.405, 30.85, -4.25], "size": [1, 3, 4], "inflate": 0.05, "uv": [88, 26]},
{"origin": [3.44, 31.35, -3.27], "size": [1, 1, 1], "inflate": 0.02, "uv": [95, 27]}
{"origin": [3.44, 31, -4.25], "size": [1, 3, 4], "inflate": 0.021, "uv": [88, 26]},
{"origin": [3.44, 31.5, -3.25], "size": [1, 1, 1], "inflate": 0.03, "uv": [95, 27]}
]
},
{
"name": "eye_sad_left",
"parent": "eye_left",
"pivot": [4.435, 32.85, -2.5],
"pivot": [4.43, 33, -2.25],
"cubes": [
{"origin": [3.405, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [88, 19]},
{"origin": [3.44, 32.35, -3.27], "size": [1, 1, 1], "inflate": 0.02, "uv": [95, 20]}
{"origin": [3.44, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [88, 19]},
{"origin": [3.44, 32.5, -3.25], "size": [1, 1, 1], "inflate": 0.03, "uv": [95, 20]}
]
},
{
"name": "pupil_left",
"parent": "eye_left",
"pivot": [4.525, 30.85095, -3.02179],
"pivot": [4.55, 31, -3.05],
"cubes": [
{"origin": [3.525, 29.35, -4.04], "size": [1, 3, 2], "inflate": 0.02, "uv": [95, 0]}
{"origin": [3.55, 29.5, -4.05], "size": [1, 3, 2], "uv": [95, 0]}
]
},
{
"name": "pupil_left2",
"name": "eye_shine_left",
"parent": "pupil_left",
"pivot": [4.55, 31.35095, -3.02179],
"pivot": [4.55, 31.5, -3.05],
"cubes": [
{"origin": [3.55, 30.35, -3.55], "size": [1, 2, 1], "uv": [106, 2]}
{"origin": [3.56, 30.5, -3.55], "size": [1, 2, 1], "uv": [106, 2]}
]
},
{
"name": "open_eye_left",
"parent": "head_left",
"pivot": [4.44, 31.5, -2.25],
"cubes": [
{"origin": [3.44, 29, -4.25], "size": [1, 5, 4], "uv": [99, 2]}
]
},
{
"name": "open_pupil_left",
"parent": "open_eye_left",
"pivot": [4.45, 31.5, -2.25],
"cubes": [
{"origin": [3.45, 31, -3.75], "size": [1, 1, 3], "uv": [99, 14]}
]
},
{
"name": "open_neutral_left",
"parent": "open_eye_left",
"pivot": [4.34, 33, -2.25],
"cubes": [
{"origin": [3.34, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [88, 12]}
]
},
{
"name": "open_happy_left",
"parent": "open_eye_left",
"pivot": [4.35, 32, -2.25],
"cubes": [
{"origin": [3.35, 31, -3.75], "size": [1, 2, 3], "uv": [99, 20]}
]
},
{
"name": "eyelid_left",
"parent": "head_left",
"pivot": [3.925, 31.35095, -2.27179],
"pivot": [4.44, 31.5, -2.25],
"cubes": [
{"origin": [3.425, 28.85, -4.25], "size": [1, 5, 4], "inflate": 0.01, "uv": [99, 2]}
{"origin": [3.44, 29, -4.25], "size": [1, 5, 4], "inflate": 0.022, "uv": [99, 26]}
]
},
{
"name": "pupil_eyelid_left",
"parent": "eyelid_left",
"pivot": [4.425, 30.80095, -2.27179],
"cubes": [
{"origin": [3.435, 30.3, -3.75], "size": [1, 1, 3], "inflate": 0.01, "uv": [99, 14]}
]
},
{
"name": "eyelid_left2",
"parent": "eyelid_left",
"pivot": [3.925, 32.85095, -2.27179],
"cubes": [
{"origin": [3.405, 31.85, -4.25], "size": [1, 2, 4], "inflate": 0.05, "uv": [88, 12]}
]
},
{
"name": "pupil_happy_left",
"parent": "eyelid_left",
"pivot": [4.325, 30.80095, -2.27179],
"cubes": [
{"origin": [3.325, 30.30095, -3.77179], "size": [1, 2, 3], "inflate": 0.05, "uv": [99, 20]}
]
"name": "locator_eye_left",
"parent": "head_left",
"pivot": [4.54, 31, -2.46],
"rotation": [0, -90, 0],
"locators": {
"eye2": [4.54, 31, -2.46]
}
},
{
"name": "face_ditto_left",
@@ -368,7 +253,7 @@
"parent": "face_ditto_left",
"pivot": [4.435, 32, -2.25],
"cubes": [
{"origin": [4.435, 31.5, -2.75], "size": [0, 1, 1], "uv": [118, 1], "mirror": true}
{"origin": [4.435, 31.5, -2.75], "size": [0, 1, 1], "uv": [113, 1]}
]
},
{
@@ -376,8 +261,139 @@
"parent": "face_ditto_left",
"pivot": [4.335, 32, -2.25],
"cubes": [
{"origin": [4.335, 31.5, -3.25], "size": [0, 1, 2], "uv": [117, 2], "mirror": true},
{"origin": [4.345, 32, -2.75], "size": [0, 1, 1], "uv": [118, 5], "mirror": true}
{"origin": [4.335, 31.5, -3.25], "size": [0, 1, 2], "uv": [112, 2]},
{"origin": [4.345, 32, -2.75], "size": [0, 1, 1], "uv": [113, 5]}
]
},
{
"name": "head_right",
"parent": "head_angle",
"pivot": [-3.53, 31, 0.25],
"rotation": [5, 0, 0],
"cubes": [
{"origin": [-4.53, 29.5, -4.75], "size": [2, 5, 5], "uv": [51, 11]},
{"origin": [-3.63, 31.5, 0.25], "size": [0, 3, 5], "uv": [40, 55]}
]
},
{
"name": "eye_right",
"parent": "head_right",
"pivot": [-4.53, 31.5, -2.25],
"cubes": [
{"origin": [-4.54, 29, -4.25], "size": [1, 5, 4], "uv": [66, 2], "mirror": true}
]
},
{
"name": "eye_neutral_right",
"parent": "eye_right",
"pivot": [-4.54, 33, -2.25],
"cubes": [
{"origin": [-4.54, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [66, 12], "mirror": true}
]
},
{
"name": "eye_angry_right",
"parent": "eye_right",
"pivot": [-4.44, 32.5, -2.25],
"cubes": [
{"origin": [-4.44, 31, -4.25], "size": [1, 3, 4], "inflate": 0.021, "uv": [66, 26], "mirror": true},
{"origin": [-4.44, 31.5, -3.25], "size": [1, 1, 1], "inflate": 0.03, "uv": [73, 27], "mirror": true}
]
},
{
"name": "eye_sad_right",
"parent": "eye_right",
"pivot": [-4.43, 33, -2.25],
"cubes": [
{"origin": [-4.44, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [66, 19], "mirror": true},
{"origin": [-4.44, 32.5, -3.25], "size": [1, 1, 1], "inflate": 0.03, "uv": [73, 20], "mirror": true}
]
},
{
"name": "pupil_right",
"parent": "eye_right",
"pivot": [-4.55, 31, -3.05],
"cubes": [
{"origin": [-4.55, 29.5, -4.05], "size": [1, 3, 2], "uv": [73, 0], "mirror": true}
]
},
{
"name": "eye_shine_right",
"parent": "pupil_right",
"pivot": [-4.55, 31.5, -3.05],
"cubes": [
{"origin": [-4.56, 30.5, -3.55], "size": [1, 2, 1], "uv": [84, 2], "mirror": true}
]
},
{
"name": "open_eye_right",
"parent": "head_right",
"pivot": [-4.44, 31.5, -2.25],
"cubes": [
{"origin": [-4.44, 29, -4.25], "size": [1, 5, 4], "uv": [77, 2], "mirror": true}
]
},
{
"name": "open_pupil_right",
"parent": "open_eye_right",
"pivot": [-4.45, 31.5, -2.25],
"cubes": [
{"origin": [-4.45, 31, -3.75], "size": [1, 1, 3], "uv": [77, 14], "mirror": true}
]
},
{
"name": "open_neutral_right",
"parent": "open_eye_right",
"pivot": [-4.34, 33, -2.25],
"cubes": [
{"origin": [-4.34, 32, -4.25], "size": [1, 2, 4], "inflate": 0.021, "uv": [66, 12], "mirror": true}
]
},
{
"name": "open_happy_right",
"parent": "open_eye_right",
"pivot": [-4.35, 32, -2.25],
"cubes": [
{"origin": [-4.35, 31, -3.75], "size": [1, 2, 3], "uv": [77, 20], "mirror": true}
]
},
{
"name": "eyelid_right",
"parent": "head_right",
"pivot": [-4.44, 31.5, -2.25],
"cubes": [
{"origin": [-4.44, 29, -4.25], "size": [1, 5, 4], "inflate": 0.022, "uv": [77, 26], "mirror": true}
]
},
{
"name": "locator_eye_right",
"parent": "head_right",
"pivot": [-4.54, 31, -2.46],
"rotation": [0, 90, 0],
"locators": {
"eye1": [-4.54, 31, -2.46]
}
},
{
"name": "face_ditto_right",
"parent": "head_right",
"pivot": [-4.435, 32, -2.25]
},
{
"name": "eye_ditto_right",
"parent": "face_ditto_right",
"pivot": [-4.435, 32, -2.25],
"cubes": [
{"origin": [-4.435, 31.5, -2.75], "size": [0, 1, 1], "uv": [118, 1], "mirror": true}
]
},
{
"name": "eye_closed_ditto_right",
"parent": "face_ditto_right",
"pivot": [-4.335, 32, -2.25],
"cubes": [
{"origin": [-4.335, 31.5, -3.25], "size": [0, 1, 2], "uv": [117, 2], "mirror": true},
{"origin": [-4.345, 32, -2.75], "size": [0, 1, 1], "uv": [118, 5], "mirror": true}
]
},
{
@@ -830,11 +830,6 @@
{"origin": [-3.5, 38.3, 33.75], "size": [7, 5, 9], "uv": [106, 33]}
]
},
{
"name": "tongue6",
"parent": "tongue5",
"pivot": [0, 40.8, 40.5]
},
{
"name": "muzzle",
"parent": "head_angle",
@@ -913,6 +908,15 @@
{"origin": [-0.1, 44.3, -8.11], "size": [4, 2, 1], "uv": [87, 72]}
]
},
{
"name": "eyelid_base_left",
"parent": "eye_left_base",
"pivot": [1.9, 43.9, -8.11],
"cubes": [
{"origin": [-0.1, 45.3, -8.11], "size": [4, 1, 1], "uv": [87, 76]},
{"origin": [-0.1, 41.9, -8.11], "size": [4, 4, 1], "uv": [87, 79]}
]
},
{
"name": "eye_left",
"parent": "eye_left_base",
@@ -950,7 +954,7 @@
"parent": "eye_left",
"pivot": [1.9, 44.2, -8.07],
"cubes": [
{"origin": [0.4, 43.7, -8.07], "size": [3, 1, 1], "inflate": 0.02, "uv": [87, 76]}
{"origin": [0.4, 43.7, -8.07], "size": [3, 1, 1], "inflate": 0.02, "uv": [87, 85]}
]
},
{
@@ -958,7 +962,7 @@
"parent": "eye_left",
"pivot": [1.9, 44.2, -8.07],
"cubes": [
{"origin": [0.4, 42.95, -8.07], "size": [3, 2, 1], "inflate": 0.02, "uv": [87, 79]}
{"origin": [0.4, 42.95, -8.07], "size": [3, 2, 1], "inflate": 0.02, "uv": [87, 88]}
]
},
{
@@ -995,6 +999,15 @@
{"origin": [-3.9, 44.3, -8.11], "size": [4, 2, 1], "uv": [76, 72], "mirror": true}
]
},
{
"name": "eyelid_base_right",
"parent": "eye_right_base",
"pivot": [-1.9, 43.9, -8.11],
"cubes": [
{"origin": [-3.9, 45.3, -8.11], "size": [4, 1, 1], "uv": [76, 76], "mirror": true},
{"origin": [-3.9, 41.9, -8.11], "size": [4, 4, 1], "uv": [76, 79], "mirror": true}
]
},
{
"name": "eye_right",
"parent": "eye_right_base",
@@ -1032,7 +1045,7 @@
"parent": "eye_right",
"pivot": [-1.9, 44.2, -8.07],
"cubes": [
{"origin": [-3.4, 43.7, -8.07], "size": [3, 1, 1], "inflate": 0.02, "uv": [76, 76], "mirror": true}
{"origin": [-3.4, 43.7, -8.07], "size": [3, 1, 1], "inflate": 0.02, "uv": [76, 85], "mirror": true}
]
},
{
@@ -1040,7 +1053,7 @@
"parent": "eye_right",
"pivot": [-1.9, 44.2, -8.07],
"cubes": [
{"origin": [-3.4, 42.95, -8.07], "size": [3, 2, 1], "inflate": 0.02, "uv": [76, 79], "mirror": true}
{"origin": [-3.4, 42.95, -8.07], "size": [3, 2, 1], "inflate": 0.02, "uv": [76, 88], "mirror": true}
]
},
{
@@ -8,7 +8,6 @@
"poses": {
"standing": {
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE"],
"isBattle": false,
"animations": [
"q.look('neck', 1, 1, 70, -10, 20, -20)",
"q.look('head_ai')",
@@ -35,6 +34,9 @@
"part": "wing_closed_left",
"isVisible": true
}
],
"quirks": [
"q.bedrock_quirk('fearow', 'blink')"
]
},
"walking": {
@@ -65,6 +67,9 @@
"part": "wing_closed_left",
"isVisible": true
}
],
"quirks": [
"q.bedrock_quirk('fearow', 'blink')"
]
},
"hover": {
@@ -96,6 +101,9 @@
"part": "wing_closed_left",
"isVisible": false
}
],
"quirks": [
"q.bedrock_quirk('fearow', 'blink')"
]
},
"fly": {
@@ -128,6 +136,9 @@
"part": "wing_closed_left",
"isVisible": false
}
],
"quirks": [
"q.bedrock_quirk('fearow', 'blink')"
]
},
"sleep": {
@@ -27,7 +27,7 @@
"q.look('head_ai')",
"q.bedrock('froakie', 'ground_idle')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('froakie', 'blink')"]
},
"walking": {
"poseTypes": ["WALK"],
@@ -36,7 +36,7 @@
"q.look('head_ai')",
"q.bedrock('froakie', 'ground_walk')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('froakie', 'blink')"]
},
"swimming": {
"poseTypes": ["WALK","SWIM"],
@@ -46,7 +46,7 @@
"q.look('head_ai')",
"q.bedrock('froakie', 'water_swim')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('froakie', 'blink')"]
},
"float": {
"poseTypes": ["STAND","FLOAT"],
@@ -55,7 +55,7 @@
"q.look('head_ai')",
"q.bedrock('froakie', 'water_idle')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('froakie', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
@@ -27,7 +27,7 @@
"q.look('head_ai', 1, 1, 5, -45, 45, -45)",
"q.bedrock('frogadier', 'ground_idle')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('frogadier', 'blink')"]
},
"walking": {
"poseTypes": ["WALK"],
@@ -36,7 +36,7 @@
"q.look('head_ai', 1, 1, 0, -45, 45, -45)",
"q.bedrock('frogadier', 'ground_walk')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('frogadier', 'blink')"]
},
"swimming": {
"poseTypes": ["WALK","SWIM"],
@@ -46,7 +46,7 @@
"q.look('head_ai')",
"q.bedrock('frogadier', 'water_swim')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('frogadier', 'blink')"]
},
"float": {
"poseTypes": ["STAND","FLOAT"],
@@ -55,7 +55,7 @@
"q.look('head_ai')",
"q.bedrock('frogadier', 'water_idle')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('frogadier', 'blink')"]
},
"sleep": {
"poseTypes": ["SLEEP"],
@@ -66,7 +66,7 @@
"q.bedrock('greninja', math.random(0, 1) < 0.4 ? 'ground_idle_alt' : 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('greninja', q.array('quirk_look_left', 'quirk_look_right'), 8, 30, 1)"
"q.bedrock_quirk('greninja', 'blink')","q.bedrock_quirk('greninja', q.array('quirk_look_left', 'quirk_look_right'), 8, 30, 1)"
]
},
"walking": {
@@ -78,7 +78,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'ground_walk')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('greninja', 'blink')"]
},
"running": {
"poseTypes": ["WALK"],
@@ -89,7 +89,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'ground_run')"
],
"quirks": []
"quirks": ["q.bedrock_quirk('greninja', 'blink')"]
},
"surface-swimming": {
"poseTypes": ["WALK","SWIM"],
@@ -101,7 +101,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'water_swim')"
],
"quirks": [],
"quirks": ["q.bedrock_quirk('greninja', 'blink')"],
"transformedParts": [
{
"part": "body",
@@ -118,7 +118,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'water_idle')"
],
"quirks": [],
"quirks": ["q.bedrock_quirk('greninja', 'blink')"],
"transformedParts": [
{
"part": "body",
@@ -136,7 +136,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'water_swim')"
],
"quirks": [],
"quirks": ["q.bedrock_quirk('greninja', 'blink')"],
"transformedParts": [
{
"part": "body",
@@ -153,7 +153,7 @@
"q.look('tongue1', -1, 1, 70, -45, 0, 0)",
"q.bedrock('greninja', 'water_idle')"
],
"quirks": [],
"quirks": ["q.bedrock_quirk('greninja', 'blink')"],
"transformedParts": [
{
"part": "body",
@@ -383,7 +383,7 @@
"item.cobblemon.eject_pack.tooltip_1": "Switches out the holder if any stats are lowered",
"item.cobblemon.eject_pack.tooltip_2": "Consumed after use",
"item.cobblemon.electric_seed": "Electric Seed",
"item.cobblemon.electric_seed.tooltip": "Boosts the holder's Defense in Electric terrain",
"item.cobblemon.electric_seed.tooltip": "Boosts the holder's Defense in Electric Terrain",
"item.cobblemon.everstone": "Everstone",
"item.cobblemon.everstone.tooltip": "Prevents the holder from evolving",
"item.cobblemon.eviolite": "Eviolite",
@@ -402,7 +402,7 @@
"item.cobblemon.focus_sash.tooltip_1": "Prevents the holder from fainting in a single hit",
"item.cobblemon.focus_sash.tooltip_2": "Consumed after use",
"item.cobblemon.grassy_seed": "Grassy Seed",
"item.cobblemon.grassy_seed.tooltip": "Boosts the holder's Defense in Grassy terrain",
"item.cobblemon.grassy_seed.tooltip": "Boosts the holder's Defense in Grassy Terrain",
"item.cobblemon.grip_claw": "Grip Claw",
"item.cobblemon.hard_stone": "Hard Stone",
"item.cobblemon.hard_stone.tooltip": "Boosts the power of the holder's Rock-type moves",
@@ -507,7 +507,7 @@
"item.cobblemon.mirror_herb.tooltip_1": "Allows the holder to mirror an opponent's stat increases to boost its own stats",
"item.cobblemon.mirror_herb.tooltip_2": "Consumed after use",
"item.cobblemon.misty_seed": "Misty Seed",
"item.cobblemon.misty_seed.tooltip": "Boosts the holder's Sp. Def in Misty terrain",
"item.cobblemon.misty_seed.tooltip": "Boosts the holder's Sp. Def in Misty Terrain",
"item.cobblemon.power_herb": "Power Herb",
"item.cobblemon.power_herb.tooltip_1": "Allows the holder to immediately use a move that normally requires a change of turn to charge",
"item.cobblemon.power_herb.tooltip_2": "Consumed after use",
@@ -535,7 +535,7 @@
"item.cobblemon.power_weight": "Power Weight",
"item.cobblemon.power_weight.tooltip": "Grants 8 HP EVs when gaining experience in battle",
"item.cobblemon.psychic_seed": "Psychic Seed",
"item.cobblemon.psychic_seed.tooltip": "Boosts the holder's Sp. Def in Psychic terrain",
"item.cobblemon.psychic_seed.tooltip": "Boosts the holder's Sp. Def in Psychic Terrain",
"item.cobblemon.flame_orb": "Flame Orb",
"item.cobblemon.flame_orb.tooltip": "Burns the holder",
"item.cobblemon.smoke_ball": "Smoke Ball",
@@ -6526,7 +6526,7 @@
"cobblemon.move.10000000voltthunderbolt": "1000만볼트",
"cobblemon.species.unown-x.desc": "고대 문자를 닮은 모습의 포켓몬이다. 먼저 생겨난 것은 문자인가 안농인가. 연구 중이지만 아직도 수수께끼다.",
"cobblemon.ui.pokedex.info.form.qwilfish-hisui": "히스이의 모습",
"cobblemon.ui.pokedex.info.form.groudon-primal": "원시그란돈",
"cobblemon.ui.pokedex.info.form.groudon-primal": "원시회귀",
"cobblemon.ui.pokedex.info.form.burmy-sandy": "모래땅도롱",
"cobblemon.ui.pokedex.info.form.abomasnow-mega": "메가눈설왕",
"cobblemon.species.rotom-frost.desc": "특수한 모터로 움직이는 냉장고에 들어갔다. 냉기를 뿜으며 싸운다.",
@@ -6758,7 +6758,7 @@
"cobblemon.species.salamence-mega.desc": "앞다리를 껍질 틈에 얹어서 비행 태세를 갖춘다. 복잡한 지형도 고속으로 날아다닌다.",
"cobblemon.species.metagross-mega.desc": "이길 수 없다고 판단하면 발톱으로 상대를 붙잡고 대폭발의 카운트를 시작한다.",
"cobblemon.species.latios-mega.desc": "본 것이나 생각한 이미지를 상대방에게 영상으로 보여주는 능력을 지녔다. 인간의 말을 이해할 수 있다.",
"cobblemon.ui.pokedex.info.form.kyogre-primal": "원시가이오가",
"cobblemon.ui.pokedex.info.form.kyogre-primal": "원시회귀",
"cobblemon.species.deoxys-attack.desc": "공격적인 형상으로 변화한 테오키스. 다른 모습을 보여 적을 혼란시키는 힘을 가졌다.",
"cobblemon.ui.pokedex.info.form.deoxys-speed": "스피드폼",
"cobblemon.ui.pokedex.info.form.burmy-trash": "슈레도롱",
@@ -9549,5 +9549,125 @@
"cobblemon.config.ui.world_spawning_blocklist": "월드별 스폰 차단 목록",
"cobblemon.config.ui.world_spawning_blocklist.tooltip": "포켓몬 생성 로직을 비활성화하는 월드입니다.",
"advancements.cobblemon.obtain_tm": "기술을 보여줘!",
"advancements.cobblemon.obtain_tm.description": "TM을 찾거나 제작하세요"
"advancements.cobblemon.obtain_tm.description": "TM을 찾거나 제작하세요",
"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부터 진화",
"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얌전§r, §a신중§r 성격 중 하나",
"cobblemon.ui.pokedex.requirement.negate.tooltip": "아님: %1$s",
"cobblemon.ui.pokedex.requirement.nickname.malamar": "이름이 §aDinnerbone§r 또는 §aGrumm§r이어야 함",
"cobblemon.ui.pokedex.requirement.party_member.anticondition.tooltip": "파티에 %1$s 포켓몬이 없기",
"cobblemon.ui.pokedex.requirement.party_member.tooltip": "파티에 %1$s 포켓몬이 있기",
"cobblemon.ui.pokedex.requirement.pokemon_properties.tooltip": "조건: %1$s",
"cobblemon.ui.pokedex.requirement.properties.and": "%1$s, %2$s",
"cobblemon.ui.pokedex.requirement.properties.custom.cocoon_species": "%1$s 고치",
"cobblemon.ui.pokedex.requirement.properties.held_item": "%1$s 지닌",
"cobblemon.ui.pokedex.requirement.properties.int_feature": "%1$s %2$s",
"cobblemon.ui.pokedex.requirement.properties.nature": "%1$s 성격",
"cobblemon.ui.pokedex.requirement.properties.nickname": "이름이 %1$s인",
"cobblemon.ui.pokedex.requirement.properties.type": "%1$s 타입",
"cobblemon.ui.pokedex.requirement.property_range.tooltip": "%1$s이(가) %2$s~%3$s 사이여야 함",
"cobblemon.ui.pokedex.requirement.recoil.tooltip": "배틀에서 반동 데미지 %1$s 받기",
"cobblemon.ui.pokedex.requirement.stat_compare.tooltip": "%1$s이(가) %2$s보다 높아야 함",
"cobblemon.ui.pokedex.requirement.stat_equal.tooltip": "%1$s와(과) %2$s이(가) 같아야 함",
"cobblemon.ui.pokedex.requirement.structure.anticondition.tooltip": "%1$s 구조물 밖에 있기",
"cobblemon.ui.pokedex.requirement.structure.both.tooltip": "%1$s 구조물 안, %2$s 구조물 밖에 있기",
"cobblemon.ui.pokedex.requirement.structure.tooltip": "%1$s 구조물에 있기",
"cobblemon.ui.pokedex.requirement.time_range.tooltip": "%1$s에 진화",
"cobblemon.ui.pokedex.requirement.use_move.tooltip": "배틀에서 기술 %1$s 사용하기",
"cobblemon.ui.pokedex.requirement.weather.tooltip.raining": "비가 올 때 진화",
"cobblemon.ui.pokedex.requirement.weather.tooltip.thundering": "뇌우가 칠 때 진화",
"cobblemon.ui.moon_phase.full_moon": "보름달",
"cobblemon.ui.moon_phase.waning_gibbous": "기우는 볼록달",
"cobblemon.ui.moon_phase.third_quarter": "하현달",
"cobblemon.ui.moon_phase.waning_crescent": "그믐달",
"cobblemon.ui.moon_phase.new_moon": "삭",
"cobblemon.ui.moon_phase.waxing_crescent": "초승달",
"cobblemon.ui.moon_phase.first_quarter": "상현달",
"cobblemon.ui.moon_phase.waxing_gibbous": "차오르는 볼록달",
"cobblemon.ui.time_range.any": "언제든",
"cobblemon.ui.time_range.day": "낮",
"cobblemon.ui.time_range.night": "밤",
"cobblemon.ui.time_range.noon": "정오",
"cobblemon.ui.time_range.midnight": "자정",
"cobblemon.ui.time_range.dawn": "새벽",
"cobblemon.ui.time_range.dusk": "해 질 녘",
"cobblemon.ui.time_range.twilight": "황혼",
"cobblemon.ui.time_range.morning": "아침",
"cobblemon.ui.time_range.afternoon": "오후",
"cobblemon.ui.time_range.predawn": "동트기 전",
"cobblemon.ui.time_range.evening": "저녁",
"cobblemon.subtitle.item.bright_powder.use": "반짝가루가 빛남",
"cobblemon.config.ui.type_gem_max_connected": "연결된 타입주얼 블록 최대 수",
"cobblemon.config.ui.type_gem_min_growth": "타입주얼 최소 성장",
"cobblemon.config.ui.type_gem_growth_chance": "타입주얼 성장 확률",
"cobblemon.config.ui.type_gem_initial_expansion_cycles": "타입주얼 초기 확장 횟수",
"cobblemon.battle.activate.ficklebeam": "%1$s은(는) 전력을 다해 공격한다!",
"tag.item.cobblemon.oricorio_flowers": "꽃꿀 꽃",
"tag.item.cobblemon.terrain_plants": "필드 식물",
"tag.item.cobblemon.tall_flowers": "큰 꽃",
"tag.worldgen.biome.cobblemon.evolution.regional.bergmite_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.bergmite_kalosbiome": "칼로스",
"tag.worldgen.biome.cobblemon.evolution.regional.cubone_alolabiome": "알로라",
"tag.worldgen.biome.cobblemon.evolution.regional.cubone_kantobiome": "관동",
"tag.worldgen.biome.cobblemon.evolution.regional.dartrix_alolabiome": "알로라",
"tag.worldgen.biome.cobblemon.evolution.regional.dartrix_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.dewott_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.dewott_unovabiome": "하나",
"tag.worldgen.biome.cobblemon.evolution.regional.exeggcute_alolabiome": "알로라",
"tag.worldgen.biome.cobblemon.evolution.regional.exeggcute_kantobiome": "관동",
"tag.worldgen.biome.cobblemon.evolution.regional.goomy_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.goomy_kalosbiome": "칼로스",
"tag.worldgen.biome.cobblemon.evolution.regional.koffing_galarbiome": "가라르",
"tag.worldgen.biome.cobblemon.evolution.regional.koffing_kantobiome": "관동",
"tag.worldgen.biome.cobblemon.evolution.regional.mimejr_galarbiome": "가라르",
"tag.worldgen.biome.cobblemon.evolution.regional.mimejr_sinnohbiome": "신오",
"tag.worldgen.biome.cobblemon.evolution.regional.petilil_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.petilil_unovabiome": "하나",
"tag.worldgen.biome.cobblemon.evolution.regional.pikachu_alolabiome": "알로라",
"tag.worldgen.biome.cobblemon.evolution.regional.pikachu_kantobiome": "관동",
"tag.worldgen.biome.cobblemon.evolution.regional.quilava_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.quilava_johtobiome": "성도",
"tag.worldgen.biome.cobblemon.evolution.regional.rufflet_hisuibiome": "히스이",
"tag.worldgen.biome.cobblemon.evolution.regional.rufflet_unovabiome": "하나",
"cobblemon.ui.pokedex.info.form.vivillon-icy snow": "빙설의 모양",
"cobblemon.species.vivillon-icy-snow.desc": "태어난 땅의 기후나 풍토에 영향을 받아 모양이 달라진다. 얼어붙은 땅에서의 모습이다.",
"cobblemon.ui.pokedex.info.form.vivillon-high plains": "황야의 모양",
"cobblemon.species.vivillon-high-plains.desc": "태어난 땅의 기후나 풍토에 영향을 받아 모양이 달라진다. 비가 적게 내리는 땅에서의 모습이다.",
"cobblemon.ui.pokedex.info.form.vivillon-inferno": "지옥의 모양",
"cobblemon.species.vivillon-inferno.desc": "살고 있는 장소의 기후나 풍토에 따라 날개의 모양이 다른 포켓몬이다. 화려한 색의 날개 가루를 뿌린다.",
"cobblemon.ui.pokedex.info.form.vivillon-void": "공허의 모양",
"cobblemon.species.vivillon-void.desc": "살고 있는 장소의 기후나 풍토에 따라 날개의 모양이 다른 포켓몬이다. 화려한 색의 날개 가루를 뿌린다.",
"cobblemon.ui.pokedex.info.form.vivillon-forsaken": "망각의 모양",
"cobblemon.species.vivillon-forsaken.desc": "살고 있는 장소의 기후나 풍토에 따라 날개의 모양이 다른 포켓몬이다. 화려한 색의 날개 가루를 뿌린다.",
"cobblemon.species.minior-red.desc": "겉껍질이 벗겨진 모습. 코어의 색이 다른 이유는 먹은 먹이의 성분이 다르기 때문이다."
}
@@ -9677,5 +9677,6 @@
"cobblemon.config.ui.world_spawning_blocklist": "维度生成黑名单",
"cobblemon.config.ui.world_spawning_blocklist.tooltip": "禁用宝可梦生成逻辑的维度。",
"advancements.cobblemon.obtain_tm": "让我看看你的招式",
"advancements.cobblemon.obtain_tm.description": "发现或刻写一个招式学习器"
"advancements.cobblemon.obtain_tm.description": "发现或刻写一个招式学习器",
"itemGroup.cobblemon.tm_item": "招式学习器"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

@@ -42,7 +42,8 @@
},
{
"type": "pause",
"pause": 0.5
"condition": "q.target_fainted == false",
"pause": 1.25
}
]
}
@@ -141,7 +141,8 @@
},
{
"type": "pause",
"pause": 0.5
"condition": "q.target_fainted == false",
"pause": 1.25
}
]
}
@@ -1,3 +1,3 @@
{
"showdownVersion": 18
"showdownVersion": 19
}
@@ -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"
]
}
}
@@ -0,0 +1,21 @@
{
"values": [
"#minecraft:village",
{
"id": "nova_structures:village_birch",
"required": false
},
{
"id": "nova_structures:village_jungle",
"required": false
},
{
"id": "nova_structures:village_swamp",
"required": false
},
{
"id": "#terralith:fortified_villages",
"required": false
}
]
}
@@ -0,0 +1,13 @@
{
"values": [
"minecraft:desert_pyramid",
{
"id": "#nova_structures:desert_ruins",
"required": false
},
{
"id": "#betterdeserttemples:desert_temple",
"required": false
}
]
}
@@ -0,0 +1,20 @@
{
"values": [
{
"id": "nova_structures:bunker",
"required": false
},
{
"id": "nova_structures:creeping_crypt",
"required": false
},
{
"id": "nova_structures:undead_crypt",
"required": false
},
{
"id": "#betterdungeons:better_dungeons",
"required": false
}
]
}
@@ -0,0 +1,17 @@
{
"values": [
"minecraft:end_city",
{
"id": "#nova_structures:end_castle",
"required": false
},
{
"id": "nova_structures:creeping_crypt",
"required": false
},
{
"id": "enderscape:end_city",
"required": false
}
]
}
@@ -0,0 +1,20 @@
{
"values": [
{
"id": "nova_structures:remnant_graveyard",
"required": false
},
{
"id": "nova_structures:remnant_birch_graveyard",
"required": false
},
{
"id": "nova_structures:creeping_crypt",
"required": false
},
{
"id": "nova_structures:undead_crypt",
"required": false
}
]
}
@@ -0,0 +1,5 @@
{
"values": [
"minecraft:igloo"
]
}
@@ -0,0 +1,21 @@
{
"values": [
"minecraft:pillager_outpost",
{
"id": "nova_structures:illager_camp",
"required": false
},
{
"id": "nova_structures:tavern_dark_oak",
"required": false
},
{
"id": "nova_structures:well_dark_oak",
"required": false
},
{
"id": "nova_structures:firewatch_tower_dark_oak",
"required": false
}
]
}
@@ -0,0 +1,11 @@
{
"values": [
"#cobblemon:spawns/is_illager_outpost",
"#cobblemon:spawns/is_witch_structure",
"minecraft:mansion",
{
"id": "#nova_structures:illager_structures",
"required": false
}
]
}
@@ -0,0 +1,13 @@
{
"values": [
"minecraft:jungle_pyramid",
{
"id": "#nova_structures:jungle_ruins",
"required": false
},
{
"id": "#betterjungletemples:better_jungle_temples",
"required": false
}
]
}
@@ -0,0 +1,5 @@
{
"values": [
"#minecraft:mineshaft"
]
}
@@ -0,0 +1,14 @@
{
"values": [
"#cobblemon:spawns/is_piglin_structure",
"minecraft:fortress",
{
"id": "#nova_structures:nether_skeleton_structures",
"required": false
},
{
"id": "#betterfortresses:better_fortresses",
"required": false
}
]
}
@@ -0,0 +1,13 @@
{
"values": [
"minecraft:monument",
{
"id": "#nova_structures:trident_trial_monument",
"required": false
},
{
"id": "#betteroceanmonuments:better_ocean_monuments",
"required": false
}
]
}
@@ -0,0 +1,5 @@
{
"values": [
"#minecraft:ocean_ruin"
]
}
@@ -0,0 +1,9 @@
{
"values": [
"minecraft:bastion_remnant",
{
"id": "#nova_structures:piglin_structures",
"required": false
}
]
}
@@ -0,0 +1,85 @@
{
"values": [
"#cobblemon:ruin",
{
"id": "nova_structures:remnant_bee_keeper",
"required": false
},
{
"id": "nova_structures:remnant_big_remnant",
"required": false
},
{
"id": "nova_structures:remnant_big_remnant_2",
"required": false
},
{
"id": "nova_structures:remnant_big_remnant_3",
"required": false
},
{
"id": "nova_structures:remnant_medium_remnant",
"required": false
},
{
"id": "nova_structures:remnant_medium_remnant_2",
"required": false
},
{
"id": "nova_structures:remnant_bridge_remnant",
"required": false
},
{
"id": "nova_structures:remnant_bunny_base",
"required": false
},
{
"id": "nova_structures:remnant_desert_remnant",
"required": false
},
{
"id": "nova_structures:remnant_forest_smith",
"required": false
},
{
"id": "nova_structures:remnant_miner_hut",
"required": false
},
{
"id": "nova_structures:remnant_ruin_farmer",
"required": false
},
{
"id": "nova_structures:remnant_ruin_smith",
"required": false
},
{
"id": "nova_structures:remnant_sawmill",
"required": false
},
{
"id": "nova_structures:remnant_school_remnant",
"required": false
},
{
"id": "nova_structures:remnant_taiga_castle",
"required": false
},
{
"id": "nova_structures:remnant_zombie_horse_ranch",
"required": false
},
{
"id": "nova_structures:remnant_classic_village",
"required": false
},
{
"id": "#nova_structures:ruin_town",
"required": false
},
{
"id": "nova_structures:wild_ruin",
"required": false
}
]
}
@@ -0,0 +1,10 @@
{
"values": [
"#minecraft:shipwreck",
"#cobblemon:fishing_boat",
{
"id": "aquamirae:shipwreck",
"required": false
}
]
}
@@ -0,0 +1,34 @@
{
"values": [
"minecraft:swamp_hut",
"#minecraft:cats_spawn_as_black",
{
"id": "#nova_structures:witch_villa",
"required": false
},
{
"id": "nova_structures:tavern_mangrove",
"required": false
},
{
"id": "nova_structures:tavern_swamp",
"required": false
},
{
"id": "nova_structures:village_swamp",
"required": false
},
{
"id": "nova_structures:firewatch_tower_swamp",
"required": false
},
{
"id": "nova_structures:remnant_ominous_shop",
"required": false
},
{
"id": "betterwitchhuts:witch_hut",
"required": false
}
]
}
+1 -1
View File
@@ -14,7 +14,7 @@ parchment_version = 2024.07.28@zip
java_version = 21
mod_id=cobblemon
mod_version=1.8.3
mod_version=1.8.4
snapshot=false
fabric.loom.multiProjectOptimisation=false