mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-11-02 14:28:54 -05:00
Compare commits
48
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1da7f76656 | ||
|
|
3e5733ceaf | ||
|
|
af29c99b03 | ||
|
|
60d596a24f | ||
|
|
4003456e5c | ||
|
|
1d21a52d28 | ||
|
|
2d49c62f85 | ||
|
|
da18b082a6 | ||
|
|
f8a16e5081 | ||
|
|
cad39d8802 | ||
|
|
00905b8c32 | ||
|
|
79b3cb8611 | ||
|
|
797e908621 | ||
|
|
3df3c395de | ||
|
|
89bba8a67a | ||
|
|
6d6e13be83 | ||
|
|
899bec77b6 | ||
|
|
6dd8325772 | ||
|
|
79faadef59 | ||
|
|
d9ca7b483d | ||
|
|
708f7fc1b8 | ||
|
|
621db85845 | ||
|
|
b09066c580 | ||
|
|
7c45f28827 | ||
|
|
9c1b2cae22 | ||
|
|
16b2f81bd4 | ||
|
|
6e0c005587 | ||
|
|
db0fb8e287 | ||
|
|
dae36a67d1 | ||
|
|
6f99862288 | ||
|
|
0377747e1e | ||
|
|
154b653c57 | ||
|
|
04489bc969 | ||
|
|
25499b3e7a | ||
|
|
bb6bda54dc | ||
|
|
9f3dbdc2d8 | ||
|
|
932148338c | ||
|
|
309f674853 | ||
|
|
dc705c7720 | ||
|
|
9bfc577444 | ||
|
|
3ca6d350fe | ||
|
|
2997ce8457 | ||
|
|
ff279d8310 | ||
|
|
f445c05333 | ||
|
|
a62485fc1f | ||
|
|
044f3080ff | ||
|
|
28b0cab906 | ||
|
|
82f34d651c |
No files matched your search
@@ -157,9 +157,6 @@ build:
|
||||
paths:
|
||||
- neoforge/build/libs
|
||||
- fabric/build/libs
|
||||
exclude:
|
||||
- neoforge/build/libs/*-dev-shadow.jar
|
||||
- fabric/build/libs/*-dev-shadow.jar
|
||||
|
||||
publish:
|
||||
stage: deploy
|
||||
|
||||
+51
-5
@@ -13,7 +13,11 @@
|
||||
- Galarica Wreath, Cleanse Tag, Spell Tag, Sharp Beak, Covert Cloak, Shell Helmet, and Never-Melt Ice.
|
||||
- Wearable items can now be equipped by a player by holding it and right-clicking (or rebound use/interact)
|
||||
- Wearable items that can be placed down are exempt from this behaviour.
|
||||
- New Cosmetic Item for Pikachu: Paper
|
||||
|
||||
### Fixes
|
||||
- Fixed #updateMovesOnFormChange not properly initializing a form-swapped Pokemon's non-form_change moves.
|
||||
### TEST
|
||||
### Pokémon Added
|
||||
#### Generation 4
|
||||
- Snover
|
||||
@@ -35,12 +39,18 @@
|
||||
- Grubbin
|
||||
- Charjabug
|
||||
- Vikavolt
|
||||
- Minior
|
||||
|
||||
#### Generation 8
|
||||
- Eternatus
|
||||
|
||||
#### Generation 9
|
||||
- Greavard
|
||||
- Houndstone
|
||||
|
||||
### Model updates for the following Pokémon
|
||||
- Sudowoodo
|
||||
- Spheal
|
||||
- Cacnea
|
||||
- Cacturne
|
||||
- Binacle
|
||||
@@ -50,17 +60,54 @@
|
||||
- Deerling
|
||||
- Sawsbuck (All forms)
|
||||
- Absol
|
||||
- Poliwag
|
||||
- Politoed
|
||||
- Ekans
|
||||
- Oddish
|
||||
- Gloom
|
||||
- Vileplume
|
||||
- Bellossom
|
||||
- Shroomish
|
||||
- Chespin
|
||||
- Quilladin
|
||||
- Chesnaught
|
||||
- Fennekin
|
||||
- Braixen
|
||||
- Delphox
|
||||
- Froakie
|
||||
- Frogadier
|
||||
- Greninja
|
||||
- Shinx
|
||||
- Luxio
|
||||
- Luxray
|
||||
- Slakoth
|
||||
- Riolu
|
||||
- Lucario
|
||||
|
||||
### Animation updates for the following Pokémon
|
||||
- Treecko (New Shoulder Mount!)
|
||||
- Bonsly (New Shoulder Mount!)
|
||||
- Sudowoodo
|
||||
- Cacnea
|
||||
- Cacturne
|
||||
- Ekans
|
||||
- Arbok
|
||||
- Oddish
|
||||
- Gloom
|
||||
- Vileplume
|
||||
- Bellossom
|
||||
- Pichu
|
||||
- Pikachu
|
||||
- Raichu (+ Alolan)
|
||||
- Greninja
|
||||
- Slakoth
|
||||
|
||||
### Changes
|
||||
- Updated various recipes to display in Recipe Groups within the Recipe Book
|
||||
- Updated most recipes to display more logically/consistently within the Recipe Book's categories
|
||||
- Make ride rotations less jittery in multiplayer.
|
||||
- Changes tm shelf discs to use textures instead of tinting and overlays to line up with item display
|
||||
- Blank TM can now be inserted into the Disc Shelf
|
||||
- Made regional and Vivillon split-evo locations now mutually exclusive
|
||||
- Vivillon's patterns are now viewable as forms with form names and unique Pokedex entries displayed.
|
||||
|
||||
### Fixes
|
||||
- Correctly grants "They're Minerals!" advancement when planting a type gem
|
||||
@@ -82,12 +129,11 @@
|
||||
- Fixed Duraludon line not having any sleep animations
|
||||
- Fixed Diglett line not having their faint animations
|
||||
- Fixed Kingambit moving its legs while walking
|
||||
- Fixed Alolan Diglett's cry not playing
|
||||
- Fixed shiny alpha Snorlax using the non-shiny texture
|
||||
- Various Structure fixes
|
||||
- Fixed shiny pokemon under certain circumstances forgetting taught TMs
|
||||
|
||||
### Developer
|
||||
- Fixed wrong order of operations in the code flow prior to the `FOSSIL_REVIVED` event causing pokemon to appear without entity link
|
||||
- Fixed TestPartySlot command not correctly comparing the provided spec with the target Pokémon
|
||||
|
||||
### Molang & Datapacks
|
||||
- A new `negate` variant for evolution requirements has been added, which will negate (invert) the provided inner condition.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
Spec Doc: https://docs.google.com/document/d/1hEKKrT4JEagJBykx-k9K2BoeNxiMGahUWXnf8YQ85xo/edit?tab=t.0
|
||||
Marshal: dhi_holo
|
||||
+2
-5
@@ -1,6 +1,3 @@
|
||||
import utilities.gitBranch
|
||||
import utilities.gitShortCommit
|
||||
|
||||
plugins {
|
||||
id("cobblemon.root-conventions")
|
||||
}
|
||||
@@ -9,6 +6,6 @@ version = "${project.property("mod_version")}+${project.property("mc_version")}"
|
||||
|
||||
val isSnapshot = project.property("snapshot")?.equals("true") == true
|
||||
if (isSnapshot) {
|
||||
val fixedBranchName = gitBranch().substringAfter("/")
|
||||
version = "$version-${fixedBranchName}-${gitShortCommit()}"
|
||||
val fixedBranchName = versioning.info.branch.substringAfter("/")
|
||||
version = "$version-${fixedBranchName}-${versioning.info.build}"
|
||||
}
|
||||
+6
-15
@@ -1,8 +1,9 @@
|
||||
|
||||
import utilities.isSnapshot
|
||||
import utilities.version
|
||||
import utilities.gitBranch
|
||||
import utilities.gitCommit
|
||||
import java.time.OffsetDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
/*
|
||||
*
|
||||
@@ -71,14 +72,6 @@ tasks.withType<Test> {
|
||||
}
|
||||
}
|
||||
|
||||
// Git info lives in its own output dir (not processResources) so a new commit only rewrites this one file.
|
||||
val writeGitInfo by tasks.registering(WriteProperties::class) {
|
||||
destinationFile = layout.buildDirectory.file("generated/gitInfo/cobblemon-git.properties")
|
||||
property("commit", gitCommit())
|
||||
property("branch", gitBranch())
|
||||
}
|
||||
sourceSets.main { output.dir(mapOf("builtBy" to writeGitInfo), layout.buildDirectory.dir("generated/gitInfo")) }
|
||||
|
||||
tasks.processResources {
|
||||
exclude("data/**/README.md")
|
||||
}
|
||||
@@ -105,13 +98,11 @@ sourceSets {
|
||||
property("modid", "cobblemon")
|
||||
property("version", project.version())
|
||||
property("isSnapshot", if(rootProject.isSnapshot()) "true" else "false")
|
||||
property("gitCommit", versioning.info.commit)
|
||||
property("branch", versioning.info.branch)
|
||||
System.getProperty("buildNumber")?.let { property("buildNumber", it) }
|
||||
property("timestamp", OffsetDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss")) + " UTC")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The platform jars are built from :common:jar, so the remapped common jars are only needed by `publish`
|
||||
tasks.assemble {
|
||||
setDependsOn(dependsOn.filterNot { (it as? TaskProvider<*>)?.name in setOf("remapJar", "remapSourcesJar") })
|
||||
}
|
||||
@@ -8,12 +8,8 @@ object CobblemonBuildDetails {
|
||||
const val VERSION = "{{ version }}"
|
||||
const val SNAPSHOT = {{ isSnapshot }}
|
||||
|
||||
// Read at runtime rather than templated in, so a new commit doesn't invalidate compiled code.
|
||||
private val git = java.util.Properties().apply {
|
||||
CobblemonBuildDetails::class.java.getResourceAsStream("/cobblemon-git.properties")?.use(::load)
|
||||
}
|
||||
@JvmField val GIT_COMMIT: String = git.getProperty("commit", "Not Specified")
|
||||
@JvmField val BRANCH: String = git.getProperty("branch", "Not Specified")
|
||||
const val GIT_COMMIT = "{{ gitCommit | default("Not Specified") }}"
|
||||
const val BRANCH = "{{ branch | default("Not Specified") }}"
|
||||
|
||||
fun smallCommitHash(): String {
|
||||
return this.GIT_COMMIT.substring(0, 7)
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.cobblemon.mod.common.api.apricorn.Apricorn
|
||||
import com.cobblemon.mod.common.api.pokemon.stats.Stats
|
||||
import com.cobblemon.mod.common.block.*
|
||||
import com.cobblemon.mod.common.block.LecternBlock
|
||||
import com.cobblemon.mod.common.block.appliances.*
|
||||
import com.cobblemon.mod.common.block.MintBlock.MintType
|
||||
import com.cobblemon.mod.common.block.campfirepot.CampfireBlock
|
||||
import com.cobblemon.mod.common.block.campfirepot.CampfirePotBlock
|
||||
@@ -29,7 +28,12 @@ import com.cobblemon.mod.common.block.sign.CobblemonSignBlock
|
||||
import com.cobblemon.mod.common.block.sign.CobblemonWallHangingSignBlock
|
||||
import com.cobblemon.mod.common.block.sign.CobblemonWallSignBlock
|
||||
import com.cobblemon.mod.common.block.tmmachine.TMMachineBlock
|
||||
import com.cobblemon.mod.common.mixin.invoker.*
|
||||
import com.cobblemon.mod.common.mixin.invoker.BlocksInvoker
|
||||
import com.cobblemon.mod.common.mixin.invoker.DoorBlockInvoker
|
||||
import com.cobblemon.mod.common.mixin.invoker.FireBlockInvoker
|
||||
import com.cobblemon.mod.common.mixin.invoker.PressurePlateBlockInvoker
|
||||
import com.cobblemon.mod.common.mixin.invoker.StairsBlockInvoker
|
||||
import com.cobblemon.mod.common.mixin.invoker.TrapdoorBlockInvoker
|
||||
import com.cobblemon.mod.common.platform.PlatformRegistry
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import net.minecraft.core.BlockPos
|
||||
@@ -805,93 +809,6 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
||||
@JvmField
|
||||
val DISPLAY_CASE = create("display_case", DisplayCaseBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.DISPLAY_CASE_SOUNDS).noOcclusion().pushReaction(PushReaction.BLOCK).mapColor(MapColor.STONE).strength(0.3F).requiresCorrectToolForDrops()))
|
||||
|
||||
//Rotom Blocks
|
||||
//Oven
|
||||
@JvmField
|
||||
val COPPER_OVEN = create("copper_oven", WeatheringCopperOvenBlock(WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).requiresCorrectToolForDrops().strength(3.0f, 6.0f).sound(SoundType.COPPER).pushReaction(PushReaction.BLOCK)))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_OVEN = create("exposed_copper_oven", WeatheringCopperOvenBlock(WeatheringCopper.WeatherState.EXPOSED, BlockBehaviour.Properties.ofFullCopy(COPPER_OVEN).mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_OVEN = create("weathered_copper_oven", WeatheringCopperOvenBlock(WeatheringCopper.WeatherState.WEATHERED, BlockBehaviour.Properties.ofFullCopy(COPPER_OVEN).mapColor(MapColor.WARPED_STEM)))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_OVEN = create("oxidized_copper_oven", WeatheringCopperOvenBlock(WeatheringCopper.WeatherState.OXIDIZED, BlockBehaviour.Properties.ofFullCopy(COPPER_OVEN).mapColor(MapColor.WARPED_NYLIUM)))
|
||||
@JvmField
|
||||
val WAXED_COPPER_OVEN = create("waxed_copper_oven", CopperOvenBlock(BlockBehaviour.Properties.ofFullCopy(COPPER_OVEN)))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_OVEN = create("waxed_exposed_copper_oven", CopperOvenBlock(BlockBehaviour.Properties.ofFullCopy(EXPOSED_COPPER_OVEN)))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_OVEN = create("waxed_weathered_copper_oven", CopperOvenBlock(BlockBehaviour.Properties.ofFullCopy(WEATHERED_COPPER_OVEN)))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_OVEN = create("waxed_oxidized_copper_oven", CopperOvenBlock(BlockBehaviour.Properties.ofFullCopy(OXIDIZED_COPPER_OVEN)))
|
||||
//Washer
|
||||
@JvmField
|
||||
val COPPER_WASHER = create("copper_washer", WeatheringCopperWasherBlock(WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).requiresCorrectToolForDrops().strength(3.0f, 6.0f).sound(SoundType.COPPER).pushReaction(PushReaction.BLOCK)))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_WASHER = create("exposed_copper_washer", WeatheringCopperWasherBlock(WeatheringCopper.WeatherState.EXPOSED, BlockBehaviour.Properties.ofFullCopy(COPPER_WASHER).mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_WASHER = create("weathered_copper_washer", WeatheringCopperWasherBlock(WeatheringCopper.WeatherState.WEATHERED, BlockBehaviour.Properties.ofFullCopy(COPPER_WASHER).mapColor(MapColor.WARPED_STEM)))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_WASHER = create("oxidized_copper_washer", WeatheringCopperWasherBlock(WeatheringCopper.WeatherState.OXIDIZED, BlockBehaviour.Properties.ofFullCopy(COPPER_WASHER).mapColor(MapColor.WARPED_NYLIUM)))
|
||||
@JvmField
|
||||
val WAXED_COPPER_WASHER = create("waxed_copper_washer", CopperWasherBlock(BlockBehaviour.Properties.ofFullCopy(COPPER_WASHER)))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_WASHER = create("waxed_exposed_copper_washer", CopperWasherBlock(BlockBehaviour.Properties.ofFullCopy(EXPOSED_COPPER_WASHER)))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_WASHER = create("waxed_weathered_copper_washer", CopperWasherBlock(BlockBehaviour.Properties.ofFullCopy(WEATHERED_COPPER_WASHER)))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_WASHER = create("waxed_oxidized_copper_washer", CopperWasherBlock(BlockBehaviour.Properties.ofFullCopy(OXIDIZED_COPPER_WASHER)))
|
||||
//Fan
|
||||
@JvmField
|
||||
val COPPER_FAN = create("copper_fan", WeatheringCopperFanBlock(WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).requiresCorrectToolForDrops().strength(3.0f, 6.0f).sound(SoundType.COPPER).pushReaction(PushReaction.DESTROY)))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_FAN = create("exposed_copper_fan", WeatheringCopperFanBlock(WeatheringCopper.WeatherState.EXPOSED, BlockBehaviour.Properties.ofFullCopy(COPPER_FAN).mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_FAN = create("weathered_copper_fan", WeatheringCopperFanBlock(WeatheringCopper.WeatherState.WEATHERED, BlockBehaviour.Properties.ofFullCopy(COPPER_FAN).mapColor(MapColor.WARPED_STEM)))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_FAN = create("oxidized_copper_fan", WeatheringCopperFanBlock(WeatheringCopper.WeatherState.OXIDIZED, BlockBehaviour.Properties.ofFullCopy(COPPER_FAN).mapColor(MapColor.WARPED_NYLIUM)))
|
||||
@JvmField
|
||||
val WAXED_COPPER_FAN = create("waxed_copper_fan", CopperFanBlock(BlockBehaviour.Properties.ofFullCopy(COPPER_FAN)))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_FAN = create("waxed_exposed_copper_fan", CopperFanBlock(BlockBehaviour.Properties.ofFullCopy(EXPOSED_COPPER_FAN)))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_FAN = create("waxed_weathered_copper_fan", CopperFanBlock(BlockBehaviour.Properties.ofFullCopy(WEATHERED_COPPER_FAN)))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_FAN = create("waxed_oxidized_copper_fan", CopperFanBlock(BlockBehaviour.Properties.ofFullCopy(OXIDIZED_COPPER_FAN)))
|
||||
//Mower
|
||||
@JvmField
|
||||
val COPPER_MOWER = create("copper_mower", WeatheringCopperMowerBlock(WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).requiresCorrectToolForDrops().strength(3.0f, 6.0f).sound(SoundType.COPPER).pushReaction(PushReaction.NORMAL)))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_MOWER = create("exposed_copper_mower", WeatheringCopperMowerBlock(WeatheringCopper.WeatherState.EXPOSED, BlockBehaviour.Properties.ofFullCopy(COPPER_MOWER).mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_MOWER = create("weathered_copper_mower", WeatheringCopperMowerBlock(WeatheringCopper.WeatherState.WEATHERED, BlockBehaviour.Properties.ofFullCopy(COPPER_MOWER).mapColor(MapColor.WARPED_STEM)))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_MOWER = create("oxidized_copper_mower", WeatheringCopperMowerBlock(WeatheringCopper.WeatherState.OXIDIZED, BlockBehaviour.Properties.ofFullCopy(COPPER_MOWER).mapColor(MapColor.WARPED_NYLIUM)))
|
||||
@JvmField
|
||||
val WAXED_COPPER_MOWER = create("waxed_copper_mower", CopperMowerBlock(BlockBehaviour.Properties.ofFullCopy(COPPER_MOWER)))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_MOWER = create("waxed_exposed_copper_mower", CopperMowerBlock(BlockBehaviour.Properties.ofFullCopy(EXPOSED_COPPER_MOWER)))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_MOWER = create("waxed_weathered_copper_mower", CopperMowerBlock(BlockBehaviour.Properties.ofFullCopy(WEATHERED_COPPER_MOWER)))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_MOWER = create("waxed_oxidized_copper_mower", CopperMowerBlock(BlockBehaviour.Properties.ofFullCopy(OXIDIZED_COPPER_MOWER)))
|
||||
//Fridge
|
||||
@JvmField
|
||||
val COPPER_FRIDGE = create("copper_fridge", WeatheringCopperFridgeBlock(WeatheringCopper.WeatherState.UNAFFECTED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).requiresCorrectToolForDrops().strength(3.0f, 6.0f).sound(SoundType.COPPER).pushReaction(PushReaction.BLOCK)))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_FRIDGE = create("exposed_copper_fridge", WeatheringCopperFridgeBlock(WeatheringCopper.WeatherState.EXPOSED, BlockBehaviour.Properties.ofFullCopy(COPPER_FRIDGE).mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_FRIDGE = create("weathered_copper_fridge", WeatheringCopperFridgeBlock(WeatheringCopper.WeatherState.WEATHERED, BlockBehaviour.Properties.ofFullCopy(COPPER_FRIDGE).mapColor(MapColor.WARPED_STEM)))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_FRIDGE = create("oxidized_copper_fridge", WeatheringCopperFridgeBlock(WeatheringCopper.WeatherState.OXIDIZED, BlockBehaviour.Properties.ofFullCopy(COPPER_FRIDGE).mapColor(MapColor.WARPED_NYLIUM)))
|
||||
@JvmField
|
||||
val WAXED_COPPER_FRIDGE = create("waxed_copper_fridge", CopperFridgeBlock(BlockBehaviour.Properties.ofFullCopy(COPPER_FRIDGE)))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_FRIDGE = create("waxed_exposed_copper_fridge", CopperFridgeBlock(BlockBehaviour.Properties.ofFullCopy(EXPOSED_COPPER_FRIDGE)))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_FRIDGE = create("waxed_weathered_copper_fridge", CopperFridgeBlock(BlockBehaviour.Properties.ofFullCopy(WEATHERED_COPPER_FRIDGE)))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_FRIDGE = create("waxed_oxidized_copper_fridge", CopperFridgeBlock(BlockBehaviour.Properties.ofFullCopy(OXIDIZED_COPPER_FRIDGE)))
|
||||
|
||||
// TODO after 1.7
|
||||
// @JvmField
|
||||
// val INCENSE_SWEET = create("incense_sweet", SweetIncenseBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.DISPLAY_CASE_SOUNDS).noOcclusion().pushReaction(PushReaction.BLOCK).mapColor(MapColor.STONE).strength(0.3F)))
|
||||
@@ -959,57 +876,6 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
||||
SACCHARINE_LOG to STRIPPED_SACCHARINE_LOG,
|
||||
SACCHARINE_LOG_SLATHERED to STRIPPED_SACCHARINE_LOG
|
||||
)
|
||||
/**Same idea as above, but for Copper Oxidation over time (or when inverted, scraping with an axe)*/
|
||||
fun oxidizingBlocks(): Map<Block, Block> = mapOf(
|
||||
//Ovens
|
||||
COPPER_OVEN to EXPOSED_COPPER_OVEN,
|
||||
EXPOSED_COPPER_OVEN to WEATHERED_COPPER_OVEN,
|
||||
WEATHERED_COPPER_OVEN to OXIDIZED_COPPER_OVEN,
|
||||
//Washers
|
||||
COPPER_WASHER to EXPOSED_COPPER_WASHER,
|
||||
EXPOSED_COPPER_WASHER to WEATHERED_COPPER_WASHER,
|
||||
WEATHERED_COPPER_WASHER to OXIDIZED_COPPER_WASHER,
|
||||
//Fans
|
||||
COPPER_FAN to EXPOSED_COPPER_FAN,
|
||||
EXPOSED_COPPER_FAN to WEATHERED_COPPER_FAN,
|
||||
WEATHERED_COPPER_FAN to OXIDIZED_COPPER_FAN,
|
||||
//Fridges
|
||||
COPPER_FRIDGE to EXPOSED_COPPER_FRIDGE,
|
||||
EXPOSED_COPPER_FRIDGE to WEATHERED_COPPER_FRIDGE,
|
||||
WEATHERED_COPPER_FRIDGE to OXIDIZED_COPPER_FRIDGE,
|
||||
//Mowers
|
||||
COPPER_MOWER to EXPOSED_COPPER_MOWER,
|
||||
EXPOSED_COPPER_MOWER to WEATHERED_COPPER_MOWER,
|
||||
WEATHERED_COPPER_MOWER to OXIDIZED_COPPER_MOWER
|
||||
)
|
||||
/**Same idea as above, but for waxing blocks with Honeycomb (or unwaxing them with an axe)*/
|
||||
fun waxingBlocks(): Map<Block, Block> = mapOf(
|
||||
//Ovens
|
||||
COPPER_OVEN to WAXED_COPPER_OVEN,
|
||||
EXPOSED_COPPER_OVEN to WAXED_EXPOSED_COPPER_OVEN,
|
||||
WEATHERED_COPPER_OVEN to WAXED_WEATHERED_COPPER_OVEN,
|
||||
OXIDIZED_COPPER_OVEN to WAXED_OXIDIZED_COPPER_OVEN,
|
||||
//Washers
|
||||
COPPER_WASHER to WAXED_COPPER_WASHER,
|
||||
EXPOSED_COPPER_WASHER to WAXED_EXPOSED_COPPER_WASHER,
|
||||
WEATHERED_COPPER_WASHER to WAXED_WEATHERED_COPPER_WASHER,
|
||||
OXIDIZED_COPPER_WASHER to WAXED_OXIDIZED_COPPER_WASHER,
|
||||
//Fans
|
||||
COPPER_FAN to WAXED_COPPER_FAN,
|
||||
EXPOSED_COPPER_FAN to WAXED_EXPOSED_COPPER_FAN,
|
||||
WEATHERED_COPPER_FAN to WAXED_WEATHERED_COPPER_FAN,
|
||||
OXIDIZED_COPPER_FAN to WAXED_OXIDIZED_COPPER_FAN,
|
||||
//Fridges
|
||||
COPPER_FRIDGE to WAXED_COPPER_FRIDGE,
|
||||
EXPOSED_COPPER_FRIDGE to WAXED_EXPOSED_COPPER_FRIDGE,
|
||||
WEATHERED_COPPER_FRIDGE to WAXED_WEATHERED_COPPER_FRIDGE,
|
||||
OXIDIZED_COPPER_FRIDGE to WAXED_OXIDIZED_COPPER_FRIDGE,
|
||||
//Mowers
|
||||
COPPER_MOWER to WAXED_COPPER_MOWER,
|
||||
EXPOSED_COPPER_MOWER to WAXED_EXPOSED_COPPER_MOWER,
|
||||
WEATHERED_COPPER_MOWER to WAXED_WEATHERED_COPPER_MOWER,
|
||||
OXIDIZED_COPPER_MOWER to WAXED_OXIDIZED_COPPER_MOWER
|
||||
)
|
||||
|
||||
private fun apricornBlock(name: String, apricorn: Apricorn): ApricornBlock = this.create(name, ApricornBlock(BlockBehaviour.Properties.of().mapColor(apricorn.mapColor()).randomTicks().strength(Blocks.OAK_LOG.defaultDestroyTime(), Blocks.OAK_LOG.explosionResistance).sound(SoundType.WOOD).noOcclusion(), apricorn))
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.cobblemon.mod.common.api.net.NetworkPacket
|
||||
import com.mojang.brigadier.arguments.ArgumentType
|
||||
import kotlin.reflect.KClass
|
||||
import net.minecraft.commands.synchronization.ArgumentTypeInfo
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.resources.ResourceKey
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.MinecraftServer
|
||||
@@ -169,16 +168,12 @@ interface CobblemonImplementation {
|
||||
* TODO
|
||||
*
|
||||
* @param identifier
|
||||
* @param reloaderFactory
|
||||
* @param reloader
|
||||
* @param type
|
||||
* @param dependencies
|
||||
*/
|
||||
fun registerResourceReloader(
|
||||
identifier: ResourceLocation,
|
||||
type: PackType,
|
||||
dependencies: Collection<ResourceLocation>,
|
||||
reloaderFactory: (HolderLookup.Provider) -> PreparableReloadListener
|
||||
)
|
||||
fun registerResourceReloader(identifier: ResourceLocation, reloader: PreparableReloadListener, type: PackType, dependencies: Collection<ResourceLocation>)
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
|
||||
@@ -1517,87 +1517,6 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
|
||||
@JvmField
|
||||
val BLANK_TM = this.create("blank_tm", CobblemonItem(Item.Properties()))
|
||||
|
||||
@JvmField
|
||||
val COPPER_OVEN = this.create("copper_oven", BlockItem(CobblemonBlocks.COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_OVEN = this.create("exposed_copper_oven", BlockItem(CobblemonBlocks.EXPOSED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_OVEN = this.create("weathered_copper_oven", BlockItem(CobblemonBlocks.WEATHERED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_OVEN = this.create("oxidized_copper_oven", BlockItem(CobblemonBlocks.OXIDIZED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_COPPER_OVEN = this.create("waxed_copper_oven", BlockItem(CobblemonBlocks.WAXED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_OVEN = this.create("waxed_exposed_copper_oven", BlockItem(CobblemonBlocks.WAXED_EXPOSED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_OVEN = this.create("waxed_weathered_copper_oven", BlockItem(CobblemonBlocks.WAXED_WEATHERED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_OVEN = this.create("waxed_oxidized_copper_oven", BlockItem(CobblemonBlocks.WAXED_OXIDIZED_COPPER_OVEN, Item.Properties()))
|
||||
@JvmField
|
||||
val COPPER_WASHER = this.create("copper_washer", BlockItem(CobblemonBlocks.COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_WASHER = this.create("exposed_copper_washer", BlockItem(CobblemonBlocks.EXPOSED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_WASHER = this.create("weathered_copper_washer", BlockItem(CobblemonBlocks.WEATHERED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_WASHER = this.create("oxidized_copper_washer", BlockItem(CobblemonBlocks.OXIDIZED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_COPPER_WASHER = this.create("waxed_copper_washer", BlockItem(CobblemonBlocks.WAXED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_WASHER = this.create("waxed_exposed_copper_washer", BlockItem(CobblemonBlocks.WAXED_EXPOSED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_WASHER = this.create("waxed_weathered_copper_washer", BlockItem(CobblemonBlocks.WAXED_WEATHERED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_WASHER = this.create("waxed_oxidized_copper_washer", BlockItem(CobblemonBlocks.WAXED_OXIDIZED_COPPER_WASHER, Item.Properties()))
|
||||
@JvmField
|
||||
val COPPER_FAN = this.create("copper_fan", BlockItem(CobblemonBlocks.COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_FAN = this.create("exposed_copper_fan", BlockItem(CobblemonBlocks.EXPOSED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_FAN = this.create("weathered_copper_fan", BlockItem(CobblemonBlocks.WEATHERED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_FAN = this.create("oxidized_copper_fan", BlockItem(CobblemonBlocks.OXIDIZED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_COPPER_FAN = this.create("waxed_copper_fan", BlockItem(CobblemonBlocks.WAXED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_FAN = this.create("waxed_exposed_copper_fan", BlockItem(CobblemonBlocks.WAXED_EXPOSED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_FAN = this.create("waxed_weathered_copper_fan", BlockItem(CobblemonBlocks.WAXED_WEATHERED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_FAN = this.create("waxed_oxidized_copper_fan", BlockItem(CobblemonBlocks.WAXED_OXIDIZED_COPPER_FAN, Item.Properties()))
|
||||
@JvmField
|
||||
val COPPER_MOWER = this.create("copper_mower", BlockItem(CobblemonBlocks.COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_MOWER = this.create("exposed_copper_mower", BlockItem(CobblemonBlocks.EXPOSED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_MOWER = this.create("weathered_copper_mower", BlockItem(CobblemonBlocks.WEATHERED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_MOWER = this.create("oxidized_copper_mower", BlockItem(CobblemonBlocks.OXIDIZED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_COPPER_MOWER = this.create("waxed_copper_mower", BlockItem(CobblemonBlocks.WAXED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_MOWER = this.create("waxed_exposed_copper_mower", BlockItem(CobblemonBlocks.WAXED_EXPOSED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_MOWER = this.create("waxed_weathered_copper_mower", BlockItem(CobblemonBlocks.WAXED_WEATHERED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_MOWER = this.create("waxed_oxidized_copper_mower", BlockItem(CobblemonBlocks.WAXED_OXIDIZED_COPPER_MOWER, Item.Properties()))
|
||||
@JvmField
|
||||
val COPPER_FRIDGE = this.create("copper_fridge", BlockItem(CobblemonBlocks.COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val EXPOSED_COPPER_FRIDGE = this.create("exposed_copper_fridge", BlockItem(CobblemonBlocks.EXPOSED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val WEATHERED_COPPER_FRIDGE = this.create("weathered_copper_fridge", BlockItem(CobblemonBlocks.WEATHERED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val OXIDIZED_COPPER_FRIDGE = this.create("oxidized_copper_fridge", BlockItem(CobblemonBlocks.OXIDIZED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_COPPER_FRIDGE = this.create("waxed_copper_fridge", BlockItem(CobblemonBlocks.WAXED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_EXPOSED_COPPER_FRIDGE = this.create("waxed_exposed_copper_fridge", BlockItem(CobblemonBlocks.WAXED_EXPOSED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_WEATHERED_COPPER_FRIDGE = this.create("waxed_weathered_copper_fridge", BlockItem(CobblemonBlocks.WAXED_WEATHERED_COPPER_FRIDGE, Item.Properties()))
|
||||
@JvmField
|
||||
val WAXED_OXIDIZED_COPPER_FRIDGE = this.create("waxed_oxidized_copper_fridge", BlockItem(CobblemonBlocks.WAXED_OXIDIZED_COPPER_FRIDGE, Item.Properties()))
|
||||
|
||||
// Type Gems
|
||||
@JvmField
|
||||
val NORMAL_GEM = this.create("normal_gem", GemItem(Item.Properties(), CobblemonBlocks.TYPE_GEM_CLUSTER_NORMAL))
|
||||
|
||||
@@ -1,93 +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.api.data
|
||||
|
||||
import com.cobblemon.mod.common.util.endsWith
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import net.minecraft.core.HolderLookup
|
||||
import java.io.BufferedReader
|
||||
import java.io.File
|
||||
import java.util.concurrent.ExecutionException
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.packs.PackType
|
||||
import net.minecraft.server.packs.resources.ResourceManager
|
||||
|
||||
/**
|
||||
* A [DataRegistry] that consumes JSON files.
|
||||
* Every deserialized instance is attached to an [Identifier].
|
||||
* For example a file under data/mymod/[resourcePath]/entry.json would be backed by the identifier modid:entry.
|
||||
*
|
||||
* @param T The type of the data consumed by this registry.
|
||||
*
|
||||
* @author Licious
|
||||
* @since August 5th, 2022
|
||||
*/
|
||||
interface ServerJsonDataRegistry<T> : DataRegistry {
|
||||
|
||||
/**
|
||||
* The [TypeToken] of type [T].
|
||||
*/
|
||||
val typeToken: TypeToken<T>
|
||||
|
||||
/**
|
||||
* The folder location for the data this registry will consume.
|
||||
*/
|
||||
val resourcePath: String
|
||||
|
||||
override val type: PackType
|
||||
get() = PackType.SERVER_DATA
|
||||
|
||||
override fun reload(manager: ResourceManager) {
|
||||
//NO-OP, handled by reload(manager, registry)
|
||||
}
|
||||
|
||||
fun reload(manager: ResourceManager, registry: HolderLookup.Provider) {
|
||||
val gson = setupParser(registry)
|
||||
val data = hashMapOf<ResourceLocation, T>()
|
||||
manager.listResources(resourcePath) { path -> path.endsWith(JSON_EXTENSION) }.forEach { (identifier, resource) ->
|
||||
if (identifier.namespace == "pixelmon") {
|
||||
return@forEach
|
||||
}
|
||||
|
||||
resource.open().use { stream ->
|
||||
stream.bufferedReader().use { reader ->
|
||||
val resolvedIdentifier = ResourceLocation.fromNamespaceAndPath(identifier.namespace, File(identifier.path).nameWithoutExtension)
|
||||
data[resolvedIdentifier] = parse(reader, resolvedIdentifier, gson)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
reload(data, registry)
|
||||
}
|
||||
|
||||
fun parse(reader: BufferedReader, identifier: ResourceLocation, gson: Gson): T {
|
||||
return try {
|
||||
gson.fromJson(reader, typeToken.type)
|
||||
} catch (exception: Exception) {
|
||||
throw ExecutionException("Error loading JSON for data: $identifier", exception)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows the creation of [Gson] instances which have adapters that are registry-aware, e.g. [com.cobblemon.mod.common.pokemon.evolution.adapters.LegacyItemConditionWrapperAdapter]
|
||||
*/
|
||||
fun setupParser(registry: HolderLookup.Provider): Gson
|
||||
|
||||
/**
|
||||
* Reloads this registry from the deserialized data.
|
||||
*
|
||||
* @param data A map of the data associating an instance to the respective identifier from the [ResourceManager].
|
||||
*/
|
||||
fun reload(data: Map<ResourceLocation, T>, registry: HolderLookup.Provider)
|
||||
|
||||
companion object {
|
||||
const val JSON_EXTENSION = ".json"
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ object Fossils: JsonDataRegistry<Fossil> {
|
||||
.registerTypeAdapter(ResourceLocation::class.java, IdentifierAdapter)
|
||||
.registerTypeAdapter(PokemonProperties::class.java, pokemonPropertiesShortAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Item::class.java).type, ItemLikeConditionAdapter)
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter())
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter)
|
||||
.create()
|
||||
|
||||
override val typeToken: TypeToken<Fossil> = TypeToken.get(Fossil::class.java)
|
||||
|
||||
+20
-24
@@ -10,7 +10,7 @@ package com.cobblemon.mod.common.api.interaction
|
||||
|
||||
import com.cobblemon.mod.common.Cobblemon
|
||||
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
|
||||
import com.cobblemon.mod.common.api.data.ServerJsonDataRegistry
|
||||
import com.cobblemon.mod.common.api.data.JsonDataRegistry
|
||||
import com.cobblemon.mod.common.api.molang.ExpressionLike
|
||||
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
|
||||
import com.cobblemon.mod.common.api.pokemon.requirement.Requirement
|
||||
@@ -26,7 +26,6 @@ import com.google.gson.Gson
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.server.packs.PackType
|
||||
@@ -37,31 +36,28 @@ import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.levelgen.structure.Structure
|
||||
import net.minecraft.world.level.material.Fluid
|
||||
|
||||
object PokemonInteractions : ServerJsonDataRegistry<PokemonInteractionSet> {
|
||||
object PokemonInteractions : JsonDataRegistry<PokemonInteractionSet> {
|
||||
override val id = cobblemonResource("pokemon_interactions")
|
||||
override val type = PackType.SERVER_DATA
|
||||
override fun setupParser(registry: HolderLookup.Provider): Gson {
|
||||
return GsonBuilder()
|
||||
.registerTypeAdapter(ResourceLocation::class.java, IdentifierAdapter)
|
||||
.registerTypeAdapter(PokemonProperties::class.java, pokemonPropertiesShortAdapter)
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter(registry))
|
||||
.registerTypeAdapter(Requirement::class.java, CobblemonRequirementAdapter)
|
||||
.registerTypeAdapter(InteractionEffect::class.java, InteractionEffectAdapter)
|
||||
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Block::class.java).type, BlockLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Item::class.java).type, ItemLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Structure::class.java).type, StructureLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Fluid::class.java).type, FluidLikeConditionAdapter)
|
||||
.registerTypeAdapter(IntRange::class.java, IntRangeAdapter)
|
||||
.registerTypeAdapterFactory(LowerCaseEnumTypeAdapterFactory())
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
}
|
||||
|
||||
override val observable = SimpleObservable<PokemonInteractions>()
|
||||
override val typeToken: TypeToken<PokemonInteractionSet> = TypeToken.get(PokemonInteractionSet::class.java)
|
||||
override val resourcePath = "pokemon_interactions"
|
||||
override val gson: Gson = GsonBuilder()
|
||||
.registerTypeAdapter(ResourceLocation::class.java, IdentifierAdapter)
|
||||
.registerTypeAdapter(PokemonProperties::class.java, pokemonPropertiesShortAdapter)
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter)
|
||||
.registerTypeAdapter(Requirement::class.java, CobblemonRequirementAdapter)
|
||||
.registerTypeAdapter(InteractionEffect::class.java, InteractionEffectAdapter)
|
||||
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Biome::class.java).type, BiomeLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Block::class.java).type, BlockLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Item::class.java).type, ItemLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Structure::class.java).type, StructureLikeConditionAdapter)
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Fluid::class.java).type, FluidLikeConditionAdapter)
|
||||
.registerTypeAdapter(IntRange::class.java, IntRangeAdapter)
|
||||
.registerTypeAdapterFactory(LowerCaseEnumTypeAdapterFactory())
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
|
||||
val interactions = mutableListOf<PokemonInteractionSet>()
|
||||
|
||||
@@ -69,7 +65,7 @@ object PokemonInteractions : ServerJsonDataRegistry<PokemonInteractionSet> {
|
||||
PokemonInteractionsSyncPacket(interactions).sendToPlayer(player)
|
||||
}
|
||||
|
||||
override fun reload(data: Map<ResourceLocation, PokemonInteractionSet>, registry: HolderLookup.Provider) {
|
||||
override fun reload(data: Map<ResourceLocation, PokemonInteractionSet>) {
|
||||
interactions.clear()
|
||||
val split = data.entries
|
||||
.partition {
|
||||
@@ -91,4 +87,4 @@ object PokemonInteractions : ServerJsonDataRegistry<PokemonInteractionSet> {
|
||||
.flatMap { it.interactions }
|
||||
.firstOrNull(interactionCheck)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -128,7 +128,7 @@ object PokemonSpecies : JsonDataRegistry<Species> {
|
||||
.registerTypeAdapter(TypeToken.getParameterized(RegistryLikeCondition::class.java, Fluid::class.java).type, FluidLikeConditionAdapter)
|
||||
.registerTypeAdapter(EggGroup::class.java, EggGroupAdapter)
|
||||
.registerTypeAdapter(MobEffect::class.java, RegistryElementAdapter<MobEffect>(BuiltInRegistries::MOB_EFFECT))
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter())
|
||||
.registerTypeAdapter(ItemPredicate::class.java, LegacyItemConditionWrapperAdapter)
|
||||
.registerTypeAdapter(RidingBehaviourSettings::class.java, RidingBehaviourSettingsAdapter)
|
||||
.registerTypeAdapter(RideSoundSettingsList::class.java, RideSoundSettingsListAdapter)
|
||||
.registerTypeAdapter(ObtainableItemCondition::class.java, ObtainableItemConditionAdapter)
|
||||
|
||||
@@ -1,87 +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.block.appliances
|
||||
|
||||
import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.world.item.context.BlockPlaceContext
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.material.Fluids
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
//TODO: All the Fan appliance stuff
|
||||
//TODO: Able to place the Fan on Walls, models and hitbox are there (blockstate would need edits to support it)
|
||||
open class CopperFanBlock(settings: Properties) : HorizontalDirectionalBlock(settings), SimpleWaterloggedBlock {
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<CopperFanBlock> = RecordCodecBuilder.mapCodec {
|
||||
it.group(propertiesCodec()).apply(it, ::CopperFanBlock) }
|
||||
//val FACE = //TODO: Floor/Wall
|
||||
val POWER = BlockStateProperties.POWER;
|
||||
val PUSH = BooleanProperty.create("push")
|
||||
|
||||
val FLOOR_HITBOX = Shapes.or(
|
||||
Shapes.box(0.0625, 0.125, 0.4375, 0.9375, 1.0, 0.5625),
|
||||
Shapes.box(0.375, 0.0, 0.375, 0.625, 0.125, 0.625))
|
||||
val WALL_HITBOX = Shapes.box(0.0625, 0.0625, 0.875, 0.9375, 0.9375, 1.0)
|
||||
}
|
||||
|
||||
init {
|
||||
registerDefaultState(stateDefinition.any()
|
||||
.setValue(HORIZONTAL_FACING, Direction.NORTH)
|
||||
.setValue(WATERLOGGED, false)
|
||||
//.setValue(FACE, AttachFace.FLOOR)
|
||||
.setValue(POWER, 0)
|
||||
.setValue(PUSH, true) //If True, fan pushes entities, If False, fan is cosmetic only
|
||||
)
|
||||
}
|
||||
|
||||
override fun codec(): MapCodec<CopperFanBlock> = CODEC
|
||||
|
||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||
builder.add(HORIZONTAL_FACING, WATERLOGGED, /*FACE,*/ POWER, PUSH)
|
||||
}
|
||||
|
||||
override fun getFluidState(blockState: BlockState): FluidState? = if (blockState.getValue(WATERLOGGED)) Fluids.WATER.getSource(false) else super.getFluidState(blockState)
|
||||
|
||||
override fun updateShape(state: BlockState, direction: Direction, neighborState: BlockState, world: LevelAccessor, pos: BlockPos, neighborPos: BlockPos): BlockState {
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world))
|
||||
}
|
||||
return if (state.getValue(HORIZONTAL_FACING).opposite == direction && !state.canSurvive(world, pos)) Blocks.AIR.defaultBlockState()
|
||||
else super.updateShape(state, direction, neighborState, world, pos, neighborPos)
|
||||
}
|
||||
|
||||
override fun getCollisionShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return rotateShape(Direction.NORTH, direction, FLOOR_HITBOX)
|
||||
}
|
||||
|
||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
return getCollisionShape(state, level, pos, context)
|
||||
}
|
||||
|
||||
override fun getStateForPlacement(context: BlockPlaceContext): BlockState? {
|
||||
val fluidState = context.level.getFluidState(context.clickedPos)
|
||||
return super.getStateForPlacement(context)?.setValue(HORIZONTAL_FACING, context.horizontalDirection.opposite)?.setValue(WATERLOGGED, fluidState.type === Fluids.WATER)
|
||||
}
|
||||
}
|
||||
-153
@@ -1,153 +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.block.appliances
|
||||
|
||||
import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.util.StringRepresentable
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.context.BlockPlaceContext
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.LevelReader
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.material.Fluids
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
//TODO: Oxidation/Waxing/Scraping not breaking the blocks
|
||||
//TODO: All the Fridge appliance stuff
|
||||
open class CopperFridgeBlock(settings: Properties) : HorizontalDirectionalBlock(settings), SimpleWaterloggedBlock {
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<CopperFridgeBlock> = RecordCodecBuilder.mapCodec {
|
||||
it.group(propertiesCodec()).apply(it, ::CopperFridgeBlock) }
|
||||
val HALF: EnumProperty<DoubleBlockHalf> = BlockStateProperties.DOUBLE_BLOCK_HALF
|
||||
val POWERED = BooleanProperty.create("powered")
|
||||
|
||||
val LOWER_HITBOX = Shapes.or(
|
||||
Shapes.box(0.0625, 0.0, 0.125, 0.9375, 0.0625, 0.9375),
|
||||
Shapes.box(0.0, 0.0625, 0.0625, 1.0, 1.0, 1.0))
|
||||
val UPPER_HITBOX = Shapes.or(
|
||||
Shapes.box(0.0, 0.0, 0.0625, 1.0, 1.0, 1.0),
|
||||
Shapes.box(0.25, 0.125, 0.0, 0.375, 0.3125, 0.0625),
|
||||
Shapes.box(0.625, 0.125, 0.0, 0.75, 0.3125, 0.0625))
|
||||
val UPPER_COLLISSIONBOX = Shapes.box(0.0, 0.0, 0.0625, 1.0, 1.0, 1.0)
|
||||
//The handles get ignored by entity collission, because it feels nicer, but still count as part of the hitbox
|
||||
}
|
||||
|
||||
init {
|
||||
registerDefaultState(stateDefinition.any()
|
||||
.setValue(HORIZONTAL_FACING, Direction.NORTH)
|
||||
.setValue(HALF, DoubleBlockHalf.LOWER)
|
||||
.setValue(WATERLOGGED, false)
|
||||
.setValue(POWERED, false)
|
||||
)
|
||||
}
|
||||
|
||||
override fun codec(): MapCodec<CopperFridgeBlock> = CODEC
|
||||
|
||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||
builder.add(HORIZONTAL_FACING, HALF, WATERLOGGED, POWERED)
|
||||
}
|
||||
|
||||
override fun getFluidState(blockState: BlockState): FluidState? = if (blockState.getValue(WATERLOGGED)) Fluids.WATER.getSource(false) else super.getFluidState(blockState)
|
||||
|
||||
override fun updateShape(state: BlockState, direction: Direction, neighborState: BlockState, world: LevelAccessor, pos: BlockPos, neighborPos: BlockPos): BlockState {
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world))
|
||||
}
|
||||
|
||||
val isFridge = neighborState.`is`(this)
|
||||
val half = state.getValue(HALF)
|
||||
if (!isFridge && half == DoubleBlockHalf.UPPER && neighborPos == pos.below()) {
|
||||
return Blocks.AIR.defaultBlockState()
|
||||
} else if (!isFridge && half == DoubleBlockHalf.LOWER && neighborPos == pos.above()) {
|
||||
return Blocks.AIR.defaultBlockState()
|
||||
}
|
||||
return state
|
||||
}
|
||||
|
||||
override fun getCollisionShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return if (state.getValue(HALF) == DoubleBlockHalf.LOWER) {
|
||||
rotateShape(Direction.NORTH, direction, LOWER_HITBOX)
|
||||
} else {
|
||||
rotateShape(Direction.NORTH, direction, UPPER_COLLISSIONBOX)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return if (state.getValue(HALF) == DoubleBlockHalf.LOWER) {
|
||||
rotateShape(Direction.NORTH, direction, LOWER_HITBOX)
|
||||
} else {
|
||||
rotateShape(Direction.NORTH, direction, UPPER_HITBOX)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setPlacedBy(world: Level, pos: BlockPos, state: BlockState, placer: LivingEntity?, itemStack: ItemStack) {
|
||||
world.setBlock(pos.above(),
|
||||
state
|
||||
.setValue(HALF, DoubleBlockHalf.UPPER)
|
||||
.setValue(WATERLOGGED, world.getFluidState((pos.above())).type == Fluids.WATER)
|
||||
, 3)
|
||||
world.blockUpdated(pos, Blocks.AIR)
|
||||
state.updateNeighbourShapes(world, pos, 3)
|
||||
}
|
||||
|
||||
override fun getStateForPlacement(blockPlaceContext: BlockPlaceContext): BlockState? {
|
||||
val abovePosition = blockPlaceContext.clickedPos.above()
|
||||
val world = blockPlaceContext.level
|
||||
if (world.getBlockState(abovePosition).canBeReplaced(blockPlaceContext) && !world.isOutsideBuildHeight(abovePosition)) {
|
||||
return defaultBlockState()
|
||||
.setValue(FACING, blockPlaceContext.horizontalDirection.opposite)
|
||||
.setValue(HALF, DoubleBlockHalf.LOWER)
|
||||
.setValue(WATERLOGGED, blockPlaceContext.level.getFluidState(blockPlaceContext.clickedPos).type == Fluids.WATER)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
override fun canSurvive(state: BlockState, world: LevelReader, pos: BlockPos): Boolean {
|
||||
val blockPos = pos.below()
|
||||
val blockState = world.getBlockState(blockPos)
|
||||
return if (state.getValue(HALF) == DoubleBlockHalf.LOWER) blockState.isFaceSturdy(world, blockPos, Direction.UP) else blockState.`is`(this)
|
||||
}
|
||||
|
||||
override fun playerWillDestroy(world: Level, pos: BlockPos, state: BlockState, player: Player): BlockState {
|
||||
if (!world.isClientSide && player.isCreative) {
|
||||
var blockPos: BlockPos = BlockPos.ZERO
|
||||
var blockState: BlockState = state
|
||||
val half = state.getValue(HALF)
|
||||
if (half == DoubleBlockHalf.UPPER && world.getBlockState(pos.below().also { blockPos = it }).also { blockState = it }.`is`(state.block) && blockState.getValue(
|
||||
HALF
|
||||
) == DoubleBlockHalf.LOWER) {
|
||||
val blockState2 = if (blockState.fluidState.`is`(Fluids.WATER)) Blocks.WATER.defaultBlockState() else Blocks.AIR.defaultBlockState()
|
||||
world.setBlock(blockPos, blockState2, UPDATE_ALL or UPDATE_SUPPRESS_DROPS)
|
||||
world.levelEvent(player, LevelEvent.PARTICLES_DESTROY_BLOCK, blockPos, getId(blockState))
|
||||
}
|
||||
}
|
||||
return super.playerWillDestroy(world, pos, state, player)
|
||||
}
|
||||
}
|
||||
@@ -1,92 +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.block.appliances
|
||||
|
||||
import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.world.item.context.BlockPlaceContext
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.material.Fluids
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
//TODO: All the Mower appliance stuff
|
||||
open class CopperMowerBlock(settings: Properties) : HorizontalDirectionalBlock(settings), SimpleWaterloggedBlock {
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<CopperMowerBlock> = RecordCodecBuilder.mapCodec {
|
||||
it.group(propertiesCodec()).apply(it, ::CopperMowerBlock) }
|
||||
val TRIGGERED = BooleanProperty.create("triggered")
|
||||
|
||||
val COLLISIONBOX = Shapes.or(
|
||||
Shapes.box(0.1875, 0.0, 0.0, 0.8125, 0.375, 0.625),
|
||||
Shapes.box(0.0625, 0.0, 0.625, 0.9375, 0.625, 1.0),
|
||||
Shapes.box(0.125, 0.0, 0.1875, 0.875, 0.3125, 0.5),
|
||||
//The next three lines are just so the handle does have collision, it feels awkward without it but it looks bad as hitbox
|
||||
Shapes.box(0.375, 0.375, 0.375, 0.625, 0.625, 0.5625),
|
||||
Shapes.box(0.4375, 0.5625, 0.5, 0.5625, 0.875, 0.625),
|
||||
Shapes.box(0.25, 0.875, 0.5625, 0.75, 1.0, 0.6875)
|
||||
)
|
||||
val HITBOX = Shapes.or(
|
||||
Shapes.box(0.1875, 0.0, 0.0, 0.8125, 0.375, 0.625),
|
||||
Shapes.box(0.0625, 0.0, 0.625, 0.9375, 0.625, 1.0),
|
||||
Shapes.box(0.125, 0.0, 0.1875, 0.875, 0.3125, 0.5)
|
||||
)
|
||||
}
|
||||
|
||||
init {
|
||||
registerDefaultState(stateDefinition.any()
|
||||
.setValue(HORIZONTAL_FACING, Direction.NORTH)
|
||||
.setValue(WATERLOGGED, false)
|
||||
.setValue(TRIGGERED, false)
|
||||
)
|
||||
}
|
||||
|
||||
override fun codec(): MapCodec<CopperMowerBlock> = CODEC
|
||||
|
||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||
builder.add(HORIZONTAL_FACING, WATERLOGGED, TRIGGERED)
|
||||
}
|
||||
|
||||
override fun getFluidState(blockState: BlockState): FluidState? = if (blockState.getValue(WATERLOGGED)) Fluids.WATER.getSource(false) else super.getFluidState(blockState)
|
||||
|
||||
override fun updateShape(state: BlockState, direction: Direction, neighborState: BlockState, world: LevelAccessor, pos: BlockPos, neighborPos: BlockPos): BlockState {
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world))
|
||||
}
|
||||
return if (state.getValue(HORIZONTAL_FACING).opposite == direction && !state.canSurvive(world, pos)) Blocks.AIR.defaultBlockState()
|
||||
else super.updateShape(state, direction, neighborState, world, pos, neighborPos)
|
||||
}
|
||||
|
||||
override fun getCollisionShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return rotateShape(Direction.NORTH, direction, COLLISIONBOX)
|
||||
}
|
||||
|
||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return rotateShape(Direction.NORTH, direction, HITBOX)
|
||||
}
|
||||
|
||||
override fun getStateForPlacement(context: BlockPlaceContext): BlockState? {
|
||||
val fluidState = context.level.getFluidState(context.clickedPos)
|
||||
return super.getStateForPlacement(context)?.setValue(HORIZONTAL_FACING, context.horizontalDirection)?.setValue(WATERLOGGED, fluidState.type === Fluids.WATER)
|
||||
}
|
||||
}
|
||||
@@ -1,88 +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.block.appliances
|
||||
|
||||
import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.util.StringRepresentable
|
||||
import net.minecraft.world.item.context.BlockPlaceContext
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.material.Fluids
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
//TODO: All the Oven appliance stuff - Good Luck Coders
|
||||
open class CopperOvenBlock(settings: Properties) : HorizontalDirectionalBlock(settings), SimpleWaterloggedBlock {
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<CopperOvenBlock> = RecordCodecBuilder.mapCodec {
|
||||
it.group(propertiesCodec()).apply(it, ::CopperOvenBlock) }
|
||||
val EJECTING = BooleanProperty.create("ejecting")
|
||||
val COOKING = EnumProperty.create("cooking", CookingState::class.java)
|
||||
|
||||
val HITBOX = Shapes.box(0.0625, 0.0, 0.3125, 0.9375, 0.625, 0.9375)
|
||||
}
|
||||
|
||||
init {
|
||||
registerDefaultState(stateDefinition.any()
|
||||
.setValue(HORIZONTAL_FACING, Direction.NORTH)
|
||||
.setValue(WATERLOGGED, false)
|
||||
.setValue(COOKING, CookingState.CLOSED)
|
||||
.setValue(EJECTING, false)
|
||||
)
|
||||
}
|
||||
enum class CookingState : StringRepresentable {
|
||||
CLOSED, //Door is closed
|
||||
OPEN, //Door is open
|
||||
COOKING; //Door is locked closed and the light level is cranked up, as long as the block is powered by redstone. Acts as closed lid in the original Campfire Pot
|
||||
override fun getSerializedName(): String = this.name.lowercase()
|
||||
}
|
||||
|
||||
override fun codec(): MapCodec<CopperOvenBlock> = CODEC
|
||||
|
||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||
builder.add(HORIZONTAL_FACING, WATERLOGGED, COOKING, EJECTING)
|
||||
}
|
||||
|
||||
override fun getFluidState(blockState: BlockState): FluidState? = if (blockState.getValue(WATERLOGGED)) Fluids.WATER.getSource(false) else super.getFluidState(blockState)
|
||||
|
||||
override fun updateShape(state: BlockState, direction: Direction, neighborState: BlockState, world: LevelAccessor, pos: BlockPos, neighborPos: BlockPos): BlockState {
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world))
|
||||
}
|
||||
return if (state.getValue(HORIZONTAL_FACING).opposite == direction && !state.canSurvive(world, pos)) Blocks.AIR.defaultBlockState()
|
||||
else super.updateShape(state, direction, neighborState, world, pos, neighborPos)
|
||||
}
|
||||
|
||||
override fun getCollisionShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return rotateShape(Direction.NORTH, direction, HITBOX)
|
||||
}
|
||||
|
||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
return getCollisionShape(state, level, pos, context).singleEncompassing()
|
||||
}
|
||||
|
||||
override fun getStateForPlacement(context: BlockPlaceContext): BlockState? {
|
||||
val fluidState = context.level.getFluidState(context.clickedPos)
|
||||
return super.getStateForPlacement(context)?.setValue(HORIZONTAL_FACING, context.horizontalDirection.opposite)?.setValue(WATERLOGGED, fluidState.type === Fluids.WATER)
|
||||
}
|
||||
}
|
||||
@@ -1,78 +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.block.appliances
|
||||
|
||||
import com.cobblemon.mod.common.util.rotateShape
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.world.item.context.BlockPlaceContext
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.block.*
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.StateDefinition
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.HORIZONTAL_FACING
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty
|
||||
import net.minecraft.world.level.material.FluidState
|
||||
import net.minecraft.world.level.material.Fluids
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
|
||||
open class CopperWasherBlock(settings: Properties) : HorizontalDirectionalBlock(settings), SimpleWaterloggedBlock {
|
||||
|
||||
companion object {
|
||||
val CODEC: MapCodec<CopperWasherBlock> = RecordCodecBuilder.mapCodec {
|
||||
it.group(propertiesCodec()).apply(it, ::CopperWasherBlock) }
|
||||
val POWERED = BooleanProperty.create("powered")
|
||||
|
||||
val HITBOX = Shapes.box(0.0625, 0.0, 0.125, 0.9375, 1.0, 1.0)
|
||||
}
|
||||
|
||||
init {
|
||||
registerDefaultState(stateDefinition.any()
|
||||
.setValue(HORIZONTAL_FACING, Direction.NORTH)
|
||||
.setValue(WATERLOGGED, false)
|
||||
.setValue(POWERED, false)
|
||||
)
|
||||
}
|
||||
|
||||
override fun codec(): MapCodec<CopperWasherBlock> = CODEC
|
||||
|
||||
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
|
||||
builder.add(HORIZONTAL_FACING, WATERLOGGED, POWERED)
|
||||
}
|
||||
|
||||
override fun getFluidState(blockState: BlockState): FluidState? = if (blockState.getValue(WATERLOGGED)) Fluids.WATER.getSource(false) else super.getFluidState(blockState)
|
||||
|
||||
override fun updateShape(state: BlockState, direction: Direction, neighborState: BlockState, world: LevelAccessor, pos: BlockPos, neighborPos: BlockPos): BlockState {
|
||||
if (state.getValue(WATERLOGGED)) {
|
||||
world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world))
|
||||
}
|
||||
return if (state.getValue(HORIZONTAL_FACING).opposite == direction && !state.canSurvive(world, pos)) Blocks.AIR.defaultBlockState()
|
||||
else super.updateShape(state, direction, neighborState, world, pos, neighborPos)
|
||||
}
|
||||
|
||||
override fun getCollisionShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
val direction = state.getValue(HORIZONTAL_FACING)
|
||||
return rotateShape(Direction.NORTH, direction, HITBOX)
|
||||
}
|
||||
|
||||
override fun getShape(state: BlockState, level: BlockGetter, pos: BlockPos, context: CollisionContext): VoxelShape {
|
||||
return getCollisionShape(state, level, pos, context).singleEncompassing()
|
||||
}
|
||||
|
||||
override fun getStateForPlacement(context: BlockPlaceContext): BlockState? {
|
||||
val fluidState = context.level.getFluidState(context.clickedPos)
|
||||
return super.getStateForPlacement(context)?.setValue(HORIZONTAL_FACING, context.horizontalDirection.opposite)?.setValue(WATERLOGGED, fluidState.type === Fluids.WATER)
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +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.block.appliances
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.level.block.WeatheringCopper
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
|
||||
class WeatheringCopperFanBlock(val weatherState: WeatheringCopper.WeatherState, properties: Properties) :
|
||||
CopperFanBlock(properties), WeatheringCopper {
|
||||
|
||||
override fun randomTick(state: BlockState?, level: ServerLevel?, pos: BlockPos?, random: RandomSource?) {
|
||||
this.changeOverTime(state, level, pos, random)
|
||||
}
|
||||
|
||||
override fun isRandomlyTicking(state: BlockState): Boolean {
|
||||
return WeatheringCopper.getNext(state.getBlock()).isPresent()
|
||||
}
|
||||
|
||||
override fun getAge(): WeatheringCopper.WeatherState {
|
||||
return this.weatherState
|
||||
}
|
||||
}
|
||||
-34
@@ -1,34 +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.block.appliances
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.level.block.WeatheringCopper
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf
|
||||
|
||||
class WeatheringCopperFridgeBlock(val weatherState: WeatheringCopper.WeatherState, properties: Properties) :
|
||||
CopperFridgeBlock(properties), WeatheringCopper {
|
||||
|
||||
override fun randomTick(state: BlockState, level: ServerLevel?, pos: BlockPos?, random: RandomSource?) {
|
||||
if (state.getValue(HALF) == DoubleBlockHalf.LOWER) {
|
||||
this.changeOverTime(state, level, pos, random)
|
||||
}
|
||||
}
|
||||
|
||||
override fun isRandomlyTicking(state: BlockState): Boolean {
|
||||
return WeatheringCopper.getNext(state.getBlock()).isPresent()
|
||||
}
|
||||
|
||||
override fun getAge(): WeatheringCopper.WeatherState {
|
||||
return this.weatherState
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +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.block.appliances
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.level.block.WeatheringCopper
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
|
||||
class WeatheringCopperMowerBlock(val weatherState: WeatheringCopper.WeatherState, properties: Properties) :
|
||||
CopperMowerBlock(properties), WeatheringCopper {
|
||||
|
||||
override fun randomTick(state: BlockState?, level: ServerLevel?, pos: BlockPos?, random: RandomSource?) {
|
||||
this.changeOverTime(state, level, pos, random)
|
||||
}
|
||||
|
||||
override fun isRandomlyTicking(state: BlockState): Boolean {
|
||||
return WeatheringCopper.getNext(state.getBlock()).isPresent()
|
||||
}
|
||||
|
||||
override fun getAge(): WeatheringCopper.WeatherState {
|
||||
return this.weatherState
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +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.block.appliances
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.level.block.WeatheringCopper
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
|
||||
class WeatheringCopperOvenBlock(val weatherState: WeatheringCopper.WeatherState, properties: Properties) :
|
||||
CopperOvenBlock(properties), WeatheringCopper {
|
||||
|
||||
override fun randomTick(state: BlockState?, level: ServerLevel?, pos: BlockPos?, random: RandomSource?) {
|
||||
this.changeOverTime(state, level, pos, random)
|
||||
}
|
||||
|
||||
override fun isRandomlyTicking(state: BlockState): Boolean {
|
||||
return WeatheringCopper.getNext(state.getBlock()).isPresent()
|
||||
}
|
||||
|
||||
override fun getAge(): WeatheringCopper.WeatherState {
|
||||
return this.weatherState
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +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.block.appliances
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.RandomSource
|
||||
import net.minecraft.world.level.block.WeatheringCopper
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
|
||||
class WeatheringCopperWasherBlock(val weatherState: WeatheringCopper.WeatherState, properties: Properties) :
|
||||
CopperWasherBlock(properties), WeatheringCopper {
|
||||
|
||||
override fun randomTick(state: BlockState?, level: ServerLevel?, pos: BlockPos?, random: RandomSource?) {
|
||||
this.changeOverTime(state, level, pos, random)
|
||||
}
|
||||
|
||||
override fun isRandomlyTicking(state: BlockState): Boolean {
|
||||
return WeatheringCopper.getNext(state.getBlock()).isPresent()
|
||||
}
|
||||
|
||||
override fun getAge(): WeatheringCopper.WeatherState {
|
||||
return this.weatherState
|
||||
}
|
||||
}
|
||||
@@ -128,7 +128,6 @@ class DiscShelfBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobbl
|
||||
|
||||
fun isValidItem(stack: ItemStack): Boolean {
|
||||
return stack.item is TechnicalMachineItem
|
||||
|| stack.item == CobblemonItems.BLANK_TM
|
||||
|| stack.item == CobblemonItems.UPGRADE
|
||||
|| stack.item == CobblemonItems.DUBIOUS_DISC
|
||||
|| stack.has(DataComponents.JUKEBOX_PLAYABLE)
|
||||
|
||||
-2
@@ -31,7 +31,6 @@ import com.cobblemon.mod.common.client.sound.instances.CancellableSoundInstance
|
||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||
import com.cobblemon.mod.common.item.PokeBallItem
|
||||
import com.cobblemon.mod.common.pokemon.Pokemon
|
||||
import com.cobblemon.mod.common.pokemon.activestate.SentOutState
|
||||
import com.cobblemon.mod.common.util.DataKeys
|
||||
import com.cobblemon.mod.common.util.giveOrDropItemStack
|
||||
import com.cobblemon.mod.common.util.lang
|
||||
@@ -236,7 +235,6 @@ class FossilMultiblockStructure (
|
||||
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)
|
||||
if (world.addFreshEntity(entity)) {
|
||||
pokemon.state = SentOutState(entity)
|
||||
CobblemonEvents.FOSSIL_REVIVED.post(FossilRevivedEvent(pokemon, null))
|
||||
return true
|
||||
} else {
|
||||
|
||||
@@ -414,16 +414,7 @@ object CobblemonClient {
|
||||
CobblemonBlocks.NEVER_MELT_ICE,
|
||||
CobblemonBlocks.WIDE_LENS,
|
||||
CobblemonBlocks.ZOOM_LENS,
|
||||
CobblemonBlocks.SCOPE_LENS,
|
||||
|
||||
CobblemonBlocks.COPPER_FAN,
|
||||
CobblemonBlocks.EXPOSED_COPPER_FAN,
|
||||
CobblemonBlocks.WEATHERED_COPPER_FAN,
|
||||
CobblemonBlocks.OXIDIZED_COPPER_FAN,
|
||||
CobblemonBlocks.WAXED_COPPER_FAN,
|
||||
CobblemonBlocks.WAXED_EXPOSED_COPPER_FAN,
|
||||
CobblemonBlocks.WAXED_WEATHERED_COPPER_FAN,
|
||||
CobblemonBlocks.WAXED_OXIDIZED_COPPER_FAN
|
||||
CobblemonBlocks.SCOPE_LENS
|
||||
)
|
||||
|
||||
this.createBoatModelLayers()
|
||||
|
||||
+28
-14
@@ -8,9 +8,9 @@
|
||||
|
||||
package com.cobblemon.mod.common.client.render.block
|
||||
|
||||
import com.cobblemon.mod.common.CobblemonItemComponents
|
||||
import com.cobblemon.mod.common.block.entity.DiscShelfBlockEntity
|
||||
import com.cobblemon.mod.common.CobblemonItems
|
||||
import com.cobblemon.mod.common.client.render.color.TechnicalMachineItemColorProvider
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
@@ -37,15 +37,15 @@ class DiscShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
|
||||
private val slotHeightPixels = 2
|
||||
private val textureSize = 16f
|
||||
|
||||
private val slotUMax = slotWidthPixels / textureSize
|
||||
private val slotVMax = slotHeightPixels / textureSize
|
||||
|
||||
private val leftMargin = 1f
|
||||
private val rightMargin = 1f
|
||||
private val topMargin = 1f
|
||||
private val interRowSpacing = 0f
|
||||
private val tmOverlayDepthOffset = -0.0002f
|
||||
private val slotBrightnessMultiplier = 0.65f
|
||||
|
||||
private val tmBaseTexture = cobblemonResource("textures/block/disc_shelf/technical_machine_base.png")
|
||||
private val tmOverlayTexture = cobblemonResource("textures/block/disc_shelf/technical_machine_overlay.png")
|
||||
private val musicDiscUnknownTexture = cobblemonResource("textures/block/disc_shelf/music_disc_unknown.png")
|
||||
|
||||
override fun render(
|
||||
@@ -98,19 +98,35 @@ class DiscShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
|
||||
poseStack.translate(posX, posY, -0.001f)
|
||||
|
||||
if (item.item == CobblemonItems.TECHNICAL_MACHINE) {
|
||||
val elementId = item.components.get(CobblemonItemComponents.TM_MOVE)!!.move.elementalType.showdownId
|
||||
val texture = cobblemonResource("textures/block/disc_shelf/${elementId}_tm.png")
|
||||
val baseColor = TechnicalMachineItemColorProvider.getColor(item, 0)
|
||||
val overlayColor = TechnicalMachineItemColorProvider.getColor(item, 1)
|
||||
|
||||
renderSlotQuad(
|
||||
poseStack,
|
||||
buffer,
|
||||
texture,
|
||||
0xFFFFFF,
|
||||
tmBaseTexture,
|
||||
baseColor,
|
||||
packedLight,
|
||||
slotWidth,
|
||||
slotHeight,
|
||||
tint = true,
|
||||
useTextRenderType = true
|
||||
)
|
||||
|
||||
poseStack.pushPose()
|
||||
poseStack.translate(0.0, 0.0, tmOverlayDepthOffset.toDouble())
|
||||
renderSlotQuad(
|
||||
poseStack,
|
||||
buffer,
|
||||
tmOverlayTexture,
|
||||
overlayColor,
|
||||
packedLight,
|
||||
slotWidth,
|
||||
slotHeight,
|
||||
tint = true,
|
||||
useTextRenderType = true
|
||||
)
|
||||
poseStack.popPose()
|
||||
} else {
|
||||
val tex = getItemTexture(item)
|
||||
renderSlotQuad(
|
||||
@@ -160,15 +176,13 @@ class DiscShelfBlockEntityRenderer(ctx: BlockEntityRendererProvider.Context) :
|
||||
val g = (gBase * slotBrightnessMultiplier).coerceIn(0f, 1f)
|
||||
val b = (bBase * slotBrightnessMultiplier).coerceIn(0f, 1f)
|
||||
|
||||
// The quad faces -Z, so a viewer looking at it sees +X on their left.
|
||||
// U runs from slotUMax at x = 0 to 0 at x = width so the art is not mirrored.
|
||||
consumer.addVertex(matrix, 0f, 0f, 0f).setColor(r, g, b, a).setUv(slotUMax, slotVMax)
|
||||
consumer.addVertex(matrix, 0f, 0f, 0f).setColor(r, g, b, a).setUv(0f, 1f)
|
||||
.setUv1(0, 0).setUv2(light and 0xFFFF, light shr 16).setNormal(0f, 0f, -1f)
|
||||
consumer.addVertex(matrix, 0f, height, 0f).setColor(r, g, b, a).setUv(slotUMax, 0f)
|
||||
consumer.addVertex(matrix, 0f, height, 0f).setColor(r, g, b, a).setUv(0f, 0f)
|
||||
.setUv1(0, 0).setUv2(light and 0xFFFF, light shr 16).setNormal(0f, 0f, -1f)
|
||||
consumer.addVertex(matrix, width, height, 0f).setColor(r, g, b, a).setUv(0f, 0f)
|
||||
consumer.addVertex(matrix, width, height, 0f).setColor(r, g, b, a).setUv(1f, 0f)
|
||||
.setUv1(0, 0).setUv2(light and 0xFFFF, light shr 16).setNormal(0f, 0f, -1f)
|
||||
consumer.addVertex(matrix, width, 0f, 0f).setColor(r, g, b, a).setUv(0f, slotVMax)
|
||||
consumer.addVertex(matrix, width, 0f, 0f).setColor(r, g, b, a).setUv(1f, 1f)
|
||||
.setUv1(0, 0).setUv2(light and 0xFFFF, light shr 16).setNormal(0f, 0f, -1f)
|
||||
}
|
||||
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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.color
|
||||
|
||||
import com.cobblemon.mod.common.api.types.ElementalTypes
|
||||
import com.cobblemon.mod.common.item.components.TMMoveComponent.Companion.getTMMove
|
||||
import net.minecraft.client.color.item.ItemColor
|
||||
import net.minecraft.util.FastColor
|
||||
import net.minecraft.world.item.ItemStack
|
||||
|
||||
object TechnicalMachineItemColorProvider : ItemColor {
|
||||
override fun getColor(itemStack: ItemStack, layer: Int): Int {
|
||||
val moveType = getTMMove(itemStack)?.elementalType ?: ElementalTypes.NORMAL
|
||||
val color = when (layer) {
|
||||
0 -> moveType.primaryColor
|
||||
1 -> moveType.secondaryColor
|
||||
else -> 0xFFFFFF
|
||||
}
|
||||
return FastColor.ARGB32.opaque(color)
|
||||
}
|
||||
}
|
||||
-104
@@ -1,104 +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.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.WaveAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.WaveSegment
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation.Companion.X_AXIS
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation.Companion.Y_AXIS
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.wavefunction.sineFunction
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class EkansModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
|
||||
override val rootPart = root.registerChildWithAllChildren("ekans")
|
||||
private val body = getPart("body")
|
||||
override val head = getPart("head")
|
||||
private val tail = getPart("tail")
|
||||
private val tail2 = getPart("tail2")
|
||||
private val tail3 = getPart("tail3")
|
||||
private val tail4 = getPart("tail4")
|
||||
private val tail5 = getPart("tail5")
|
||||
private val tail6 = getPart("tail6")
|
||||
|
||||
val tailSegment = WaveSegment(modelPart = tail, length = 9F)
|
||||
val tail2Segment = WaveSegment(modelPart = tail2, length = 9F)
|
||||
val tail3Segment = WaveSegment(modelPart = tail3, length = 9F)
|
||||
val tail4Segment = WaveSegment(modelPart = tail4, length = 9F)
|
||||
val tail5Segment = WaveSegment(modelPart = tail5, length = 10F)
|
||||
val tail6Segment = WaveSegment(modelPart = tail6, length = 10F)
|
||||
|
||||
override var portraitScale = 1.7F
|
||||
override var portraitTranslation = Vec3(-0.3, -0.45, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(-0.05, 0.6, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("ekans", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("ekans", "sleep"))
|
||||
)
|
||||
val blink = quirk { bedrockStateful("ekans", "blink") }
|
||||
registerPose(
|
||||
poseName = "normal",
|
||||
poseTypes = STATIONARY_POSES + MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("ekans", "ground_idle"),
|
||||
WaveAnimation(
|
||||
waveFunction = sineFunction(
|
||||
period = 8F,
|
||||
amplitude = 0.8F
|
||||
),
|
||||
basedOnLimbSwing = true,
|
||||
oscillationsScalar = 5F,
|
||||
head = head,
|
||||
rotationAxis = Y_AXIS,
|
||||
motionAxis = X_AXIS,
|
||||
moveHead = false,
|
||||
headLength = 16F,
|
||||
segments = arrayOf(
|
||||
tailSegment,
|
||||
tail2Segment,
|
||||
tail3Segment,
|
||||
tail4Segment,
|
||||
tail5Segment,
|
||||
tail6Segment
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
registerPose(
|
||||
poseName = "portrait",
|
||||
poseTypes = UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("ekans", "summary_idle"))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("ekans", "faint")
|
||||
}
|
||||
-63
@@ -1,63 +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.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class GloomModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("gloom")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.0, -1.0, 0.0)
|
||||
|
||||
override var profileScale = 1.05F
|
||||
override var profileTranslation = Vec3(0.0, 0.19, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("gloom", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(
|
||||
bedrock("gloom", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("gloom", "sleep"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(
|
||||
bedrock("gloom", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("gloom", "faint")
|
||||
}
|
||||
-66
@@ -1,66 +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.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class OddishModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("oddish")
|
||||
|
||||
override var portraitScale = 2.0F
|
||||
override var portraitTranslation = Vec3(-0.0, -1.0, 0.0)
|
||||
|
||||
override var profileScale = 0.85F
|
||||
override var profileTranslation = Vec3(0.0, 0.5, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("oddish", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("oddish", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("oddish", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("oddish", "sleep"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("oddish", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("oddish", "faint")
|
||||
}
|
||||
-75
@@ -1,75 +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.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STANDING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class PoliwagModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("poliwag")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(0.0, -0.7, 0.0)
|
||||
|
||||
override var profileScale = 0.9F
|
||||
override var profileTranslation = Vec3(0.0, 0.38, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var float: Pose
|
||||
lateinit var swim: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("poliwag", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("poliwag", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STANDING_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("poliwag", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("poliwag", "sleep"))
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "float",
|
||||
poseType = PoseType.FLOAT,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("poliwag", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseType = PoseType.SWIM,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("poliwag", "water_swim")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("poliwag", "faint") else null
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
}
|
||||
-66
@@ -1,66 +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.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class VileplumeModel(root: ModelPart) : PokemonPosableModel(root) {
|
||||
override val rootPart = root.registerChildWithAllChildren("vileplume")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.35, -0.8, 0.0)
|
||||
|
||||
override var profileScale = 0.8F
|
||||
override var profileTranslation = Vec3(0.0, 0.53, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("vileplume", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("vileplume", "blink")}
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("vileplume", "idle")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("vileplume", "sleep"))
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("vileplume", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = bedrockStateful("vileplume", "faint")
|
||||
}
|
||||
-95
@@ -1,95 +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.gen2
|
||||
|
||||
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.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.SHOULDER_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class BellossomModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("bellossom")
|
||||
override val head = getPart("head")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(0.0, -0.2, 0.0)
|
||||
|
||||
override var profileScale = 1.0F
|
||||
override var profileTranslation = Vec3(0.0, 0.21, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var shoulderLeft: Pose
|
||||
lateinit var shoulderRight: Pose
|
||||
|
||||
val shoulderOffset = 5
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("bellossom", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("bellossom", "ground_idle"),
|
||||
singleBoneLook()
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
bedrock("bellossom", "ground_idle"),
|
||||
bedrock("bellossom", "ground_walk"),
|
||||
singleBoneLook()
|
||||
)
|
||||
)
|
||||
|
||||
shoulderLeft = registerPose(
|
||||
poseType = PoseType.SHOULDER_LEFT,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("bellossom", "ground_idle")
|
||||
),
|
||||
transformedParts = arrayOf(
|
||||
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, shoulderOffset)
|
||||
)
|
||||
)
|
||||
|
||||
shoulderRight = registerPose(
|
||||
poseType = PoseType.SHOULDER_RIGHT,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("bellossom", "ground_idle")
|
||||
),
|
||||
transformedParts = arrayOf(
|
||||
rootPart.createTransformation().addPosition(ModelPartTransformation.X_AXIS, -shoulderOffset)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("bellossom", "faint") else null
|
||||
}
|
||||
-80
@@ -1,80 +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.gen2
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class PolitoedModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("politoed")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val leftLeg = getPart("leftleg")
|
||||
override val rightLeg = getPart("rightleg")
|
||||
|
||||
override var portraitScale = 2.4F
|
||||
override var portraitTranslation = Vec3(-0.04, -0.55, 0.0)
|
||||
|
||||
override var profileScale = 1.1F
|
||||
override var profileTranslation = Vec3(0.0, 0.1, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walking: Pose
|
||||
lateinit var float: Pose
|
||||
lateinit var swim: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = UI_POSES + PoseType.STAND,
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("politoed", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walking = registerPose(
|
||||
poseName = "walking",
|
||||
poseType = PoseType.WALK,
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("politoed", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "float",
|
||||
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("politoed", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("politoed", "water_swim")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("politoed", "faint") else null
|
||||
}
|
||||
-72
@@ -1,72 +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.gen2
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class SudowoodoModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("sudowoodo")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 1.9F
|
||||
override var portraitTranslation = Vec3(-0.7, 1.6, 0.0)
|
||||
|
||||
override var profileScale = 0.5F
|
||||
override var profileTranslation = Vec3(-0.1, 0.95, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("sudowoodo", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(yawMultiplier = 0F),
|
||||
bedrock("sudowoodo", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(yawMultiplier = 0F),
|
||||
bedrock("sudowoodo", "ground_idle"),
|
||||
BipedWalkAnimation(this, periodMultiplier = 0.6F, amplitudeMultiplier = 0.9F),
|
||||
BimanualSwingAnimation(this, swingPeriodMultiplier = 0.6F, amplitudeMultiplier = 0.9F)
|
||||
//bedrock("sudowoodo", "ground_walk")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("sudowoodo", "faint") else null
|
||||
}
|
||||
-91
@@ -1,91 +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.gen3
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class ShroomishModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("shroomish")
|
||||
override val head = getPart("torso")
|
||||
|
||||
override val leftLeg = getPart("foot_left")
|
||||
override val rightLeg = getPart("foot_right")
|
||||
|
||||
override var portraitScale = 2.0F
|
||||
override var portraitTranslation = Vec3(-0.1, -1.2, 0.0)
|
||||
|
||||
override var profileScale = 1.0F
|
||||
override var profileTranslation = Vec3(0.0, 0.3, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var battling: Pose
|
||||
lateinit var sleeping: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("shroomish", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("shroomish", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(pitchMultiplier = 0.5F),
|
||||
bedrock("shroomish", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(pitchMultiplier = 0.5F),
|
||||
bedrock("shroomish", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
battling = registerPose(
|
||||
poseName = "battlestanding",
|
||||
poseTypes = STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(pitchMultiplier = 0.5F),
|
||||
bedrock("shroomish", "battle_idle")
|
||||
)
|
||||
)
|
||||
|
||||
sleeping = registerPose(
|
||||
poseName = "sleeping",
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(
|
||||
bedrock("shroomish", "sleep")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battling, sleeping)) bedrockStateful("shroomish", "faint") else null
|
||||
}
|
||||
-102
@@ -1,102 +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.gen4
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class BonslyModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("bonsly")
|
||||
override val head = getPart("torso")
|
||||
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 2.2F
|
||||
override var portraitTranslation = Vec3(-0.2, -0.8, 0.0)
|
||||
|
||||
override var profileScale = 0.72F
|
||||
override var profileTranslation = Vec3(0.0, 0.65, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var battleidle: Pose
|
||||
lateinit var sleep: Pose
|
||||
lateinit var battlesleep: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("bonsly", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("bonsly", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("bonsly", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseName = "sleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
bedrock("bonsly", "sleep_pot")
|
||||
)
|
||||
)
|
||||
|
||||
battlesleep = registerPose(
|
||||
poseName = "battlesleep",
|
||||
poseType = PoseType.SLEEP,
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
bedrock("bonsly", "sleep")
|
||||
)
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("bonsly", "battle_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk))
|
||||
// bedrockStateful("bonsly", "faint")
|
||||
// else null
|
||||
}
|
||||
-72
@@ -1,72 +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.gen4
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class LuxioModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("luxio")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val foreLeftLeg = getPart("front_leg_left")
|
||||
override val foreRightLeg = getPart("front_leg_right")
|
||||
override val hindLeftLeg = getPart("back_leg_left")
|
||||
override val hindRightLeg = getPart("back_leg_right")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.6, -0.25, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var sleep: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
// val blink = quirk { bedrockStateful("luxio", "blink") }
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
animations = arrayOf(bedrock("luxio", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("luxio", "idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = PoseType.MOVING_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
|
||||
singleBoneLook(),
|
||||
bedrock("luxio", "idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("luxio", "faint") else null
|
||||
}
|
||||
-67
@@ -1,67 +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.gen4
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class LuxrayModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("luxray")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val foreLeftLeg = getPart("front_leg_left")
|
||||
override val foreRightLeg = getPart("front_leg_right")
|
||||
override val hindLeftLeg = getPart("back_leg_left")
|
||||
override val hindRightLeg = getPart("back_leg_right")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.9, 0.6, 0.0)
|
||||
|
||||
override var profileScale = 0.66F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
// val blink = quirk { bedrockStateful("luxray", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("luxray", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = PoseType.MOVING_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
|
||||
bedrock("luxray", "ground_idle"),
|
||||
singleBoneLook()
|
||||
// bedrock("luxray", "idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("luxray", "faint") else null
|
||||
}
|
||||
-66
@@ -1,66 +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.gen4
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.QuadrupedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.QuadrupedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class ShinxModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, QuadrupedFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("shinx")
|
||||
override val head = getPart("head")
|
||||
|
||||
override val foreLeftLeg = getPart("leg_left")
|
||||
override val foreRightLeg = getPart("leg_right")
|
||||
override val hindLeftLeg = getPart("back_leg_left")
|
||||
override val hindRightLeg = getPart("back_leg_right")
|
||||
|
||||
override var portraitScale = 1.8F
|
||||
override var portraitTranslation = Vec3(-0.6, -0.25, 0.0)
|
||||
|
||||
override var profileScale = 0.66F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override fun registerPoses() {
|
||||
// val blink = quirk { bedrockStateful("shinx", "blink") }
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("shinx", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = PoseType.MOVING_POSES,
|
||||
// quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
QuadrupedWalkAnimation(this, periodMultiplier = 1.1F),
|
||||
singleBoneLook(),
|
||||
bedrock("shinx", "ground_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// override fun getFaintAnimation(
|
||||
// pokemonEntity: PokemonEntity,
|
||||
// state: PosableState<PokemonEntity>
|
||||
// ) = if (state.isPosedIn(standing, walk)) bedrockStateful("shinx", "faint") else null
|
||||
}
|
||||
-70
@@ -1,70 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BimanualSwingAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.animation.BipedWalkAnimation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class ChesnaughtModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("chesnaught")
|
||||
override val head = getPart("head")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 2.2F
|
||||
override var portraitTranslation = Vec3(-1.0, 1.65, 0.0)
|
||||
|
||||
override var profileScale = 0.6F
|
||||
override var profileTranslation = Vec3(0.0, 0.85, 0.0)
|
||||
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("chesnaught", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("chesnaught", "blink")}
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("chesnaught", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
BimanualSwingAnimation(this),
|
||||
BipedWalkAnimation(this),
|
||||
bedrock("chesnaught", "ground_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
-70
@@ -1,70 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class ChespinModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("chespin")
|
||||
override val head = getPart("head")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 2.03F
|
||||
override var portraitTranslation = Vec3(-0.12, -0.44, 0.0)
|
||||
|
||||
override var profileScale = 0.77F
|
||||
override var profileTranslation = Vec3(0.0, 0.6, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var sleep: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("chespin", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("chespin", "blink")}
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("chespin", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = PoseType.MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("chespin", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(bedrock("chespin", "sleep"))
|
||||
)
|
||||
}
|
||||
}
|
||||
-118
@@ -1,118 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class FroakieModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("froakie")
|
||||
override val head = getPart("head")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
|
||||
override var portraitScale = 1.86F
|
||||
override var portraitTranslation = Vec3(-0.25, -0.51, 0.0)
|
||||
|
||||
override var profileScale = 0.75F
|
||||
override var profileTranslation = Vec3(0.0, 0.56, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var float: Pose
|
||||
lateinit var swim: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var battleidle: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("froakie", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("froakie", "blink")}
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("froakie", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("froakie", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseType = PoseType.WALK,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("froakie", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "swim_idle",
|
||||
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("froakie", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("froakie", "water_swim")
|
||||
)
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("froakie", "battle_idle")
|
||||
)
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("froakie", "faint") else null
|
||||
}
|
||||
-118
@@ -1,118 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class FrogadierModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("frogadier")
|
||||
override val head = getPart("head")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
|
||||
override var portraitScale = 1.9F
|
||||
override var portraitTranslation = Vec3(-0.1, 1.4, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var float: Pose
|
||||
lateinit var swim: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var battleidle: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("frogadier", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("frogadier", "blink")}
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(bedrock("frogadier", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("frogadier", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseType = PoseType.WALK,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("frogadier", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "swim_idle",
|
||||
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("frogadier", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("frogadier", "water_swim")
|
||||
)
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("frogadier", "battle_idle")
|
||||
)
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("frogadier", "faint") else null
|
||||
}
|
||||
-142
@@ -1,142 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.createTransformation
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.util.isBattling
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class GreninjaModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("greninja")
|
||||
override val head = getPart("head")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
val shurikenright = getPart("hand_shuriken_right")
|
||||
val shurikenleft = getPart("hand_shuriken_left")
|
||||
|
||||
override var portraitScale = 2.2F
|
||||
override var portraitTranslation = Vec3(-0.1, 1.34, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var sleep: Pose
|
||||
lateinit var standing: Pose
|
||||
lateinit var float: Pose
|
||||
lateinit var swim: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var battleidle: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("greninja", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("greninja", "blink")}
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(bedrock("greninja", "sleep"))
|
||||
)
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = PoseType.UI_POSES + PoseType.STATIONARY_POSES - PoseType.FLOAT,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("greninja", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseType = PoseType.WALK,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("greninja", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
float = registerPose(
|
||||
poseName = "swim_idle",
|
||||
poseTypes = setOf(PoseType.FLOAT, PoseType.HOVER),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("greninja", "water_idle")
|
||||
)
|
||||
)
|
||||
|
||||
swim = registerPose(
|
||||
poseName = "swim",
|
||||
poseTypes = setOf(PoseType.SWIM, PoseType.FLY),
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { !it.isBattling },
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("greninja", "water_swim")
|
||||
)
|
||||
)
|
||||
|
||||
battleidle = registerPose(
|
||||
poseName = "battle_idle",
|
||||
poseTypes = PoseType.STATIONARY_POSES,
|
||||
transformTicks = 10,
|
||||
quirks = arrayOf(blink),
|
||||
condition = { it.isBattling },
|
||||
transformedParts = arrayOf(
|
||||
shurikenleft.createTransformation().withVisibility(visibility = false),
|
||||
shurikenright.createTransformation().withVisibility(visibility = false)
|
||||
),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("greninja", "battle_idle")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getFaintAnimation(state: PosableState) = if (state.isPosedIn(standing, walk, battleidle, swim, float, sleep)) bedrockStateful("greninja", "faint") else null
|
||||
}
|
||||
-73
@@ -1,73 +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.gen6
|
||||
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||
import com.cobblemon.mod.common.entity.PoseType
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.MOVING_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.STATIONARY_POSES
|
||||
import com.cobblemon.mod.common.entity.PoseType.Companion.UI_POSES
|
||||
import net.minecraft.client.model.geom.ModelPart
|
||||
import net.minecraft.world.phys.Vec3
|
||||
|
||||
class QuilladinModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
||||
override val rootPart = root.registerChildWithAllChildren("quilladin")
|
||||
override val head = getPart("torso")
|
||||
override val rightArm = getPart("arm_right")
|
||||
override val leftArm = getPart("arm_left")
|
||||
override val leftLeg = getPart("leg_left")
|
||||
override val rightLeg = getPart("leg_right")
|
||||
|
||||
override var portraitScale = 2F
|
||||
override var portraitTranslation = Vec3(-0.3, 0.1, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.0, 0.7, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
lateinit var sleep: Pose
|
||||
|
||||
override val cryAnimation = CryProvider { bedrockStateful("quilladin", "cry") }
|
||||
|
||||
override fun registerPoses() {
|
||||
val blink = quirk { bedrockStateful("quilladin", "blink")}
|
||||
|
||||
standing = registerPose(
|
||||
poseName = "standing",
|
||||
poseTypes = STATIONARY_POSES + UI_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("quilladin", "ground_idle")
|
||||
)
|
||||
)
|
||||
|
||||
walk = registerPose(
|
||||
poseName = "walk",
|
||||
poseTypes = MOVING_POSES,
|
||||
quirks = arrayOf(blink),
|
||||
animations = arrayOf(
|
||||
singleBoneLook(),
|
||||
bedrock("quilladin", "ground_walk")
|
||||
)
|
||||
)
|
||||
|
||||
sleep = registerPose(
|
||||
poseType = PoseType.SLEEP,
|
||||
transformTicks = 10,
|
||||
animations = arrayOf(bedrock("quilladin", "sleep"))
|
||||
)
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@ class VivillonModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame, B
|
||||
override var portraitTranslation = Vec3(-0.3, 0.2, 0.0)
|
||||
|
||||
override var profileScale = 0.7F
|
||||
override var profileTranslation = Vec3(0.1, 0.8, 0.0)
|
||||
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
|
||||
|
||||
lateinit var standing: Pose
|
||||
lateinit var walk: Pose
|
||||
|
||||
-19
@@ -231,13 +231,8 @@ object VaryingModelRepository {
|
||||
inbuilt("paras", ::ParasModel)
|
||||
inbuilt("mankey", ::MankeyModel)
|
||||
inbuilt("primeape", ::PrimeapeModel)
|
||||
inbuilt("oddish", ::OddishModel)
|
||||
inbuilt("gloom", ::GloomModel)
|
||||
inbuilt("vileplume", ::VileplumeModel)
|
||||
inbuilt("bellossom", ::BellossomModel)
|
||||
inbuilt("voltorb", ::VoltorbModel)
|
||||
inbuilt("electrode", ::ElectrodeModel)
|
||||
inbuilt("ekans", ::EkansModel)
|
||||
inbuilt("machop", ::MachopModel)
|
||||
inbuilt("machoke", ::MachokeModel)
|
||||
inbuilt("machamp", ::MachampModel)
|
||||
@@ -266,8 +261,6 @@ object VaryingModelRepository {
|
||||
inbuilt("nidorino", ::NidorinoModel)
|
||||
inbuilt("persian", ::PersianModel)
|
||||
inbuilt("pinsir", ::PinsirModel)
|
||||
inbuilt("poliwag", ::PoliwagModel)
|
||||
inbuilt("politoed", ::PolitoedModel)
|
||||
inbuilt("ponyta", ::PonytaModel)
|
||||
inbuilt("psyduck", ::PsyduckModel)
|
||||
inbuilt("rapidash", ::RapidashModel)
|
||||
@@ -318,9 +311,6 @@ object VaryingModelRepository {
|
||||
inbuilt("morelull", :: MorelullModel)
|
||||
inbuilt("shiinotic", :: ShiinoticModel)
|
||||
inbuilt("spiritomb", :: SpiritombModel)
|
||||
inbuilt("chespin", :: ChespinModel)
|
||||
inbuilt("quilladin", :: QuilladinModel)
|
||||
inbuilt("chesnaught", :: ChesnaughtModel)
|
||||
inbuilt("pineco", :: PinecoModel)
|
||||
inbuilt("lotad", :: LotadModel)
|
||||
inbuilt("lombre", :: LombreModel)
|
||||
@@ -348,9 +338,6 @@ object VaryingModelRepository {
|
||||
inbuilt("walkingwake", ::WalkingwakeModel)
|
||||
inbuilt("ironleaves", ::IronleavesModel)
|
||||
inbuilt("miltank", ::MiltankModel)
|
||||
inbuilt("froakie", ::FroakieModel)
|
||||
inbuilt("frogadier", ::FrogadierModel)
|
||||
inbuilt("greninja", ::GreninjaModel)
|
||||
inbuilt("grookey", ::GrookeyModel)
|
||||
inbuilt("thwackey", ::ThwackeyModel)
|
||||
inbuilt("rillaboom", ::RillaboomModel)
|
||||
@@ -375,7 +362,6 @@ object VaryingModelRepository {
|
||||
inbuilt("gliscor", ::GliscorModel)
|
||||
inbuilt("poochyena", ::PoochyenaModel)
|
||||
inbuilt("mightyena", ::MightyenaModel)
|
||||
inbuilt("shroomish", ::ShroomishModel)
|
||||
inbuilt("breloom", ::BreloomModel)
|
||||
inbuilt("charcadet", ::CharcadetModel)
|
||||
inbuilt("flittle", ::FlittleModel)
|
||||
@@ -397,8 +383,6 @@ object VaryingModelRepository {
|
||||
inbuilt("sirfetchd", ::SirfetchdModel)
|
||||
inbuilt("duskull", ::DuskullModel)
|
||||
inbuilt("dusclops", ::DusclopsModel)
|
||||
inbuilt("bonsly", ::BonslyModel)
|
||||
inbuilt("sudowoodo", ::SudowoodoModel)
|
||||
inbuilt("cetoddle", ::CetoddleModel)
|
||||
inbuilt("cetitan", ::CetitanModel)
|
||||
inbuilt("aipom", ::AipomModel)
|
||||
@@ -406,9 +390,6 @@ object VaryingModelRepository {
|
||||
inbuilt("hoothoot", ::HoothootModel)
|
||||
inbuilt("wingull", ::WingullModel)
|
||||
inbuilt("pelipper", ::PelipperModel)
|
||||
inbuilt("shinx", ::ShinxModel)
|
||||
inbuilt("luxio", ::LuxioModel)
|
||||
inbuilt("luxray", ::LuxrayModel)
|
||||
inbuilt("numel", ::NumelModel)
|
||||
inbuilt("roggenrola", ::RoggenrolaModel)
|
||||
inbuilt("boldore", ::BoldoreModel)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.cobblemon.mod.common.command
|
||||
|
||||
import com.cobblemon.mod.common.api.permission.CobblemonPermissions
|
||||
import com.cobblemon.mod.common.api.pokemon.PokemonPropertyExtractor
|
||||
import com.cobblemon.mod.common.command.argument.PokemonPropertiesArgumentType
|
||||
import com.cobblemon.mod.common.util.party
|
||||
import com.cobblemon.mod.common.util.permission
|
||||
@@ -44,7 +45,7 @@ object TestPartySlotCommand {
|
||||
val player = context.player(PLAYER)
|
||||
val slot = IntegerArgumentType.getInteger(context, SLOT)
|
||||
val properties = PokemonPropertiesArgumentType.getPokemonProperties(context, PROPERTIES)
|
||||
val target = player.party().get(slot - 1) ?: return NO_SUCCESS
|
||||
return if (properties.matches(target)) Command.SINGLE_SUCCESS else NO_SUCCESS
|
||||
return if (player.party().get(slot - 1)?.createPokemonProperties(PokemonPropertyExtractor.ALL)
|
||||
?.let { properties.isSubSetOf(it) } == true) Command.SINGLE_SUCCESS else NO_SUCCESS
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,6 @@ import com.cobblemon.mod.common.api.berry.Berries
|
||||
import com.cobblemon.mod.common.api.cooking.Seasonings
|
||||
import com.cobblemon.mod.common.api.data.DataProvider
|
||||
import com.cobblemon.mod.common.api.data.DataRegistry
|
||||
import com.cobblemon.mod.common.api.data.ServerJsonDataRegistry
|
||||
import com.cobblemon.mod.common.api.dialogue.Dialogues
|
||||
import com.cobblemon.mod.common.api.events.CobblemonEvents
|
||||
import com.cobblemon.mod.common.api.fishing.PokeRods
|
||||
@@ -52,7 +51,6 @@ import com.cobblemon.mod.common.pokemon.properties.PropertiesCompletionProvider
|
||||
import com.cobblemon.mod.common.util.cobblemonResource
|
||||
import com.cobblemon.mod.common.util.ifClient
|
||||
import com.cobblemon.mod.common.util.server
|
||||
import net.minecraft.core.HolderLookup
|
||||
import java.util.UUID
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
@@ -73,7 +71,8 @@ object CobblemonDataProvider : DataProvider {
|
||||
|
||||
// client is public only so we can use it cross-module. maybe a more elegant solution exists, but this works
|
||||
@ApiStatus.Internal
|
||||
val clientResourceReloader: PreparableReloadListener = ClientResourceReloader()
|
||||
val clientResourceReloader: PreparableReloadListener = SimpleResourceReloader(PackType.CLIENT_RESOURCES)
|
||||
private val serverResourceReloader: PreparableReloadListener = SimpleResourceReloader(PackType.SERVER_DATA)
|
||||
|
||||
fun registerDefaults() {
|
||||
this.register(CobblemonScripts, reloadable = true)
|
||||
@@ -127,9 +126,9 @@ object CobblemonDataProvider : DataProvider {
|
||||
}
|
||||
|
||||
ifClient {
|
||||
Cobblemon.implementation.registerResourceReloader(cobblemonResource("client_resources"), PackType.CLIENT_RESOURCES, emptyList()) { clientResourceReloader }
|
||||
Cobblemon.implementation.registerResourceReloader(cobblemonResource("client_resources"), clientResourceReloader, PackType.CLIENT_RESOURCES, emptyList())
|
||||
}
|
||||
Cobblemon.implementation.registerResourceReloader(cobblemonResource("data_resources"), PackType.SERVER_DATA, emptyList()) { ServerResourceReloader(it) }
|
||||
Cobblemon.implementation.registerResourceReloader(cobblemonResource("data_resources"), serverResourceReloader, PackType.SERVER_DATA, emptyList())
|
||||
}
|
||||
|
||||
override fun <T : DataRegistry> register(registry: T, reloadable: Boolean): T {
|
||||
@@ -168,25 +167,12 @@ object CobblemonDataProvider : DataProvider {
|
||||
}
|
||||
}
|
||||
|
||||
private class ClientResourceReloader : ResourceManagerReloadListener {
|
||||
override fun onResourceManagerReload(manager: ResourceManager) {
|
||||
registries.filter { it.type == PackType.CLIENT_RESOURCES }.forEach { it.reload(manager) }
|
||||
}
|
||||
}
|
||||
|
||||
private class ServerResourceReloader(private val registryAccess: HolderLookup.Provider) : ResourceManagerReloadListener {
|
||||
private class SimpleResourceReloader(private val type: PackType) : ResourceManagerReloadListener {
|
||||
override fun onResourceManagerReload(manager: ResourceManager) {
|
||||
// Check for a server running, this is due to the create a world screen triggering datapack reloads, these are fine to happen as many times as needed as players may be in the process of adding their datapacks.
|
||||
val reloadAllowed = server()?.isReady != true
|
||||
registries
|
||||
.filter { it.type == PackType.SERVER_DATA && (reloadAllowed || it in reloadableRegistries) }
|
||||
.forEach {
|
||||
if (it is ServerJsonDataRegistry<*>) {
|
||||
it.reload(manager, registryAccess)
|
||||
} else {
|
||||
it.reload(manager)
|
||||
}
|
||||
}
|
||||
registries.filter { it.type == this.type && (reloadAllowed || it in reloadableRegistries) }
|
||||
.forEach { it.reload(manager) }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -487,47 +487,6 @@ object CobblemonItemGroups {
|
||||
entries.accept(CobblemonItems.PINK_PLAQUE)
|
||||
|
||||
CobblemonItems.campfire_pots.forEach(entries::accept)
|
||||
|
||||
entries.accept(CobblemonItems.COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.COPPER_FAN)
|
||||
entries.accept(CobblemonItems.COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.EXPOSED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.EXPOSED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.EXPOSED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.EXPOSED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.EXPOSED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.WEATHERED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.WEATHERED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.WEATHERED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.WEATHERED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.WEATHERED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.OXIDIZED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.OXIDIZED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.OXIDIZED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.OXIDIZED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.OXIDIZED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.WAXED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.WAXED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.WAXED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.WAXED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.WAXED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.WAXED_EXPOSED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.WAXED_EXPOSED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.WAXED_EXPOSED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.WAXED_EXPOSED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.WAXED_EXPOSED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.WAXED_WEATHERED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.WAXED_WEATHERED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.WAXED_WEATHERED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.WAXED_WEATHERED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.WAXED_WEATHERED_COPPER_FRIDGE)
|
||||
entries.accept(CobblemonItems.WAXED_OXIDIZED_COPPER_OVEN)
|
||||
entries.accept(CobblemonItems.WAXED_OXIDIZED_COPPER_WASHER)
|
||||
entries.accept(CobblemonItems.WAXED_OXIDIZED_COPPER_FAN)
|
||||
entries.accept(CobblemonItems.WAXED_OXIDIZED_COPPER_MOWER)
|
||||
entries.accept(CobblemonItems.WAXED_OXIDIZED_COPPER_FRIDGE)
|
||||
}
|
||||
|
||||
private fun consumableEntries(displayContext: ItemDisplayParameters, entries: Output) {
|
||||
|
||||
@@ -211,8 +211,9 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
// Species updates already update HP but just a form change may require it
|
||||
// Moved to before the field was set else it won't actually do the hp calc proper <3
|
||||
val quotient = clamp(currentHealth / maxHealth.toFloat(), 0F, 1F)
|
||||
val oldForm = field
|
||||
field = value
|
||||
this.updateMovesOnFormChange(value)
|
||||
this.updateMovesOnFormChange(oldForm)
|
||||
// Evo proxy is already cleared on species update but the form may be changed by itself, this is fine and no unnecessary packets will be sent out
|
||||
this.evolutionProxy.current().clear()
|
||||
checkGender()
|
||||
@@ -2301,15 +2302,16 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
*
|
||||
* E.g, Removing Overheat from Rotom when it is no longer Rotom-Heat and the target form is not compatible with Overheat.
|
||||
*/
|
||||
private fun updateMovesOnFormChange(newForm: FormData) {
|
||||
private fun updateMovesOnFormChange(oldForm: FormData) {
|
||||
if (this.isClient) return
|
||||
|
||||
val oldFormChangeMoves = this.form.moves.formChangeMoves.toSet()
|
||||
val newForm = this.form
|
||||
val oldFormChangeMoves = oldForm.moves.formChangeMoves.toSet()
|
||||
|
||||
// Only remove moves that were provided by the old form's form-change moves AND are not learnable by the new form
|
||||
for (i in 0 until MoveSet.MOVE_COUNT) {
|
||||
val move = this.moveSet[i]
|
||||
if (move != null && move.template in oldFormChangeMoves) {
|
||||
if (move != null && move.template in oldFormChangeMoves && !LearnsetQuery.ANY.canLearn(move.template, newForm.moves)) {
|
||||
this.moveSet.setMove(i, null)
|
||||
}
|
||||
}
|
||||
@@ -2322,16 +2324,8 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
}
|
||||
}
|
||||
|
||||
// Add new form's form-change moves
|
||||
newForm.moves.formChangeMoves.forEach { move ->
|
||||
if (this.moveSet.filterNotNull().none { it.template == move }) {
|
||||
if (this.moveSet.hasSpace()) {
|
||||
this.moveSet.add(move.create())
|
||||
} else {
|
||||
this.benchedMoves.add(BenchedMove(move, 0))
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add the new form's form-change moves (skipping any the Pokémon isn't high enough level for yet).
|
||||
grantEligibleFormChangeMoves()
|
||||
|
||||
// If moveset is empty try to find one valid move to fill it
|
||||
if (this.moveSet.filterNotNull().isEmpty()) {
|
||||
@@ -2343,6 +2337,30 @@ open class Pokemon : ShowdownIdentifiable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Grants any of the current form's `form_change` moves that this Pokémon doesn't already know and is high
|
||||
* enough level for (form-change moves that are also level-up moves, e.g. Glaciate on Kyurem, shouldn't be
|
||||
* granted until that level is reached).
|
||||
*/
|
||||
private fun grantEligibleFormChangeMoves() {
|
||||
if (this.isClient) return
|
||||
|
||||
this.form.moves.formChangeMoves.forEach { move ->
|
||||
if (this.moveSet.filterNotNull().none { it.template == move } && this.benchedMoves.none { it.moveTemplate == move }) {
|
||||
val requiredLevel = this.form.moves.levelUpMoves.entries.firstOrNull { move in it.value }?.key
|
||||
if (requiredLevel != null && this.level < requiredLevel) {
|
||||
return@forEach
|
||||
}
|
||||
|
||||
if (this.moveSet.hasSpace()) {
|
||||
this.moveSet.add(move.create())
|
||||
} else {
|
||||
this.benchedMoves.add(BenchedMove(move, 0))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* The [FriendshipMutationCalculator] used when a Pokémon levels up.
|
||||
|
||||
+7
-14
@@ -9,7 +9,6 @@
|
||||
package com.cobblemon.mod.common.pokemon.evolution.adapters
|
||||
|
||||
import com.cobblemon.mod.common.util.adapters.CodecBackedAdapter
|
||||
import com.cobblemon.mod.common.util.adapters.RegistryAccessResolver
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonDeserializer
|
||||
import com.google.gson.JsonElement
|
||||
@@ -20,7 +19,6 @@ import net.minecraft.advancements.critereon.ItemCustomDataPredicate
|
||||
import net.minecraft.advancements.critereon.ItemPredicate
|
||||
import net.minecraft.advancements.critereon.ItemSubPredicates
|
||||
import net.minecraft.advancements.critereon.NbtPredicate
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.core.registries.BuiltInRegistries
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
@@ -28,16 +26,13 @@ import net.minecraft.tags.TagKey
|
||||
import java.lang.reflect.Type
|
||||
|
||||
// This is an ugly adapter because breaking changes are scary and people would ;(
|
||||
class LegacyItemConditionWrapperAdapter(val registryAccess: HolderLookup.Provider = RegistryAccessResolver.getAccess())
|
||||
: JsonDeserializer<ItemPredicate>, JsonSerializer<ItemPredicate> {
|
||||
object LegacyItemConditionWrapperAdapter : JsonDeserializer<ItemPredicate>, JsonSerializer<ItemPredicate> {
|
||||
|
||||
companion object {
|
||||
private const val TAG_PREFIX = "#"
|
||||
private const val LEGACY_ITEM = "item"
|
||||
private const val LEGACY_NBT = "nbt"
|
||||
}
|
||||
private const val TAG_PREFIX = "#"
|
||||
private const val LEGACY_ITEM = "item"
|
||||
private const val LEGACY_NBT = "nbt"
|
||||
|
||||
private val codecAdapter = CodecBackedAdapter(ItemPredicate.CODEC, registryAccess)
|
||||
private val codecAdapter = CodecBackedAdapter(ItemPredicate.CODEC)
|
||||
|
||||
override fun deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): ItemPredicate {
|
||||
if (json.isJsonPrimitive) {
|
||||
@@ -69,9 +64,7 @@ class LegacyItemConditionWrapperAdapter(val registryAccess: HolderLookup.Provide
|
||||
{ id ->
|
||||
if (isTag) {
|
||||
val tag = TagKey.create(Registries.ITEM, id)
|
||||
registryAccess.lookup(Registries.ITEM)
|
||||
.map { builder.of(tag) }
|
||||
.orElseGet { builder }
|
||||
builder.of(tag)
|
||||
} else {
|
||||
BuiltInRegistries.ITEM.getOptional(id)
|
||||
.map { builder.of(it) }
|
||||
@@ -82,4 +75,4 @@ class LegacyItemConditionWrapperAdapter(val registryAccess: HolderLookup.Provide
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,19 +10,16 @@ package com.cobblemon.mod.common.util.adapters
|
||||
|
||||
import com.google.gson.*
|
||||
import com.mojang.serialization.Codec
|
||||
import com.mojang.serialization.JsonOps
|
||||
import net.minecraft.core.HolderLookup
|
||||
import net.minecraft.resources.RegistryOps
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class CodecBackedAdapter<T>(val codec: Codec<T>, val registryAccess: HolderLookup.Provider = RegistryAccessResolver.getAccess()) : JsonDeserializer<T>, JsonSerializer<T> {
|
||||
class CodecBackedAdapter<T>(val codec: Codec<T>) : JsonDeserializer<T>, JsonSerializer<T> {
|
||||
|
||||
override fun deserialize(
|
||||
jElement: JsonElement,
|
||||
typeOfT: Type,
|
||||
context: JsonDeserializationContext
|
||||
): T {
|
||||
val ops = RegistryOps.create(JsonOps.INSTANCE, registryAccess)
|
||||
val ops = RegistryOpsProvider.getOpsWithDefaultFallback()
|
||||
val result = ops.withDecoder(codec).apply(jElement)
|
||||
return result.result().orElseThrow {
|
||||
IllegalStateException("Failed to deserialize $jElement: ${result.error().orElse(null)}")
|
||||
@@ -34,7 +31,7 @@ class CodecBackedAdapter<T>(val codec: Codec<T>, val registryAccess: HolderLooku
|
||||
typeOfSrc: Type?,
|
||||
context: JsonSerializationContext?
|
||||
): JsonElement {
|
||||
val ops = RegistryOps.create(JsonOps.INSTANCE, registryAccess)
|
||||
val ops = RegistryOpsProvider.getOpsWithDefaultFallback()
|
||||
val result = ops.withEncoder(codec).apply(src)
|
||||
return result.result().orElseThrow {
|
||||
IllegalStateException("Failed to serialize $src: ${result.error().orElse(null)}")
|
||||
|
||||
+7
-13
@@ -15,33 +15,27 @@ import com.google.gson.JsonElement
|
||||
import com.mojang.serialization.DynamicOps
|
||||
import com.mojang.serialization.JsonOps
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.core.RegistryAccess
|
||||
import net.minecraft.resources.RegistryOps
|
||||
|
||||
/**
|
||||
* Utility for getting RegistryAccess with the correct client/server registry access.
|
||||
* Used when as a fallback when manually encoding/decoding registry-backed values (e.g., items, predicates).
|
||||
* Utility for obtaining RegistryOps with the correct client/server registry access.
|
||||
* Used when manually encoding/decoding registry-backed values (e.g., items, predicates).
|
||||
*/
|
||||
object RegistryAccessResolver {
|
||||
fun getAccess(): RegistryAccess {
|
||||
try {
|
||||
Cobblemon.implementation
|
||||
} catch (e: UninitializedPropertyAccessException) {
|
||||
return RegistryAccess.EMPTY
|
||||
}
|
||||
object RegistryOpsProvider {
|
||||
fun getOpsWithDefaultFallback(): DynamicOps<JsonElement> {
|
||||
if (Cobblemon.implementation.environment() == Environment.CLIENT) {
|
||||
val minecraft = Minecraft.getInstance()
|
||||
if (minecraft != null && minecraft.level != null)
|
||||
return minecraft.level!!.registryAccess()
|
||||
return RegistryOps.create(JsonOps.INSTANCE, minecraft.level!!.registryAccess())
|
||||
}
|
||||
|
||||
|
||||
if (Cobblemon.implementation.environment() == Environment.SERVER) {
|
||||
val server = server()
|
||||
if (server != null)
|
||||
return server.registryAccess()
|
||||
return RegistryOps.create(JsonOps.INSTANCE, server.registryAccess())
|
||||
}
|
||||
|
||||
return RegistryAccess.EMPTY
|
||||
return JsonOps.INSTANCE
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ import com.cobblemon.mod.common.api.abilities.Abilities
|
||||
import com.cobblemon.mod.common.api.abilities.Ability
|
||||
import com.cobblemon.mod.common.api.moves.BenchedMoves
|
||||
import com.cobblemon.mod.common.api.moves.MoveSet
|
||||
import com.cobblemon.mod.common.api.pokemon.feature.SpeciesFeatures
|
||||
import com.cobblemon.mod.common.pokemon.EVs
|
||||
import com.cobblemon.mod.common.pokemon.FormData
|
||||
import com.cobblemon.mod.common.pokemon.Gender
|
||||
@@ -22,22 +21,20 @@ import com.cobblemon.mod.common.pokemon.Pokemon
|
||||
import com.cobblemon.mod.common.pokemon.Species
|
||||
import com.cobblemon.mod.common.util.DataKeys
|
||||
import com.cobblemon.mod.common.util.codec.CodecUtils
|
||||
import com.cobblemon.mod.common.util.codec.internal.ClientPokemonP1.Companion.FEATURES
|
||||
import com.cobblemon.mod.common.util.codec.internal.ClientPokemonP1.Companion.FEATURE_ID
|
||||
import com.mojang.serialization.Codec
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import java.util.Optional
|
||||
import java.util.UUID
|
||||
import net.minecraft.core.UUIDUtil
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.StringTag
|
||||
import net.minecraft.nbt.Tag
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.chat.ComponentSerialization
|
||||
|
||||
internal class PokemonP1(
|
||||
val uuid: UUID,
|
||||
val species: Species,
|
||||
val form: FormData,
|
||||
val features: List<CompoundTag>,
|
||||
val nickname: Optional<Component>,
|
||||
val level: Int,
|
||||
val experience: Int,
|
||||
val friendship: Int,
|
||||
@@ -58,22 +55,7 @@ internal class PokemonP1(
|
||||
other.ability = this.ability
|
||||
other.species = this.species
|
||||
other.form = this.form
|
||||
this.features.forEach { featureNbt ->
|
||||
val featureId = featureNbt.getString(FEATURE_ID)
|
||||
if (featureId.isEmpty()) {
|
||||
return@forEach
|
||||
}
|
||||
val speciesFeatureProviders = SpeciesFeatures.getFeaturesFor(other.species)
|
||||
val feature = speciesFeatureProviders.firstNotNullOfOrNull { provider -> provider(featureNbt) } ?: return@forEach
|
||||
if (
|
||||
featureNbt.contains("keys", Tag.TAG_STRING.toInt()) &&
|
||||
!featureNbt.getList("keys", Tag.TAG_STRING.toInt()).contains(StringTag.valueOf(featureId))
|
||||
) {
|
||||
return@forEach
|
||||
}
|
||||
other.features.removeIf { it.name == feature.name }
|
||||
other.features.add(feature)
|
||||
}
|
||||
this.nickname.ifPresent { other.nickname = it.copy() }
|
||||
other.level = this.level
|
||||
other.experience = this.experience
|
||||
other.setFriendship(this.friendship)
|
||||
@@ -109,7 +91,7 @@ internal class PokemonP1(
|
||||
UUIDUtil.LENIENT_CODEC.fieldOf(DataKeys.POKEMON_UUID).forGetter(PokemonP1::uuid),
|
||||
Species.BY_IDENTIFIER_CODEC.fieldOf(DataKeys.POKEMON_SPECIES_IDENTIFIER).forGetter(PokemonP1::species),
|
||||
Codec.STRING.fieldOf(DataKeys.POKEMON_FORM_ID).forGetter { pokemon -> pokemon.form.formOnlyShowdownId() },
|
||||
Codec.list(CompoundTag.CODEC).optionalFieldOf(FEATURES, emptyList()).forGetter(PokemonP1::features),
|
||||
ComponentSerialization.CODEC.optionalFieldOf(DataKeys.POKEMON_NICKNAME).forGetter(PokemonP1::nickname),
|
||||
CodecUtils.dynamicIntRange(1) { Cobblemon.config.maxPokemonLevel }.fieldOf(DataKeys.POKEMON_LEVEL).forGetter(PokemonP1::level),
|
||||
Codec.intRange(0, Int.MAX_VALUE).fieldOf(DataKeys.POKEMON_EXPERIENCE).forGetter(PokemonP1::experience),
|
||||
CodecUtils.dynamicIntRange(0) { Cobblemon.config.maxPokemonFriendship }.fieldOf(DataKeys.POKEMON_FRIENDSHIP).forGetter(PokemonP1::friendship),
|
||||
@@ -122,9 +104,9 @@ internal class PokemonP1(
|
||||
Codec.FLOAT.fieldOf(DataKeys.POKEMON_SCALE_MODIFIER).forGetter(PokemonP1::scaleModifier),
|
||||
Codec.BOOL.fieldOf(DataKeys.POKEMON_SHINY).forGetter(PokemonP1::shiny),
|
||||
Ability.CODEC.fieldOf(DataKeys.POKEMON_ABILITY).forGetter(PokemonP1::ability)
|
||||
).apply(instance) { uuid, species, formId, features, level, experience, friendship, currentHealth, gender, ivs, evs, moveSet, benchedMoves, scaleModifier, shiny, ability ->
|
||||
).apply(instance) { uuid, species, formId, nickname, level, experience, friendship, currentHealth, gender, ivs, evs, moveSet, benchedMoves, scaleModifier, shiny, ability ->
|
||||
val form = species.forms.firstOrNull { it.formOnlyShowdownId() == formId } ?: species.standardForm
|
||||
PokemonP1(uuid, species, form, features, level, experience, friendship, currentHealth, gender, ivs, evs, moveSet, benchedMoves, scaleModifier, shiny, ability)
|
||||
PokemonP1(uuid, species, form, nickname, level, experience, friendship, currentHealth, gender, ivs, evs, moveSet, benchedMoves, scaleModifier, shiny, ability)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,11 +114,7 @@ internal class PokemonP1(
|
||||
pokemon.uuid,
|
||||
pokemon.species,
|
||||
pokemon.form,
|
||||
pokemon.features.map { feature ->
|
||||
val nbt = CompoundTag()
|
||||
nbt.putString(FEATURE_ID, feature.name)
|
||||
feature.saveToNBT(nbt)
|
||||
},
|
||||
Optional.ofNullable(pokemon.nickname),
|
||||
pokemon.level,
|
||||
pokemon.experience,
|
||||
pokemon.friendship,
|
||||
|
||||
@@ -14,12 +14,15 @@ import com.cobblemon.mod.common.api.riding.stats.RidingStat
|
||||
import com.cobblemon.mod.common.pokemon.OriginalTrainerType
|
||||
import com.cobblemon.mod.common.pokemon.Pokemon
|
||||
import com.cobblemon.mod.common.util.DataKeys
|
||||
import com.cobblemon.mod.common.util.codec.internal.ClientPokemonP1.Companion.FEATURES
|
||||
import com.cobblemon.mod.common.util.codec.internal.ClientPokemonP1.Companion.FEATURE_ID
|
||||
import com.cobblemon.mod.common.util.codec.optionalFieldOfWithDefault
|
||||
import com.mojang.serialization.Codec
|
||||
import com.mojang.serialization.MapCodec
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.network.chat.ComponentSerialization
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.StringTag
|
||||
import net.minecraft.nbt.Tag
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import java.util.*
|
||||
@@ -28,7 +31,7 @@ internal data class PokemonP3(
|
||||
val originalTrainerType: OriginalTrainerType,
|
||||
val originalTrainer: Optional<String>,
|
||||
val forcedAspects: Set<String>,
|
||||
val nickname: Optional<Component>,
|
||||
val features: List<CompoundTag>,
|
||||
val heldItemVisible: Optional<Boolean>,
|
||||
val canDropHeldItem: Optional<Boolean>,
|
||||
val cosmeticItem: ItemStack,
|
||||
@@ -48,7 +51,22 @@ internal data class PokemonP3(
|
||||
this.originalTrainer.ifPresent { other.originalTrainer = it }
|
||||
other.refreshOriginalTrainer()
|
||||
other.forcedAspects = this.forcedAspects
|
||||
this.nickname.ifPresent { other.nickname = it.copy() }
|
||||
this.features.forEach { featureNbt ->
|
||||
val featureId = featureNbt.getString(FEATURE_ID)
|
||||
if (featureId.isEmpty()) {
|
||||
return@forEach
|
||||
}
|
||||
val speciesFeatureProviders = SpeciesFeatures.getFeaturesFor(other.species)
|
||||
val feature = speciesFeatureProviders.firstNotNullOfOrNull { provider -> provider(featureNbt) } ?: return@forEach
|
||||
if (
|
||||
featureNbt.contains("keys", Tag.TAG_STRING.toInt()) &&
|
||||
!featureNbt.getList("keys", Tag.TAG_STRING.toInt()).contains(StringTag.valueOf(featureId))
|
||||
) {
|
||||
return@forEach
|
||||
}
|
||||
other.features.removeIf { it.name == feature.name }
|
||||
other.features.add(feature)
|
||||
}
|
||||
this.heldItemVisible.ifPresent { other.heldItemVisible = it }
|
||||
this.canDropHeldItem.ifPresent { other.canDropHeldItem = it }
|
||||
this.cosmeticItem.let { other.cosmeticItem = it }
|
||||
@@ -74,7 +92,7 @@ internal data class PokemonP3(
|
||||
OriginalTrainerType.CODEC.optionalFieldOfWithDefault(DataKeys.POKEMON_ORIGINAL_TRAINER_TYPE, OriginalTrainerType.NONE).forGetter(PokemonP3::originalTrainerType),
|
||||
Codec.STRING.optionalFieldOf(DataKeys.POKEMON_ORIGINAL_TRAINER).forGetter(PokemonP3::originalTrainer),
|
||||
Codec.list(Codec.STRING).optionalFieldOf(DataKeys.POKEMON_FORCED_ASPECTS, emptyList()).forGetter { it.forcedAspects.toMutableList() },
|
||||
ComponentSerialization.CODEC.optionalFieldOf(DataKeys.POKEMON_NICKNAME).forGetter(PokemonP3::nickname),
|
||||
Codec.list(CompoundTag.CODEC).optionalFieldOf(FEATURES, emptyList()).forGetter(PokemonP3::features),
|
||||
Codec.BOOL.optionalFieldOf(DataKeys.HELD_ITEM_VISIBLE).forGetter(PokemonP3::heldItemVisible),
|
||||
Codec.BOOL.optionalFieldOf(DataKeys.HELD_ITEM_AI_DROPPABLE).forGetter(PokemonP3::canDropHeldItem),
|
||||
ItemStack.CODEC.optionalFieldOf(DataKeys.POKEMON_COSMETIC_ITEM).forGetter { Optional.ofNullable(it.cosmeticItem.takeIf { !it.isEmpty }) },
|
||||
@@ -91,7 +109,7 @@ internal data class PokemonP3(
|
||||
originalTrainerType,
|
||||
originalTrainer,
|
||||
forcedAspects,
|
||||
nickname,
|
||||
features,
|
||||
heldItemVisible,
|
||||
canDropHeldItem,
|
||||
cosmeticItem,
|
||||
@@ -107,7 +125,7 @@ internal data class PokemonP3(
|
||||
originalTrainerType,
|
||||
originalTrainer,
|
||||
forcedAspects.toSet(),
|
||||
nickname,
|
||||
features,
|
||||
heldItemVisible,
|
||||
canDropHeldItem,
|
||||
cosmeticItem.orElse(ItemStack.EMPTY),
|
||||
@@ -128,7 +146,11 @@ internal data class PokemonP3(
|
||||
pokemon.originalTrainerType,
|
||||
Optional.ofNullable(pokemon.originalTrainer),
|
||||
pokemon.forcedAspects,
|
||||
Optional.ofNullable(pokemon.nickname),
|
||||
pokemon.features.map { feature ->
|
||||
val nbt = CompoundTag()
|
||||
nbt.putString(FEATURE_ID, feature.name)
|
||||
feature.saveToNBT(nbt)
|
||||
},
|
||||
Optional.ofNullable(pokemon.heldItemVisible),
|
||||
Optional.ofNullable(pokemon.canDropHeldItem),
|
||||
pokemon.cosmeticItem,
|
||||
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"particle_effect": {
|
||||
"description": {
|
||||
"identifier": "cobblemon:greninja_cloud",
|
||||
"basic_render_parameters": {
|
||||
"material": "particles_alpha",
|
||||
"texture": "textures/particle/vanilla/big_smoke_white"
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"cloudfade": {
|
||||
"particle_effect": {
|
||||
"effect": "cobblemon:greninja_cloud_fade",
|
||||
"type": "particle_with_velocity"
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"minecraft:emitter_rate_instant": {
|
||||
"num_particles": "math.random_integer(10,12)"
|
||||
},
|
||||
"minecraft:emitter_lifetime_once": {
|
||||
"active_time": 1
|
||||
},
|
||||
"minecraft:emitter_shape_box": {
|
||||
"offset": [0, 1, 0],
|
||||
"half_dimensions": [0.35, 0.75, 0.35],
|
||||
"direction": ["math.round(math.random(-1,1))", 0, "math.round(math.random(-1,1))"]
|
||||
},
|
||||
"minecraft:particle_initialization": {
|
||||
"per_render_expression": "v.smoke_color = v.particle_random_3;v.smoke_rotation = math.round(v.particle_random_2)*90;"
|
||||
},
|
||||
"minecraft:particle_lifetime_expression": {
|
||||
"max_lifetime": "0.7+(0.1*math.round(v.particle_random_4))"
|
||||
},
|
||||
"minecraft:particle_lifetime_events": {
|
||||
"expiration_event": "cloudfade"
|
||||
},
|
||||
"minecraft:particle_initial_spin": {
|
||||
"rotation": "v.smoke_rotation"
|
||||
},
|
||||
"minecraft:particle_initial_speed": 0.85,
|
||||
"minecraft:particle_motion_dynamic": {
|
||||
"linear_acceleration": [0, "0.75+(0.75*math.round(v.particle_random_4))", 0],
|
||||
"linear_drag_coefficient": 2
|
||||
},
|
||||
"minecraft:particle_appearance_billboard": {
|
||||
"size": [0.4, 0.4],
|
||||
"facing_camera_mode": "rotate_xyz",
|
||||
"uv": {
|
||||
"texture_width": 16,
|
||||
"texture_height": 192,
|
||||
"flipbook": {
|
||||
"base_UV": [0, 160],
|
||||
"size_UV": [16, 16],
|
||||
"step_UV": [0, -16],
|
||||
"frames_per_second": 28,
|
||||
"max_frame": 7
|
||||
}
|
||||
}
|
||||
},
|
||||
"minecraft:particle_appearance_lighting": {},
|
||||
"minecraft:particle_appearance_tinting": {
|
||||
"color": {
|
||||
"interpolant": "v.smoke_color",
|
||||
"gradient": {
|
||||
"0.0": "#FFE8E8E8",
|
||||
"1.0": "#FFC1C1C1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"particle_effect": {
|
||||
"description": {
|
||||
"identifier": "cobblemon:greninja_cloud_fade",
|
||||
"basic_render_parameters": {
|
||||
"material": "particles_alpha",
|
||||
"texture": "textures/particle/vanilla/big_smoke_white"
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"minecraft:emitter_rate_instant": {
|
||||
"num_particles": 1
|
||||
},
|
||||
"minecraft:emitter_lifetime_once": {
|
||||
"active_time": 1
|
||||
},
|
||||
"minecraft:emitter_shape_point": {},
|
||||
"minecraft:particle_lifetime_expression": {
|
||||
"max_lifetime": 0.2
|
||||
},
|
||||
"minecraft:particle_initial_spin": {
|
||||
"rotation": "v.smoke_rotation"
|
||||
},
|
||||
"minecraft:particle_initial_speed": 0.85,
|
||||
"minecraft:particle_motion_dynamic": {
|
||||
"linear_acceleration": [0, 1.5, 0],
|
||||
"linear_drag_coefficient": 2
|
||||
},
|
||||
"minecraft:particle_appearance_billboard": {
|
||||
"size": [0.3, 0.3],
|
||||
"facing_camera_mode": "rotate_xyz",
|
||||
"uv": {
|
||||
"texture_width": 16,
|
||||
"texture_height": 192,
|
||||
"flipbook": {
|
||||
"base_UV": [0, 80],
|
||||
"size_UV": [16, 16],
|
||||
"step_UV": [0, 16],
|
||||
"frames_per_second": 32,
|
||||
"max_frame": 7
|
||||
}
|
||||
}
|
||||
},
|
||||
"minecraft:particle_appearance_lighting": {},
|
||||
"minecraft:particle_appearance_tinting": {
|
||||
"color": {
|
||||
"interpolant": "v.smoke_color",
|
||||
"gradient": {
|
||||
"0.0": "#FFE8E8E8",
|
||||
"1.0": "#FFC1C1C1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"particle_effect": {
|
||||
"description": {
|
||||
"identifier": "cobblemon:greninja_smoke",
|
||||
"basic_render_parameters": {
|
||||
"material": "particles_alpha",
|
||||
"texture": "textures/particle/vanilla/generic"
|
||||
}
|
||||
},
|
||||
"curves": {
|
||||
"variable.smokesize": {
|
||||
"type": "linear",
|
||||
"input": "v.particle_age",
|
||||
"horizontal_range": "v.particle_lifetime",
|
||||
"nodes": [0.37, 0.85, 1, 1, 1, 0.88, 0.55, 0]
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"cloud": {
|
||||
"particle_effect": {
|
||||
"effect": "cobblemon:greninja_cloud",
|
||||
"type": "particle"
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"minecraft:emitter_rate_steady": {
|
||||
"spawn_rate": 150,
|
||||
"max_particles": 200
|
||||
},
|
||||
"minecraft:emitter_lifetime_once": {
|
||||
"active_time": 0.15
|
||||
},
|
||||
"minecraft:emitter_lifetime_events": {
|
||||
"creation_event": "cloud"
|
||||
},
|
||||
"minecraft:emitter_shape_disc": {
|
||||
"offset": [0, "v.particle_random_4*0.75", 0],
|
||||
"radius": 0.35,
|
||||
"direction": "outwards"
|
||||
},
|
||||
"minecraft:particle_lifetime_expression": {
|
||||
"max_lifetime": "math.random(0.55,0.65)"
|
||||
},
|
||||
"minecraft:particle_initial_spin": {
|
||||
"rotation": "math.round(v.particle_random_4*3)*90"
|
||||
},
|
||||
"minecraft:particle_initial_speed": 2,
|
||||
"minecraft:particle_motion_dynamic": {
|
||||
"linear_acceleration": [0, "math.random(0.75,1)", 0],
|
||||
"linear_drag_coefficient": 0.85
|
||||
},
|
||||
"minecraft:particle_appearance_billboard": {
|
||||
"size": ["(0.13*v.smokesize)-(v.particle_random_3*0.07)", "(0.13*v.smokesize)-(v.particle_random_3*0.07)"],
|
||||
"facing_camera_mode": "rotate_xyz",
|
||||
"uv": {
|
||||
"texture_width": 64,
|
||||
"texture_height": 8,
|
||||
"flipbook": {
|
||||
"base_UV": [56, 0],
|
||||
"size_UV": [8, 8],
|
||||
"step_UV": [-8, 0],
|
||||
"frames_per_second": 10,
|
||||
"max_frame": 8
|
||||
}
|
||||
}
|
||||
},
|
||||
"minecraft:particle_appearance_lighting": {},
|
||||
"minecraft:particle_appearance_tinting": {
|
||||
"color": {
|
||||
"interpolant": "v.particle_random_3",
|
||||
"gradient": {
|
||||
"0.0": "#FFBDBDBD",
|
||||
"0.5": "#FF8F8F8F",
|
||||
"1.0": "#FF666666"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+592
-266
@@ -5,396 +5,722 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [-5, 0, 0],
|
||||
"position": [0, "(math.sin(q.anim_time*90*2+90)*1-1)*0.15", 0]
|
||||
"position": [0, 0, -8]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0]
|
||||
"rotation": ["72.5-math.sin(q.anim_time*90*2-180)*1.25", -2.5, -10],
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": ["7.5-math.sin(q.anim_time*90*2-90)", -5, -2.5],
|
||||
"position": [0, -0.4, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": ["-2.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0]
|
||||
"rotation": [0, 52.5, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": ["5+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0]
|
||||
"rotation": [0, -45, 0],
|
||||
"position": [0.7, 0, -0.55]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
"rotation": [0, -70, 0],
|
||||
"position": [1.6, 0, -1.2]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0]
|
||||
"tail4": {
|
||||
"rotation": [0, -55, 0],
|
||||
"position": [0.95, 0, -0.8]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "57.5-math.sin(q.anim_time*90*2-120)*0.75", 0],
|
||||
"position": [-1, 0, -0.75]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, "57.5-math.sin(q.anim_time*90*2-180)", 0],
|
||||
"position": [-0.7, 0, -0.8]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": ["5-math.sin(q.anim_time*90-240)*2", "45-math.sin(q.anim_time*90*2-240)*1.25", 0],
|
||||
"position": [-0.3, 0, -0.1]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": ["12.5-math.sin(q.anim_time*90-300)*2.5", "37.5-math.sin(q.anim_time*90*2-300)*1.5", 7.5],
|
||||
"position": [0, 0.25, 0]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": ["22.5-math.sin(q.anim_time*90-360)*3", "40-math.sin(q.anim_time*90*2-360)*2", 5]
|
||||
},
|
||||
"tail_rattle": {
|
||||
"rotation": ["22.5-math.sin(q.anim_time*90-30)*4", "-math.sin(q.anim_time*90*2-10)*4", 0]
|
||||
},
|
||||
"tail_rattle2": {
|
||||
"rotation": ["6.4956-math.sin(q.anim_time*90-70)*6", "-math.sin(q.anim_time*90*2-70)*6", 0]
|
||||
},
|
||||
"coiled_body": {
|
||||
"scale": 0
|
||||
},
|
||||
"neck": {
|
||||
"rotation": ["-70-math.sin(q.anim_time*90*2)*0.5", 17.5, -2.5],
|
||||
"position": [0.2, -0.4, -0.3]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.summary_idle": {
|
||||
"animation.ekans.battle_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"ekans": {
|
||||
"position": [0, -0.5, 0]
|
||||
},
|
||||
"body": {
|
||||
"position": [0, 9, 12]
|
||||
"position": [0, 6, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["7.5-math.sin(q.anim_time*90*2-45)*0.5", 0, 0]
|
||||
"rotation": ["35-math.sin(q.anim_time*90*3-180)*2", -11.5, -8.5],
|
||||
"position": [0.75, 0, -1.1]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": ["42.5-math.sin(q.anim_time*90*3-60)*1.25", -7.5, -5],
|
||||
"position": [0, -0.3, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-37.5, 0, 0]
|
||||
"rotation": [90, -32, -272.5],
|
||||
"position": [-3, -0.5, 1],
|
||||
"scale": 0
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [91.18096, -64.66751, -112.80195]
|
||||
"rotation": [-176.62147, -67.38079, 169.49348]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [56.22229, -69.76781, -69.82589]
|
||||
"rotation": [160, -85, -180]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [77.80887, 32.27264, 55.07287],
|
||||
"position": [-1, -1.1, -2]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [18.4215, -23.19625, -12.13932]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, -65, 0]
|
||||
"rotation": [87.73292, -75.69796, -92.26708]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "-52.5+math.sin(q.anim_time*90*2-120)*1", 0]
|
||||
"rotation": [-2.5, -87.5, 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": ["8.5+(math.sin(q.anim_time*90*2+90)*1-1)*0.5", "-57.5+math.sin(q.anim_time*90*2-90)*0.5", "-math.sin(q.anim_time*90*2)*0.25"]
|
||||
"rotation": [0, -62.5, 0]
|
||||
},
|
||||
"rattle": {
|
||||
"rotation": [40, "-10-math.sin(q.anim_time*90*32)*2", 0]
|
||||
},
|
||||
"rattle2": {
|
||||
"rotation": [12.5, "-math.sin(q.anim_time*90*32-30)*2", 0]
|
||||
},
|
||||
"rattle3": {
|
||||
"rotation": [12.5, "-math.sin(q.anim_time*90*32-30*2)*2", 0]
|
||||
},
|
||||
"rattle4": {
|
||||
"rotation": [5, "-math.sin(q.anim_time*90*32-30*3)*2", 0]
|
||||
},
|
||||
"rattle5": {
|
||||
"rotation": [5, "-math.sin(q.anim_time*90*32-30*4)*2", 0]
|
||||
"tail7": {
|
||||
"rotation": [-1.41397, -67.50536, -1.13438]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": ["5-math.sin(q.anim_time*90*2-45)*1", 0, 0]
|
||||
"rotation": ["12.5-math.sin(q.anim_time*90*3-150)*1.5", 0, 0],
|
||||
"position": [0, -0.55, 0.25]
|
||||
},
|
||||
"coiled_body": {
|
||||
"rotation": [0, "30-math.sin(q.anim_time*90*3-120)*0.25", 0],
|
||||
"position": [0, 0, -5]
|
||||
},
|
||||
"coiled_body_top": {
|
||||
"rotation": ["-math.sin(q.anim_time*90*3-60)*0.5", "math.sin(q.anim_time*90*3-60)*0.25", "-2.5-math.sin(q.anim_time*90*1.5+45)*0.5"]
|
||||
},
|
||||
"tail_rattle2": {
|
||||
"rotation": [9.09308, -27.20461, 4.52273]
|
||||
},
|
||||
"head_ai": {
|
||||
"rotation": [0, -5, 5]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": ["-67.5-math.sin(q.anim_time*90*3)", 27.5, "-6.5+math.sin(q.anim_time*90*1.5-90)*1.5"],
|
||||
"position": [-2, 0, 1.5]
|
||||
},
|
||||
"coiled_tail": {
|
||||
"rotation": ["25+math.sin(q.anim_time*90*1.5-30)*1.5", "-10+math.sin(q.anim_time*90*12-30)*0.75", 7.5]
|
||||
},
|
||||
"coiled_tail2": {
|
||||
"rotation": ["27.5+math.sin(q.anim_time*90*1.5-60)*2", "-22.5+math.sin(q.anim_time*90*12-90)*2.25", 0]
|
||||
},
|
||||
"coiled_tail_rattle": {
|
||||
"rotation": ["27.5+math.sin(q.anim_time*90*1.5-90)*3", "-12.5+math.sin(q.anim_time*90*24-150)*3", -2.5]
|
||||
},
|
||||
"coiled_tail_rattle2": {
|
||||
"rotation": ["math.sin(q.anim_time*90*1.5-120)*3", "math.sin(q.anim_time*90*24-210)*6", 0]
|
||||
},
|
||||
"coiled_tail_rattle3": {
|
||||
"rotation": ["math.sin(q.anim_time*90*1.5-150)*4", "math.sin(q.anim_time*90*24-270)*8", 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.faint": {
|
||||
"animation_length": 3,
|
||||
"animation.ekans.ground_walk": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": {
|
||||
"0.0": [-32.5, 0, 0],
|
||||
"0.05": [-42.5, 0, 0],
|
||||
"0.2": [-65.02089, -1.05627, 2.26603],
|
||||
"0.35": [-90, 0, 5],
|
||||
"0.7": [-97.10022, 0, 5],
|
||||
"1.0": [-102.1, 0, 5],
|
||||
"1.1": [-95.59, -0.25, 4.03],
|
||||
"1.3": [-8.5468, -1.25885, 0.16067],
|
||||
"1.45": [-7.0468, -1.25885, 0.16067]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, "-4.4+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -1.6],
|
||||
"0.05": [0, "-2.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -1.1],
|
||||
"0.2": [0, "-3.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -2.7],
|
||||
"0.3": [0, -4.83, -6.77],
|
||||
"0.35": [0, "-4.9+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -8.8],
|
||||
"0.7": [0, "-3.8+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -9.6],
|
||||
"1.0": [0, "-3.4+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -10.2],
|
||||
"1.1": [0, -4, -9.26],
|
||||
"1.15": [0, "-5.6+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -5.73],
|
||||
"1.25": [0, -4.59, -2.31],
|
||||
"1.3": [0, "-2.45+(math.sin(q.anim_time*90*2+90)*1-1)*0.15", -0.7],
|
||||
"1.45": [0, "-2.25+(math.sin(q.anim_time*90*2+90)*1-1)*0.05", -0.7]
|
||||
}
|
||||
"position": ["-math.sin(q.anim_time*90*3-60)*3", 0, -13]
|
||||
},
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": ["65-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0],
|
||||
"0.1": ["75-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0],
|
||||
"0.25": ["15.1228-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 7.24656, 1.9384],
|
||||
"0.4": ["-21.1683-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 18.759, -7.06381],
|
||||
"0.5": [-22.32668, 16.91862, -6.3202],
|
||||
"0.9": ["-25.7603-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -13.61143, 6.36351],
|
||||
"0.95": ["-26.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87438, 7.46234],
|
||||
"1.0": ["-26.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
|
||||
"1.15": ["-51.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
|
||||
"1.3": ["-51.04-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -15.87, 7.46],
|
||||
"1.35": ["19.4806-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -11.956, -14.52],
|
||||
"1.4": ["10.9676-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", -19.92467, 13.66498],
|
||||
"1.45": ["20.3399-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.1", -14.86025, -1.19814]
|
||||
},
|
||||
"position": {
|
||||
"1.3": [0, 0, 0],
|
||||
"1.45": [0, 0.5, 0]
|
||||
}
|
||||
"rotation": [55, "math.sin(q.anim_time*90*3+270)*16", "math.sin(q.anim_time*90*3+240)*10"]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": [-25, "math.sin(q.anim_time*90*3+180)*16", 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": {
|
||||
"0.0": ["5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.05": ["-7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.2": ["-7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.35": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"1.0": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"1.15": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"1.35": ["7.5-(math.sin(q.anim_time*90*2+90)*1-1)*0.25", 0, 0]
|
||||
}
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3)*14", 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": {
|
||||
"0.0": ["20+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.05": ["32.5+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.2": ["45+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.35": ["55+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"0.95": ["60+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"1.0": ["60+(math.sin(q.anim_time*90*2+90)*1-1)*1", 0, 0],
|
||||
"1.1": [50.55, 0, 0],
|
||||
"1.3": ["(math.sin(q.anim_time*90*2+90)*1-1)*0.5", 0, 0]
|
||||
}
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-60)*8", 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-120)*12", 0]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-180)*16", 0]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-210)*16", 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-240)*14", 0]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-270)*12", 0]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-300)*14", 0]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-330)*18", 0]
|
||||
},
|
||||
"tail_rattle": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*3-10)*20", 0]
|
||||
},
|
||||
"coiled_body": {
|
||||
"scale": 0
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [-30, "math.sin(q.anim_time*90*3+60)*20", 0],
|
||||
"position": [0, 0, 0.25]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.ground_run": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": ["-math.sin(q.anim_time*90*5-60)*3", 0, -13]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5+270)*18", 0]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5+180)*16", 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5)*16", 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-60)*12", 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-120)*14", 0]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-180)*16", 0]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-210)*18", 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-240)*18", 0]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-270)*16", 0]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-300)*14", 0]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-330)*12", 0]
|
||||
},
|
||||
"tail_rattle": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5-10)*18", 0]
|
||||
},
|
||||
"coiled_body": {
|
||||
"scale": 0
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90*5+60)*18", 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.snake_ground_walk": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": ["-q.r.yaw_change(3)*1", 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [0, 0, "q.r.yaw_change(0)*5"],
|
||||
"position": ["-q.r.yaw_change(0)*-0.2", "q.r.yaw_change(0)*0.25", 0]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": [0, "-q.r.yaw_change(0)*-15", 0],
|
||||
"position": ["-q.r.yaw_change(0)*0.3", 0, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [0, "-q.r.yaw_change(3)*-7.5", 0],
|
||||
"position": ["-q.r.yaw_change(3)*-0.15", 0, "math.abs(q.r.yaw_change(3)*0.5)"]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, "-q.r.yaw_change(5)*5", 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [0, "-q.r.yaw_change(10)*2.5", 0]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, "-q.r.yaw_change(12)*7.5", 0]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "-q.r.yaw_change(15)*7.5", 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, "-q.r.yaw_change(17)*10", 0]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": [0, "-q.r.yaw_change(20)*7.5", 0]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [0, "-q.r.yaw_change(22)*5", 0]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [0, "-q.r.yaw_change(24)*5", 0]
|
||||
},
|
||||
"tail_rattle": {
|
||||
"rotation": [0, "-q.r.yaw_change(26)*2.5", 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [0, "-q.r.yaw_change(0)*-25", 0],
|
||||
"position": ["-q.r.yaw_change(0)*0.25", 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.snake_ground_run": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": ["-q.r.yaw_change(3)*2", 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [0, "-q.r.yaw_change(0)*-10", 0],
|
||||
"position": ["-q.r.yaw_change(0)*-0.2", "q.r.yaw_change(0)*0.25", 0]
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": [0, "-q.r.yaw_change(0)*-15", 0],
|
||||
"position": ["-q.r.yaw_change(0)*0.25", 0, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [0, "-q.r.yaw_change(3)*-10", 0],
|
||||
"position": ["-q.r.yaw_change(3)*-0.15", 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, "-q.r.yaw_change(5)*5", 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [0, "-q.r.yaw_change(10)*5", 0]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, "-q.r.yaw_change(12)*7.5", 0]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, "-q.r.yaw_change(15)*10", 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, "-q.r.yaw_change(17)*7.5", 0]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": [0, "-q.r.yaw_change(20)*10", 0]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [0, "-q.r.yaw_change(22)*5", 0]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [0, "-q.r.yaw_change(24)*5", 0]
|
||||
},
|
||||
"tail_rattle": {
|
||||
"rotation": [0, "-q.r.yaw_change(26)*2.5", 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [0, "-q.r.yaw_change(0)*-35", 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.cry": {
|
||||
"animation_length": 1.5,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [7.5, 0, 0],
|
||||
"0.05": [17.5, 0, 0],
|
||||
"0.2": [27.5, 0, 0],
|
||||
"0.7": [35, 0, 0],
|
||||
"1.0": [35, 0, 0],
|
||||
"1.6": [34.96463, -9.99962, 0.08301],
|
||||
"2.0": [0.01002, 0.32522, 0.69041]
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [5, 0, 0],
|
||||
"post": [5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": ["-40-math.sin(q.anim_time*90*30)*1.5", 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [-35, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": [0, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [0, 0, 0],
|
||||
"0.2083": {
|
||||
"pre": [0, 0, -0.25],
|
||||
"post": [0, 0, -0.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.125": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": {
|
||||
"0.0": ["5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
|
||||
"0.05": ["-35-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
|
||||
"0.5": ["27.5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
|
||||
"0.85": ["27.5-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
|
||||
"1.1": ["-25-(math.sin(q.anim_time*90*2+90)*1-0.5)*1", 0, 0],
|
||||
"1.15": ["-15-(math.sin(q.anim_time*90*2+90)*1-0.5)*0.5", 0, 0]
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [-5, 0, 0],
|
||||
"post": [-5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [37.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [11.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [7.26, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.1": [-0.1, 0, 0],
|
||||
"0.15": [0, 0, 0],
|
||||
"1.1": [0, 0, 0],
|
||||
"1.15": [-0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.1": [0.1, 0, 0],
|
||||
"0.15": [0, 0, 0],
|
||||
"1.1": [0, 0, 0],
|
||||
"1.15": [0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"tail4": {
|
||||
"neck2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.5": [22.5, 0, 0],
|
||||
"0.65": [25, 0, 0],
|
||||
"0.95": [32.5, 0, 0],
|
||||
"1.0": [32.5, 0, 0],
|
||||
"1.35": [39.56059, -8.33248, 5.56948],
|
||||
"2.15": [0.00946, 0.60916, 0.36323]
|
||||
"0.0833": {
|
||||
"pre": [7.5, 0, 0],
|
||||
"post": [7.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [-5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": [-5, 0, 0],
|
||||
"1.125": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": {
|
||||
"0.0": [5, 0, 0],
|
||||
"0.1": [15, 0, 0],
|
||||
"0.2": [25, 0, 0],
|
||||
"0.5": [42.82744, -9.23501, -8.46088],
|
||||
"0.55": [45.68718, -8.80348, -8.90928],
|
||||
"0.65": [48.18718, -8.80348, -8.90928],
|
||||
"1.0": [47.64681, 4.67606, 5.90982],
|
||||
"1.45": [54.85234, 2.05205, 11.11128],
|
||||
"2.3": [-0.0412, 8.51931, 0.3767]
|
||||
}
|
||||
},
|
||||
"tail6": {
|
||||
"neck": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.05": [0, 0, 0],
|
||||
"0.3": [22.5, 0, 0],
|
||||
"0.65": [45, 0, 0],
|
||||
"1.0": [45, 0, 0],
|
||||
"1.55": [51.77676, 2.80672, 7.84455],
|
||||
"2.45": [-1.96924, -1.43601, -6.55108]
|
||||
}
|
||||
},
|
||||
"rattle": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.05": [-10, 0, 0],
|
||||
"0.75": [15, 0, 0],
|
||||
"1.0": [15, 0, 0],
|
||||
"1.65": [20, 10, 5],
|
||||
"2.55": [0, -2.5, -2.5]
|
||||
}
|
||||
},
|
||||
"rattle4": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1": [-10, 0, 0],
|
||||
"0.55": [10, 0, 0],
|
||||
"1.0": [15, 0, 0],
|
||||
"1.75": [20, 10, 5],
|
||||
"2.65": [2.5, -5, 0]
|
||||
}
|
||||
},
|
||||
"rattle2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.05": [-20, 0, 0],
|
||||
"1.0": [20, 0, 0],
|
||||
"1.25": [15, 0, 0],
|
||||
"1.9": [20, 10, 5],
|
||||
"2.55": [-2.5, -2.5, -2.5]
|
||||
}
|
||||
},
|
||||
"rattle3": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.05": [-20, 0, 0],
|
||||
"1.25": [25, 0, 0],
|
||||
"1.5": [15, 0, 0],
|
||||
"2.15": [20, 10, 5],
|
||||
"2.55": [0, -2.5, -2.5]
|
||||
}
|
||||
},
|
||||
"rattle5": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1": [-10, 0, 0],
|
||||
"0.8": [20, 0, 0],
|
||||
"1.25": [10, 0, 0],
|
||||
"2.0": [15, 10, 5],
|
||||
"2.65": [2.5, -5, 0]
|
||||
"0.0833": {
|
||||
"pre": [2.5, 0, 0],
|
||||
"post": [2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": [0, 0, 0],
|
||||
"1.125": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.375": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.1667": {
|
||||
"effect": "pokemon.ekans.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.sleep": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"ekans": {
|
||||
"position": [0, 3, 7]
|
||||
"body": {
|
||||
"position": [0, 6, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [42.91333, 68.7346, 43.12956]
|
||||
"rotation": ["17.5-math.sin(q.anim_time*90-180)", -49, -6]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": [-10, 0, 0]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
"neck2": {
|
||||
"rotation": ["15-math.sin(q.anim_time*90-60)*0.75", -50, -7.5],
|
||||
"position": [-0.25, 0, 0.5]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-7.5, 55, 0]
|
||||
"rotation": [90, -32, -272.5],
|
||||
"position": [-3, -0.5, 1],
|
||||
"scale": 0
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [-3.9416, -55.3577, -4.33386]
|
||||
"rotation": [-176.62147, -67.38079, 169.49348]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [20.41084, -54.0129, -21.47388]
|
||||
"rotation": [160, -85, -180]
|
||||
},
|
||||
"tail8": {
|
||||
"rotation": [77.80887, 32.27264, 55.07287],
|
||||
"position": [-1, -1.1, -2]
|
||||
},
|
||||
"tail9": {
|
||||
"rotation": [18.4215, -23.19625, -12.13932]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": [0, -62.5, 0]
|
||||
"rotation": [87.73292, -75.69796, -92.26708]
|
||||
},
|
||||
"tail5": {
|
||||
"rotation": [0, -55, 0]
|
||||
"rotation": [-2.5, -87.5, 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [0, -57.5, 0]
|
||||
"rotation": [0, -62.5, 0]
|
||||
},
|
||||
"rattle": {
|
||||
"rotation": [-7.5, -62.5, 0]
|
||||
"tail7": {
|
||||
"rotation": [-1.41397, -67.50536, -1.13438]
|
||||
},
|
||||
"coiled_body": {
|
||||
"rotation": [0, "-math.sin(q.anim_time*90-120)*0.25", 0],
|
||||
"position": [0, 0, -3]
|
||||
},
|
||||
"coiled_body_top": {
|
||||
"rotation": ["-math.sin(q.anim_time*90-60)*0.5", "math.sin(q.anim_time*90-60)*0.25", "-2.5-math.sin(q.anim_time*90*0.5+45)*0.5"]
|
||||
},
|
||||
"tail_rattle2": {
|
||||
"rotation": [9.09308, -27.20461, 4.52273]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": ["-5-math.sin(q.anim_time*90)*0.75", 17.5, "-6.5+math.sin(q.anim_time*90*0.5-90)*0.5"],
|
||||
"position": [-3.5, -0.75, 3.5]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [1, 0, 0]
|
||||
},
|
||||
"coiled_tail": {
|
||||
"rotation": [-2.5, "-40+math.sin(q.anim_time*90-30)", 0],
|
||||
"position": [1, 0, 0]
|
||||
},
|
||||
"coiled_tail2": {
|
||||
"rotation": [0, "-30+math.sin(q.anim_time*90-90)", 0]
|
||||
},
|
||||
"coiled_tail_rattle": {
|
||||
"rotation": [-10, "-27.5+math.sin(q.anim_time*90-150)", 0]
|
||||
},
|
||||
"coiled_tail_rattle2": {
|
||||
"rotation": [5, "math.sin(q.anim_time*90-210)", 0]
|
||||
},
|
||||
"coiled_tail_rattle3": {
|
||||
"rotation": [0, "math.sin(q.anim_time*90-270)", 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.cry": {
|
||||
"animation_length": 0.95833,
|
||||
"animation.ekans.recoil": {
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [2.5, 0, 0],
|
||||
"post": [2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [-1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [-5, 0, 0],
|
||||
"0.9583": [0, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [0, 0, 0],
|
||||
"0.2083": {
|
||||
"pre": [0, 0, -0.25],
|
||||
"post": [0, 0, -0.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"0.4583": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [-2.5, 0, 0],
|
||||
"post": [-2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [15, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"neck2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [15, 0, 0],
|
||||
"post": [15, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [7.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.4583": {
|
||||
"post": [-2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9583": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"pupil_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": {"pre": [0, 0, 0], "post": [1, 0, 0]},
|
||||
"0.5417": {"pre": [1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-1, 0, 0],
|
||||
"0.125": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"pupil_surprised_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": {"pre": [0, 0, 0], "post": [-1, 0, 0]},
|
||||
"0.5417": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"neck": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [12.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.1667": {
|
||||
"post": [14.79, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [12.5, 0, 0],
|
||||
"post": [-10, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [14.79, 0, 0],
|
||||
"0.4583": {
|
||||
"post": [-2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [12.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.3333": {
|
||||
"post": [14.79, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.6667": {
|
||||
"0.7083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.9583": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [1, 0, 0],
|
||||
"0.125": {"pre": [1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": {"pre": [0, 0, 0], "post": [-1, 0, 0]},
|
||||
"0.5417": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"pupil_surprised_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": {"pre": [0, 0, 0], "post": [1, 0, 0]},
|
||||
"0.5417": {"pre": [1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.0833": {
|
||||
"effect": "pokemon.ekans.cry"
|
||||
}
|
||||
},
|
||||
"animation.ekans.walkspeedtest": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, 0, "120-q.anim_time*16*1.5"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.runspeedtest": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, 0, "120-q.anim_time*16*3.5"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.ekans.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.125": [-0.1, 0, 0],
|
||||
"0.1667": [0, 0, 0]
|
||||
"0.0": [-1, 0, 0],
|
||||
"0.1667": {"pre": [-1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.125": [0.1, 0, 0],
|
||||
"0.1667": [0, 0, 0]
|
||||
"0.0": [1, 0, 0],
|
||||
"0.1667": {"pre": [1, 0, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1952
-413
File diff suppressed because it is too large.
Load diff
+8404
-7122
File diff suppressed because it is too large.
Load diff
+15718
File diff suppressed because it is too large.
Load diff
+14958
File diff suppressed because it is too large.
Load diff
+12726
-656
File diff suppressed because it is too large.
Load diff
+353
-449
File diff suppressed because it is too large.
Load diff
+8096
File diff suppressed because it is too large.
Load diff
+12431
File diff suppressed because it is too large.
Load diff
+916
-761
File diff suppressed because it is too large.
Load diff
+966
-764
File diff suppressed because it is too large.
Load diff
+1061
-598
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -833,7 +833,7 @@
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.125": {
|
||||
"effect": "pokemon.diglett_alolan.cry"
|
||||
"effect": "pokemon.diglett.cry"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+171
-130
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.poliwag.ground_idle": {
|
||||
"animation.poliwag.ground_idle_placeholder": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"tail1": {
|
||||
"tail": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
@@ -15,32 +15,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.ground_walk": {
|
||||
"animation.poliwag.ground_walk_placeholder": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, "0 - (6/11) + math.abs(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * (6/11))", 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["0 - (0 * 1.5)", "math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * (4 * 1.5)", 0],
|
||||
"position": [0, 0, "0 - (0 / 10)"]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 28", "0 - -48"]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [0, "math.clamp(math.sin(((query.anim_time) + (0.75/3)) * 90 * 3) * 28, 0, 28)", 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 28", -48]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [0, "0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 28, 0, 28)", 0]
|
||||
},
|
||||
"torso2": {
|
||||
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.5/3)) * 90 * 3) * 4", 0]
|
||||
"body": {
|
||||
"position": [0, "0 - (6/11) + math.abs(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * (6/11))", 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"torso": {
|
||||
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.25/3)) * 90 * 3) * 4", 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": [
|
||||
"0 -math.sin((query.anim_time) * 90 * 3) * 6",
|
||||
0,
|
||||
@@ -48,10 +44,10 @@
|
||||
],
|
||||
"position": [0, "math.clamp(math.sin(((query.anim_time) + (1/3)) * 90 * 3) * 1, 0, 1)", 0]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 0, -0, 0)", 0, 0]
|
||||
"left_foot": {
|
||||
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, -v.foot, 0)", 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"right_leg": {
|
||||
"rotation": [
|
||||
"math.sin((query.anim_time) * 90 * 3) * 6",
|
||||
0,
|
||||
@@ -59,39 +55,19 @@
|
||||
],
|
||||
"position": [0, "math.clamp(math.sin(((query.anim_time) - (1/3)) * 90 * 3) * 1, 0, 1)", 0]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": ["math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * 0, 0, 0)", 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": ["0 - math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, -v.foot, 0)", 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"right_foot": {
|
||||
"rotation": ["math.clamp(math.sin(((query.anim_time) - (0.75/3)) * 90 * 3) * v.foot, 0, v.foot)", 0, 0]
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": [0, -70, 0]
|
||||
},
|
||||
"hand_left": {
|
||||
"rotation": [0, 70, 0]
|
||||
},
|
||||
"tail1": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [0, "0 - math.sin(((query.anim_time) - (0.25/3)) * 90 * 3) * 4", 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.water_idle": {
|
||||
"animation.poliwag.water_idle_placeholder": {
|
||||
"loop": true,
|
||||
"animation_length": 0.4583,
|
||||
"bones": {
|
||||
"tail1": {
|
||||
"body": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-15, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
@@ -100,27 +76,27 @@
|
||||
"tail3": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"body": {
|
||||
"left_leg": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"left_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"foot_right1": {
|
||||
"right_leg": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"foot_left1": {
|
||||
"right_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.water_swim": {
|
||||
"animation.poliwag.water_swim_placeholder": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"tail1": {
|
||||
"body": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-45, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
@@ -129,43 +105,54 @@
|
||||
"tail3": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"body": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"left_leg": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"left_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"foot_right1": {
|
||||
"right_leg": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"foot_left1": {
|
||||
"right_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"animation.poliwag.blink_placeholder": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_left": {
|
||||
"left_eyelid": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"right_eyelid": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"left_pupil": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.125": [0, 0, 0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"right_pupil": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.125": [0, 0, 0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.sleep": {
|
||||
"animation.poliwag.sleep_placeholder": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
@@ -175,29 +162,6 @@
|
||||
"eyelids": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-56.86824, 13.96782, -1.24205],
|
||||
"position": [0, 0.25, -0.75]
|
||||
},
|
||||
"foot_right1": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"foot_right2": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-27.43103, -15.68951, 1.9062],
|
||||
"position": [0, 0.5, -0.75]
|
||||
},
|
||||
"foot_left1": {
|
||||
"rotation": [12.5, 0, 0]
|
||||
},
|
||||
"foot_left2": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"tail1": {
|
||||
"rotation": [-0.16127, 25.11621, 5.5184]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [12.30936, 7.61658, -1.09051],
|
||||
"position": [0, 0, -0.35]
|
||||
@@ -206,52 +170,129 @@
|
||||
"rotation": [10, 7.5, 0],
|
||||
"position": [0, 0, -0.5]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"left_eyelid2": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"right_eyelid2": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.render": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [-5, 0, -10],
|
||||
"position": [0, 6, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [24.26391, -14.269, 7.17267]
|
||||
"tail": {
|
||||
"rotation": [-0.16127, 25.11621, 5.5184]
|
||||
},
|
||||
"foot_right2": {
|
||||
"left_leg": {
|
||||
"rotation": [-27.43103, -15.68951, 1.9062],
|
||||
"position": [0, 0.5, -0.75]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [12.5, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [17.44401, 5.64135, -19.34918]
|
||||
"left_toe": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"foot_left2": {
|
||||
"rotation": [-7.5, 0, 0]
|
||||
"right_leg": {
|
||||
"rotation": [-56.86824, 13.96782, 1.24205],
|
||||
"position": [0, 0.25, -0.75]
|
||||
},
|
||||
"tail1": {
|
||||
"rotation": [-63.87343, -4.37224, -50.6695]
|
||||
"right_foot": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, 7.5, 0],
|
||||
"position": [0, 0, -0.3]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [0, 0, 0]
|
||||
"right_toe": {
|
||||
"rotation": [10, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.cry": {
|
||||
"animation_length": 1.25,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.poliwag.cry"
|
||||
}
|
||||
}
|
||||
}
|
||||
"animation.poliwag.cry": {
|
||||
"animation_length": 1.25,
|
||||
"sound_effects": {
|
||||
"0.0417": {
|
||||
"effect": "pokemon.poliwag.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.poliwag.test": {
|
||||
"animation_length": 4,
|
||||
"bones": {
|
||||
"torso": {
|
||||
"rotation": [-2.4905, 0.21782, 4.99527],
|
||||
"position": [0, 0.25, 0]
|
||||
},
|
||||
"left_eye": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"right_eye": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": [20.22183, -9.6955, -1.73294],
|
||||
"position": [0, 0, 0.25]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [24.63136, -5.82612, 3.55184]
|
||||
},
|
||||
"right_leg": {
|
||||
"rotation": [-32.29039, 6.33954, 2.12126],
|
||||
"position": [-0.5, 0.5, -2]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [2.92249, 12.46442, 1.89155]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [34.30897, -18.48624, -45.57625]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [20, 0, 0]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [17.5, 0, 0]
|
||||
},
|
||||
"poliwag": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"mouth": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 2],
|
||||
"2.0": {"pre": [0, 0, 2], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"left_toe": {
|
||||
"rotation": [-45, 0, 0]
|
||||
},
|
||||
"right_toe": {
|
||||
"rotation": [7.5, 0, 0],
|
||||
"position": [0, 0, 0.15]
|
||||
},
|
||||
"mouth_open": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -2],
|
||||
"2.0": {"pre": [0, 0, -2], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelids": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.6667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"left_eyelid": {
|
||||
"position": [0.25, 0, 0]
|
||||
},
|
||||
"left_pupil": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"1.6667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
},
|
||||
"scale": [-1, 1, 1]
|
||||
},
|
||||
"right_pupil": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"1.5": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"1.6667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+923
-2713
File diff suppressed because it is too large.
Load diff
+6903
File diff suppressed because it is too large.
Load diff
+6579
File diff suppressed because it is too large.
Load diff
+919
-140
File diff suppressed because it is too large.
Load diff
+3188
-114
File diff suppressed because it is too large.
Load diff
+892
-48
@@ -4,93 +4,937 @@
|
||||
"animation.politoed.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"leftleg": {
|
||||
"left_thigh": {
|
||||
"rotation": [0, -5, 0]
|
||||
},
|
||||
"rightleg": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"leftarm": {
|
||||
"left_arm": {
|
||||
"rotation": [0, 0, 45]
|
||||
},
|
||||
"leftforearm": {
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"rightarm": {
|
||||
"right_thigh": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, 0, -45]
|
||||
},
|
||||
"rightforearm": {
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.water_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"leftleg": {
|
||||
"rotation": [7.5, -5, 0]
|
||||
},
|
||||
"rightleg": {
|
||||
"rotation": [7.5, 5, 0]
|
||||
},
|
||||
"leftarm": {
|
||||
"rotation": [0, -10, 30]
|
||||
},
|
||||
"leftforearm": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"rightarm": {
|
||||
"rotation": [0, 10, -30]
|
||||
},
|
||||
"rightforearm": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"body": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-25, 0, 0]
|
||||
},
|
||||
"leftfoot": {
|
||||
"left_thigh": {
|
||||
"rotation": [7.5, -5, 0]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"rightfoot": {
|
||||
"left_arm": {
|
||||
"rotation": [0, -10, 30]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": [7.5, 5, 0]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, 10, -30]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.water_swim": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"leftleg": {
|
||||
"rotation": [15, -5, 0]
|
||||
},
|
||||
"rightleg": {
|
||||
"rotation": [15, 5, 0]
|
||||
},
|
||||
"leftarm": {
|
||||
"rotation": [0, -10, 45]
|
||||
},
|
||||
"leftforearm": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"rightarm": {
|
||||
"rotation": [0, 10, -45]
|
||||
},
|
||||
"rightforearm": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"body": {
|
||||
"rotation": [60, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-55, 0, 0]
|
||||
},
|
||||
"leftfoot": {
|
||||
"left_thigh": {
|
||||
"rotation": [15, -5, 0]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"rightfoot": {
|
||||
"left_arm": {
|
||||
"rotation": [0, -10, 45]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": [15, 5, 0]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, 10, -45]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.test": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -0.5, 0]
|
||||
},
|
||||
"undefined": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"torso": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"legs": {
|
||||
"position": [0, -0.6, 0]
|
||||
},
|
||||
"left_thigh": {
|
||||
"rotation": [-22, -31, -12.5],
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": [72.5, -10, 5]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [-43, 0, 2.75],
|
||||
"position": [0, 0.25, -0.25]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-5, 0, 0]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"left_arm": {
|
||||
"rotation": [0, 0, 42.5]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 40, 0]
|
||||
},
|
||||
"left_hand": {
|
||||
"rotation": [0, 0, 22.5],
|
||||
"position": [-0.35, 0, 0]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": [-22, 31, 12.5]
|
||||
},
|
||||
"right_leg": {
|
||||
"rotation": [72.5, 10, -5]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [-43, 0, -2.75],
|
||||
"position": [0, 0.25, -0.25]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, 0, -42.5]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, -40, 0]
|
||||
},
|
||||
"right_hand": {
|
||||
"rotation": [0, 0, -22.5],
|
||||
"position": [0.35, 0, 0]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"rotation": [-27.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid": {
|
||||
"rotation": [32.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid_bend": {
|
||||
"rotation": [27.5, 0, 0]
|
||||
},
|
||||
"tongue_long_end": {
|
||||
"rotation": [-20, 0, 0]
|
||||
},
|
||||
"tongue_long_tip": {
|
||||
"rotation": [-37.5, 0, 0]
|
||||
},
|
||||
"left_leg_correction": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"right_leg_correction": {
|
||||
"position": [0, 1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.test2": {
|
||||
"animation_length": 0.0417,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -1.1, 0]
|
||||
},
|
||||
"undefined": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"torso": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"legs": {
|
||||
"position": [0, -0.6, 0]
|
||||
},
|
||||
"left_thigh": {
|
||||
"rotation": [-58.0984, -35.5329, -3.9636],
|
||||
"position": [0, 0, -0.25]
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": [100.2268, -0.2874, 2.6377],
|
||||
"position": [0, 0, 0.25]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [-40, 0, 2.25],
|
||||
"position": [0, 0.1, -0.25]
|
||||
},
|
||||
"jaw": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"left_arm": {
|
||||
"rotation": [0, 0, 42.5]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 40, 0]
|
||||
},
|
||||
"left_hand": {
|
||||
"rotation": [0, 0, 22.5],
|
||||
"position": [-0.35, 0, 0]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": [-58.0984, 35.5329, 3.9636],
|
||||
"position": [0, 0, -0.25]
|
||||
},
|
||||
"right_leg": {
|
||||
"rotation": [100.2268, 0.2874, -2.6377],
|
||||
"position": [0, 0, 0.25]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [-40, 0, -2.25],
|
||||
"position": [0, 0.1, -0.25]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, 0, -42.5]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, -40, 0]
|
||||
},
|
||||
"right_hand": {
|
||||
"rotation": [0, 0, -22.5],
|
||||
"position": [0.35, 0, 0]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid": {
|
||||
"rotation": [32.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid_bend": {
|
||||
"rotation": [27.5, 0, 0]
|
||||
},
|
||||
"tongue_long_end": {
|
||||
"rotation": [-20, 0, 0]
|
||||
},
|
||||
"tongue_long_tip": {
|
||||
"rotation": [-37.5, 0, 0]
|
||||
},
|
||||
"left_leg_correction": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"right_leg_correction": {
|
||||
"position": [0, 1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.test_walk": {
|
||||
"loop": true,
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -0.5, 0]
|
||||
},
|
||||
"undefined": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["-0+math.sin(q.anim_time*90*8-75)*3", "-0+math.sin(q.anim_time*90*4-240)*15", "0-math.sin(q.anim_time*90*4-240)*12.5"],
|
||||
"position": [0, "0-math.sin(q.anim_time*90*8-75)*0.333", 0]
|
||||
},
|
||||
"legs": {
|
||||
"position": [0, -0.6, 0]
|
||||
},
|
||||
"left_thigh": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-45.8077, -17.7622, -4.8184],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-22, -31, -12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [10.3458, -11.4389, -7.9978],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [11.7107, -12.7343, -7.9808],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [-71.94, -14.4638, -6.2564],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [-45.8077, -17.7622, -4.8184],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, -1.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [0, 0.41, -1.06],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, -0.5, 2.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 1.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0, -1.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [11.153, -10.4048, 4.5735],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [72.5, -10, 5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [64.434, -4.5354, 10.7584],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [87.0283, -5.4462, 9.7987],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [109.717, -7.2677, 7.8792],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [37.5, -10, 5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [11.153, -10.4048, 4.5735],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [4.441, -0.809, -3.8795],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [-43, 0, 2.75],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [-73.5885, -4.6063, 14.7348],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.625": {
|
||||
"post": [-62.2404, -3.8386, 12.7373],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [-57.0442, -2.3032, 8.7424],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [4.4957, 0.1961, 0.2577],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [4.441, -0.809, -3.8795],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 0.25, -0.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0.25, -1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, -0.12, -0.75],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"left_toes": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [-34.9753, 1.3429, 2.1089],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["-0+math.sin(q.anim_time*90*8-105)*1.5", "-0+math.sin(q.anim_time*90*4-90)*7.5", "0-math.sin(q.anim_time*90*4-90)*5"]
|
||||
},
|
||||
"left_arm": {
|
||||
"rotation": [0, "10+math.sin(q.anim_time*90*4-60)*22.5", "45-math.sin(q.anim_time*90*4+90)*15"]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, "25+math.sin(q.anim_time*90*4-90)*10", 0]
|
||||
},
|
||||
"left_hand": {
|
||||
"rotation": [0, "2.5+math.sin(q.anim_time*90*4-120)*5", "22.5-math.sin(q.anim_time*90*4+450)*10"],
|
||||
"position": [-0.35, 0, 0]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [10.3458, 11.4389, 7.9978],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [11.7107, 12.7343, 7.9808],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [-71.94, 14.4638, 6.2564],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [-45.8077, 17.7622, 4.8184],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [-22, 31, 12.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [10.3458, 11.4389, 7.9978],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, -0.5, 2.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, 1.5, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0, -1.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [0, 0.41, -1.06],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, -0.5, 2.5],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_leg": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [64.434, 4.5354, -10.7584],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [87.0283, 5.4462, -9.7987],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [109.717, 7.2677, -7.8792],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [37.5, 10, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [11.153, 10.4048, -4.5735],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [72.5, 10, -5],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [64.434, 4.5354, -10.7584],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [-73.5885, 4.6063, -14.7348],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.125": {
|
||||
"post": [-62.2404, 3.8386, -12.7373],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [-57.0442, 2.3032, -8.7424],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [4.4957, -0.1961, -0.2577],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [4.441, 0.809, 3.8795],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [-43, 0, -2.75],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [-73.5885, 4.6063, -14.7348],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
},
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0.25, -1],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, -0.12, -0.75],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [0, 0.25, -0.25],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0.25, -1],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_toes": {
|
||||
"rotation": {
|
||||
"0.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.0833": {
|
||||
"post": [-34.9753, -1.3429, -2.1089],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hair": {
|
||||
"rotation": ["-0+math.sin(q.anim_time*90*8-135)*2.5", "-0+math.sin(q.anim_time*90*4-300)*10", "0-math.sin(q.anim_time*90*4-300)*5"]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [0, "-10+math.sin(q.anim_time*90*4-60)*22.5", "-45-math.sin(q.anim_time*90*4+90)*15"]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, "-25+math.sin(q.anim_time*90*4-90)*10", 0]
|
||||
},
|
||||
"right_hand": {
|
||||
"rotation": [0, "-2.5+math.sin(q.anim_time*90*4-120)*5", "-22.5-math.sin(q.anim_time*90*4+450)*10"],
|
||||
"position": [0.35, 0, 0]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"rotation": [-27.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid": {
|
||||
"rotation": [32.5, 0, 0]
|
||||
},
|
||||
"tongue_long_mid_bend": {
|
||||
"rotation": [27.5, 0, 0]
|
||||
},
|
||||
"tongue_long_end": {
|
||||
"rotation": [-20, 0, 0]
|
||||
},
|
||||
"tongue_long_tip": {
|
||||
"rotation": [-37.5, 0, 0]
|
||||
},
|
||||
"left_leg_correction": {
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 0.1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.25": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.7083": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.875": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 0.1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_leg_correction": {
|
||||
"position": {
|
||||
"0.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2083": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.375": {
|
||||
"post": [0, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5": {
|
||||
"post": [0, 0.1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.75": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": {
|
||||
"post": [0, 1, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.pose": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [-15, 0, 0],
|
||||
"position": [0, 2, -2]
|
||||
},
|
||||
"left_thigh": {
|
||||
"rotation": [-109.8093, -19.9813, 14.4472],
|
||||
"position": [0.25, -1, 0.25]
|
||||
},
|
||||
"left_leg": {
|
||||
"rotation": [62.5, 0, 0]
|
||||
},
|
||||
"left_foot": {
|
||||
"rotation": [-15, 2.5, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [10, 0, 0],
|
||||
"position": [0, 0, -0.25]
|
||||
},
|
||||
"left_arm": {
|
||||
"rotation": [-52.5, 0, 0],
|
||||
"position": [0, -0.75, 0.25]
|
||||
},
|
||||
"left_lower_arm": {
|
||||
"rotation": [0, 45, 0]
|
||||
},
|
||||
"left_hand": {
|
||||
"rotation": [0, 0, 17.5],
|
||||
"position": [-0.2, 0, 0]
|
||||
},
|
||||
"right_thigh": {
|
||||
"rotation": [-109.8093, 19.9813, -14.4472],
|
||||
"position": [-0.25, -1, 0.25]
|
||||
},
|
||||
"right_leg": {
|
||||
"rotation": [62.5, 0, 0]
|
||||
},
|
||||
"right_foot": {
|
||||
"rotation": [-15, -2.5, 0]
|
||||
},
|
||||
"left_pupil": {
|
||||
"position": [0, -0.5, 0]
|
||||
},
|
||||
"right_pupil": {
|
||||
"position": [0, -0.5, 0]
|
||||
},
|
||||
"right_arm": {
|
||||
"rotation": [-52.5, 0, 0],
|
||||
"position": [0, -0.75, 0.25]
|
||||
},
|
||||
"right_lower_arm": {
|
||||
"rotation": [0, -45, 0]
|
||||
},
|
||||
"right_hand": {
|
||||
"rotation": [0, 0, -17.5],
|
||||
"position": [0.2, 0, 0]
|
||||
},
|
||||
"tongue_long_base": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.blink": {
|
||||
"animation_length": 0.2083,
|
||||
"bones": {
|
||||
"left_eye": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0.1],
|
||||
"0.1667": {
|
||||
"pre": [-0.1, 0, 0.1],
|
||||
"post": [-0.1, 0, 0.1]
|
||||
},
|
||||
"0.2083": {
|
||||
"pre": [-0.1, 0, 0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_eye": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0.1],
|
||||
"0.1667": {
|
||||
"pre": [0.1, 0, 0.1],
|
||||
"post": [0.1, 0, 0.1]
|
||||
},
|
||||
"0.2083": {
|
||||
"pre": [0.1, 0, 0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"left_eyelid": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0.1, 0, -0.1],
|
||||
"post": [0.1, 0, -0.1]
|
||||
},
|
||||
"0.2083": {
|
||||
"pre": [0.1, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"right_eyelid": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [-0.1, 0, -0.1],
|
||||
"post": [-0.1, 0, -0.1]
|
||||
},
|
||||
"0.2083": {
|
||||
"pre": [-0.1, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.happy": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"jaw": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"left_pupil": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"left_eyelid_happy": {
|
||||
"position": [0.1, 0, -0.1]
|
||||
},
|
||||
"right_eyelid_happy": {
|
||||
"position": [-0.1, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.sad": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"left_eyelid_sad": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"right_eyelid_sad": {
|
||||
"position": [-0.1, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.angry": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"left_eyelid_angry": {
|
||||
"position": [0.1, 0, -0.1]
|
||||
},
|
||||
"right_eyelid_angry": {
|
||||
"position": [-0.1, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.shocked": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"jaw": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"left_pupil": {
|
||||
"position": [-0.1, 0, 0.3]
|
||||
},
|
||||
"right_pupil": {
|
||||
"position": [0.1, 0, 0.3]
|
||||
},
|
||||
"left_pupil_shocked": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"right_pupil_shocked": {
|
||||
"position": [-0.1, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.unamused": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"left_eyelid_unamused": {
|
||||
"position": [0.1, 0, -0.1]
|
||||
},
|
||||
"right_eyelid_unamused": {
|
||||
"position": [-0.1, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.hurt": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"jaw": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"left_eyelid_hurt": {
|
||||
"position": [0.1, 0, -0.1]
|
||||
},
|
||||
"right_eyelid_hurt": {
|
||||
"position": [-0.1, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.politoed.cry": {
|
||||
"animation_length": 1.25,
|
||||
"sound_effects": {
|
||||
"0.04": {
|
||||
"effect": "pokemon.politoed.cry"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9798
-401
File diff suppressed because it is too large.
Load diff
+21
-21
@@ -62,7 +62,7 @@
|
||||
"body": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
},
|
||||
"Eyebrow": {
|
||||
"eyebrows": {
|
||||
"rotation": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
@@ -240,7 +240,7 @@
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"Eyebrow": {
|
||||
"eyebrows": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {
|
||||
@@ -282,31 +282,31 @@
|
||||
"skirt_back": {
|
||||
"rotation": ["0-math.cos(q.anim_time*90*2-30)*5", 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"eyelid_annoyed_right": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"Eyebrow": {
|
||||
"eyebrows": {
|
||||
"position": [0, "0+math.sin(q.anim_time*90*2-30)*0.05", 0]
|
||||
},
|
||||
"hair": {
|
||||
"rotation": ["12.5+math.cos(q.anim_time*90*2-30)*3", 0, 0]
|
||||
},
|
||||
"eyelid_annoyed_left": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.shroomish.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_left": {
|
||||
"eyelid_annoyed_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"eyelid_annoyed_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
@@ -591,7 +591,7 @@
|
||||
"2.5833": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"Eyebrow": {
|
||||
"eyebrows": {
|
||||
"rotation": [0, 0, 0],
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
@@ -603,17 +603,7 @@
|
||||
"2.25": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [0, 0, -0.1],
|
||||
"1.875": [0, 0, -0.1],
|
||||
"1.9167": [0, 0, 0],
|
||||
"2.1667": [0, 0, 0],
|
||||
"2.2083": [0, 0, -0.1]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"eyelid_annoyed_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [0, 0, -0.1],
|
||||
@@ -636,6 +626,16 @@
|
||||
"0.25": [0, 0, 0],
|
||||
"0.2917": [0, 0, -0.1]
|
||||
}
|
||||
},
|
||||
"eyelid_annoyed_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [0, 0, -0.1],
|
||||
"1.875": [0, 0, -0.1],
|
||||
"1.9167": [0, 0, 0],
|
||||
"2.1667": [0, 0, 0],
|
||||
"2.2083": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9141
-173
File diff suppressed because it is too large.
Load diff
+65
-61
@@ -1,67 +1,6 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.shinx.new": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"waist": {
|
||||
"rotation": [-32.5, 0, 0]
|
||||
},
|
||||
"tail_1": {
|
||||
"rotation": [-9.00717, 20.70481, 65.85133]
|
||||
},
|
||||
"tail_2": {
|
||||
"rotation": [67.5, 0, 0]
|
||||
},
|
||||
"tail_3": {
|
||||
"rotation": [45, 45, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-4.11405, -22.13991, 10.80524]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [0, 0, 1]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": [0, 0, -3]
|
||||
},
|
||||
"ear_left": {
|
||||
"rotation": [0, 0, 12.5]
|
||||
},
|
||||
"ear_right": {
|
||||
"rotation": [0, 0, -12.5]
|
||||
},
|
||||
"fluff": {
|
||||
"rotation": [0, 0, 20]
|
||||
},
|
||||
"open_mouth": {
|
||||
"position": [0, 0, -2]
|
||||
},
|
||||
"closed_mouth": {
|
||||
"position": [0, 0, 1]
|
||||
},
|
||||
"back_leg_right": {
|
||||
"rotation": [-40.08019, 31.37238, 1.3824],
|
||||
"position": [0, -1.5, -1]
|
||||
},
|
||||
"knee_right": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"front_foot_right": {
|
||||
"rotation": [0, -5, 0]
|
||||
},
|
||||
"back_leg_left": {
|
||||
"rotation": [-40.08019, -31.37238, -1.3824],
|
||||
"position": [0, -1.5, -1]
|
||||
},
|
||||
"knee_left": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"front_foot_left": {
|
||||
"rotation": [0, 5, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.shinx.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
@@ -75,6 +14,71 @@
|
||||
"tail_3": {
|
||||
"rotation": [-37.5, 0, 0],
|
||||
"position": [0, 0.1, -0.3]
|
||||
},
|
||||
"leg_front_right": {
|
||||
"rotation": [0, 2.5, 0]
|
||||
},
|
||||
"leg_front_left": {
|
||||
"rotation": [0, -2.5, 0]
|
||||
},
|
||||
"leg_back_right": {
|
||||
"rotation": [0, 7.5, 2.5]
|
||||
},
|
||||
"leg_back_left": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.shinx.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.shinx.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"position": [0, 0, 0.1],
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+74
-113
@@ -1,133 +1,94 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.luxio.idle": {
|
||||
"animation.luxio.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"ear_right": {
|
||||
"rotation": [0, 0, -22.5]
|
||||
},
|
||||
"ear_left": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
},
|
||||
"cheek_fluff_left": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
},
|
||||
"cheek_fluff_right": {
|
||||
"rotation": [0, 0, -22.5]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [37.5, 0, 0]
|
||||
"rotation": [35, 0, 0]
|
||||
},
|
||||
"tail_2": {
|
||||
"rotation": [-17.5, 0, 0]
|
||||
"tail2": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"tail_3": {
|
||||
"rotation": [-32.5, 0, 0]
|
||||
"tail3": {
|
||||
"rotation": [-30, 0, 0]
|
||||
},
|
||||
"tail_4": {
|
||||
"rotation": [-32.5, 0, 0]
|
||||
"tail4": {
|
||||
"rotation": [-25, 0, 0]
|
||||
},
|
||||
"tail_fluff_top": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"leg_back_right": {
|
||||
"rotation": [0, 7.5, 5]
|
||||
},
|
||||
"foot_back_right2": {
|
||||
"rotation": [0, 0, -5]
|
||||
},
|
||||
"leg_back_left": {
|
||||
"rotation": [0, -7.5, -5]
|
||||
},
|
||||
"foot_back_left2": {
|
||||
"rotation": [0, 0, 5]
|
||||
},
|
||||
"leg_front_right": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"leg_front_left": {
|
||||
"rotation": [0, -5, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.luxio.sleep": {
|
||||
"loop": true,
|
||||
"animation.luxio.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -4, 0]
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"back_leg_right": {
|
||||
"rotation": [-90, 45, 0],
|
||||
"position": [4, 1, 1]
|
||||
},
|
||||
"knee_right": {
|
||||
"rotation": [90, 0, 0],
|
||||
"position": [0, 1, 1]
|
||||
},
|
||||
"back_paw_right": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"back_leg_left": {
|
||||
"rotation": [-90, 45, 0],
|
||||
"position": [4, 1, -3]
|
||||
},
|
||||
"knee_left": {
|
||||
"rotation": [90, 0, 0],
|
||||
"position": [0, 1, 1]
|
||||
},
|
||||
"back_paw_left": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"front_leg_right": {
|
||||
"rotation": [-45, 0, 0]
|
||||
},
|
||||
"elbow_right": {
|
||||
"rotation": [-42.73421, -15.69986, -16.32495]
|
||||
},
|
||||
"front_paw_right": {
|
||||
"rotation": [90, 0, 0]
|
||||
},
|
||||
"front_leg_left": {
|
||||
"rotation": [-47.41981, -31.37238, 1.3824]
|
||||
},
|
||||
"elbow_left": {
|
||||
"rotation": [-42.73421, 15.69986, 16.32495]
|
||||
},
|
||||
"front_paw_left": {
|
||||
"rotation": [90, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-7.5, -22.5, 0],
|
||||
"position": [0, -1.25, -1.25]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [0, 45, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-22.5, 22.5, 0],
|
||||
"position": [0, -0.75, 0]
|
||||
},
|
||||
"tail_2": {
|
||||
"rotation": [0, 67.5, 0]
|
||||
},
|
||||
"tail_3": {
|
||||
"rotation": [7.86119, 40.78947, 20.94102]
|
||||
},
|
||||
"tail_4": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"tail_5": {
|
||||
"rotation": [22.5, 0, 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [22.5, 0, 0]
|
||||
},
|
||||
"ear_right": {
|
||||
"rotation": [0, 0, -22.5]
|
||||
},
|
||||
"ear_left": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
},
|
||||
"head_fluff_top": {
|
||||
"rotation": [0, 0, -45]
|
||||
},
|
||||
"eyelid_l": {
|
||||
"position": [0, 0, -3]
|
||||
},
|
||||
"eyelid_r": {
|
||||
"position": [0, 0, -2]
|
||||
},
|
||||
"cheek_fluff_left": {
|
||||
"rotation": [0, 22.5, 22.5]
|
||||
},
|
||||
"cheek_fluff_right": {
|
||||
"rotation": [22.5, 0, -22.5]
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [0, 0, 1]
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0, 0, 1]
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.luxio.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"position": [0, 0, 0.1],
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+88
-146
@@ -1,161 +1,103 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.luxray.new": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [22.5, 0, 0],
|
||||
"position": [0, -2, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [24.14867, -20.70481, -9.00717]
|
||||
},
|
||||
"hips": {
|
||||
"rotation": [-22.81179, 9.23186, -3.86032]
|
||||
},
|
||||
"tail_1": {
|
||||
"rotation": [49.98844, 27.36694, 17.18133]
|
||||
},
|
||||
"tail_2": {
|
||||
"rotation": [-22.5, 22.5, 0]
|
||||
},
|
||||
"tail_3": {
|
||||
"rotation": [-53.52293, 35.66466, -17.31806]
|
||||
},
|
||||
"tail_4": {
|
||||
"rotation": [45, 45, 0]
|
||||
},
|
||||
"tail_5": {
|
||||
"rotation": [45, 45, 0]
|
||||
},
|
||||
"tail_6": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [62.26579, -15.69986, -16.32495],
|
||||
"position": [0, -1, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-48.75474, -3.08149, 16.32258],
|
||||
"position": [0, -0.75, 0]
|
||||
},
|
||||
"mouth": {
|
||||
"rotation": [55, 0, 0]
|
||||
},
|
||||
"head_fluff_center_2": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
},
|
||||
"head_fluff_center_3": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_top_right": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_top_2_right": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_top_left": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"head_fluff_top_2_left": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_bottom_right": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_bottom_left": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"head_fluff_bottom_2_left": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"ear_right": {
|
||||
"rotation": [0, 0, -17.5]
|
||||
},
|
||||
"ear_left": {
|
||||
"rotation": [0, 0, 17.5]
|
||||
},
|
||||
"front_leg_right": {
|
||||
"rotation": [-44.56145, 7.05302, 7.10708],
|
||||
"position": [0, -0.31732, -0.92388]
|
||||
},
|
||||
"elbow_right": {
|
||||
"rotation": [-42.73421, -15.69986, -16.32495]
|
||||
},
|
||||
"front_foot_right": {
|
||||
"rotation": [67.5, 0, 0]
|
||||
},
|
||||
"front_leg_left": {
|
||||
"rotation": [22.5, 0, 0],
|
||||
"position": [1.25, 1, 0]
|
||||
},
|
||||
"elbow_left": {
|
||||
"rotation": [-47.26579, -15.69986, 16.32495],
|
||||
"position": [-0.5, 0, 0]
|
||||
},
|
||||
"front_foot_left": {
|
||||
"rotation": [0, 10, 0]
|
||||
},
|
||||
"back_leg_right": {
|
||||
"rotation": [-46.64867, -20.70481, 9.00717],
|
||||
"position": [-5, -2.38896, -2.07193]
|
||||
},
|
||||
"knee_right": {
|
||||
"rotation": [67.5, 0, 0],
|
||||
"position": [0.76537, 0.33755, 1.86018]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"back_foot_right": {
|
||||
"rotation": [-57.5, 0, 0]
|
||||
},
|
||||
"back_leg_left": {
|
||||
"rotation": [-19.83264, -18.43795, -6.24926]
|
||||
},
|
||||
"knee_left": {
|
||||
"rotation": [0, 0, 12.5]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [7.5, 0, 0]
|
||||
},
|
||||
"back_foot_left": {
|
||||
"rotation": [-7.5, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.luxray.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"tail_1": {
|
||||
"rotation": [43, 0, 0]
|
||||
"tail": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"tail_2": {
|
||||
"rotation": [22.5, 0, 0],
|
||||
"position": [0, 0, -0.2]
|
||||
"tail2": {
|
||||
"rotation": [25, 0, 0]
|
||||
},
|
||||
"tail_3": {
|
||||
"rotation": [-45, 0, 0],
|
||||
"position": [0, 0.1, -0.3]
|
||||
"tail3": {
|
||||
"rotation": [-45, 0, 0]
|
||||
},
|
||||
"tail_4": {
|
||||
"rotation": [-52.68932, -2.64422, -1.88999],
|
||||
"position": [0, 0.2, -0.4]
|
||||
"tail4": {
|
||||
"rotation": [-45, 0, 0]
|
||||
},
|
||||
"tail_5": {
|
||||
"rotation": [-30, 0, 0],
|
||||
"position": [0, 0.1, -0.2]
|
||||
"tail5": {
|
||||
"rotation": [-35, 0, 0]
|
||||
},
|
||||
"tail_6": {
|
||||
"rotation": [20, 0, 0],
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"tail_fluff": {
|
||||
"tail_fluff_top": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"tail6": {
|
||||
"rotation": [35, 0, 0]
|
||||
},
|
||||
"tail7": {
|
||||
"rotation": [20, 0, 0]
|
||||
},
|
||||
"leg_front_left": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"leg_front_right": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"leg_back_left": {
|
||||
"rotation": [0, -7.5, -2.5]
|
||||
},
|
||||
"foot_back_left2": {
|
||||
"rotation": [0, 0, 2.5]
|
||||
},
|
||||
"leg_back_right": {
|
||||
"rotation": [0, 7.5, 2.5]
|
||||
},
|
||||
"foot_back_right2": {
|
||||
"rotation": [0, 0, -2.5]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.luxray.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.luxray.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"position": [0, 0, 0.1],
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+138
@@ -319,6 +319,144 @@
|
||||
"position": [1, 1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.shoulder_left": {
|
||||
"loop": true,
|
||||
"animation_length": 4,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [0, -30, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["-10+math.sin(q.anim_time*90*2-90)*1.5", 0, "math.sin(q.anim_time*90*2/2-180)*1.5"],
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"stem": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2-90-90)*1", 0, 0]
|
||||
},
|
||||
"stem2": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2-150)*4", 0, 0]
|
||||
},
|
||||
"mouth_closed": {
|
||||
"rotation": [0, 0, 180],
|
||||
"position": [0, 0.75, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": ["-66.956-math.sin(q.anim_time*90*3-90)*3.5", -37.4642, 3.1596],
|
||||
"position": [0.5, "math.sin(q.anim_time*90*2/2-180)*-0.25", -1.25]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": ["20-math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": ["-58.8106+math.sin(q.anim_time*90*3-90)*3.5", 15.095, 8.959],
|
||||
"position": [-0.25, "math.sin(q.anim_time*90*2/2-180)*0.1", -1.5]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": ["20+math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": ["40+math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.2, -0.1, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [-0.1, -0.1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.shoulder_right": {
|
||||
"loop": true,
|
||||
"animation_length": 4,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [0, 30, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["-10+math.sin(q.anim_time*90*2-90)*1.5", 0, "-math.sin(q.anim_time*90*2/2-180)*1.5"],
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"stem": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2-90-90)*1", 0, 0]
|
||||
},
|
||||
"stem2": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2-150)*4", 0, 0]
|
||||
},
|
||||
"mouth_closed": {
|
||||
"rotation": [0, 0, -180],
|
||||
"position": [0, 0.75, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": ["-58.8106+math.sin(q.anim_time*90*3-90)*3.5", -15.095, -8.959],
|
||||
"position": [0.25, "math.sin(q.anim_time*90*2/2-180)*0.1", -1.5]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": ["20+math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": ["40+math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": ["-66.956-math.sin(q.anim_time*90*3-90)*3.5", 37.4642, -3.1596],
|
||||
"position": [-0.5, "math.sin(q.anim_time*90*2/2-180)*-0.25", -1.25]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": ["20-math.sin(q.anim_time*90*3-150)*15.5", 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": ["40-math.sin(q.anim_time*90*3-210)*7.5", 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [0.1, -0.1, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [0.2, -0.1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.shoulder_left_position": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [2.75, -4, -0.5]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.shoulder_right_position": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [-2.75, -4, -0.5]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.looktest": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"torso": {
|
||||
"rotation": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.scaletest": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"bonsly": {
|
||||
"scale": 0.6
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.bonsly.walkspeedtest": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"bonsly": {
|
||||
"position": [0, 0, "40-q.anim_time*90*0.2"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+205
-691
File diff suppressed because it is too large.
Load diff
+191
-70
@@ -1,6 +1,179 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.chespin.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.cry": {
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.125": {
|
||||
"pre": [-12, 0, 0],
|
||||
"post": [-12, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [-12, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_closed_smile": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.75": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_smile": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.75": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.75": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.75": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.1667": {
|
||||
"effect": "pokemon.chespin.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.pose": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [0, -37.5, 0],
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"torso2": {
|
||||
"rotation": [-12.5, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-13.89157, 20.57373, -10.30286]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [4.68184, 16.2524, -29.6444]
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [34.92019, 17.2337, 20.34505]
|
||||
},
|
||||
"hand_left": {
|
||||
"rotation": [0, 0, -17.5]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-51.63554, -16.76559, 11.06517],
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, -37.5, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [22.5, 0, 0]
|
||||
},
|
||||
"toes_right": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [7.53535, -3.55508, -21.73761]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [17.45752, -7.82184, 22.22986]
|
||||
},
|
||||
"toes_left": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"head_spikes_sharp": {
|
||||
"scale": 0
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [0, 0.2, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [-0.2, 0.2, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
@@ -52,6 +225,9 @@
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["math.sin(q.anim_time*90*3-60)*1.5", "-math.sin(q.anim_time*90*1.5-90)*6.5", 0]
|
||||
},
|
||||
"head_spikes_sharp": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -106,6 +282,9 @@
|
||||
},
|
||||
"toe_right": {
|
||||
"rotation": ["math.clamp(math.sin(q.anim_time*90*5+40)*40,-180,0)", 0, 0]
|
||||
},
|
||||
"head_spikes_sharp": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -134,14 +313,14 @@
|
||||
"mouth_open": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"spike_head_left": {
|
||||
"head_spike_left": {
|
||||
"rotation": ["-5+math.sin(q.anim_time*90*1-90)*5", 0, -22.5]
|
||||
},
|
||||
"spike_head_right": {
|
||||
"head_spike_right": {
|
||||
"rotation": ["-5+math.sin(q.anim_time*90*1-90)*5", 0, 45],
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"spikes_back": {
|
||||
"head_spikes_back": {
|
||||
"rotation": ["math.sin(q.anim_time*90*1-135)*5", 0, 0]
|
||||
},
|
||||
"arm_left": {
|
||||
@@ -173,79 +352,21 @@
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [35.02686, -1.60667, -1.91561]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.chespin.cry": {
|
||||
"animation_length": 0.91667,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
|
||||
"0.1667": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
|
||||
"0.8333": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_open3": {
|
||||
"eye_left": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"mouth_closed": {
|
||||
"position": {
|
||||
"0.0833": [0, 0, 0],
|
||||
"0.1667": [0, 0, 0.1],
|
||||
"0.4167": [0, 0, 0.1],
|
||||
"0.5": [0, 0, 0]
|
||||
}
|
||||
"eye_right": {
|
||||
"position": [0, 0, 0.2]
|
||||
},
|
||||
"mouth_open": {
|
||||
"position": {
|
||||
"0.0833": [0, 0, 0],
|
||||
"0.1667": [0, 0, -0.1],
|
||||
"0.4167": [0, 0, -0.1],
|
||||
"0.5": [0, 0, 0]
|
||||
}
|
||||
"mouth_closed_smile": {
|
||||
"position": [0, 0, 0.2]
|
||||
},
|
||||
"spike_head_left": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.1667": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.3333": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
|
||||
"0.5833": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
|
||||
"0.8333": [0, 0, 0]
|
||||
}
|
||||
"mouth_closed_neutral": {
|
||||
"position": [0, 0, -0.2]
|
||||
},
|
||||
"spike_head_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.1667": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.3333": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
|
||||
"0.5833": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
|
||||
"0.9167": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.0833": {
|
||||
"effect": "pokemon.chespin.cry"
|
||||
"head_spikes_sharp": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+207
-156
@@ -1,6 +1,205 @@
|
||||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.quilladin.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.cry": {
|
||||
"animation_length": 1.5,
|
||||
"bones": {
|
||||
"torso2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": {
|
||||
"pre": [2, 0, 0],
|
||||
"post": [2, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.2917": {
|
||||
"post": [-2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"0.5833": {
|
||||
"post": [-2.5, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.0833": {
|
||||
"post": [1, 0, 0],
|
||||
"lerp_mode": "catmullrom"
|
||||
},
|
||||
"1.4167": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_closed_smile": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"1.3333": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_smile": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.375": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.0417": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_o": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.375": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"1.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"1.3333": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.1667": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"1.3333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.1667": {
|
||||
"effect": "pokemon.quilladin.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.pose": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, 2, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [-27.43745, 1.50179, 4.76968]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [-15.02687, 1.91486, -1.60757],
|
||||
"position": [0, -1, 0]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [7.56397, 7.43547, 0.98448]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": [10.08453, 7.38542, 1.30962]
|
||||
},
|
||||
"torso2": {
|
||||
"rotation": [7.49294, -0.32621, -2.52136]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [0.1, 0.1, 0]
|
||||
},
|
||||
"mouth_closed_smile": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"mouth_open_smile": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"hair": {
|
||||
"rotation": [-27.5, 0, 0]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [-73.6118, 1.34454, -14.51378]
|
||||
},
|
||||
"finger_front_left": {
|
||||
"rotation": [0, 12.5, 0]
|
||||
},
|
||||
"finger_back_left": {
|
||||
"rotation": [0, -15, 0]
|
||||
},
|
||||
"finger_thumb_left": {
|
||||
"rotation": [0, -20, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [-73.51921, -6.14051, 13.09658]
|
||||
},
|
||||
"finger_front_right": {
|
||||
"rotation": [0, -5, 0]
|
||||
},
|
||||
"finger_back_right": {
|
||||
"rotation": [0, 10, 0]
|
||||
},
|
||||
"finger_thumb_right": {
|
||||
"rotation": [0, 25, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-97.62567, -25.77605, 9.45845],
|
||||
"position": [1.1, 1.65, -5]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [17.5, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-66.51084, 28.74673, 11.67459],
|
||||
"position": [0, 2, -4]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [0, 0.1, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
@@ -197,166 +396,18 @@
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [15, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.quilladin.cry": {
|
||||
"animation_length": 1.5,
|
||||
"bones": {
|
||||
"neck": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [10, 0, 0],
|
||||
"1.25": [10, 0, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
"eye_left": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"mouth": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, -2, 0],
|
||||
"1.25": [0, -2, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
"eye_right": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"mouth2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, -5, 0],
|
||||
"1.25": [0, -5, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
"mouth_closed_smile": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"jaw": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, -3, 0],
|
||||
"1.25": [0, -3, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [-15, 0, 0],
|
||||
"1.25": [-15, 0, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"head2": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [-15, 0, 0],
|
||||
"1.25": [-15, 0, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_closed2": {
|
||||
"position": {
|
||||
"0.25": [0, 0, -0.1],
|
||||
"0.3333": [0, 0, 0],
|
||||
"1.1667": [0, 0, 0],
|
||||
"1.25": [0, 0, -0.1]
|
||||
}
|
||||
},
|
||||
"mouth_open2": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.25": [0, 0, 0],
|
||||
"1.25": [0, 0, 0],
|
||||
"1.5": [0, 0, 0.1]
|
||||
}
|
||||
},
|
||||
"head3": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [-15, 0, 0],
|
||||
"1.25": [-15, 0, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_closed3": {
|
||||
"position": {
|
||||
"0.25": [0, 0, -0.1],
|
||||
"0.3333": [0, 0, 0],
|
||||
"1.1667": [0, 0, 0],
|
||||
"1.25": [0, 0, -0.1]
|
||||
}
|
||||
},
|
||||
"mouth_open3": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.25": [0, 0, 0],
|
||||
"1.25": [0, 0, 0],
|
||||
"1.5": [0, 0, 0.1]
|
||||
}
|
||||
},
|
||||
"mouth_closed": {
|
||||
"position": {
|
||||
"0.25": [0, 0, 0],
|
||||
"0.3333": [0, 0, 0.1],
|
||||
"1.1667": [0, 0, 0.1],
|
||||
"1.25": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_open": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, -0.1],
|
||||
"1.25": [0, 0, -0.1],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"rotation": {
|
||||
"0.0": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
|
||||
"0.25": ["-5+math.sin(q.anim_time*90*6+45)*8", 0, 0],
|
||||
"0.3333": ["-8.29+math.sin(q.anim_time*90*3+95)*6", 0, 0],
|
||||
"1.0": ["-8.29+math.sin(q.anim_time*90*3)*2", 0, 0],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"spike_left": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.25": [0, 0, "-10+math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.3333": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
|
||||
"1.0": [0, 0, "-20+math.sin(q.anim_time*90*3+95)*8"],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"spike_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.25": [0, 0, "10-math.sin(q.anim_time*90*6+45)*8"],
|
||||
"0.3333": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
|
||||
"1.0": [0, 0, "20-math.sin(q.anim_time*90*3+95)*8"],
|
||||
"1.5": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.1667": {
|
||||
"effect": "pokemon.quilladin.cry"
|
||||
"mouth_closed_neutral": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+810
-203
File diff suppressed because it is too large.
Load diff
+96
-45
@@ -147,21 +147,54 @@
|
||||
}
|
||||
},
|
||||
"animation.fennekin.blink": {
|
||||
"animation_length": 0.125,
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.0417": [-0.1, 0, -0.1],
|
||||
"0.0833": [0, 0, 0]
|
||||
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.0417": [0.1, 0, -0.1],
|
||||
"0.0833": [0, 0, 0]
|
||||
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyes_blink_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.fennekin.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -182,27 +215,31 @@
|
||||
"0.5833": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0833": [64.27, 0, 0],
|
||||
"0.125": [70, 0, 0],
|
||||
"0.1667": [38.9, 0, 0],
|
||||
"0.2083": [35, 0, 0],
|
||||
"0.25": [38.75, 0, 0],
|
||||
"0.2917": [65.58, 0, 0],
|
||||
"0.3333": [70, 0, 0],
|
||||
"0.4167": [65.76, 0, 0],
|
||||
"0.5417": [3.9, 0, 0],
|
||||
"0.5833": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_top": {
|
||||
"mouth_open": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [0, -1, 0],
|
||||
"0.5": [0, -1, 0],
|
||||
"0.5417": [0, 0, 0]
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, -1, 0]},
|
||||
"0.1667": {"pre": [0, -1, 0], "post": [0, 0, 0]},
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, -1, 0]},
|
||||
"0.5417": {"pre": [0, -1, 0], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.5417": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.2083": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.5417": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -238,23 +275,30 @@
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"ear_ruff_right": {
|
||||
"rotation": [0, 0, -2.5]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.fennekin.shock": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"pupil_left2": {
|
||||
"scale": [0.7, 0.7, 1]
|
||||
"pupil_left": {
|
||||
"rotation": [-2.1, 0, 0],
|
||||
"position": [0, 0.75, 0.028],
|
||||
"scale": [0.7, 0.8, 1]
|
||||
},
|
||||
"mouth_top": {
|
||||
"mouth_open": {
|
||||
"position": [0, -1, 0]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": [65, 0, 0]
|
||||
},
|
||||
"pupil_right2": {
|
||||
"scale": [0.7, 0.7, 1]
|
||||
"pupil_right": {
|
||||
"rotation": [-2.1, 0, 0],
|
||||
"position": [0, 0.75, 0.028],
|
||||
"scale": [0.7, 0.8, 1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -272,6 +316,12 @@
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_neutral_left": {
|
||||
"position": [-0.1, 0, 0.1]
|
||||
},
|
||||
"eye_neutral_right": {
|
||||
"position": [0.1, 0, 0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -289,6 +339,12 @@
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_neutral_left": {
|
||||
"position": [-0.1, 0, 0.1]
|
||||
},
|
||||
"eye_neutral_right": {
|
||||
"position": [0.1, 0, 0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -298,7 +354,7 @@
|
||||
"eyelid_happy_left": {
|
||||
"position": [0.1, 0, -0.1]
|
||||
},
|
||||
"mouth_top": {
|
||||
"mouth_open": {
|
||||
"position": [0, -1, 0]
|
||||
},
|
||||
"jaw": {
|
||||
@@ -312,23 +368,12 @@
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.fennekin.blush": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"blush_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"blush_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
"eye_neutral_left": {
|
||||
"position": [-0.1, 0, 0.1]
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
"eye_neutral_right": {
|
||||
"position": [0.1, 0, 0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -346,6 +391,12 @@
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_neutral_left": {
|
||||
"position": [-0.1, 0, 0.1]
|
||||
},
|
||||
"eye_neutral_right": {
|
||||
"position": [0.1, 0, 0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+344
-196
@@ -4,36 +4,85 @@
|
||||
"animation.braixen.ground_idle": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"torso": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
"neck": {
|
||||
"rotation": ["10-math.sin(q.anim_time*90*2.5)*2", 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["2.5+math.sin(q.anim_time*90*2.5+45)*2", 0, 0]
|
||||
},
|
||||
"ear_ruff_right": {
|
||||
"rotation": [0, 5, "-1-math.sin(q.anim_time*90*2.5+45)*1"]
|
||||
},
|
||||
"ear_ruff_right2": {
|
||||
"rotation": [0, 10, "-math.sin(q.anim_time*90*2.5)*1"]
|
||||
},
|
||||
"ear_ruff_right3": {
|
||||
"rotation": [0, 10, "-math.sin(q.anim_time*90*2.5-45)*1"]
|
||||
},
|
||||
"ear_ruff_left": {
|
||||
"rotation": [0, -2.5, "1+math.sin(q.anim_time*90*2.5+45)*1"]
|
||||
},
|
||||
"ear_ruff_left2": {
|
||||
"rotation": [0, -10, "math.sin(q.anim_time*90*2.5)*1"]
|
||||
},
|
||||
"ear_ruff_left3": {
|
||||
"rotation": [0, -10, "math.sin(q.anim_time*90*2.5-45)*1"]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [0.95384, "12.1536-math.sin(q.anim_time*90*2.5+45)*2", -42.42961]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [-0.02642, -32.49865, 0.04926]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [0.95384, "-12.1536+math.sin(q.anim_time*90*2.5+45)*2", 42.42961]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [-0.02642, 32.49865, -0.04926]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": ["5+math.sin(q.anim_time*90*2.5)*2", "math.sin(q.anim_time*90*1.25-90)*4", "math.sin(q.anim_time*90*1.25-90)*2"],
|
||||
"position": [0, 0, 0.5]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [0, 0, "math.sin(q.anim_time*90*1.25-45)*4"]
|
||||
},
|
||||
"tail3": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2.5-90)*2", 0, 0]
|
||||
},
|
||||
"tail4": {
|
||||
"rotation": ["math.sin(q.anim_time*90*2.5-135)*2", 0, 0]
|
||||
},
|
||||
"finger_middle_right": {
|
||||
"rotation": [0, 0, -10]
|
||||
},
|
||||
"finger_middle_left": {
|
||||
"rotation": [0, 0, 10]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [-5, 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [0, 7.5, 70]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [-5, 37.5, -2.5]
|
||||
},
|
||||
"hand_left": {
|
||||
"rotation": [57.5, -10, 7.5]
|
||||
"rotation": [0, 0, -25]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [-5, 0, 0]
|
||||
"finger_front_left": {
|
||||
"rotation": [0, 0, 25]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [12.5, 0, 0]
|
||||
"finger_back_left": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
},
|
||||
"tail": {
|
||||
"hand_right": {
|
||||
"rotation": [0, 0, 25]
|
||||
},
|
||||
"finger_front_right": {
|
||||
"rotation": [0, 0, -25]
|
||||
},
|
||||
"finger_back_right": {
|
||||
"rotation": [0, 0, -22.5]
|
||||
},
|
||||
"skirt_front2": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"stick_tail": {
|
||||
"rotation": [-5, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [0.88045, -9.96156, -5.07673]
|
||||
},
|
||||
@@ -49,93 +98,41 @@
|
||||
"leg_right3": {
|
||||
"rotation": [0.00039, 5.00185, -5.99069]
|
||||
},
|
||||
"finger_front_left": {
|
||||
"rotation": [9.99527, 9.84653, 30.20756]
|
||||
},
|
||||
"finger_back_left": {
|
||||
"rotation": [-4.26175, -9.05478, 25.33761]
|
||||
},
|
||||
"finger_middle_left": {
|
||||
"rotation": [0, 0, 27.5]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [65, 22.5, -45],
|
||||
"position": [0, 0, 0.5]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [-15, -82.5, 15]
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": [-10, -22.5, 70]
|
||||
},
|
||||
"finger_front_right": {
|
||||
"rotation": [9.99527, -9.84653, -30.20756]
|
||||
},
|
||||
"finger_middle_right": {
|
||||
"rotation": [0, 0, -27.5]
|
||||
},
|
||||
"finger_back_right": {
|
||||
"rotation": [-4.26175, 9.05478, -25.33761]
|
||||
},
|
||||
"ear_ruff_left2": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
},
|
||||
"ear_ruff_left3": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
},
|
||||
"ear_ruff_left4": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
},
|
||||
"skirt_front2": {
|
||||
"rotation": [-2.5, 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [1, 0, 0]
|
||||
},
|
||||
"ear_ruff_left": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
"skirt_left2": {
|
||||
"rotation": [0, 0, 15]
|
||||
},
|
||||
"ear_ruff_right": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
"skirt_right2": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"ear_ruff_right2": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
"wand": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_right3": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
},
|
||||
"ear_ruff_right4": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
},
|
||||
"skirt_front_left": {
|
||||
"rotation": [0, 0, 10]
|
||||
},
|
||||
"skirt_front_right": {
|
||||
"rotation": [0, 0, -10]
|
||||
"wand_tail": {
|
||||
"rotation": [-10, 0, 0]
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"wand": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.battle_idle": {
|
||||
"loop": true,
|
||||
"animation_length": 0.875,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [0, -52.5, 0],
|
||||
"position": [-0.5, -2.05, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [15, -10, 0]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [-2.5, -2.5, 0]
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"rotation": [-5, 2.5, 0]
|
||||
@@ -162,10 +159,10 @@
|
||||
"rotation": [0, -10, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [-60.09473, -14.92923, -20.56425]
|
||||
"rotation": [-35.09473, -47.42923, -40.56425]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [0, -45, 0]
|
||||
"rotation": [0, -40, 0]
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": [0, 27.5, 15]
|
||||
@@ -180,10 +177,10 @@
|
||||
"rotation": [0, 0, -77.5]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [0, 32.5, -7.5]
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-7.5, 20, -5]
|
||||
"rotation": [-10, 0, 0]
|
||||
},
|
||||
"ear_ruff_left2": {
|
||||
"rotation": [0, -12.5, 0]
|
||||
@@ -216,32 +213,28 @@
|
||||
"scale": 0
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-0.5, -35, -26],
|
||||
"position": [1, 0, 0]
|
||||
"rotation": [5.38152, -19.291, -15.91527]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [10, 0, 0]
|
||||
"rotation": [25, 0, 0]
|
||||
},
|
||||
"leg_left3": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
"rotation": [-16.28567, 14.26008, -10.25103]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [29.78634, -18.01295, 11.28749],
|
||||
"position": [0, -0.5, 0]
|
||||
"rotation": [-12.32417, 1.61888, 12.39638]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-7.80674, 36.44232, 19.22515],
|
||||
"position": [-1, -0.75, -0.75]
|
||||
"rotation": [-27.5, 0, 0]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [29.75489, -5.05904, 8.04401]
|
||||
"rotation": [27.25489, -5.05904, 5.54401]
|
||||
},
|
||||
"leg_right3": {
|
||||
"rotation": [-30.5, -2, -1]
|
||||
"rotation": [-25, 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [22.5, 20, -10],
|
||||
"position": [0, -0.5, 0]
|
||||
"rotation": [24.78729, 3.74196, -6.50446]
|
||||
},
|
||||
"ear_ruff_right2": {
|
||||
"rotation": [0, 12.5, 0]
|
||||
@@ -252,111 +245,31 @@
|
||||
"ear_ruff_right4": {
|
||||
"rotation": [0, 17.5, 0]
|
||||
},
|
||||
"stick_hand": {
|
||||
"rotation": [90, 10, 0],
|
||||
"position": [6.5, -1, -0.5]
|
||||
},
|
||||
"skirt_front_left": {
|
||||
"rotation": [0, 0, 7.5]
|
||||
},
|
||||
"skirt_front_right": {
|
||||
"rotation": [0, 0, -2.5]
|
||||
},
|
||||
"fire": {
|
||||
"rotation": [-7.24721, -1.93597, -14.87738]
|
||||
},
|
||||
"wand": {
|
||||
"rotation": [22.01816, -4.75113, 11.57518],
|
||||
"position": [14, -7, -11.5]
|
||||
},
|
||||
"wand_tail": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"skirt": {
|
||||
"rotation": [-5, 0, 0]
|
||||
},
|
||||
"body_wand": {
|
||||
"rotation": [0, -52.5, 0],
|
||||
"position": [-0.5, -2.05, 0]
|
||||
},
|
||||
"torso_wand": {
|
||||
"rotation": [15, -10, 0]
|
||||
},
|
||||
"waist_wand": {
|
||||
"rotation": [-2.5, -2.5, 0]
|
||||
},
|
||||
"chest_wand": {
|
||||
"rotation": [-5, 2.5, 0]
|
||||
},
|
||||
"arm_wand": {
|
||||
"rotation": [-60.09473, -14.92923, -20.56425]
|
||||
},
|
||||
"arm2_wand": {
|
||||
"rotation": [0, -45, 0]
|
||||
},
|
||||
"hand_wand": {
|
||||
"rotation": [0, 27.5, 15]
|
||||
},
|
||||
"wand": {
|
||||
"rotation": [90, 10, 0],
|
||||
"position": [6.5, -1, -0.5]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.125": {"pre": [0.1, 0, -0.1], "post": [0.1, 0, -0.1]},
|
||||
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.125": {"pre": [-0.1, 0, -0.1], "post": [-0.1, 0, -0.1]},
|
||||
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.cry": {
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [-2.05, 0, 0],
|
||||
"0.0833": [-2.7, 0, 0],
|
||||
"0.1667": [4, 0, 0],
|
||||
"0.2083": [3.72, 0, 0],
|
||||
"0.375": [-2.38, 0, 0],
|
||||
"0.4167": [-2.7, 0, 0],
|
||||
"0.5": [-2.4, 0, 0],
|
||||
"0.6667": [-0.3, 0, 0],
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [27.2, 0, 0],
|
||||
"0.0833": [30, 0, 0],
|
||||
"0.1667": [19, 0, 0],
|
||||
"0.2083": [17.65, 0, 0],
|
||||
"0.3333": [57.56, 0, 0],
|
||||
"0.375": [60, 0, 0],
|
||||
"0.4167": [56.99, 0, 0],
|
||||
"0.7083": [4.23, 0, 0],
|
||||
"0.7917": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"fangs": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [0, -0.5, 0],
|
||||
"0.625": [0, -0.5, 0],
|
||||
"0.6667": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.0": {
|
||||
"effect": "pokemon.braixen.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -478,20 +391,255 @@
|
||||
"finger_back_right": {
|
||||
"rotation": [0, 0, -22.5]
|
||||
},
|
||||
"stick_hand": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_left4": {
|
||||
"rotation": [0, 12.5, 0]
|
||||
},
|
||||
"ear_ruff_right4": {
|
||||
"rotation": [0, -12.5, 0]
|
||||
},
|
||||
"wand": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, -0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [-0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0.1],
|
||||
"0.1667": {"pre": [0.1, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.cry": {
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [-2.05, 0, 0],
|
||||
"0.0833": [-2.7, 0, 0],
|
||||
"0.1667": [4, 0, 0],
|
||||
"0.2083": [3.72, 0, 0],
|
||||
"0.375": [-2.38, 0, 0],
|
||||
"0.4167": [-2.7, 0, 0],
|
||||
"0.5": [-2.4, 0, 0],
|
||||
"0.6667": [-0.3, 0, 0],
|
||||
"0.75": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [27.2, 0, 0],
|
||||
"0.0833": [30, 0, 0],
|
||||
"0.1667": [19, 0, 0],
|
||||
"0.2083": [17.65, 0, 0],
|
||||
"0.3333": [57.56, 0, 0],
|
||||
"0.375": [60, 0, 0],
|
||||
"0.4167": [56.99, 0, 0],
|
||||
"0.7083": [4.23, 0, 0],
|
||||
"0.7917": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]},
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||
"0.8333": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
},
|
||||
"mouth_open_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]},
|
||||
"0.25": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||
"0.8333": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sound_effects": {
|
||||
"0.0": {
|
||||
"effect": "pokemon.braixen.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"face": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.braixen.pose": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [-12.5, -30, 0]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"chest": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [12.25294, -38.3808, 35.72104]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [0, 5, -15]
|
||||
},
|
||||
"hand_left": {
|
||||
"rotation": [0, 0, -15]
|
||||
},
|
||||
"neck": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [12.48848, -0.54094, 2.44081]
|
||||
},
|
||||
"jaw": {
|
||||
"rotation": [70, 0, 0]
|
||||
},
|
||||
"ear_ruff_left2": {
|
||||
"rotation": [0, -12.5, 0]
|
||||
},
|
||||
"ear_ruff_left3": {
|
||||
"rotation": [0, -7.5, 0]
|
||||
},
|
||||
"ear_ruff_left4": {
|
||||
"rotation": [0, 12.5, 0]
|
||||
"rotation": [0, -22.5, 0]
|
||||
},
|
||||
"tail": {
|
||||
"rotation": [7.08681, -3.21132, 14.65993]
|
||||
},
|
||||
"tail2": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [13.9042, 5.68422, -21.80633]
|
||||
},
|
||||
"leg_left3": {
|
||||
"rotation": [17.5, 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [47.5, 0, 0],
|
||||
"position": [0, 0, -1]
|
||||
},
|
||||
"ear_ruff_right": {
|
||||
"rotation": [0, -12.5, 0]
|
||||
},
|
||||
"ear_ruff_right2": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
},
|
||||
"ear_ruff_right3": {
|
||||
"rotation": [0, 7.5, 0]
|
||||
},
|
||||
"ear_ruff_right4": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [41.62332, 22.64192, -3.4873]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [-26.43596, -58.95768, 35.12627]
|
||||
},
|
||||
"hand_right": {
|
||||
"rotation": [2.5, 0, 17.5]
|
||||
},
|
||||
"finger_front_right": {
|
||||
"rotation": [0, -7.5, -65]
|
||||
},
|
||||
"finger_middle_right": {
|
||||
"rotation": [0, 0, -62.5]
|
||||
},
|
||||
"finger_back_right": {
|
||||
"rotation": [0, 12.5, -67.5]
|
||||
},
|
||||
"body_wand": {
|
||||
"rotation": [-12.5, -30, 0]
|
||||
},
|
||||
"waist_wand": {
|
||||
"rotation": [0, 5, 0]
|
||||
},
|
||||
"chest_wand": {
|
||||
"rotation": [5, 0, 0]
|
||||
},
|
||||
"arm_wand": {
|
||||
"rotation": [41.62332, 22.64192, -3.4873]
|
||||
},
|
||||
"arm2_wand": {
|
||||
"rotation": [-26.43596, -58.95768, 35.12627]
|
||||
},
|
||||
"hand_wand": {
|
||||
"rotation": [2.5, 0, 17.5]
|
||||
},
|
||||
"wand": {
|
||||
"rotation": [-87.5, 0, 0],
|
||||
"position": [6, -1, -6]
|
||||
},
|
||||
"fire": {
|
||||
"rotation": [47.5, 0, 0]
|
||||
},
|
||||
"wand_tail": {
|
||||
"scale": 0
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-16.24074, 6.60796, 21.55613]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [35, 0, 0]
|
||||
},
|
||||
"leg_right3": {
|
||||
"rotation": [-47.5, 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [27.5, 0, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"ear_ruff_shock_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_shock_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"ear_ruff_right4": {
|
||||
"rotation": [0, -12.5, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7671
-316
File diff suppressed because it is too large.
Load diff
+473
-148
@@ -6,22 +6,22 @@
|
||||
"bones": {
|
||||
"arm_left": {
|
||||
"rotation": [62.63351, "69.9361+Math.cos((query.anim_time-0.3) * 90 * 2) * 3", 54.27769],
|
||||
"position": [0, "Math.cos((query.anim_time-0.1) * 90 * 2) * 0.1", "-1+Math.sin((query.anim_time-0.1) * 90 * 2) * 0.1"]
|
||||
"position": [0, "Math.cos((query.anim_time-0.1) * 90 * 2) * 0.1", 0]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [0, 10, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-119.85791, -37.10567, 15.80757]
|
||||
"rotation": [-123.90298, -35.73903, 18.40939]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [102.79362, 12.19908, 2.74715],
|
||||
"position": [0, 0.1, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
"rotation": [4.99527, -0.21782, 2.4905]
|
||||
},
|
||||
"finger_index_left": {
|
||||
"finger_front_left": {
|
||||
"rotation": [0, 0, 10]
|
||||
},
|
||||
"wrist_left": {
|
||||
@@ -30,62 +30,63 @@
|
||||
"head": {
|
||||
"rotation": ["-25+Math.cos((query.anim_time-0.4) * 90 * 2) * -5", 0, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["15+Math.cos((query.anim_time-0.2) * 90 * 2) * 2", 0, 0],
|
||||
"position": [0, "-1+Math.cos((query.anim_time) * 90 * 2) * 0.2", 0]
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": ["7.5+Math.cos((query.anim_time-0.3) * 90 * 2) * 2", 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-118.93803, 29.14089, -15.06885]
|
||||
"rotation": [-123.90298, 35.73903, -18.40939]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [102.79362, -12.19908, -2.74715],
|
||||
"position": [0, 0.1, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
"rotation": [4.99527, 0.21782, -2.4905]
|
||||
},
|
||||
"body": {
|
||||
"rotation": [7.5, 0, 0],
|
||||
"position": [0, -5.2, 0]
|
||||
"position": [0, -4.2, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [62.63351, "-69.9361+Math.cos((query.anim_time-0.3) * 90 * 2) * -3", -54.27769],
|
||||
"position": [0, "Math.cos((query.anim_time-0.1) * 90 * 2) * 0.1", "-1+Math.sin((query.anim_time-0.1) * 90 * 2) * 0.1"]
|
||||
"position": [0, "Math.cos((query.anim_time-0.1) * 90 * 2) * 0.1", 0]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [0, -10, 0]
|
||||
},
|
||||
"finger_index_right": {
|
||||
"finger_front_right": {
|
||||
"rotation": [0, 0, -10]
|
||||
},
|
||||
"froakie": {
|
||||
"position": [0, 1, 0]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [0, 0, -0.125]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"rotation": [0, 0, -5],
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": [0, 0, 0.125]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0, 0, -0.175]
|
||||
"position": [0, 0.5, -0.1]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"rotation": [0, 0, 5],
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [0, 0, 0.05]
|
||||
"position": [0, 0.5, -0.1]
|
||||
},
|
||||
"wrist_right": {
|
||||
"rotation": [0, 0, 20]
|
||||
},
|
||||
"iris_left": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"iris_right": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"chest_bubble_front": {
|
||||
"rotation": [22.5, 0, 0]
|
||||
},
|
||||
"back_bubbles": {
|
||||
"rotation": [-25, 0, 0]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": ["15+Math.cos((query.anim_time-0.2) * 90 * 2) * 2", 0, 0],
|
||||
"position": [0, "-1+Math.cos((query.anim_time) * 90 * 2) * 0.2", 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": ["7.5+Math.cos((query.anim_time-0.3) * 90 * 2) * 2", 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -96,37 +97,18 @@
|
||||
"body": {
|
||||
"position": {
|
||||
"0.0": [0, -4.5, -1.5],
|
||||
"0.2917": [0, -4.5, 4],
|
||||
"0.25": [0, -4.5, 3.21],
|
||||
"0.2917": [0, -3.4, 4],
|
||||
"0.375": [0, 0.25, 0.5],
|
||||
"0.5": [0, 1.75, -3],
|
||||
"0.5833": [0, 1.62, -4.8],
|
||||
"0.6667": [0, 1, -5.5],
|
||||
"0.7917": [0, -4.5, -6],
|
||||
"0.7917": [0, -3.7, -6],
|
||||
"0.875": [0, -4.5, -3.2],
|
||||
"1.0": [0, -4.5, -1.5]
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"rotation": {
|
||||
"0.0": [37.5, 0, 0],
|
||||
"0.2917": [35, 0, 0],
|
||||
"0.5": [57.5, 0, 0],
|
||||
"0.625": [60, 0, 0],
|
||||
"0.7083": [52.5, 0, 0],
|
||||
"0.7917": [37.5, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.2917": [0, -1, 0],
|
||||
"0.5": [0, 0, 0],
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.7917": [0, -0.5, -0.5],
|
||||
"0.8333": [0, -0.37, -0.325],
|
||||
"0.875": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": {
|
||||
"0.0": [12.25, 0, 0],
|
||||
"0.125": [11.42, 0, 0],
|
||||
@@ -159,14 +141,12 @@
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"rotation": [0, 0, -5],
|
||||
"position": [0, 0.5, -0.1]
|
||||
},
|
||||
"iris_left": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"rotation": [0, 0, 5],
|
||||
"position": [0, 0.5, -0.1]
|
||||
},
|
||||
"chest_bubble": {
|
||||
@@ -264,7 +244,7 @@
|
||||
"0.5": [16.7402, 0.13182, 9.04799],
|
||||
"0.5417": [9.7402, 0.13182, 9.04799],
|
||||
"0.75": [-80.7598, 0.13182, 9.04799],
|
||||
"0.7917": [-102.39241, 5.22351, 7.24834],
|
||||
"0.7917": [-111.19241, 5.22351, 7.24834],
|
||||
"1.0": [-120.5555, 30.68198, -1.74989]
|
||||
},
|
||||
"position": {
|
||||
@@ -306,7 +286,7 @@
|
||||
"0.5": [16.7402, -0.13182, -9.04799],
|
||||
"0.5417": [9.7402, -0.13182, -9.04799],
|
||||
"0.75": [-80.7598, -0.13182, -9.04799],
|
||||
"0.7917": [-102.39241, -5.22351, -7.24834],
|
||||
"0.7917": [-111.19241, -5.22351, -7.24834],
|
||||
"1.0": [-120.5555, -30.68198, 1.74989]
|
||||
},
|
||||
"position": {
|
||||
@@ -339,6 +319,43 @@
|
||||
"0.75": [-17.5, 0, 0],
|
||||
"1.0": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": {
|
||||
"0.0": [37.5, 0, 0],
|
||||
"0.2917": [35, 0, 0],
|
||||
"0.5": [57.5, 0, 0],
|
||||
"0.625": [60, 0, 0],
|
||||
"0.7083": [52.5, 0, 0],
|
||||
"0.7917": [37.5, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [0, 0, 0],
|
||||
"0.2917": [0, -1, 0],
|
||||
"0.5": [0, 0, 0],
|
||||
"0.7083": [0, 0, 0],
|
||||
"0.7917": [0, -0.5, -0.5],
|
||||
"0.8333": [0, -0.37, -0.325],
|
||||
"0.875": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": {
|
||||
"0.0": [12.25, 0, 0],
|
||||
"0.125": [11.42, 0, 0],
|
||||
"0.25": [8.25, 0, 0],
|
||||
"0.375": [0, 0, 0],
|
||||
"0.5": [-2.5, 0, 0],
|
||||
"0.625": [0, 0, 0],
|
||||
"0.75": [8.25, 0, 0],
|
||||
"0.8333": [16.81, 0, 0],
|
||||
"0.9167": [13.17, 0, 0],
|
||||
"1.0": [12.25, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -349,10 +366,7 @@
|
||||
"rotation": [55, 0, 0],
|
||||
"position": [0, "-8+Math.cos((query.anim_time) * 90 * 2) * 0.2", -1]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": ["-12.5+Math.cos((query.anim_time-0.4) * 90 * 2) * 2", 0, 0]
|
||||
},
|
||||
"head": {
|
||||
@@ -393,6 +407,15 @@
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [40, 0, 0]
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": ["-12.5+Math.cos((query.anim_time-0.4) * 90 * 2) * 2", 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -415,10 +438,7 @@
|
||||
"1.5": [0, "-9+Math.cos((query.anim_time) * 90 * (2+2/3)) * 0.2", -1.5]
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["10+Math.cos((query.anim_time+0.2) * 90 * (2+2/3)) * 5", 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": [-7.5, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
@@ -523,6 +543,15 @@
|
||||
"1.0833": [5, 0, 0],
|
||||
"1.5": [45, 0, 0]
|
||||
}
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": ["10+Math.cos((query.anim_time+0.2) * 90 * (2+2/3)) * 5", 0, 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": [-7.5, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -530,13 +559,9 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -4, 0]
|
||||
"position": [0, -3.75, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["34.9055+Math.cos((query.anim_time-0.3) * 90 * 2) * 3", 2.49762, -4.33287],
|
||||
"position": [0, "-0.5+Math.cos((query.anim_time) * 90 * 2) * 0.2", 0]
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": ["-12.4539+Math.cos((query.anim_time-0.5) * 90 * 2) * 2", 1.08089, 4.88206]
|
||||
},
|
||||
"head": {
|
||||
@@ -568,19 +593,19 @@
|
||||
"rotation": [-95.27946, 39.63389, 12.13638]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [102.5, 0, 0]
|
||||
"rotation": [105, 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [0, 0, -5]
|
||||
"rotation": [0, 0, -7.5]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-76.73021, -74.12482, -31.13382]
|
||||
"rotation": [-106.55899, -73.36545, 5.05162]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [92.5, 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [15, 0, 0]
|
||||
"rotation": [7.5, 0, 0]
|
||||
},
|
||||
"iris_right": {
|
||||
"position": [0, -0.3, 0]
|
||||
@@ -593,26 +618,22 @@
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": ["34.9055+Math.cos((query.anim_time-0.3) * 90 * 2) * 3", 2.49762, -4.33287],
|
||||
"position": [0, "-0.5+Math.cos((query.anim_time) * 90 * 2) * 0.2", 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": ["-12.4539+Math.cos((query.anim_time-0.5) * 90 * 2) * 2", 1.08089, 4.88206]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.froakie.blink": {
|
||||
"animation_length": 0.16667,
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [-0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.125": [0, 0, -0.1],
|
||||
"0.1667": [0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"iris_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
@@ -626,6 +647,79 @@
|
||||
"0.125": [0, 0, 0.1],
|
||||
"0.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0.5, -0.1],
|
||||
"0.125": [0, 0.5, -0.1],
|
||||
"0.1667": [-0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0.5, -0.1],
|
||||
"0.125": [0, 0.5, -0.1],
|
||||
"0.1667": [-0.1, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_ditto_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, 0.1],
|
||||
"post": [0, 0, 0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_closed_ditto_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_ditto_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, 0.1],
|
||||
"post": [0, 0, 0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_closed_ditto_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, -0.1],
|
||||
"0.1667": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.froakie.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"eye_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"mouth": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto_left": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"face_ditto_right": {
|
||||
"position": [0, 0, -0.1]
|
||||
},
|
||||
"face_ditto_mouth": {
|
||||
"position": [0, 0, -0.1]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -667,17 +761,7 @@
|
||||
"1.9583": [0, -8.5, 18.25]
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
"rotation": {
|
||||
"0.0": [17.5, 0, 0],
|
||||
"0.3333": [15.55, 0, 0],
|
||||
"0.4583": [33.5, 0, 0],
|
||||
"0.5833": [29.06, 0, 0],
|
||||
"0.6667": [19, 0, 0],
|
||||
"0.8333": [14, 0, 0]
|
||||
}
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": {
|
||||
"0.0": [10, 0, 0],
|
||||
"0.2083": [27.5, 0, 0],
|
||||
@@ -709,22 +793,6 @@
|
||||
"2.2917": [11.5, -46, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.4583": [0, 0, -0.15],
|
||||
"0.5": [0, 0, 0.05],
|
||||
"0.9583": [0, 0, 0.05],
|
||||
"1.0": [0, 0, -0.15]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.4583": [0, 0, -0.125],
|
||||
"0.5": [0, 0, -0.03],
|
||||
"0.9583": [0, 0, -0.03],
|
||||
"1.0": [0, 0, -0.125]
|
||||
}
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": {
|
||||
"0.0": [78.30408, -64.53645, -79.41322],
|
||||
@@ -771,7 +839,7 @@
|
||||
"2.4167": [35, 0, 15]
|
||||
}
|
||||
},
|
||||
"finger_index_right": {
|
||||
"finger_front_right": {
|
||||
"rotation": {
|
||||
"1.875": [0, 0, 0],
|
||||
"2.2083": [-1.88975, 6.7809, -38.71695]
|
||||
@@ -783,7 +851,7 @@
|
||||
"2.2083": [0, 0, -20]
|
||||
}
|
||||
},
|
||||
"finger_ring_right": {
|
||||
"finger_back_right": {
|
||||
"rotation": {
|
||||
"1.875": [0, 0, 0],
|
||||
"2.2083": [0, 0, -30]
|
||||
@@ -835,7 +903,7 @@
|
||||
"2.4167": [35, 0, -15]
|
||||
}
|
||||
},
|
||||
"finger_index_left": {
|
||||
"finger_front_left": {
|
||||
"rotation": {
|
||||
"1.875": [0, 0, 0],
|
||||
"2.2083": [-1.88975, -6.7809, 38.71695]
|
||||
@@ -847,7 +915,7 @@
|
||||
"2.2083": [0, 0, 20]
|
||||
}
|
||||
},
|
||||
"finger_ring_left": {
|
||||
"finger_back_left": {
|
||||
"rotation": {
|
||||
"1.875": [0, 0, 0],
|
||||
"2.2083": [0, 0, 30]
|
||||
@@ -976,6 +1044,67 @@
|
||||
"2.1667": [34, 0, 0],
|
||||
"2.3333": [47.5, 0, 0]
|
||||
}
|
||||
},
|
||||
"iris_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.4583": [0, 0, 0.1],
|
||||
"0.5": [0, 0, 0],
|
||||
"0.9583": [0, 0, 0],
|
||||
"1.0": [0, 0, 0.1]
|
||||
}
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": {
|
||||
"0.4583": [0, 0.5, -0.125],
|
||||
"0.5": [0, 0, -0.03],
|
||||
"0.9583": [0, 0, -0.03],
|
||||
"1.0": [0, 0.5, -0.125]
|
||||
}
|
||||
},
|
||||
"iris_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0.1],
|
||||
"0.4583": [0, 0, 0.1],
|
||||
"0.5": [0, 0, 0],
|
||||
"0.9583": [0, 0, 0],
|
||||
"1.0": [0, 0, 0.1]
|
||||
}
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": {
|
||||
"0.4583": [0, 0.5, -0.125],
|
||||
"0.5": [0, 0, -0.03],
|
||||
"0.9583": [0, 0, -0.03],
|
||||
"1.0": [0, 0.5, -0.125]
|
||||
}
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": {
|
||||
"0.0": [17.5, 0, 0],
|
||||
"0.3333": [15.55, 0, 0],
|
||||
"0.4583": [33.5, 0, 0],
|
||||
"0.5833": [29.06, 0, 0],
|
||||
"0.6667": [19, 0, 0],
|
||||
"0.8333": [14, 0, 0]
|
||||
}
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": {
|
||||
"0.0": [10, 0, 0],
|
||||
"0.2083": [27.5, 0, 0],
|
||||
"0.4583": [28.93, 0, 0],
|
||||
"0.7917": [25, 0, 0],
|
||||
"1.2083": [0, 0, 0],
|
||||
"1.5417": [10, 0, 0],
|
||||
"1.75": [27.5, 0, 0],
|
||||
"1.875": [15, 0, 0],
|
||||
"2.0": [19, 0, 0],
|
||||
"2.1667": [20.175, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -984,25 +1113,16 @@
|
||||
"bones": {
|
||||
"body": {
|
||||
"rotation": [-20, 0, 0],
|
||||
"position": [0, -6.75, 0]
|
||||
"position": [0, -6.5, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["30+Math.cos((query.anim_time) * 90 * 1) * 2", 0, 0]
|
||||
},
|
||||
"chest": {
|
||||
"torso2": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": ["Math.cos((query.anim_time-0.3) * 90 * 1) * 4", 0, 0]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [0, 0, -0.2]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0, 0, -0.125]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [84.59842, "-62.3954+Math.cos((query.anim_time) * 90 * 1) * -2", -85.2103]
|
||||
"rotation": [84.0524, "-64.8832+Math.cos((query.anim_time) * 90 * 1) * -2", -84.61105]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [0, 0, 22.5]
|
||||
@@ -1011,7 +1131,7 @@
|
||||
"rotation": [0, 0, 17.5]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [84.59842, "62.3954+Math.cos((query.anim_time) * 90 * 1) * 2", 85.2103]
|
||||
"rotation": [83.37018, "67.3682+Math.cos((query.anim_time) * 90 * 1) * 2", 83.87609]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [0, 0, -20]
|
||||
@@ -1023,38 +1143,106 @@
|
||||
"rotation": [-131.83574, 27.83165, -2.25974]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [105, 0, 0]
|
||||
"rotation": [100, 0, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-131.83574, -27.83165, 2.25974]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [107.5, 0, 0]
|
||||
"rotation": [100, 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [27.5, 0, 0]
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"iris_left": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0, -0.125]
|
||||
},
|
||||
"iris_right": {
|
||||
"position": [0, 0, 0.1]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0, 0, -0.2]
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [45, 0, 0]
|
||||
},
|
||||
"waist": {
|
||||
"rotation": ["30+Math.cos((query.anim_time) * 90 * 1) * 2", 0, 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": [15, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.froakie.cry": {
|
||||
"animation_length": 1,
|
||||
"animation_length": 1.1667,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.2083": [-12.5, 0, 0],
|
||||
"0.4167": [-14, 0, 0],
|
||||
"0.625": [-14.18, 0, 0],
|
||||
"0.7917": [-12.5, 0, 0],
|
||||
"1.0": [0, 0, 0]
|
||||
"0.4583": [-14, 0, 0],
|
||||
"0.7083": [-14.18, 0, 0],
|
||||
"0.9167": [-12.5, 0, 0],
|
||||
"1.1667": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"mouth_open": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": [0, 0, -0.125],
|
||||
"0.6667": [0, 0, -0.125],
|
||||
"0.7083": [0, 0, 0]
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.125]
|
||||
},
|
||||
"1.0417": {
|
||||
"pre": [0, 0, -0.125],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"mouth_closed": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0.1]
|
||||
},
|
||||
"1.0417": {
|
||||
"pre": [0, 0, 0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"mouth_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, 0.1]
|
||||
},
|
||||
"1.0417": {
|
||||
"pre": [0, 0, 0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"mouth_open_ditto": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.0417": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, 0, -0.1]
|
||||
},
|
||||
"1.0417": {
|
||||
"pre": [0, 0, -0.1],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1063,6 +1251,143 @@
|
||||
"effect": "pokemon.froakie.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.froakie.hoodie": {
|
||||
"animation_length": 1,
|
||||
"bones": {
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.4583": [0, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, -0.85, -3.65]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.4583": [0, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, -0.85, -3.65]
|
||||
}
|
||||
}
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"rotation": {
|
||||
"0.0": [-140, 0, 0],
|
||||
"0.25": [-140, 0, 0],
|
||||
"0.5": [0, 0, 0]
|
||||
},
|
||||
"position": {
|
||||
"0.0": [0, -1, -1],
|
||||
"0.25": [0, -1, -1],
|
||||
"0.5": [0, 0, 0]
|
||||
},
|
||||
"scale": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.25": [1, 0.5, 0.5],
|
||||
"0.5": [1, 1, 1]
|
||||
}
|
||||
},
|
||||
"back_bubbles": {
|
||||
"scale": {
|
||||
"0.0": [1, 1, 1],
|
||||
"0.2083": [0, 0, 0],
|
||||
"0.5": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eye_ditto_left": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.4583": [0, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, -0.85, -3.65]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_ditto_right": {
|
||||
"position": {
|
||||
"0.0": [0, 0, 0],
|
||||
"0.4583": [0, 0, 0],
|
||||
"0.5": {
|
||||
"pre": [0, 0, 0],
|
||||
"post": [0, -0.85, -3.65]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.froakie.pose": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"torso2": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
},
|
||||
"head": {
|
||||
"rotation": [-10, 0, 0]
|
||||
},
|
||||
"iris_left": {
|
||||
"position": [-0.25, 0, 0]
|
||||
},
|
||||
"iris_right": {
|
||||
"position": [-1, 0, 0]
|
||||
},
|
||||
"chest_bubble_front": {
|
||||
"rotation": [10, 0, 0]
|
||||
},
|
||||
"arm_left": {
|
||||
"rotation": [72.75378, 58.72996, 59.37871],
|
||||
"position": [0, 0, -1]
|
||||
},
|
||||
"arm_left2": {
|
||||
"rotation": [0, 22.5, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [72.75378, -58.72996, -59.37871],
|
||||
"position": [0, 0, -1]
|
||||
},
|
||||
"arm_right2": {
|
||||
"rotation": [0, -22.5, 0]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-110, -45, 0],
|
||||
"position": [0.5, -0.5, 0]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [140, 0, 0],
|
||||
"position": [0, 0, 1.5]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [-32.5, 0, 0]
|
||||
},
|
||||
"leg_right": {
|
||||
"rotation": [-110, 45, 0],
|
||||
"position": [-0.5, -0.5, 0]
|
||||
},
|
||||
"leg_right2": {
|
||||
"rotation": [140, 0, 0],
|
||||
"position": [0, 0, 1.5]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [-32.5, 0, 0]
|
||||
},
|
||||
"body": {
|
||||
"position": [0, -3.25, 0]
|
||||
},
|
||||
"bubble_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"waist": {
|
||||
"rotation": [15, 0, 0]
|
||||
},
|
||||
"ftorso2": {
|
||||
"rotation": [2.5, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+360
-126
@@ -5,7 +5,7 @@
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"body": {
|
||||
"position": [0, -0.5, 0]
|
||||
"position": [0, -0.8, 0]
|
||||
},
|
||||
"torso": {
|
||||
"rotation": ["-12.5+Math.cos((query.anim_time) * 90 * 1) * 3", 0, 0]
|
||||
@@ -25,27 +25,12 @@
|
||||
"eyelid_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"eyelid_right2": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [0, 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.075, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0.075, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.125, 0, 0]
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": ["-30+Math.cos((query.anim_time-0.5) * 90 * 1) * 6", 0, 0]
|
||||
},
|
||||
@@ -58,9 +43,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["5.2207+Math.cos((query.anim_time-1.1) * 90 * 1) * 7", 9.65594, 2.61298]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["Math.cos((query.anim_time-1.3) * 90 * 1) * 7", 20, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [32.60614, "12.24+Math.cos((query.anim_time-0.5) * 90 * 1) * 3", -61.27652]
|
||||
},
|
||||
@@ -98,7 +80,7 @@
|
||||
"rotation": [25, 0, 0]
|
||||
},
|
||||
"foot_right": {
|
||||
"rotation": [-7.5, 0, 0]
|
||||
"rotation": [-9.99628, -0.36741, -1.45595]
|
||||
},
|
||||
"leg_left": {
|
||||
"rotation": [-13.31673, -34.50311, -4.50012]
|
||||
@@ -107,7 +89,58 @@
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [-10, 0, 0]
|
||||
"rotation": [-6.97816, 0.79759, 3.92399]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["5.2207+Math.cos((query.anim_time-1.6) * 90 * 1) * 7", 9.65594, 2.61298]
|
||||
},
|
||||
"finger_index_left2": {
|
||||
"rotation": [0, 0, 25]
|
||||
},
|
||||
"finger_middle_left2": {
|
||||
"rotation": [0, 0, 7.5]
|
||||
},
|
||||
"finger_ring_left2": {
|
||||
"rotation": [0, 0, 17.5]
|
||||
},
|
||||
"finger_index_right2": {
|
||||
"rotation": [0, 0, -25]
|
||||
},
|
||||
"finger_middle_right2": {
|
||||
"rotation": [0, 0, -7.5]
|
||||
},
|
||||
"finger_ring_right2": {
|
||||
"rotation": [0, 0, -17.5]
|
||||
},
|
||||
"foot_left2": {
|
||||
"rotation": [-5.5, 0, 0]
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -128,21 +161,12 @@
|
||||
"eyelid_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.025, 0, 0]
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": ["-20+Math.cos((query.anim_time-0.5) * 90 * (2+2/3)*2) * -4", 0, 0]
|
||||
},
|
||||
@@ -155,9 +179,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["-15+Math.cos((query.anim_time-0.8) * 90 * (2+2/3)*2) * -5", 0, 0]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": [-17.5, 0, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [0, "(Math.cos((query.anim_time) * 90 * (2+2/3)) * -10)", -65]
|
||||
},
|
||||
@@ -233,6 +254,57 @@
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [0, 0, 10]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["-2.918+Math.cos((query.anim_time-1.3) * 90 * (2+2/3)*2) * -5", -3.21935, -0.08661]
|
||||
},
|
||||
"finger_index_left2": {
|
||||
"rotation": [0, 0, 12.5]
|
||||
},
|
||||
"finger_middle_left2": {
|
||||
"rotation": [0, 0, 7.5]
|
||||
},
|
||||
"finger_ring_left2": {
|
||||
"rotation": [0, 0, 17.5]
|
||||
},
|
||||
"finger_index_right2": {
|
||||
"rotation": [0, 0, -12.5]
|
||||
},
|
||||
"finger_middle_right2": {
|
||||
"rotation": [0, 0, -7.5]
|
||||
},
|
||||
"finger_ring_right2": {
|
||||
"rotation": [0, 0, -17.5]
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -259,21 +331,12 @@
|
||||
"eyelid_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0.075, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": ["-42.5+Math.cos((query.anim_time-0.6) * 90 * 1) * 4", 0, 0]
|
||||
},
|
||||
@@ -286,9 +349,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["-7.5283+Math.cos((query.anim_time-1.1) * 90 * 1) * 8", -4.95712, 0.65426]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["-12.6044+Math.cos((query.anim_time-1.3) * 90 * 1) * 8", -7.32123, 1.63219]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [-59.02395, -19.49124, "8.0938+Math.cos((query.anim_time-0.4) * 90 * 1) * -4"]
|
||||
},
|
||||
@@ -324,6 +384,39 @@
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [40, 0, 0]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": [-15, 0, 0]
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -351,21 +444,12 @@
|
||||
"eyelid_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0.075, 0, 0]
|
||||
},
|
||||
"eyelid_right2": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_right": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": ["-42.5+Math.cos((query.anim_time-0.6) * 90 * (2+2/3)) * 4", 0, 0]
|
||||
},
|
||||
@@ -378,9 +462,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["-7.5283+Math.cos((query.anim_time-1.1) * 90 * (8/3)) * 8", -4.95712, 0.65426]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["-12.6044+Math.cos((query.anim_time-1.3) * 90 * (8/3)) * 8", -7.32123, 1.63219]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [-57.88953, -0.0813, "-51.5519+Math.cos((query.anim_time-0.35) * 90 * (2+2/3)) * 6"]
|
||||
},
|
||||
@@ -469,6 +550,39 @@
|
||||
},
|
||||
"foot_left2": {
|
||||
"rotation": [0, 0, 0]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["-7.5283+Math.cos((query.anim_time-1.8) * 90 * (8/3)) * 8", -4.95712, 0.65426]
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_right": {
|
||||
"position": [0.05, 0, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"pupil_left": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"pupil_eyelid_left": {
|
||||
"position": [0, 0.5, 0]
|
||||
},
|
||||
"eyelid_left2": {
|
||||
"position": [-0.05, 0, 0]
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -503,9 +617,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["Math.cos((query.anim_time-0.7) * 90 * 2) * -10", 0, 0]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": ["Math.cos((query.anim_time-0.9) * 90 * 2) * -5", 0, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [
|
||||
"50.3607+Math.cos((query.anim_time) * 90 * 2) * -3",
|
||||
@@ -574,25 +685,18 @@
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [-28.24912, 16.7796, 28.24912]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.frogadier.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.12": [-0.1, 0, 0],
|
||||
"0.16": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.12": [0.1, 0, 0],
|
||||
"0.16": [0, 0, 0]
|
||||
}
|
||||
"bubble5": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -616,14 +720,14 @@
|
||||
"0.0": [0, -5, 0],
|
||||
"0.25": [0, -6.25, 1.5],
|
||||
"0.5": [0, -6.52, 2.18],
|
||||
"0.75": [0, -6.06, 2.97],
|
||||
"0.9583": [0, -5.4, 3.83],
|
||||
"1.0833": [0, -5, 4],
|
||||
"1.2917": [0, -5.57, 2.585],
|
||||
"1.4583": [0, -8.82, 0.32],
|
||||
"1.5417": [0, -14, -2.75],
|
||||
"1.5833": [0, -14.5, -3.25],
|
||||
"1.6667": [0, -14, -2.75]
|
||||
"0.75": [0, -6.06, 2.07],
|
||||
"0.9583": [0, -5.4, 2.13],
|
||||
"1.0833": [0, -5, 2.1],
|
||||
"1.2917": [0, -5.57, -0.615],
|
||||
"1.4583": [0, -8.82, -4.68],
|
||||
"1.5417": [0, -14, -6.85],
|
||||
"1.5833": [0, -14.5, -7.35],
|
||||
"1.6667": [0, -14, -6.85]
|
||||
}
|
||||
},
|
||||
"torso": {
|
||||
@@ -694,19 +798,6 @@
|
||||
"1.5": [-0.125, 0, 0]
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.15, 0, 0],
|
||||
"0.625": [0.15, 0, 0],
|
||||
"0.6667": [0, 0, 0],
|
||||
"0.7917": [0, 0, 0],
|
||||
"0.8333": [0.15, 0, 0],
|
||||
"0.875": [0.15, 0, 0],
|
||||
"0.9167": [0, 0, 0],
|
||||
"1.4167": [0, 0, 0],
|
||||
"1.4583": [0.15, 0, 0]
|
||||
}
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": {
|
||||
"0.0": [-25, 0, 0],
|
||||
@@ -747,13 +838,6 @@
|
||||
"1.9583": [-27.5, 0, 0]
|
||||
}
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": {
|
||||
"0.0": [-10, 0, 0],
|
||||
"1.625": [-28.4, 0, 0],
|
||||
"1.9583": [10, 0, 0]
|
||||
}
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": {
|
||||
"0.0": [0, 0, -22.5],
|
||||
@@ -904,6 +988,28 @@
|
||||
"1.9167": [-0.56754, 7.64427, 6.46635],
|
||||
"2.125": [1.93246, 7.64427, 6.46635]
|
||||
}
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.125, 0, 0],
|
||||
"0.625": [0.125, 0, 0],
|
||||
"0.6667": [-0.03, 0, 0],
|
||||
"0.7917": [-0.03, 0, 0],
|
||||
"0.8333": [0.125, 0, 0],
|
||||
"0.875": [0.125, 0, 0],
|
||||
"0.9167": [-0.03, 0, 0],
|
||||
"1.4583": [-0.03, 0, 0],
|
||||
"1.5": [0.125, 0, 0]
|
||||
}
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -928,10 +1034,7 @@
|
||||
"position": [0, -0.75, -1.25]
|
||||
},
|
||||
"eyelid_right": {
|
||||
"position": [-0.125, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.15, 0, 0]
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"bubble": {
|
||||
"rotation": ["-57.5+Math.cos((query.anim_time-0.3) * 90 * 1) * 3", 0, 0]
|
||||
@@ -945,9 +1048,6 @@
|
||||
"bubble4": {
|
||||
"rotation": ["-20+Math.cos((query.anim_time-0.8) * 90 * 1) * 3", 0, 0]
|
||||
},
|
||||
"bubble5": {
|
||||
"rotation": [-22.5, 0, 0]
|
||||
},
|
||||
"arm_right": {
|
||||
"rotation": [-80.93413, "-22.0118+Math.cos((query.anim_time) * 90 * 1) * 4", 12.47776]
|
||||
},
|
||||
@@ -979,18 +1079,113 @@
|
||||
"rotation": [-97.04431, -75.92487, 21.99572]
|
||||
},
|
||||
"leg_left2": {
|
||||
"rotation": [90, 0, 0]
|
||||
"rotation": [95, 0, 0]
|
||||
},
|
||||
"foot_left": {
|
||||
"rotation": [6.74942, 34.96182, -51.94901]
|
||||
},
|
||||
"foot_left2": {
|
||||
"rotation": [30, 0, 0]
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_right": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"eye_left": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
},
|
||||
"frubble_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"frubble_left": {
|
||||
"scale": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.frogadier.blink": {
|
||||
"animation_length": 0.1667,
|
||||
"bones": {
|
||||
"eyelid_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [-0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [-0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eyelid_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_ditto_right": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_closed_ditto_right": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [-0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_ditto_left": {
|
||||
"position": {
|
||||
"0.0": [-0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [-0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"eye_closed_ditto_left": {
|
||||
"position": {
|
||||
"0.0": [0.1, 0, 0],
|
||||
"0.16": {
|
||||
"pre": [0.1, 0, 0],
|
||||
"post": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.frogadier.cry": {
|
||||
"animation_length": 1.16667,
|
||||
"animation_length": 1.1667,
|
||||
"bones": {
|
||||
"head": {
|
||||
"rotation": {
|
||||
@@ -1017,6 +1212,45 @@
|
||||
"effect": "pokemon.frogadier.cry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.frogadier.ditto_face": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"eye_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"eyelid_right": {
|
||||
"scale": 0
|
||||
},
|
||||
"eye_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"eyelid_left": {
|
||||
"scale": 0
|
||||
},
|
||||
"face_ditto_right": {
|
||||
"position": [-0.1, 0, 0]
|
||||
},
|
||||
"face_ditto_left": {
|
||||
"position": [0.1, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"animation.frogadier.bubble_hoodie": {
|
||||
"loop": true,
|
||||
"bones": {
|
||||
"bubbles": {
|
||||
"position": [0, 2, 0]
|
||||
},
|
||||
"bubbles_front": {
|
||||
"scale": 0
|
||||
},
|
||||
"bubbles_hoodie": {
|
||||
"rotation": [2.5, 0, 0],
|
||||
"position": [0, 0, 0],
|
||||
"scale": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+24778
-1149
File diff suppressed because it is too large.
Load diff
+2210
File diff suppressed because it is too large.
Load diff
+886
-159
File diff suppressed because it is too large.
Load diff
Loaded 100 of 1056 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user