refactor: Wartortle poser

This commit is contained in:
Gitoido Okaski
2026-10-19 20:29:57 +03:00
parent 4f356df103
commit 6544b8b850
3 changed files with 128 additions and 158 deletions
@@ -1,157 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen1
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
import com.cobblemon.mod.common.entity.PoseType
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.isBattling
import com.cobblemon.mod.common.util.isUnderWater
import com.cobblemon.mod.common.util.isInWater
import net.minecraft.client.model.geom.ModelPart
import net.minecraft.world.phys.Vec3
class WartortleModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
override val rootPart = root.registerChildWithAllChildren("wartortle")
override val head = getPart("head_ai")
override var portraitScale = 1.57F
override var portraitTranslation = Vec3(-0.17, 0.54, 0.0)
override var profileScale = 0.69F
override var profileTranslation = Vec3(0.0, 0.69, 0.0)
lateinit var sleep: CobblemonPose
lateinit var standing: CobblemonPose
lateinit var walk: CobblemonPose
lateinit var battleidle: CobblemonPose
lateinit var shoulderLeft: CobblemonPose
lateinit var shoulderRight: CobblemonPose
lateinit var floating: CobblemonPose
lateinit var swimming: CobblemonPose
lateinit var water_surface_idle: CobblemonPose
lateinit var water_surface_swim: CobblemonPose
val shoulderOffset = 5.5
val wateroffset = -10
override fun registerPoses() {
animations["physical"] = "q.bedrock_primary('wartortle', 'physical', 'look', q.curve('symmetrical_wide'))".asExpressionLike()
animations["special"] = "q.bedrock_primary('wartortle', 'special', 'look', q.curve('symmetrical_wide'))".asExpressionLike()
animations["status"] = "q.bedrock_primary('wartortle', 'status', q.curve('symmetrical_wide'))".asExpressionLike()
animations["recoil"] = "q.bedrock_stateful('wartortle', 'recoil')".asExpressionLike()
animations["cry"] = "q.bedrock_stateful('wartortle', 'cry')".asExpressionLike()
val faint = "q.bedrock_primary('wartortle', 'faint', q.curve('one'))".asExpressionLike()
val blink = quirk { bedrockStateful("wartortle", "blink") }
val quirkidle = quirk { bedrockStateful("wartortle", "quirk_idle") }
sleep = registerPose(
poseType = PoseType.SLEEP,
quirks = arrayOf(blink),
namedAnimations = mutableMapOf("faint" to faint),
animations = arrayOf(bedrock("wartortle", "sleep"))
)
standing = registerPose(
poseName = "standing",
poseTypes = setOf(PoseType.STAND) + UI_POSES,
quirks = arrayOf(blink, quirkidle),
condition = { !it.isBattling && !it.isUnderWater},
namedAnimations = mutableMapOf("faint" to faint),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "ground_idle")
)
)
battleidle = registerPose(
poseTypes = setOf(PoseType.STAND),
poseName = "battle_standing",
quirks = arrayOf(blink, quirkidle),
condition = { it.isBattling },
namedAnimations = mutableMapOf("faint" to faint),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "battle_idle")
)
)
walk = registerPose(
poseName = "walk",
poseTypes = setOf(PoseType.WALK),
quirks = arrayOf(blink),
namedAnimations = mutableMapOf("faint" to faint),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "ground_walk")
)
)
floating = registerPose(
poseName = "floating",
transformTicks = 10,
poseType = PoseType.FLOAT,
namedAnimations = mutableMapOf("faint" to faint),
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "water_idle")
)
)
swimming = registerPose(
poseName = "swimming",
transformTicks = 10,
namedAnimations = mutableMapOf("faint" to faint),
poseType = PoseType.SWIM,
quirks = arrayOf(blink),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "water_swim"),
)
)
water_surface_idle = registerPose(
poseName = "surface_idle",
poseType = PoseType.STAND,
namedAnimations = mutableMapOf("faint" to faint),
quirks = arrayOf(blink),
condition = { it.isInWater },
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "surfacewater_idle"),
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.Y_AXIS, wateroffset)
)
)
water_surface_swim = registerPose(
poseName = "surface_swim",
poseType = PoseType.WALK,
quirks = arrayOf(blink),
condition = { it.isInWater },
namedAnimations = mutableMapOf("faint" to faint),
animations = arrayOf(
singleBoneLook(),
bedrock("wartortle", "surfacewater_swim"),
),
transformedParts = arrayOf(
rootPart.createTransformation().addPosition(ModelPartTransformation.Y_AXIS, wateroffset)
)
)
}
}
@@ -218,7 +218,6 @@ object VaryingModelRepository {
inbuilt("ancient_leaden_ball", ::AncientPokeBallModel)
inbuilt("ancient_gigaton_ball", ::AncientPokeBallModel)
inbuilt("wartortle", ::WartortleModel)
inbuilt("metapod", ::MetapodModel)
inbuilt("butterfree", ::ButterfreeModel)
inbuilt("beedrill", ::BeedrillModel)
@@ -0,0 +1,128 @@
{
"portraitScale": 1.57,
"portraitTranslation": [-0.17, 0.54, 0],
"profileScale": 0.69,
"profileTranslation": [0, 0.69, 0],
"rootBone": "wartortle",
"animations": {
"physical": "q.bedrock_primary('wartortle', 'physical', 'look', q.curve('symmetrical_wide'))",
"special": "q.bedrock_primary('wartortle', 'special', 'look', q.curve('symmetrical_wide'))",
"status": "q.bedrock_primary('wartortle', 'status', 'look', q.curve('symmetrical_wide'))",
"faint": "q.bedrock_primary('wartortle', 'faint', q.curve('one'))",
"recoil": "q.bedrock_stateful('wartortle', 'recoil')",
"cry": "q.bedrock_stateful('wartortle', 'cry')"
},
"poses": {
"standing": {
"poseName": "standing",
"poseTypes": ["STAND", "PROFILE", "PORTRAIT"],
"isBattle": false,
"isUnderWater": false,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'ground_idle')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')",
"q.bedrock_quirk('wartortle', 'quirk_idle')"
]
},
"battle-standing": {
"poseTypes": ["STAND"],
"isBattle": true,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'battle_idle')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')",
"q.bedrock_quirk('wartortle', 'quirk_idle')"
]
},
"walking": {
"poseTypes": ["WALK"],
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'surfacewater_swim')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
]
},
"water-float": {
"poseTypes": ["FLOAT"],
"isUnderWater": true,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'water_idle')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
],
"transformTicks": 10
},
"water-swim": {
"poseTypes": ["SWIM"],
"isUnderWater": true,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'water_swim')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
],
"transformTicks": 10
},
"surfacewater-float": {
"poseTypes": [
"STAND"
],
"isTouchingWater": true,
"isUnderWater": false,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'surfacewater_idle')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
],
"transformedParts": [
{
"part":"wartortle",
"position":[0,-10,0]
}
]
},
"surfacewater-swim": {
"poseTypes": [
"SWIM"
],
"isTouchingWater": true,
"isUnderWater": false,
"animations": [
"q.look('head_ai')",
"q.bedrock('wartortle', 'surfacewater_swim')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
],
"transformedParts": [
{
"part":"wartortle",
"position":[0,-10,0]
}
]
},
"sleep": {
"poseTypes": [
"SLEEP"
],
"animations": [
"q.bedrock('wartortle', 'sleep')"
],
"quirks": [
"q.bedrock_quirk('wartortle', 'blink')"
]
}
}
}