Compare commits

...
Author SHA1 Message Date
tmetcalfe89 43c0159471 mock up for it 2024-10-13 16:57:59 -07:00
Hiroku 654c4341ef Merge branch 'bugfix/hiro-fixes-packets' into 'main'
Delay deserialization of Pokemon S2C codec until it's in the handler for...

See merge request cable-mc/cobblemon!1196
2024-10-13 09:40:48 +00:00
Hiroku 2c3112d0d4 Merge branch 'FishingSendoutFix' into 'main'
Closes #1011 Fishing sendout fix

Closes #1011

See merge request cable-mc/cobblemon!1200
2024-10-13 07:06:42 +00:00
JazzMcNade bb4d0298a6 Merge branch 'main' into FishingSendoutFix 2024-10-13 01:46:44 -05:00
JazzMcNade b5f9dfd66d Fixed player pokemon being sent out at the player's feet when initiating a fishing battle. 2024-10-13 01:42:54 -05:00
Paul 0d8bc4351a Merge remote-tracking branch 'origin/main' 2024-10-13 16:08:15 +10:00
Paul f4276bbcc0 Removed temporary raft code, indirectly closes #1087 2024-10-13 16:08:00 +10:00
Paul a2c6d6fa30 Fixed shoulder renderer not applying a pokemon context, closes #1083 2024-10-13 16:03:40 +10:00
Patch Notes GuyandWeblate 2c3ac5da05 Translated using Weblate (Czech)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/cs/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate ad9c86372d Translated using Weblate (Japanese)
Currently translated at 91.5% (5841 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ja/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate f531c1eb64 Translated using Weblate (Chinese (Traditional Han script, Hong Kong))
Currently translated at 67.6% (4318 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hant_HK/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate 0a8743158d Translated using Weblate (Portuguese (Portugal))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate d344ad0bc6 Translated using Weblate (Italian)
Currently translated at 85.8% (5477 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/it/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 62c3ec8c72 Translated using Weblate (Thai)
Currently translated at 72.9% (4653 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate b4919fea4d Translated using Weblate (English (United Kingdom))
Currently translated at 0.1% (9 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/en_GB/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 2ebb8e64c4 Translated using Weblate (English (en_PT))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/en_PT/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 379bddc338 Translated using Weblate (Korean)
Currently translated at 86.9% (5551 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ko/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 0335eccfb5 Translated using Weblate (Russian)
Currently translated at 94.4% (6028 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ru/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 0497489292 Translated using Weblate (Spanish (Mexico))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 2c168bbce0 Translated using Weblate (Esperanto (eo_EO))
Currently translated at 17.2% (1099 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/eo_EO/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate f6dcbc0d26 Translated using Weblate (Greek (el_CY))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/el_CY/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate cc54eb8f3f Translated using Weblate (Hungarian)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/hu/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 65314f7d1d Translated using Weblate (Spanish)
Currently translated at 85.7% (5470 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate bf7f84a94e Translated using Weblate (French)
Currently translated at 91.9% (5871 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-13 02:45:19 +00:00
MiaandWeblate da64a9c186 Translated using Weblate (German)
Currently translated at 91.8% (5865 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate a8147beae1 Translated using Weblate (Polish)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pl/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 25da152ebf Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 71.2% (4550 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hant/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 1cc3d64c79 Translated using Weblate (Ukrainian)
Currently translated at 88.7% (5663 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/uk/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 30063e96b5 Translated using Weblate (Dutch)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/nl/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 3bd7d09b34 Translated using Weblate (Portuguese (Brazil))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate c3d5773cc9 Translated using Weblate (Turkish)
Currently translated at 11.2% (718 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/tr/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate c688fbabc4 Translated using Weblate (Swedish)
Currently translated at 17.2% (1099 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/sv/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 4b313ef54c Translated using Weblate (French (Canada))
Currently translated at 88.7% (5664 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr_CA/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 01c2c4efae Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 90.3% (5767 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-13 02:45:18 +00:00
Hiroku aab6fcf891 Merge branch 'Fix1035RestorationExplosions' into 'main'
Closes #1035 restoration explosions

Closes #1035

See merge request cable-mc/cobblemon!1199
2024-10-13 01:53:03 +00:00
JazzMcNade 86ae831d74 Merge branch 'main' into Fix1035RestorationExplosions 2024-10-12 20:35:04 -05:00
JazzMcNade 9d12ce8a33 Fixed tank drops in survival/creative. Reduced code. 2024-10-12 20:34:38 -05:00
Paul 57ef15dea2 Remove reference to non-existent preset 2024-10-13 10:30:56 +10:00
Paul 5650cdc6ed Fixed NPC presets loading from NPCs folder (OOPS), fixed variations not applying to NPC classes, fixed variations not updating aspects after init 2024-10-13 10:30:27 +10:00
Paul 0048622693 Fixed WeightedAspect adapter not being registered for NPC presets 2024-10-13 09:08:44 +10:00
Paul 7940b60d77 Fixed Amaura fossil crash, closes #1085 2024-10-13 08:43:52 +10:00
Paul 886c0c7026 Fixed presets not able to deserialize variation providers 2024-10-13 07:40:25 +10:00
Hiroku 199ab9f4ee Merge branch 'RemoveUnnecessaryGenericHitEffects' into 'main'
Moves with Action Effects no longer display the generic hit effect.

See merge request cable-mc/cobblemon!1197
2024-10-12 21:33:29 +00:00
Paul 573b8cbcf9 Fix SpawnPokemonPacket decoding Species on net thread 2024-10-13 07:32:28 +10:00
JazzMcNade 6583168366 Moves with Action Effects no longer display the generic hit effect. Created generic effect for non-move damage sources. 2024-10-12 14:49:29 -05:00
JazzMcNade 4cfaf27ac7 Fixes 1035 2024-10-06 19:58:38 -05:00
44 changed files with 83349 additions and 83069 deletions
@@ -56,16 +56,12 @@ abstract class MultiblockBlock(properties: Properties) : BaseEntityBlock(propert
return super.useWithoutItem(state, world, pos, player, hit)
}
override fun playerWillDestroy(world: Level, pos: BlockPos, state: BlockState, player: Player): BlockState {
val result = super.playerWillDestroy(world, pos, state, player)
if (!world.isClientSide) {
val entity = world.getBlockEntity(pos)
if (entity is MultiblockEntity && entity.multiblockStructure != null) {
entity.multiblockStructure!!.playerWillDestroy(world, pos, state, player)
}
entity?.setRemoved()
override fun onRemove(state: BlockState, level: Level, pos: BlockPos, newState: BlockState, movedByPiston: Boolean) {
val entity = level.getBlockEntity(pos)
if (entity is MultiblockEntity && entity.multiblockStructure != null && state.block != newState.block) {
entity.multiblockStructure!!.playerWillDestroy(level, pos, state, null)
}
return result
super.onRemove(state, level, pos, newState, movedByPiston)
}
override fun newBlockEntity(pos: BlockPos, state: BlockState): BlockEntity? {
@@ -61,10 +61,10 @@ object NPCClasses : JsonDataRegistry<NPCClass> {
.registerTypeAdapter(NPCPartyProvider::class.java, NPCPartyProviderAdapter)
.registerTypeAdapter(NPCInteractConfiguration::class.java, NPCInteractConfigurationAdapter)
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
.registerTypeAdapter(NPCVariationProvider::class.java, NPCVariationProviderAdapter)
.registerTypeAdapter(MoValue::class.java, MoValueAdapter)
.registerTypeAdapter(NPCClass::class.java, NPCClassAdapter)
.registerTypeAdapter(Component::class.java, TextAdapter)
.registerTypeAdapter(NPCVariationProvider::class.java, NPCVariationProviderAdapter)
.registerTypeAdapter(WeightedAspect::class.java, WeightedAspectAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Block::class.java).type, BlockLikeConditionAdapter)
@@ -17,6 +17,8 @@ import com.cobblemon.mod.common.api.drop.ItemDropMethod
import com.cobblemon.mod.common.api.entity.EntityDimensionsAdapter
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.api.npc.configuration.NPCInteractConfiguration
import com.cobblemon.mod.common.api.npc.variation.NPCVariationProvider
import com.cobblemon.mod.common.api.npc.variation.WeightedAspect
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.api.spawning.TimeRange
@@ -54,8 +56,10 @@ object NPCPresets : JsonDataRegistry<NPCPreset> {
.registerTypeAdapter(DropEntry::class.java, DropEntryAdapter)
.registerTypeAdapter(CompoundTag::class.java, NbtCompoundAdapter)
.registerTypeAdapter(NPCPartyProvider::class.java, NPCPartyProviderAdapter)
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
.registerTypeAdapter(NPCInteractConfiguration::class.java, NPCInteractConfigurationAdapter)
.registerTypeAdapter(WeightedAspect::class.java, WeightedAspectAdapter)
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
.registerTypeAdapter(NPCVariationProvider::class.java, NPCVariationProviderAdapter)
.registerTypeAdapter(MoValue::class.java, MoValueAdapter)
.registerTypeAdapter(Component::class.java, TextAdapter)
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
@@ -67,7 +71,7 @@ object NPCPresets : JsonDataRegistry<NPCPreset> {
.create()
override val typeToken: TypeToken<NPCPreset> = TypeToken.get(NPCPreset::class.java)
override val resourcePath = "npcs"
override val resourcePath = "npc_presets"
override val observable = SimpleObservable<NPCPresets>()
private val npcPresetsByIdentifier = mutableMapOf<ResourceLocation, NPCPreset>()
@@ -13,6 +13,7 @@ import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.moves.animations.ActionEffectContext
import com.cobblemon.mod.common.api.moves.animations.ActionEffects
import com.cobblemon.mod.common.api.moves.animations.UsersProvider
import com.cobblemon.mod.common.api.pokemon.status.Statuses
import com.cobblemon.mod.common.api.text.red
@@ -28,6 +29,7 @@ import com.cobblemon.mod.common.net.messages.client.effect.RunPosableMoLangPacke
import com.cobblemon.mod.common.pokemon.evolution.progress.DamageTakenEvolutionProgress
import com.cobblemon.mod.common.pokemon.evolution.progress.RecoilEvolutionProgress
import com.cobblemon.mod.common.pokemon.status.statuses.persistent.PoisonStatus
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.lang
@@ -100,7 +102,12 @@ class DamageInstruction(
if (status is PoisonStatus) {
status = pokemon.effectedPokemon.status?.status ?: status
}
val actionEffect = status?.getActionEffect() ?: return@dispatch GO
// Damage effects without a action effect receive the generic damage effect
val actionEffect = status?.getActionEffect() ?: effect?.let {
ActionEffects.actionEffects["generic_damage".asIdentifierDefaultingNamespace()]
} ?: return@dispatch GO
val providers = mutableListOf<Any>(battle)
battlePokemon.effectedPokemon.entity?.let { UsersProvider(it) }?.let(providers::add)
@@ -137,16 +144,6 @@ class DamageInstruction(
distance = 50.0
)
}
//Play hit particle
if (pokemonEntity != null) {
RunPosableMoLangPacket(pokemonEntity.id, setOf("q.particle('cobblemon:hit', 'target')")).sendToPlayersAround(
x = pokemonEntity.x,
y = pokemonEntity.y,
z = pokemonEntity.z,
worldKey = pokemonEntity.level().dimension(),
distance = 50.0
)
}
val newHealthRatio: Float
val remainingHealth = newHealth.split("/")[0].toInt()
@@ -72,7 +72,7 @@ class RestorationTankBlock(settings: Properties) : MultiblockBlock(settings), Wo
override fun playerWillDestroy(world: Level, pos: BlockPos, state: BlockState, player: Player): BlockState {
val result = super.playerWillDestroy(world, pos, state, player)
if (!world.isClientSide) {
if (!world.isClientSide && player.isCreative) {
val otherPart = world.getBlockState(getPositionOfOtherPart(state, pos))
if (otherPart.block is RestorationTankBlock) {
@@ -85,7 +85,6 @@ class RestorationTankBlock(settings: Properties) : MultiblockBlock(settings), Wo
)
}
}
return result
}
@@ -171,7 +170,14 @@ class RestorationTankBlock(settings: Properties) : MultiblockBlock(settings), Wo
}
override fun onRemove(state: BlockState, world: Level, pos: BlockPos, newState: BlockState, moved: Boolean) {
if (!state.`is`(newState.block)) super.onRemove(state, world, pos, newState, moved)
if (state.block != newState.block) {
super.onRemove(state, world, pos, newState, moved)
val otherPart = world.getBlockState(getPositionOfOtherPart(state, pos))
if (otherPart.block is RestorationTankBlock) {
world.setBlock(getPositionOfOtherPart(state, pos), Blocks.AIR.defaultBlockState(), UPDATE_CLIENTS)
}
}
}
@Deprecated("Deprecated in Java")
@@ -217,6 +223,25 @@ class RestorationTankBlock(settings: Properties) : MultiblockBlock(settings), Wo
shape
}
}
override fun updateShape(
state: BlockState,
direction: Direction,
neighborState: BlockState,
world: LevelAccessor,
pos: BlockPos,
neighborPos: BlockPos
): BlockState {
val isTank = neighborState.`is`(this)
val part = state.getValue(PART)
if (!isTank && part == TankPart.TOP && neighborPos == pos.below()) {
return Blocks.AIR.defaultBlockState()
} else if (!isTank && part == TankPart.BOTTOM && neighborPos == pos.above()) {
return Blocks.AIR.defaultBlockState()
}
return state
}
override fun getContainer(
state: BlockState,
world: LevelAccessor,
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.block.multiblock
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonBlocks
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.advancement.CobblemonCriteria
import com.cobblemon.mod.common.api.events.CobblemonEvents
@@ -232,7 +233,7 @@ class FossilMultiblockStructure (
for (i in 0..5) {
box = box.move(directionToBehind.normal.x.toDouble(), 0.0, directionToBehind.normal.z.toDouble())
val fixedPosition = makeSuitableY(world, idealPlace.offset(directionToBehind.normal), entity, box)
val fixedPosition = makeSuitableY(world, idealPlace.offset(directionToBehind.normal.multiply(i + 1)), entity, box)
if (fixedPosition != null) {
entity.setPos(fixedPosition.center.subtract(0.0, 0.5, 0.0))
// TODO: Find a correct way to set the new entity's Yaw rotation. (Face away from the machine)
@@ -328,9 +329,9 @@ class FossilMultiblockStructure (
val analyzerEntity = world.getBlockEntity(analyzerPos) as? MultiblockEntity
val tankBaseEntity = world.getBlockEntity(tankBasePos) as? MultiblockEntity
val tankTopEntity = world.getBlockEntity(tankBasePos.above()) as? MultiblockEntity
val tankBaseBlockState = world.getBlockState(tankBaseEntity?.blockPos)
val direction = tankBaseBlockState.getValue(HorizontalDirectionalBlock.FACING).opposite
val wildPokemon: Pokemon? = if(hasCreatedPokemon) resultingFossil?.result?.create() else null
val tankBaseBlockState = tankBaseEntity?.blockPos?.let { world.getBlockState(it) }
val direction = if (tankBaseBlockState?.block == CobblemonBlocks.RESTORATION_TANK) tankBaseBlockState.getValue(HorizontalDirectionalBlock.FACING).opposite else Direction.UP
val wildPokemon: Pokemon? = if (hasCreatedPokemon) resultingFossil?.result?.create() else null
monitorEntity?.multiblockStructure = null
analyzerEntity?.multiblockStructure = null
@@ -104,8 +104,8 @@ class PokemonOnShoulderRenderer<T : Player>(renderLayerParent: RenderLayerParent
var state = FloatingState()
state.currentAspects = shoulderData.aspects
val model = PokemonModelRepository.getPoser(shoulderData.species.resourceIdentifier, state)
model.context = context
context.put(RenderContext.SPECIES, shoulderData.species.resourceIdentifier)
context.put(RenderContext.ASPECTS, shoulderData.aspects)
val scale = shoulderData.form.baseScale * shoulderData.scaleModifier
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.ModAPI
import com.cobblemon.mod.common.api.fishing.FishingBait
import com.cobblemon.mod.common.api.fishing.FishingBaits
import com.cobblemon.mod.common.api.scheduling.afterOnServer
import com.cobblemon.mod.common.api.spawning.BestSpawner
import com.cobblemon.mod.common.api.spawning.SpawnBucket
import com.cobblemon.mod.common.api.spawning.detail.EntitySpawnResult
@@ -25,6 +26,7 @@ import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.item.interactive.PokerodItem
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.party
import com.cobblemon.mod.common.util.toBlockPos
import kotlin.math.sqrt
import net.minecraft.advancements.CriteriaTriggers
@@ -709,8 +711,11 @@ class PokeRodFishingBobberEntity(type: EntityType<out PokeRodFishingBobberEntity
hookedEntity = level().getEntity(hookedEntityID)
}
if (spawnedPokemon != null) {
BattleBuilder.pve((player as ServerPlayer), spawnedPokemon).ifErrored { it.sendTo(player) { it.red() } }
afterOnServer(ticks = 2) {
if (player !in player.level().players()) {
return@afterOnServer
}
spawnedPokemon?.forceBattle(player as ServerPlayer)
}
}
@@ -379,6 +379,7 @@ class NPCEntity(world: Level) : AgeableMob(CobblemonEntities.NPC, world), Npc, P
npc.config.forEach { it.applyDefault(this) }
npc.variations.values.forEach { this.appliedAspects.addAll(it.provideAspects(this)) }
party = npc.party?.provide(this, level)
updateAspects()
}
override fun mobInteract(player: Player, hand: InteractionHand): InteractionResult {
@@ -10,6 +10,8 @@ package com.cobblemon.mod.common.item
import com.cobblemon.mod.common.client.CobblemonClient
import com.cobblemon.mod.common.client.pokedex.PokedexTypes
import com.cobblemon.mod.common.pokedex.scanner.PokedexController
import com.cobblemon.mod.common.pokedex.scanner.PokemonScanner
import net.minecraft.client.player.LocalPlayer
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand
@@ -53,6 +55,10 @@ class PokedexItem(val type: PokedexTypes): CobblemonItem(Item.Properties().stack
val ticksInUse = getUseDuration(stack, user) - remainingUseTicks
usageContext.useTick(user, ticksInUse, true)
}
if (!world.isClientSide && user is ServerPlayer) {
val controller = PokedexController.getController(user)
controller.useTick(remainingUseTicks)
}
super.onUseTick(world, user, stack, remainingUseTicks)
}
@@ -67,6 +73,10 @@ class PokedexItem(val type: PokedexTypes): CobblemonItem(Item.Properties().stack
val ticksInUse = getUseDuration(stack, user) - remainingUseTicks
usageContext.stopUsing(user, ticksInUse)
}
if (!world.isClientSide && user is ServerPlayer) {
val controller = PokedexController.getController(user)
controller.end()
}
super.releaseUsing(stack, world, user, remainingUseTicks)
}
@@ -13,9 +13,7 @@ import com.cobblemon.mod.common.api.pokeball.PokeBalls
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.pokemon.FormData
import com.cobblemon.mod.common.pokemon.Gender
import com.cobblemon.mod.common.pokemon.Species
import com.cobblemon.mod.common.util.*
import java.util.UUID
import net.minecraft.world.entity.Entity
@@ -27,10 +25,10 @@ import net.minecraft.resources.ResourceLocation
class SpawnPokemonPacket(
private val ownerId: UUID?,
private val scaleModifier: Float,
private val species: Species,
private val speciesId: ResourceLocation,
private val gender: Gender,
private val shiny: Boolean,
private val form: FormData,
private val formName: String,
private val aspects: Set<String>,
private val battleId: UUID?,
private val phasingTargetId: Int,
@@ -52,10 +50,10 @@ class SpawnPokemonPacket(
constructor(entity: PokemonEntity, vanillaSpawnPacket: ClientboundAddEntityPacket) : this(
entity.ownerUUID,
entity.pokemon.scaleModifier,
entity.exposedSpecies,
entity.exposedSpecies.resourceIdentifier,
entity.pokemon.gender,
entity.pokemon.shiny,
entity.pokemon.form,
entity.pokemon.form.formOnlyShowdownId(),
entity.pokemon.aspects,
entity.battleId,
entity.phasingTargetId,
@@ -75,10 +73,10 @@ class SpawnPokemonPacket(
override fun encodeEntityData(buffer: RegistryFriendlyByteBuf) {
buffer.writeNullable(ownerId) { _, v -> buffer.writeUUID(v) }
buffer.writeFloat(this.scaleModifier)
buffer.writeIdentifier(this.species.resourceIdentifier)
buffer.writeIdentifier(this.speciesId)
buffer.writeEnumConstant(this.gender)
buffer.writeBoolean(this.shiny)
buffer.writeString(this.form.formOnlyShowdownId())
buffer.writeString(this.formName)
buffer.writeCollection(this.aspects) { pb, value -> pb.writeString(value) }
buffer.writeNullable(this.battleId) { pb, value -> pb.writeUUID(value) }
buffer.writeInt(this.phasingTargetId)
@@ -98,10 +96,10 @@ class SpawnPokemonPacket(
entity.ownerUUID = ownerId
entity.pokemon.apply {
scaleModifier = this@SpawnPokemonPacket.scaleModifier
species = this@SpawnPokemonPacket.species
species = this@SpawnPokemonPacket.speciesId.let { PokemonSpecies.getByIdentifier(it) ?: PokemonSpecies.random() }
gender = this@SpawnPokemonPacket.gender
shiny = this@SpawnPokemonPacket.shiny
form = this@SpawnPokemonPacket.form
form = this@SpawnPokemonPacket.formName.let { formName -> species.forms.find { it.formOnlyShowdownId() == formName }} ?: species.standardForm
forcedAspects = this@SpawnPokemonPacket.aspects
nickname = this@SpawnPokemonPacket.nickname
PokeBalls.getPokeBall(this@SpawnPokemonPacket.caughtBall)?.let { caughtBall = it }
@@ -127,12 +125,10 @@ class SpawnPokemonPacket(
fun decode(buffer: RegistryFriendlyByteBuf): SpawnPokemonPacket {
val ownerId = buffer.readNullable { buffer.readUUID() }
val scaleModifier = buffer.readFloat()
val identifier = buffer.readIdentifier()
val species = requireNotNull(PokemonSpecies.getByIdentifier(identifier)) { "received unknown PokemonSpecies: $identifier" }
val speciesId = buffer.readIdentifier()
val gender = buffer.readEnumConstant(Gender::class.java)
val shiny = buffer.readBoolean()
val showdownId = buffer.readString()
val form = species.forms.firstOrNull { it.formOnlyShowdownId() == showdownId } ?: species.standardForm
val formName = buffer.readString()
val aspects = buffer.readList { it.readString() }.toSet()
val battleId = buffer.readNullable { buffer.readUUID() }
val phasingTargetId = buffer.readInt()
@@ -148,7 +144,7 @@ class SpawnPokemonPacket(
val freezeFrame = buffer.readFloat()
val vanillaPacket = decodeVanillaPacket(buffer)
return SpawnPokemonPacket(ownerId, scaleModifier, species, gender, shiny, form, aspects, battleId, phasingTargetId, beamModeEmitter, nickname, labelLevel, poseType, unbattlable, hideLabel, caughtBall, spawnAngle, friendship, freezeFrame, vanillaPacket)
return SpawnPokemonPacket(ownerId, scaleModifier, speciesId, gender, shiny, formName, aspects, battleId, phasingTargetId, beamModeEmitter, nickname, labelLevel, poseType, unbattlable, hideLabel, caughtBall, spawnAngle, friendship, freezeFrame, vanillaPacket)
}
}
@@ -0,0 +1,81 @@
package com.cobblemon.mod.common.pokedex.scanner
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.server.level.ServerPlayer
import java.util.*
enum class STATE {
IDLE,
SCANNING,
SCANNED
}
class PokedexController(val player: ServerPlayer) {
companion object {
private val controllers = mutableMapOf<UUID, PokedexController>()
fun getController(player: ServerPlayer): PokedexController {
val uuid = player.uuid
if (!controllers.containsKey(uuid)) controllers[uuid] = PokedexController(player)
return controllers[uuid]!!
}
const val GOAL_TICKS = 50
}
var zoom: Int = 10
var targetPokemon: Pokemon? = null
private var startTime: Int? = null
var state: STATE = STATE.IDLE
fun useTick(remainingUseTicks: Int) {
val target = PokemonScanner.findPokemon(player, zoom)
if (target === null) {
// Not pointed at anything.
startTime = null
targetPokemon = null
zoom = 10
state = STATE.IDLE
// TODO: Send IDLE update packet
/**
* {
* state: "IDLE"
* }
*/
return
}
val newTargetPokemon = target.pokemon
if (targetPokemon !== newTargetPokemon) {
// Pointed at a new thing.
startTime = remainingUseTicks
targetPokemon = newTargetPokemon
state = STATE.SCANNING
// TODO: Send SCANNING update packet
/**
* {
* state: "SCANNING"
* }
*/
return
}
if (state == STATE.SCANNING && startTime!! - remainingUseTicks >= GOAL_TICKS) {
state = STATE.SCANNED
// TODO: Send SCANNED update packet
/**
* {
* state: "SCANNED",
* pokemon: targetPokemon
* }
*/
}
}
fun end() {
startTime = null
targetPokemon = null
if (state !== STATE.IDLE) {
// TODO: Send IDLE update packet (as above, so below)
state = STATE.IDLE
}
}
}
@@ -170,9 +170,6 @@ open class Pokemon : ShowdownIdentifiable {
_form.emit(value)
}
// Floating Platform for surface water battles
var battleSurface: Boat? = null
// Need to happen before currentHealth init due to the calc
var ivs = IVs.createRandomIVs()
internal set
@@ -567,18 +564,6 @@ open class Pokemon : ShowdownIdentifiable {
position.z.toInt()
)
) && this.species.types.all { it != ElementalTypes.WATER && it != ElementalTypes.FLYING }) {
// Create a new boat entity with the generic EntityType.BOAT
val raftEntity = Boat(level, position.x, position.y, position.z)
raftEntity.variant = Boat.Type.BAMBOO
raftEntity.setPos(position.x, position.y, position.z) // Set the position of the boat
// Spawn the boat entity in the world
level.addFreshEntity(raftEntity)
this.battleSurface = raftEntity
}
}
@@ -686,13 +671,11 @@ open class Pokemon : ShowdownIdentifiable {
return future
}
fun recall() {
CobblemonEvents.POKEMON_RECALLED.post(PokemonRecalledEvent(this, this.entity))
val state = this.state as? ActivePokemonState
this.state = InactivePokemonState()
state?.recall()
this.battleSurface?.discard() // destroy the battle surface if it exists
}
fun tryRecallWithAnimation() {
@@ -58,6 +58,13 @@ object NPCClassAdapter : JsonDeserializer<NPCClass> {
obj.get("hitbox")?.let { npcClass.hitbox = ctx.deserialize(it, EntityDimensions::class.java) }
obj.get("battleConfiguration")?.let { npcClass.battleConfiguration = ctx.deserialize(it, NPCBattleConfiguration::class.java) }
obj.get("interaction")?.let { npcClass.interaction = ctx.deserialize(it, NPCInteractConfiguration::class.java) }
obj.get("variations")?.let {
val obj = it.asJsonObject
obj.entrySet().forEach { (key, value) ->
val provider = ctx.deserialize<NPCVariationProvider>(value, NPCVariationProvider::class.java)
npcClass.variations[key] = provider
}
}
obj.get("party")?.let { npcClass.party = ctx.deserialize(it, NPCPartyProvider::class.java) }
obj.get("skill")?.let { npcClass.skill = it.asInt }
@@ -5,16 +5,16 @@
"poses": {
"sleep": {
"poseTypes": ["SLEEP"],
"animations": ["q.bedrock('amaura_fetus', 'sleep')"]
},
"quirks": [
{
"name": "quirk",
"animations": ["q.bedrock_stateful('amaura_fetus', 'quirk')"],
"loopTimes": 1,
"minSecondsBetweenOccurrences": 30,
"maxSecondsBetweenOccurrences": 60
}
]
"animations": ["q.bedrock('amaura_fetus', 'sleep')"],
"quirks": [
{
"name": "quirk",
"animations": ["q.bedrock_stateful('amaura_fetus', 'quirk')"],
"loopTimes": 1,
"minSecondsBetweenOccurrences": 30,
"maxSecondsBetweenOccurrences": 60
}
]
}
}
}
File diff suppressed because it is too large Load Diff
@@ -5,7 +5,7 @@
"item.cobblemon.verdant_ball": "Grünball",
"item.cobblemon.roseate_ball": "Rosenball",
"item.cobblemon.citrine_ball": "Zitrinball",
"item.cobblemon.great_ball": "Super Ball",
"item.cobblemon.great_ball": "Superball",
"item.cobblemon.ultra_ball": "Hyperball",
"item.cobblemon.master_ball": "Meister Ball",
"item.cobblemon.safari_ball": "Safariball",
@@ -31,22 +31,22 @@
"item.cobblemon.park_ball": "Parkball",
"item.cobblemon.dream_ball": "Traumball",
"item.cobblemon.beast_ball": "Ultraball",
"item.cobblemon.ancient_poke_ball": "Ancient Poké Ball",
"item.cobblemon.ancient_poke_ball": "Antiker Pokéball",
"item.cobblemon.ancient_citrine_ball": "Antiker Zitrin Ball",
"item.cobblemon.ancient_verdant_ball": "Ancient Verdant Ball",
"item.cobblemon.ancient_azure_ball": "Ancient Azure Ball",
"item.cobblemon.ancient_roseate_ball": "Ancient Roseate Ball",
"item.cobblemon.ancient_slate_ball": "Ancient Slate Ball",
"item.cobblemon.ancient_ivory_ball": "Ancient Ivory Ball",
"item.cobblemon.ancient_great_ball": "Ancient Great Ball",
"item.cobblemon.ancient_azure_ball": "Antiker Azurball",
"item.cobblemon.ancient_roseate_ball": "Antiker Rosaball",
"item.cobblemon.ancient_slate_ball": "Antiker Schieferball",
"item.cobblemon.ancient_ivory_ball": "Antiker Elfenbeinball",
"item.cobblemon.ancient_great_ball": "Antiker Superball",
"item.cobblemon.ancient_ultra_ball": "Antiker Hyperball",
"item.cobblemon.ancient_heavy_ball": "Ancient Heavy Ball",
"item.cobblemon.ancient_leaden_ball": "Ancient Leaden Ball",
"item.cobblemon.ancient_gigaton_ball": "Ancient Gigaton Ball",
"item.cobblemon.ancient_feather_ball": "Ancient Feather Ball",
"item.cobblemon.ancient_wing_ball": "Ancient Wing Ball",
"item.cobblemon.ancient_jet_ball": "Ancient Jet Ball",
"item.cobblemon.ancient_origin_ball": "Ancient Origin Ball",
"item.cobblemon.ancient_heavy_ball": "Antiker Schwerball",
"item.cobblemon.ancient_leaden_ball": "Antiker Zentnerball",
"item.cobblemon.ancient_gigaton_ball": "Antiker Tonnenball",
"item.cobblemon.ancient_feather_ball": "Antiker Federball",
"item.cobblemon.ancient_wing_ball": "Antiker Flügelball",
"item.cobblemon.ancient_jet_ball": "Antiker Düsenball",
"item.cobblemon.ancient_origin_ball": "Antiker Urball",
"item.cobblemon.black_apricorn_seed": "Schwarzer Aprikoko Sämling",
"item.cobblemon.blue_apricorn_seed": "Blauer Aprikoko Sämling",
"item.cobblemon.green_apricorn_seed": "Grüner Aprikoko Sämling",
@@ -67,7 +67,7 @@
"item.cobblemon.apricorn_chest_boat": "Aprikoko Boot mit Truhe",
"item.cobblemon.link_cable": "Linkkabel",
"item.cobblemon.dragon_scale": "Drachenhaut",
"item.cobblemon.kings_rock": "Königsstein",
"item.cobblemon.kings_rock": "King-Stein",
"item.cobblemon.metal_coat": "Metallmantel",
"item.cobblemon.upgrade": "Up-Grade",
"item.cobblemon.dubious_disc": "Dubiosdisc",
@@ -90,8 +90,8 @@
"item.cobblemon.ribbon_sweet": "Zucker-Schleife",
"item.cobblemon.chipped_pot": "Löchrige Kanne",
"item.cobblemon.cracked_pot": "Rissige Kanne",
"item.cobblemon.masterpiece_teacup": "Masterpiece Teacup",
"item.cobblemon.unremarkable_teacup": "Unremarkable Teacup",
"item.cobblemon.masterpiece_teacup": "Edle Teeschale",
"item.cobblemon.unremarkable_teacup": "Simple Teeschale",
"item.cobblemon.sweet_apple": "Süßer Apfel",
"item.cobblemon.tart_apple": "Saurer Apfel",
"item.cobblemon.galarica_cuff": "Galarnuss-Reif",
@@ -125,14 +125,14 @@
"item.cobblemon.hyper_potion": "Hypertrank",
"item.cobblemon.max_potion": "Top-Trank",
"item.cobblemon.full_restore": "Top-Genesung",
"item.cobblemon.health_feather": "Health Feather",
"item.cobblemon.muscle_feather": "Muscle Feather",
"item.cobblemon.resist_feather": "Resist Feather",
"item.cobblemon.genius_feather": "Genius Feather",
"item.cobblemon.clever_feather": "Clever Feather",
"item.cobblemon.swift_feather": "Swift Feather",
"item.cobblemon.ability_capsule": "Ability Capsule",
"item.cobblemon.ability_patch": "Ability Patch",
"item.cobblemon.health_feather": "Heilfeder",
"item.cobblemon.muscle_feather": "Kraftfeder",
"item.cobblemon.resist_feather": "Abwehrfeder",
"item.cobblemon.genius_feather": "Geniefeder",
"item.cobblemon.clever_feather": "Espritfeder",
"item.cobblemon.swift_feather": "Flinkfeder",
"item.cobblemon.ability_capsule": "Fähigkeiten-Kapsel",
"item.cobblemon.ability_patch": "Fähigkeiten-Pflaster",
"item.cobblemon.red_mint_leaf": "Rotes Minzblatt",
"item.cobblemon.red_mint_leaf.tooltip": "Kann ein Pokémon's Angriff beeinflussen",
"item.cobblemon.blue_mint_leaf": "Blaues Minzblatt",
@@ -200,26 +200,26 @@
"item.cobblemon.hard_stone": "Granitstein",
"item.cobblemon.heavy_duty_boots": "Plateauschuhe",
"item.cobblemon.iron_ball": "Iron Ball",
"item.cobblemon.lagging_tail": "Lagging Tail",
"item.cobblemon.lagging_tail": "Schwerschwf.",
"item.cobblemon.leftovers": "Überreste",
"item.cobblemon.light_ball": "Light Ball",
"item.cobblemon.light_ball": "Kugelblitz",
"item.cobblemon.light_clay": "Lichtlehm",
"item.cobblemon.loaded_dice": "Loaded Dice",
"item.cobblemon.loaded_dice": "Gezinkter Würfel",
"item.cobblemon.lucky_egg": "Glücks-Ei",
"item.cobblemon.luminous_moss": "Luminous Moss",
"item.cobblemon.luminous_moss": "Leuchtmoos",
"item.cobblemon.magnet": "Magnet",
"item.cobblemon.metronome": "Metronome",
"item.cobblemon.metronome": "Metronom",
"item.cobblemon.miracle_seed": "Wundersaat",
"item.cobblemon.muscle_band": "Muskelband",
"item.cobblemon.mystic_water": "Zauberwasser",
"item.cobblemon.never_melt_ice": "Ewiges Eis",
"item.cobblemon.poison_barb": "Giftstich",
"item.cobblemon.protective_pads": "Protective Pads",
"item.cobblemon.punching_glove": "Punching Glove",
"item.cobblemon.protective_pads": "Schutzpolster",
"item.cobblemon.punching_glove": "Boxhandschuh",
"item.cobblemon.quick_claw": "Flinkklaue",
"item.cobblemon.razor_claw": "Scharfklaue",
"item.cobblemon.razor_fang": "Scharfzahn",
"item.cobblemon.red_card": "Red Card",
"item.cobblemon.red_card": "Rote Karte",
"item.cobblemon.ring_target": "Ring Target",
"item.cobblemon.rocky_helmet": "Beulenhelm",
"item.cobblemon.room_service": "Room Service",
@@ -233,15 +233,15 @@
"item.cobblemon.soft_sand": "Pudersand",
"item.cobblemon.soothe_bell": "Soothe Bell",
"item.cobblemon.spell_tag": "Bannsticker",
"item.cobblemon.sticky_barb": "Sticky Barb",
"item.cobblemon.terrain_extender": "Terrain Extender",
"item.cobblemon.throat_spray": "Throat Spray",
"item.cobblemon.sticky_barb": "Klettdorn",
"item.cobblemon.terrain_extender": "Feldbeschichtung",
"item.cobblemon.throat_spray": "Halsspray",
"item.cobblemon.twisted_spoon": "Krummlöffel",
"item.cobblemon.utility_umbrella": "Utility Umbrella",
"item.cobblemon.weakness_policy": "Weakness Policy",
"item.cobblemon.wide_lens": "Wide Lens",
"item.cobblemon.utility_umbrella": "Allzweckschirm",
"item.cobblemon.weakness_policy": "Schwächenschutz",
"item.cobblemon.wide_lens": "Großlinse",
"item.cobblemon.wise_glasses": "Schlaubrille",
"item.cobblemon.zoom_lens": "Zoom Lens",
"item.cobblemon.zoom_lens": "Zoomlinse",
"item.cobblemon.mental_herb": "Mentalkraut",
"item.cobblemon.mirror_herb": "Kopierkraut",
"item.cobblemon.power_herb": "Energiekraut",
@@ -357,49 +357,49 @@
"item.cobblemon.max_ether": "Top-Äther",
"item.cobblemon.elixir": "Elixier",
"item.cobblemon.max_elixir": "Top-Elixier",
"item.cobblemon.normal_gem": "Normal Gem",
"item.cobblemon.water_gem": "Water Gem",
"item.cobblemon.fire_gem": "Fire Gem",
"item.cobblemon.grass_gem": "Grass Gem",
"item.cobblemon.dragon_gem": "Dragon Gem",
"item.cobblemon.ghost_gem": "Ghost Gem",
"item.cobblemon.ground_gem": "Ground Gem",
"item.cobblemon.steel_gem": "Steel Gem",
"item.cobblemon.fairy_gem": "Fairy Gem",
"item.cobblemon.rock_gem": "Rock Gem",
"item.cobblemon.psychic_gem": "Psychic Gem",
"item.cobblemon.electric_gem": "Electric Gem",
"item.cobblemon.bug_gem": "Bug Gem",
"item.cobblemon.poison_gem": "Poison Gem",
"item.cobblemon.ice_gem": "Ice Gem",
"item.cobblemon.dark_gem": "Dark Gem",
"item.cobblemon.fighting_gem": "Fighting Gem",
"item.cobblemon.flying_gem": "Flying Gem",
"item.cobblemon.armor_fossil": "Armor Fossil",
"item.cobblemon.fossilized_bird": "Fossilized Bird",
"item.cobblemon.claw_fossil": "Claw Fossil",
"item.cobblemon.cover_fossil": "Cover Fossil",
"item.cobblemon.fossilized_dino": "Fossilized Dino",
"item.cobblemon.dome_fossil": "Dome Fossil",
"item.cobblemon.fossilized_drake": "Fossilized Drake",
"item.cobblemon.fossilized_fish": "Fossilized Fish",
"item.cobblemon.helix_fossil": "Helix Fossil",
"item.cobblemon.jaw_fossil": "Jaw Fossil",
"item.cobblemon.old_amber_fossil": "Old Amber Fossil",
"item.cobblemon.plume_fossil": "Plume Fossil",
"item.cobblemon.root_fossil": "Root Fossil",
"item.cobblemon.sail_fossil": "Sail Fossil",
"item.cobblemon.skull_fossil": "Skull Fossil",
"item.cobblemon.normal_gem": "Normaljuwel",
"item.cobblemon.water_gem": "Wasserjuwel",
"item.cobblemon.fire_gem": "Feuerjuwel",
"item.cobblemon.grass_gem": "Pflanzenjuwel",
"item.cobblemon.dragon_gem": "Drakojuwel",
"item.cobblemon.ghost_gem": "Geisterjuwel",
"item.cobblemon.ground_gem": "Bodenjuwel",
"item.cobblemon.steel_gem": "Stahljuwel",
"item.cobblemon.fairy_gem": "Feenjuwel",
"item.cobblemon.rock_gem": "Gesteinsjuwel",
"item.cobblemon.psychic_gem": "Psychojuwel",
"item.cobblemon.electric_gem": "Elektrojuwel",
"item.cobblemon.bug_gem": "Käferjuwel",
"item.cobblemon.poison_gem": "Giftjuwel",
"item.cobblemon.ice_gem": "Eisjuwel",
"item.cobblemon.dark_gem": "Unlichtjuwel",
"item.cobblemon.fighting_gem": "Kampfjuwel",
"item.cobblemon.flying_gem": "Flugjuwel",
"item.cobblemon.armor_fossil": "Panzerfossil",
"item.cobblemon.fossilized_bird": "Vogelfossil",
"item.cobblemon.claw_fossil": "Klauenfossil",
"item.cobblemon.cover_fossil": "Schildfossil",
"item.cobblemon.fossilized_dino": "Paddelfossil",
"item.cobblemon.dome_fossil": "Domfossil",
"item.cobblemon.fossilized_drake": "Drachenfossil",
"item.cobblemon.fossilized_fish": "Fischfossil",
"item.cobblemon.helix_fossil": "Helixfossil",
"item.cobblemon.jaw_fossil": "Kieferfossil",
"item.cobblemon.old_amber_fossil": "Altbernstein",
"item.cobblemon.plume_fossil": "Federfossil",
"item.cobblemon.root_fossil": "Wurzelfossil",
"item.cobblemon.sail_fossil": "Flossenfossil",
"item.cobblemon.skull_fossil": "Kopffossil",
"item.cobblemon.bygone_sherd": "Bygone Pottery Sherd",
"item.cobblemon.capture_sherd": "Capture Pottery Sherd",
"item.cobblemon.dome_sherd": "Dome Pottery Sherd",
"item.cobblemon.helix_sherd": "Helix Pottery Sherd",
"item.cobblemon.nostalgic_sherd": "Nostalgic Pottery Sherd",
"item.cobblemon.nostalgic_sherd": "Nostalgie-Töpferscherbe",
"item.cobblemon.suspicious_sherd": "Suspicious Pottery Sherd",
"item.cobblemon.tumblestone": "Tumblestone",
"item.cobblemon.black_tumblestone": "Black Tumblestone",
"item.cobblemon.sky_tumblestone": "Sky Tumblestone",
"item.cobblemon.relic_coin": "Relic Coin",
"item.cobblemon.tumblestone": "Glanzstein",
"item.cobblemon.black_tumblestone": "Schwarzglanzstein",
"item.cobblemon.sky_tumblestone": "Azurglanzstein",
"item.cobblemon.relic_coin": "Alter Dukat",
"block.cobblemon.relic_coin_pouch": "Relic Coin Pouch",
"block.cobblemon.relic_coin_sack": "Relic Coin Sack",
"trim_pattern.cobblemon.automaton": "Automaton Armour Trim",
@@ -475,21 +475,21 @@
"block.cobblemon.green_gilded_chest": "Green Gilded Chest",
"block.cobblemon.white_gilded_chest": "White Gilded Chest",
"block.cobblemon.display_case": "Display Case",
"block.cobblemon.small_budding_tumblestone": "Small Tumblestone Bud",
"block.cobblemon.small_budding_tumblestone": "Kleine Glanzsteinknospe",
"block.cobblemon.medium_budding_tumblestone": "Medium Tumblestone Bud",
"block.cobblemon.large_budding_tumblestone": "Large Tumblestone Bud",
"block.cobblemon.tumblestone_cluster": "Tumblestone Cluster",
"block.cobblemon.tumblestone_block": "Block of Tumblestone",
"block.cobblemon.small_budding_sky_tumblestone": "Small Sky Tumblestone Bud",
"block.cobblemon.medium_budding_sky_tumblestone": "Medium Sky Tumblestone Bud",
"block.cobblemon.large_budding_sky_tumblestone": "Large Sky Tumblestone Bud",
"block.cobblemon.sky_tumblestone_cluster": "Sky Tumblestone Cluster",
"block.cobblemon.sky_tumblestone_block": "Block of Sky Tumblestone",
"block.cobblemon.small_budding_black_tumblestone": "Small Black Tumblestone Bud",
"block.cobblemon.medium_budding_black_tumblestone": "Medium Black Tumblestone Bud",
"block.cobblemon.large_budding_black_tumblestone": "Large Black Tumblestone Bud",
"block.cobblemon.black_tumblestone_cluster": "Black Tumblestone Cluster",
"block.cobblemon.black_tumblestone_block": "Block of Black Tumblestone",
"block.cobblemon.small_budding_sky_tumblestone": "Kleine Azurglanzsteinknospe",
"block.cobblemon.medium_budding_sky_tumblestone": "Mittlere Azurglanzsteinknospe",
"block.cobblemon.large_budding_sky_tumblestone": "Große Azurglanzsteinknospe",
"block.cobblemon.sky_tumblestone_cluster": "Azurglanzsteinhaufen",
"block.cobblemon.sky_tumblestone_block": "Azurglanzsteinblock",
"block.cobblemon.small_budding_black_tumblestone": "Kleine Schwarzglanzsteinknospe",
"block.cobblemon.medium_budding_black_tumblestone": "Mittlere Schwarzglanzsteinknospe",
"block.cobblemon.large_budding_black_tumblestone": "Große Schwarzglanzsteinknospe",
"block.cobblemon.black_tumblestone_cluster": "Schwarzglanzsteinhaufen",
"block.cobblemon.black_tumblestone_block": "Schwarzglanzsteinblock",
"cobblemon.overflow_no_pc": "Deine Party war voll und du hast keinen PC!",
"cobblemon.overflow_no_space": "Deine und %1$s Party war voll!",
"cobblemon.overflow_to_pc": "Deine Party war voll! %1$s wurde zu %2$s hinzugefügt.",
@@ -562,7 +562,7 @@
"cobblemon.ui.interact.spectate": "Spectate",
"cobblemon.ui.interact.trade": "Trade",
"cobblemon.ui.interact.battle": "Battle",
"cobblemon.ui.interact.mount.shoulder": "Shoulder",
"cobblemon.ui.interact.mount.shoulder": "Schulter",
"key.cobblemon.upshiftparty": "Party Auswahl nach oben",
"key.cobblemon.downshiftparty": "Party Auswahl nach unten",
"key.cobblemon.hideparty": "Party verstecken",
@@ -570,12 +570,12 @@
"key.cobblemon.pokenavigator": "PokéNav öffnen",
"key.cobblemon.summary": "Überblick öffnen",
"key.cobblemon.categories.cobblemon": "Cobblemon",
"key.cobblemon.scaleportraitup": "Scale Portrait Up",
"key.cobblemon.scaleportraitdown": "Scale Portrait Down",
"key.cobblemon.scaleportraitup": "Vergrößere Porträt",
"key.cobblemon.scaleportraitdown": "Verkleinere Porträt",
"key.cobblemon.translateportraitup": "Translate Portrait Up",
"key.cobblemon.translateportraitdown": "Translate Portrait Down",
"key.cobblemon.translateportraitleft": "Translate Portrait Left",
"key.cobblemon.translateportraitright": "Translate Portrait Right",
"key.cobblemon.translateportraitdown": "Versetze Porträt nach Unten",
"key.cobblemon.translateportraitleft": "Versetze Porträt nach Links",
"key.cobblemon.translateportraitright": "Versetze Porträt nach Rechts",
"key.cobblemon.printmodelsettings": "Print Model Settings",
"key.cobblemon.categories.cobblemon.debug": "Cobblemon Debug",
"cobblemon.subtitle.poke_ball.capture_succeeded": "Poké Ball capture succeeds",
@@ -818,7 +818,7 @@
"advancements.cobblemon.first_catch": "Ein neuer Freund!",
"advancements.cobblemon.first_catch.description": "Benutze einen Pokéball und fange dein erstes Pokémon",
"advancements.cobblemon.full_party": "Volles Haus",
"advancements.cobblemon.full_party.description": "Catch more Pokémon and make a full party of 6",
"advancements.cobblemon.full_party.description": "Fange mehr Pokémon bis du ein volles Team von 6 Pokémon hast",
"advancements.cobblemon.first_evolution": "Harte Arbeit und Hingabe",
"advancements.cobblemon.first_evolution.description": "Erreiche die Entwicklungsanforderungen eines Pokémon und entwickle es über das Teammenü",
"advancements.cobblemon.first_battle_victory": "Wo ist meine Siegeshymne?",
@@ -827,15 +827,15 @@
"advancements.cobblemon.first_shiny_catch.description": "Fange dein erstes schillerndes Pokémon",
"advancements.cobblemon.healing_machine": "Heilkraft",
"advancements.cobblemon.healing_machine.description": "Warte bis die Heilmaschine aufgeladen ist und heile dann dein Team",
"advancements.cobblemon.obtain_leek": "There's a Leek in the Boat!",
"advancements.cobblemon.obtain_leek": "Das SchLauchboot",
"advancements.cobblemon.obtain_leek.description": "Finde einen Fitlauch, eine wilde Pflanze, die im Süßwasser wächst",
"advancements.cobblemon.medicinal_brew": "Lokale Apotheke",
"advancements.cobblemon.medicinal_brew.description": "Braue einen Fitlauch, um die Basis für deine Heilbedürfnisse zu schaffen",
"advancements.cobblemon.brew_potion": "You Cannot Handle My Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
"advancements.cobblemon.brew_full_restore.description": "Follow the brewing tree and create a Full Restore with a Lum Berry and Max Potion",
"advancements.cobblemon.brew_all": "Double Double Toil & Trouble",
"advancements.cobblemon.brew_potion": "Du kannst meine Tränke nicht verkraften",
"advancements.cobblemon.brew_potion.description": "Braue eine \"Sinelbeere\" in ein \"Medizinisches Gebräu\" um einen \"Trank\" zu erstellen",
"advancements.cobblemon.brew_full_restore": "Wahl des Champions",
"advancements.cobblemon.brew_full_restore.description": "Folge dem Brau-chart um eine \"Top-Genesung\" aus einer \"Prunusbeere\" und einem \"Top-Trank\" zu erstellen",
"advancements.cobblemon.brew_all": "Doppelt plagt euch, mengt und mischt",
"advancements.cobblemon.brew_all.description": "Brew every possible item using Medicinal Brew",
"advancements.cobblemon.obtain_mint": "Minty Fresh",
"advancements.cobblemon.obtain_mint.description": "Obtain a Nature Mint, a wild crop that grows high in the mountains",
@@ -859,14 +859,14 @@
"advancements.cobblemon.obtain_all_berries.description": "Obtain one of every Berry in Cobblemon",
"advancements.cobblemon.use_pasture": "Free Roam: Enabled",
"advancements.cobblemon.use_pasture.description": "Craft a Pasture Block and allow your friends to wander",
"advancements.cobblemon.catch_all_vivillon": "Aspiring Vivillionaire",
"advancements.cobblemon.catch_all_vivillon": "Aufstrebender Vivillionär",
"advancements.cobblemon.catch_all_vivillon.description": "Obtain all patterns of Vivillon...",
"advancements.cobblemon.catch_all_vivillon_but_actually": "True Vivillionaire",
"advancements.cobblemon.catch_all_vivillon_but_actually.description": "Obtain the rest.",
"advancements.cobblemon.evolve_veevees": "Valued Veevees",
"advancements.cobblemon.evolve_veevees.description": "Entwickle Evoli in 8 verschiedene Formen weiter",
"advancements.cobblemon.evolve_shedinja": "Phantomhülle",
"advancements.cobblemon.evolve_shedinja.description": "Have an extra Poké Ball in your inventory and obtain a Shedinja",
"advancements.cobblemon.evolve_shedinja.description": "Besitze einen Pokéball im Inventar und erhalte ein Ninjatom",
"advancements.cobblemon.trade_pokemon": "Pass gut auf es auf!",
"advancements.cobblemon.trade_pokemon.description": "Tausche ein Pokémon mit einem anderen Trainer",
"advancements.cobblemon.trade_shelmet_karrablast": "Ich möchte einen Diebstahl melden!",
@@ -877,18 +877,18 @@
"advancements.cobblemon.use_candy.description": "Verwende ein beliebiges EP-Bonbon auf einem Pokémon",
"advancements.cobblemon.own_zangoose_seviper": "Freunde widerwillen",
"advancements.cobblemon.own_zangoose_seviper.description": "Habe gleichzeitig einen Zangoose und Seviper in deiner Party",
"advancements.cobblemon.obtain_fossil": "Consult the Fossil",
"advancements.cobblemon.obtain_fossil": "Befrage das Fossil",
"advancements.cobblemon.obtain_fossil.description": "Discover a fossil buried in ancient ruins",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cover thee in Debris",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolve a Gimmighoul into a fully netherite-coated Gholdengo",
"advancements.cobblemon.resurrect_pokemon": "Life Finds a Way",
"advancements.cobblemon.resurrect_pokemon": "Leben findet einen Weg",
"advancements.cobblemon.resurrect_pokemon.description": "Obtain a Fossil Pokémon from a Resurrection Machine",
"advancements.cobblemon.obtain_tumblestone": "The Rolling Stone",
"advancements.cobblemon.obtain_tumblestone.description": "Safely extract a Tumblestone from suspicious sand or gravel",
"advancements.cobblemon.grow_tumblestone": "Tumbling Down",
"advancements.cobblemon.grow_tumblestone.description": "Place a Tumblestone near Lava or Magma to grow it over time",
"advancements.cobblemon.craft_ancient_balls": "A true Antiquarian",
"advancements.cobblemon.craft_ancient_balls.description": "Utilize Tumblestones to craft all fifteen Ancient Balls",
"advancements.cobblemon.craft_ancient_balls.description": "Nutze Glanzsteine, um alle fünfzehn Arten von antiken Bällen herzustellen",
"cobblemon.battle.crash": "Ein Kampffehler ist aufgetreten. Wenn du Einzelspieler spielst, melde dies dem Mod-Team. Ansonsten, melde dies dem Serveradministrator.",
"cobblemon.battle.damage_dealt": "%1$s hat %2$s Schaden genommen!",
"cobblemon.battle.used_move": "%1$s hat %2$s benutzt!",
@@ -932,7 +932,7 @@
"cobblemon.battle.recharge": "%1$s muss sich ausruhen.",
"cobblemon.capture.broke_free": "%1$s ist ausgebrochen!",
"cobblemon.capture.not_your_turn": "Du bist nicht am Zug.",
"cobblemon.capture.attempted_capture": "%1$s threw their %2$s at %3$s!",
"cobblemon.capture.attempted_capture": "%1$s hat ihren %2$s auf %3$s geworfen!",
"cobblemon.capture.succeeded": "Hurra! %1$s wurde gefangen.",
"cobblemon.capture.not_wild": "Dieses %1$s ist kein wildes Pokemon.",
"cobblemon.capture.in_battle": "Dieses %1$s ist bereits in einen Kampf verwickelt und kann nicht gefangen werden.",
@@ -1303,7 +1303,7 @@
"cobblemon.battle.heal.revivalblessing": "%1$s ist wieder fit und kampfbereit!",
"cobblemon.battle.heal.aquaring": "Der Wasserring stellt KP von %1$s wieder her!",
"cobblemon.battle.heal.ingrain": "%1$s nimmt über seine Wurzeln Nährstoffe auf!",
"cobblemon.battle.heal.lunardance": "%1$s became cloaked in mystical moonlight!",
"cobblemon.battle.heal.lunardance": "%1$s wird in mysteriöses Mondlicht getaucht!",
"cobblemon.battle.heal.grassyterrain": "%1$s's HP was restored.",
"cobblemon.battle.heal.leftovers": "%2$s von %1$s füllt einige KP auf!",
"cobblemon.battle.heal.item": "%2$s füllt KP von %1$s auf!",
@@ -1435,12 +1435,12 @@
"block.cobblemon.deepslate_thunder_stone_ore": "Tiefenschiefer-Donnersteinerz",
"block.cobblemon.deepslate_water_stone_ore": "Tiefenschiefer-Wassersteinerz",
"block.cobblemon.dripstone_moon_stone_ore": "Tropf-Mondstein Erz",
"block.cobblemon.nether_fire_stone_ore": "Nether Fire Stone Ore",
"block.cobblemon.nether_fire_stone_ore": "Netherfeuersteinerz",
"block.cobblemon.terracotta_sun_stone_ore": "Terracotta Sun Stone Ore",
"block.cobblemon.pasture": "Weidenblock",
"gamerule.doPokemonSpawning": "Pokémon spawnen",
"gamerule.doShinyStarters": "Starter-Pokémon werden schillernd sein",
"gamerule.doPokemonLoot": "Drop Pokémon Loot",
"gamerule.doPokemonLoot": "Pokémonausbeute fallen lassen",
"cobblemon.command.checkspawns.invalid-bucket": "Ungültiger Spawneimer",
"cobblemon.command.checkspawns.spawns": "Spawns",
"cobblemon.command.checkspawns.nothing": "Hier kann gerade nichts spawnen.",
@@ -1482,9 +1482,9 @@
"tag.item.cobblemon.protein_ingredients": "Protein Zutaten",
"tag.item.cobblemon.zinc_ingredients": "Zink Zutaten",
"tag.item.cobblemon.seeds": "Samen",
"tag.item.cobblemon.boats": "Boats",
"tag.item.cobblemon.hanging_signs": "Hanging Signs",
"tag.item.cobblemon.signs": "Signs",
"tag.item.cobblemon.boats": "Boote",
"tag.item.cobblemon.hanging_signs": "Hängeschilder",
"tag.item.cobblemon.signs": "Schilder",
"tag.item.cobblemon.dawn_stone_ores": "Dawn Stone Ores",
"tag.item.cobblemon.dusk_stone_ores": "Dusk Stone Ores",
"tag.item.cobblemon.fire_stone_ores": "Fire Stone Ores",
@@ -1509,29 +1509,29 @@
"tag.item.cobblemon.tier_2_poke_ball_materials": "Iron Tier Poké Ball Materials",
"tag.item.cobblemon.tier_3_poke_ball_materials": "Gold Tier Poké Ball Materials",
"tag.item.cobblemon.tier_4_poke_ball_materials": "Diamond Tier Poké Ball Materials",
"tag.item.cobblemon.potions": "Potions",
"tag.item.cobblemon.potions": "Tränke",
"tag.item.cobblemon.ethers": "Ethers and Elixirs",
"tag.item.cobblemon.remedies": "Remedies",
"tag.item.cobblemon.restores": "Restores",
"tag.item.cobblemon.revives": "Revives",
"tag.item.cobblemon.x_items": "X Battle Items",
"tag.item.cobblemon.vitamins": "Vitamins",
"tag.item.cobblemon.tumblestones": "Tumblestones",
"tag.item.cobblemon.vitamins": "Vitamine",
"tag.item.cobblemon.tumblestones": "Glanzsteine",
"tag.item.cobblemon.red_tumblestones": "Tumblestones",
"tag.item.cobblemon.black_tumblestones": "Black Tumblestones",
"tag.item.cobblemon.sky_tumblestones": "Sky Tumblestones",
"tag.item.cobblemon.black_tumblestones": "Schwarzglanzsteine",
"tag.item.cobblemon.sky_tumblestones": "Azurglanzsteine",
"tag.item.cobblemon.apples": "Apples",
"tag.item.cobblemon.deep_seas": "Deep Sea Items",
"tag.item.cobblemon.sweets": "Sweets",
"tag.item.cobblemon.teapots": "Teapots",
"tag.item.cobblemon.teapots": "Teekessel",
"tag.item.cobblemon.teacups": "Teacups",
"tag.item.cobblemon.raw_meat": "Raw Meat",
"tag.item.cobblemon.raw_meat": "Rohes Fleisch",
"tag.item.cobblemon.cooked_meat": "Cooked Meat",
"tag.item.cobblemon.fossils": "Fossils",
"tag.item.cobblemon.fossils": "Fossilien",
"tag.item.cobblemon.held.leaves_leftovers": "Leftover Foods",
"tag.item.cobblemon.decorated_pot_sherds": "Decorated Pot Sherds",
"tag.item.cobblemon.type_gems": "Type Gems",
"tag.item.cobblemon.feathers": "Feathers",
"tag.item.cobblemon.feathers": "Federn",
"tag.item.cobblemon.ability_changers": "Ability Changers",
"tag.item.cobblemon.held.is_friendship_booster": "Friendship Boosters",
"cobblemon.ability.adaptability": "Anpassung",
@@ -5579,5 +5579,291 @@
"cobblemon.species.ironvaliant.name": "Eisenkrieger",
"cobblemon.species.koraidon.name": "Koraidon",
"cobblemon.species.miraidon.name": "Miraidon",
"item.cobblemon.smithing_template.pokerod.ingredients": "Pokébälle"
"item.cobblemon.smithing_template.pokerod.ingredients": "Pokébälle",
"tag.item.cobblemon.tumblestone_bricks": "Glanzsteinziegel",
"item.cobblemon.pokedex_black": "Pokédex",
"cobblemon.ability.zerotohero.desc": "Wird das Pokémon ausgewechselt, nimmt es die Heldenform an.",
"item.cobblemon.pokedex_green": "Pokédex",
"item.cobblemon.electric_seed": "Elektro-Samen",
"item.cobblemon.misty_seed": "Nebel-Samen",
"item.cobblemon.psychic_seed": "Psycho-Samen",
"block.cobblemon.smooth_tumblestone": "Glatter Glanzstein",
"item.cobblemon.smithing_template.pokerod.base_slot_description": "Angel hinzufügen",
"item.cobblemon.smithing_template.pokerod.additions_slot_description": "Pokéball hinzufügen",
"upgrade.cobblemon.pokerod": "Schmiedevorlage",
"item.cobblemon.pokerod_smithing_template": "Schmiedevorlage",
"item.cobblemon.pokedex_blue": "Pokédex",
"item.cobblemon.pokedex_pink": "Pokédex",
"item.cobblemon.pokedex_red": "Pokédex",
"item.cobblemon.pokedex_white": "Pokédex",
"item.cobblemon.pokedex_yellow": "Pokédex",
"block.cobblemon.polished_sky_tumblestone_slab": "Polierte Azurglanzsteinstufe",
"block.cobblemon.polished_tumblestone": "Polierter Glanzstein",
"item.cobblemon.grassy_seed": "Gras-Samen",
"block.cobblemon.chiseled_polished_tumblestone": "Gemeißelter polierter Glanzstein",
"cobblemon.tooltip.see_more_info": "Drücke shift um Informationen zu sehen",
"cobblemon.item_class.fishing_bait": "Köder",
"block.cobblemon.polished_tumblestone_slab": "Polierte Glanzsteinstufe",
"block.cobblemon.polished_tumblestone_stairs": "Polierte Glanzsteintreppe",
"block.cobblemon.polished_tumblestone_wall": "Polierte Glanzsteinmauer",
"block.cobblemon.tumblestone_bricks": "Glanzsteinziegel",
"block.cobblemon.tumblestone_brick_slab": "Glanzsteinziegelstufe",
"block.cobblemon.smooth_tumblestone_slab": "Glatte Glanzsteinstufe",
"block.cobblemon.smooth_tumblestone_stairs": "Glatte Glanzsteintreppe",
"block.cobblemon.polished_sky_tumblestone": "Polierter Azurglanzstein",
"block.cobblemon.polished_sky_tumblestone_stairs": "Polierte Azurglanzsteintreppe",
"block.cobblemon.polished_sky_tumblestone_wall": "Polierte Azurglanzsteinmauer",
"block.cobblemon.tumblestone_brick_stairs": "Glanzsteinziegeltreppe",
"block.cobblemon.tumblestone_brick_wall": "Glanzsteinziegelmauer",
"block.cobblemon.chiseled_tumblestone_bricks": "Gemeißelte Glanzsteinziegel",
"block.cobblemon.chiseled_polished_sky_tumblestone": "Gemeißelter polierter Azurglanzstein",
"block.cobblemon.sky_tumblestone_bricks": "Azurglanzsteinziegel",
"block.cobblemon.sky_tumblestone_brick_stairs": "Azurglanzsteinziegeltreppe",
"block.cobblemon.sky_tumblestone_brick_wall": "Azurglanzsteinziegelmauer",
"block.cobblemon.chiseled_sky_tumblestone_bricks": "Gemeißelte Azurglanzsteinziegel",
"block.cobblemon.smooth_sky_tumblestone_slab": "Glatte Azurglanzsteinstufe",
"block.cobblemon.smooth_sky_tumblestone_stairs": "Glatte Azurglanzsteintreppe",
"block.cobblemon.polished_black_tumblestone": "Polierter Schwarzglanzstein",
"block.cobblemon.polished_black_tumblestone_stairs": "Polierte Schwarzglanzsteintreppe",
"block.cobblemon.polished_black_tumblestone_wall": "Polierte Schwarzglanzsteinmauer",
"block.cobblemon.chiseled_polished_black_tumblestone": "Gemeißelter polierter Schwarzglanzstein",
"block.cobblemon.black_tumblestone_bricks": "Schwarzglanzsteinziegel",
"block.cobblemon.chiseled_black_tumblestone_bricks": "Gemeißelte Schwarzglanzsteinziegel",
"block.cobblemon.smooth_black_tumblestone_stairs": "Glatte Schwarzglanzsteintreppe",
"block.cobblemon.fire_stone_block": "Feuersteinblock",
"block.cobblemon.water_stone_block": "Wassersteinblock",
"block.cobblemon.thunder_stone_block": "Donnersteinblock",
"block.cobblemon.leaf_stone_block": "Blattsteinblock",
"block.cobblemon.ice_stone_block": "Eissteinblock",
"block.cobblemon.sun_stone_block": "Sonnensteinblock",
"block.cobblemon.moon_stone_block": "Mondsteinblock",
"block.cobblemon.shiny_stone_block": "Leuchsteinblock",
"block.cobblemon.dawn_stone_block": "Funkelsteinblock",
"block.cobblemon.dusk_stone_block": "Finstersteinblock",
"block.cobblemon.sky_tumblestone_brick_slab": "Azurglanzsteinziegelstufe",
"entity.minecraft.villager.nurse": "Krankenschwester",
"block.cobblemon.smooth_sky_tumblestone": "Glatter Azurglanzstein",
"cobblemon.ui.pokedex.region.kanto": "Kanto",
"cobblemon.ui.pokedex.region.paldea": "Paldea",
"cobblemon.ui.pokedex.region.unknown": "Unbekannt",
"cobblemon.ui.pokedex.region.unova": "Einall",
"cobblemon.ui.pokedex.info.entry": "Eintrag",
"cobblemon.ui.pokedex.info.stats": "Basis Statuswerte",
"cobblemon.ui.pokedex.region.alola": "Alola",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage1": "Netherit Beschichtung 1/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage2": "Netherit Beschichtung 2/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage3": "Netherit Beschichtung 3/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage5": "Netherit Beschichtung 5/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage6": "Netherit Beschichtung 6/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage7": "Netherit Beschichtung 7/8",
"cobblemon.ui.pokedex.info.form.netherite-coating-full": "Netherit Beschichtung 8/8",
"cobblemon.ui.pokedex.info.form.roaming": "Wanderform",
"cobblemon.ui.pokedex.info.form.color-pink": "Rosa",
"cobblemon.ui.pokedex.info.form.color-gray": "Grau",
"cobblemon.ui.pokedex.info.form.color-brown": "Braun",
"cobblemon.ui.pokedex.info.form.color-red": "Rot",
"cobblemon.ui.pokedex.info.form.color-orange": "Orange",
"cobblemon.ui.pokedex.info.form.color-yellow": "Gelb",
"cobblemon.ui.pokedex.info.form.color-lime": "Hellgrün",
"cobblemon.ui.pokedex.info.form.color-green": "Grün",
"cobblemon.ui.pokedex.info.form.color-light_blue": "Hellblau",
"cobblemon.ui.pokedex.info.form.color-cyan": "Türkis",
"cobblemon.ui.pokedex.info.form.color-blue": "Blau",
"cobblemon.ui.pokedex.info.form.color-purple": "Violett",
"cobblemon.ui.pokedex.info.form.color-magenta": "Magenta",
"cobblemon.ui.pokedex.info.form.color-light_gray": "Hellgrau",
"cobblemon.ui.pokedex.info.form.minecraft": "Minecraft",
"cobblemon.ui.pokedex.info.form.squawkabilly-color-gray": "Grau",
"cobblemon.ui.pokedex.info.form.tree-oak": "Eiche",
"cobblemon.ui.pokedex.info.form.tree-spruce": "Fichte",
"cobblemon.ui.pokedex.info.form.tree-acacia": "Akazie",
"cobblemon.ui.pokedex.info.form.tree-birch": "Birke",
"cobblemon.ui.pokedex.info.form.tree-jungle": "Tropen",
"cobblemon.ui.pokedex.info.form.tree-mangrove": "Mangrove",
"cobblemon.ui.pokedex.info.form.tree-cherry": "Kirsche",
"cobblemon.ui.pokedex.info.form.tree-swamp": "Sumpf",
"cobblemon.ui.pokedex.info.form.tree-azalea": "Azalee",
"cobblemon.ui.pokedex.info.form.flower-orange": "Orange",
"cobblemon.ui.pokedex.info.form.flower-yellow": "Gelb",
"cobblemon.ui.pokedex.info.form.flower-white": "Weiß",
"cobblemon.ui.pokedex.info.form.flower-red": "Rot",
"cobblemon.ui.pokedex.info.form.flower-pink": "Rosa",
"cobblemon.ui.pokedex.info.form.vivillon-wings-elegant": "Elegant",
"cobblemon.ui.pokedex.info.form.autumn": "Herbst",
"cobblemon.ui.pokedex.info.form.summer": "Sommer",
"cobblemon.ui.pokedex.info.form.vivillon-wings-sun": "Sonne",
"cobblemon.ui.pokedex.info.form.vivillon-wings-tundra": "Tundra",
"cobblemon.ui.pokedex.info.form.vivillon-wings-ocean": "Ozean",
"cobblemon.ui.pokedex.info.form.vivillon-wings-garden": "Garten",
"cobblemon.ui.pokedex.info.form.metals-copper": "Kupfer",
"cobblemon.ui.pokedex.info.form.metals-iron": "Eisen",
"cobblemon.ui.pokedex.info.form.metals-gold": "Gold",
"cobblemon.ui.pokedex.info.form.metals-netherite": "Netherit",
"cobblemon.ui.pokedex.unknown": "???",
"cobblemon.pokedex.variation.ice": "Eis",
"cobblemon.pokedex.variation.color": "Farbe",
"cobblemon.pokedex.variation.pattern": "Muster",
"cobblemon.pokedex.variation.metal": "Metall",
"cobblemon.pokedex.variation.netherite_coating": "Netheritbeschichtung",
"cobblemon.pokedex.variation.stripes": "Streifen",
"cobblemon.pokedex.variation.season": "Saison",
"block.cobblemon.polished_black_tumblestone_slab": "Polierte Schwarzglanzsteinstufe",
"block.cobblemon.smooth_black_tumblestone": "Glatter Schwarzglanzstein",
"block.cobblemon.smooth_black_tumblestone_slab": "Glatte Schwarzglanzsteinstufe",
"cobblemon.fishing_bait_effects.inert.tooltip": "Keine bekannte Auswirkung",
"cobblemon.ui.pokedex.info.form.winter": "Winter",
"cobblemon.ui.pokedex.info.form.flower-blue": "Blau",
"cobblemon.ui.pokedex.info.form.vivillon-wings-poke-ball": "Pokéball",
"cobblemon.ui.pokedex.info.form.color-white": "Weiß",
"cobblemon.ui.pokedex.info.form.tree-darkoak": "Schwarzeiche",
"cobblemon.ui.pokedex.info.form.color-black": "Schwarz",
"cobblemon.ui.pokedex.info.form.alola": "Alola",
"cobblemon.ui.pokedex.region.sinnoh": "Sinnoh",
"cobblemon.ui.interact.failed": "Ziel blockiert oder zu weit entfernt.",
"cobblemon.ui.moves.forget": "Attacke Vergessen",
"cobblemon.move.doodle": "Abpausen",
"cobblemon.pokedex.variation.flower": "Blume",
"cobblemon.move.aciddownpour": "Vernichtender Säureregen",
"cobblemon.ui.pokedex.info.form.squawkabilly-color-blue": "Blau",
"cobblemon.species.ironleaves.name": "Eisenblatt",
"cobblemon.move.direclaw": "Unheilsklauen",
"cobblemon.battle.start.confusion": "%1$s wurde verwirrt!",
"cobblemon.species.hydrapple.name": "Schlangel",
"cobblemon.ui.pokedex.info.ability": "Fähigkeit: %1$s",
"cobblemon.move.doodle.desc": "Der Anwender kopiert die wahre Essenz des Zieles. Dadurch erhalten alle Pokémon auf der Mitstreiterseite die Fähigkeit des Zieles.",
"cobblemon.move.esperwing": "Auraschwingen",
"cobblemon.move.esperwing.desc": "Ein schneidender Angriff mit durch eine Aura verstärkten Schwingen, der außerdem die Initiative des Anwenders erhöht. Hohe Volltrefferquote.",
"cobblemon.ui.pokedex.info.form.netherite-coating-stage4": "Netherit Beschichtung 4/8",
"cobblemon.move.gmaxwindrage.desc": "Eine Flug-Attacke, die nur Gigadynamax-Krarmor einsetzen kann. Beseitigt die Effekte von Attacken wie Reflektor und Lichtschild.",
"cobblemon.ability.poisonpuppeteer": "Giftpuppenspiel",
"cobblemon.ability.mindseye": "Geistiges Auge",
"cobblemon.ability.toxicchain": "Giftkette",
"cobblemon.move.direclaw.desc": "Der Anwender greift mit zerstörerischen Klauen die Schwachstelle des Zieles an. Dieses wird eventuell vergiftet, paralysiert oder in Schlaf versetzt.",
"cobblemon.move.doubleshock": "Zweifachladung",
"cobblemon.move.electrodrift": "Blitztour",
"cobblemon.move.electrodrift.desc": "Der Anwender wechselt bei rasantem Tempo seine Form und trifft das Ziel mit einem futuristischen Elektroschlag. Ist die Attacke sehr effektiv, steigt ihre Stärke noch mehr.",
"cobblemon.species.ragingbolt.name": "Furienblitz",
"cobblemon.ability.terashift": "Tera-Wandel",
"cobblemon.move.doubleshock.desc": "Der Anwender nutzt die gesamte Elektrizität in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Elektro an.",
"cobblemon.move.filletaway": "Abspaltung",
"cobblemon.move.filletaway.desc": "Der Anwender setzt seine KP ein, um seinen Angriff, seinen Spezial-Angriff und seine Initiative stark zu erhöhen.",
"cobblemon.species.ironboulder.name": "Eisenfels",
"cobblemon.move.flowertrick": "Blumentrick",
"cobblemon.move.flowertrick.desc": "Der Anwender greift an, indem er dem Ziel einen Trick-Strauß zuwirft. Diese Attacke trifft immer und hat zudem Volltreffergarantie.",
"cobblemon.move.gigatonhammer": "Riesenhammer",
"cobblemon.move.gigatonhammer.desc": "Der Anwender greift mit einem großen Hammer an, den er mit vollem Körpereinsatz um sich schwingt. Diese Attacke kann nicht zweimal in Folge eingesetzt werden.",
"cobblemon.move.gigavolthavoc": "Gigavolt-Funkensalve",
"cobblemon.move.gigavolthavoc.desc": "Der Anwender greift das Ziel mit durch Z-Kraft gesammelter starker Elektrizität an. Die Stärke variiert je nach zugrunde liegender Attacke.",
"cobblemon.move.gmaxbefuddle": "Giga-Benebelung",
"cobblemon.move.gmaxbefuddle.desc": "Eine Käfer-Attacke, die nur Gigadynamax-Smettbo einsetzen kann. Gegnerische Pokémon werden entweder vergiftet, paralysiert oder in Schlaf versetzt.",
"cobblemon.move.gmaxcannonade": "Giga-Beschuss",
"cobblemon.move.gmaxcannonade.desc": "Eine Wasser-Attacke, die nur Gigadynamax-Turtok einsetzen kann. Schließt gegnerische Pokémon vier Runden lang in einem Wasserwirbel ein.",
"cobblemon.move.gmaxcentiferno": "Giga-Feuerkessel",
"cobblemon.move.gmaxcentiferno.desc": "Eine Feuer-Attacke, die nur Gigadynamax-Infernopod einsetzen kann. Schließt gegnerische Pokémon vier bis fünf Runden in wirbelnden Flammen ein.",
"cobblemon.move.gmaxchistrike": "Giga-Fokusschlag",
"cobblemon.move.gmaxchistrike.desc": "Eine Kampf-Attacke, die nur Gigadynamax-Machomei einsetzen kann. Erhöht die Volltrefferquote auf Mitstreiterseite.",
"cobblemon.move.glaiverush": "Großklingenstoß",
"cobblemon.move.glaiverush.desc": "Der Anwender stürzt sich waghalsig auf das Ziel. Bis zum nächsten Zug des Anwenders treffen ihn gegnerische Angriffe garantiert und richten doppelten Schaden an.",
"cobblemon.move.gmaxcuddle": "Giga-Gekuschel",
"cobblemon.move.gmaxcuddle.desc": "Eine Normal-Attacke, die nur Gigadynamax-Evoli einsetzen kann. Gegnerische Pokémon verlieben sich in es.",
"cobblemon.move.gmaxdepletion": "Giga-Dämpfer",
"cobblemon.move.gmaxdepletion.desc": "Eine Drachen-Attacke, die nur Gigadynamax-Duraludon einsetzen kann. AP der letzten Attacke, die gegnerische Pokémon eingesetzt haben, werden gesenkt.",
"cobblemon.move.gmaxfinale": "Giga-Lichtblick",
"cobblemon.move.gmaxfinale.desc": "Eine Feen-Attacke, die nur Gigadynamax-Pokusan einsetzen kann. Füllt die KP auf Mitstreiterseite auf.",
"cobblemon.move.gmaxfireball": "Giga-Brandball",
"cobblemon.move.gmaxfireball.desc": "Eine Feuer-Attacke, die nur Gigadynamax-Liberlo einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten.",
"cobblemon.move.gmaxfoamburst": "Giga-Schaumbad",
"cobblemon.move.gmaxfoamburst.desc": "Eine Wasser-Attacke, die nur Gigadynamax-Kingler einsetzen kann. Senkt die Initiative der gegnerischen Pokémon stark.",
"cobblemon.move.gmaxgoldrush": "Giga-Münzregen",
"cobblemon.move.gmaxgoldrush.desc": "Eine Normal-Attacke, die nur Gigadynamax-Mauzi einsetzen kann. Verwirrt Gegner und bringt nach dem Kampf Geld ein.",
"cobblemon.move.gmaxgravitas": "Giga-Astrowellen",
"cobblemon.move.gmaxgravitas.desc": "Eine Psycho-Attacke, die nur Gigadynamax-Maritellit einsetzen kann. Ändert die Erdanziehung für fünf Runden.",
"cobblemon.move.gmaxhydrosnipe": "Giga-Schütze",
"cobblemon.move.gmaxhydrosnipe.desc": "Eine Pflanzen-Attacke, die nur Gigadynamax-Gortrom einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten.",
"cobblemon.move.gmaxmalodor": "Giga-Gestank",
"cobblemon.move.gmaxmalodor.desc": "Eine Gift-Attacke, die nur Gigadynamax-Deponitox einsetzen kann. Vergiftet gegnerische Pokémon.",
"cobblemon.move.gmaxmeltdown": "Giga-Schmelze",
"cobblemon.move.gmaxmeltdown.desc": "Eine Stahl-Attacke, die nur Gigadynamax-Melmetal einsetzen kann. Hindert Gegner am wiederholten Einsatz derselben Attacke.",
"cobblemon.move.gmaxoneblow": "Giga-Einzelhieb",
"cobblemon.move.gmaxoneblow.desc": "Eine Unlicht-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Einzelhieb ignoriert die schützende Wirkung von Dyna-Wall.",
"cobblemon.move.gmaxrapidflow": "Giga-Multihieb",
"cobblemon.move.gmaxrapidflow.desc": "Eine Wasser-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Multihieb ignoriert die schützende Wirkung von Dyna-Wall.",
"cobblemon.move.gmaxreplenish": "Giga-Recycling",
"cobblemon.move.gmaxreplenish.desc": "Eine Normal-Attacke, die nur Gigadynamax-Relaxo einsetzen kann. Stellt bereits verzehrte Beeren wieder her.",
"cobblemon.move.gmaxresonance": "Giga-Melodie",
"cobblemon.move.gmaxresonance.desc": "Eine Eis-Attacke, die nur Gigadynamax-Lapras einsetzen kann. Reduziert fünf Runden lang den erlittenen Schaden.",
"cobblemon.move.gmaxsandblast": "Giga-Sandstoß",
"cobblemon.move.gmaxsandblast.desc": "Eine Boden-Attacke, die nur Gigadynamax-Sanaconda einsetzen kann. Eine Sandhose wütet für vier bis fünf Runden.",
"cobblemon.move.gmaxsmite": "Giga-Sanktion",
"cobblemon.move.gmaxsmite.desc": "Eine Feen-Attacke, die nur Gigadynamax-Silembrim einsetzen kann. Verwirrt gegnerische Pokémon.",
"cobblemon.move.gmaxsnooze": "Giga-Gähnzwang",
"cobblemon.move.gmaxsnooze.desc": "Eine Unlicht-Attacke, die nur Gigadynamax-Olangaar einsetzen kann. Mit einem großen Gähner wird das Ziel müde gemacht und schläft in der nächsten Runde ein.",
"cobblemon.move.gmaxsteelsurge": "Giga-Stahlschlag",
"cobblemon.move.gmaxsteelsurge.desc": "Eine Stahl-Attacke, die nur Gigadynamax-Patinaraja einsetzen kann. Verstreut viele zackige Stahlsplitter auf dem Kampffeld.",
"cobblemon.move.gmaxstonesurge": "Giga-Geröll",
"cobblemon.move.gmaxstunshock": "Giga-Voltschlag",
"cobblemon.move.gmaxvolcalith": "Giga-Schlacke",
"cobblemon.move.gmaxvolcalith.desc": "Eine Gesteins-Attacke, die nur Gigadynamax- Montecarbo einsetzen kann. Fügt vier Runden lang Schaden zu.",
"cobblemon.move.gmaxstonesurge.desc": "Eine Wasser-Attacke, die nur Gigadynamax-Kamalm einsetzen kann. Verstreut viele spitze Steinbrocken auf dem Kampffeld.",
"cobblemon.move.gmaxstunshock.desc": "Eine Elektro-Attacke, die nur Gigadynamax-Riffex einsetzen kann. Vergiftet oder paralysiert gegnerische Pokémon.",
"cobblemon.move.gmaxsweetness": "Giga-Nektarflut",
"cobblemon.move.gmaxsweetness.desc": "Eine Pflanzen-Attacke, die nur Gigadynamax-Schlapfel einsetzen kann. Heilt Statusprobleme auf Mitstreiterseite.",
"cobblemon.move.gmaxtartness": "Giga-Säureguss",
"cobblemon.move.gmaxtartness.desc": "Eine Pflanzen-Attacke, die nur Gigadynamax-Drapfel einsetzen kann. Senkt den Ausweichwert der gegnerischen Pokémon.",
"cobblemon.move.gmaxterror": "Giga-Spuksperre",
"cobblemon.move.gmaxterror.desc": "Eine Geister-Attacke, die nur Gigadynamax-Gengar einsetzen kann. Hindert gegnerische Pokémon an der Flucht beziehungsweise am Auswechseln.",
"cobblemon.move.gmaxvoltcrash.desc": "Eine Elektro-Attacke, die nur Gigadynamax-Pikachu einsetzen kann. Gegnerische Pokémon werden paralysiert.",
"cobblemon.move.gmaxwildfire": "Giga-Feuerflug",
"cobblemon.move.gmaxwildfire.desc": "Eine Feuer-Attacke, die nur Gigadynamax-Glurak einsetzen kann. Fügt vier Runden lang Schaden zu.",
"cobblemon.move.gmaxwindrage": "Giga-Sturmstoß",
"cobblemon.move.gmaxvinelash": "Giga-Geißel",
"cobblemon.move.gmaxvinelash.desc": "Eine Pflanzen-Attacke, die nur Gigadynamax-Bisaflor einsetzen kann. Geißelt gegnerische Pokémon vier Runden lang mit peitschenartigen Ranken.",
"cobblemon.move.gmaxvoltcrash": "Giga-Blitzhagel",
"cobblemon.move.headlongrush": "Schmetterramme",
"cobblemon.move.headlongrush.desc": "Der Anwender rammt das Ziel mit dem ganzen Körper. Dadurch sinken die Verteidigung und Spezial-Verteidigung des Anwenders.",
"cobblemon.move.hydrostream": "Hydro Steam",
"cobblemon.move.hydrostream.desc": "Das Ziel wird kraftvoll mit brodelndem Wasser übergossen. Wider Erwarten sinkt die Stärke der Attacke bei starkem Sonnenlicht nicht, sondern steigt um 50 %.",
"cobblemon.move.hydrovortex": "Super-Wassertornado",
"cobblemon.move.hydrovortex.desc": "Der Anwender kreiert mit Z-Kraft einen riesigen Wasserstrudel, der das Ziel verschluckt. Die Stärke variiert je nach zugrunde liegender Attacke.",
"cobblemon.move.hyperdrill": "Hyperbohrer",
"cobblemon.move.hyperdrill.desc": "Der Anwender lässt einen spitzen Teil seines Körpers rasant rotieren, sticht zu und durchbricht dabei auch die Wirkung von Attacken wie Schutzschild und Scanner.",
"cobblemon.species.ironcrown.name": "Eisenhaupt",
"cobblemon.species.terapagos.name": "Terapagos",
"cobblemon.move.neverendingnightmare": "Ewige Nacht",
"cobblemon.move.neverendingnightmare.desc": "Der Anwender beschwört mit Z-Kraft tiefen Groll herbei und lässt diesen auf das Ziel los. Die Stärke variiert je nach zugrunde liegender Attacke.",
"cobblemon.move.noxioustorque": "Toxiturbo",
"cobblemon.move.orderup": "Auftischen",
"cobblemon.species.skeledirge.desc": "Der feurige Vogel, der durch Skelokroks Gesang die Gestalt ändert, soll eine Seele sein, die sich in dem Feuerball auf seinem Kopf niederließ. ",
"cobblemon.move.orderup.desc": "Eine Attacke mit geübten Bewegungen. Trägt der Anwender ein Nigiragi im Maul, erhöht sich je nach dessen Form ein Statuswert des Anwenders.",
"cobblemon.move.populationbomb": "Mäuseplage",
"cobblemon.move.pounce": "Anspringen",
"cobblemon.move.pound": "Klaps",
"cobblemon.move.populationbomb.desc": "Der Anwender versammelt eine Schar von Artgenossen, die dann geschlossen angreift und das Ziel ein- bis zehnmal hintereinander trifft.",
"cobblemon.move.pounce.desc": "Der Anwender greift an, indem er das Ziel anspringt. Dadurch sinkt auch die Initiative des Zieles.",
"cobblemon.move.pound.desc": "Ein Hieb mit den Vorderbeinen oder dem Schweif.",
"cobblemon.move.powershift": "Kraftwechsel",
"cobblemon.move.powershift.desc": "Der Anwender tauscht seinen Angriff mit seiner Verteidigung.",
"cobblemon.move.psyshieldbash": "Barrierenstoß",
"cobblemon.move.ragefist": "Zornesfaust",
"cobblemon.species.pecharunt.name": "Infamomo",
"cobblemon.move.ragingbull": "Rasender Stier",
"cobblemon.move.ragingfury": "Flammenwut",
"cobblemon.move.revivalblessing": "Vitalsegen",
"cobblemon.move.ruination": "Verderben",
"cobblemon.move.saltcure": "Pökelsalz",
"cobblemon.move.sandsearstorm": "Wüstenorkan",
"cobblemon.move.savagespinout": "Wirbelnder Insektenhieb",
"cobblemon.move.shatteredpsyche": "Psycho-Schmetterschlag",
"cobblemon.ability.supersweetsyrup": "Süßer Nektar",
"cobblemon.ability.teraformzero": "Teraforming Null",
"cobblemon.ability.terashell": "Tera-Panzer",
"cobblemon.ability.windrider.desc": "Wirkt Rückenwind oder wird das Pokémon von einer Wind-Attacke getroffen, steigt sein Angriff. Außerdem erleidet es keinen Schaden durch Wind-Attacken.",
"cobblemon.species.dipplin.name": "Sirapfel",
"cobblemon.species.sinistcha.name": "Fatalitcha",
"cobblemon.species.okidogi.name": "Boninu",
"cobblemon.species.munkidori.name": "Benesaru",
"cobblemon.species.fezandipiti.name": "Beatori",
"cobblemon.species.ogerpon.name": "Ogerpon",
"cobblemon.species.archaludon.name": "Briduradon",
"cobblemon.species.gougingfire.name": "Keilflamme"
}
File diff suppressed because it is too large Load Diff
@@ -1,13 +1,11 @@
{
"cobblemon.stat.defence.name": "Defence",
"cobblemon.stat.special_defence.name": "Special Defence",
"cobblemon.move.defensecurl": "Defence Curl",
"cobblemon.move.irondefense": "Iron Defence",
"item.cobblemon.blue_mint_leaf.tooltip": "Capable of influencing a Pokémon's defence stat",
"item.cobblemon.pink_mint_leaf.tooltip": "Capable of influencing a Pokémon's special defence stat",
"item.cobblemon.x_defence": "X Defence",
"item.cobblemon.x_special_defence": "X Special Defence",
"cobblemon.pokedex.variation.color": "Colour"
}
"cobblemon.stat.defence.name": "Defence",
"cobblemon.stat.special_defence.name": "Special Defence",
"cobblemon.move.defensecurl": "Defence Curl",
"cobblemon.move.irondefense": "Iron Defence",
"item.cobblemon.blue_mint_leaf.tooltip": "Capable of influencing a Pokémon's defence stat",
"item.cobblemon.pink_mint_leaf.tooltip": "Capable of influencing a Pokémon's special defence stat",
"item.cobblemon.x_defence": "X Defence",
"item.cobblemon.x_special_defence": "X Special Defence",
"cobblemon.pokedex.variation.color": "Colour"
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
{
"timeline": [
{
"type": "add_holds",
"holds": ["effects"]
},
{
"type": "entity_particles",
"effect": "cobblemon:hit",
"locator": "target",
"delay": 0.3
},
{
"type": "remove_holds",
"holds": ["effects"]
}
]
}
@@ -23,7 +23,13 @@
"entityCondition": "q.entity.is_user == false && q.missed(q.entity.uuid) == false",
"effect": "'cobblemon:impact_' + q.move.type",
"locator": "target"
}
},
{
"type": "entity_molang",
"expressions": ["q.particle('cobblemon:hit', 'target')"],
"entityCondition": "q.entity.is_user == false",
"delay": 2
}
]
},
{
@@ -1,7 +1,7 @@
{
"hitbox": "player",
"presets": [
"cobblemon:npc-standard"
],
"variation": {
"dirt": [