Compare commits

...
Author SHA1 Message Date
Charzard4261 52133711ad Added a check before setting the Monitor's Block State, as it was causing a crash for some people. Unsure on the root cause, but this should prevent the crash. 2024-05-22 22:53:34 +01:00
Hiroku 4e1b82917b Merge branch 'Roaming-Gholdengo-Request' into 'main'
Lets Gholdengo maintain its roaming aspect

See merge request cable-mc/cobblemon!1025
2024-05-20 00:11:17 +00:00
Frank The FarmerandHiroku 3b1d257241 Lets Gholdengo maintain its roaming aspect 2024-05-20 00:11:16 +00:00
Hiroku 0b8f916648 Merge branch 'dimension-condition-uses-id-not-effects' into 'main'
Change dimension spawn condition to check with IDs not effects

See merge request cable-mc/cobblemon!1026
2024-05-20 00:11:02 +00:00
David Sadler 5ad7d5406a Change dimension spawn condition to check with IDs not effects 2024-05-19 18:45:34 +01:00
Paul 6ec008ee83 Merge remote-tracking branch 'origin/main' into 1.5-fixy
# Conflicts:
#	CHANGELOG.md
2024-05-19 11:19:13 +10:00
Hiroku f4d2226ec2 Merge branch '1.5.1' into 'main'
Moar 🐛🔫

Closes #847 and #799

See merge request cable-mc/cobblemon!1023
2024-05-18 01:50:12 +00:00
apion 0fc5d5e9d7 Fixed bad null handling 2024-05-17 21:41:58 -04:00
Hiroku 972c0f6430 Merge branch 'dubwool-dye' into 'main'
Make wooloos dyable

Closes #824

See merge request cable-mc/cobblemon!1021
2024-05-18 01:40:13 +00:00
ApionandHiroku 86db95a7dc Make wooloos dyable 2024-05-18 01:40:13 +00:00
apion be95b79e4d Removed unnecessary override 2024-05-17 21:20:20 -04:00
Paul bc550dd32c Fixed unlocked evolutions getting re-checked and eating held items, fixes #843 2024-05-17 10:04:54 +10:00
Paul 3009af8c42 Fixed missing cant.nopp lang key, fixes #842 2024-05-17 08:52:23 +10:00
78 changed files with 806 additions and 137 deletions
+4
View File
@@ -4,10 +4,12 @@
### Additions
- Added unique send out particles for Cherish, Dream, Beast, and Ancient Origin balls.
- Made Wooloo and Dubwool dye-able like sheep
### Changes
- Sounds for Relic Coin Sacks have been correctly renamed. Relic Coin Pouches received new sounds for breaking and placing.
- Readjusted Petilil portraits
- Changed "dimensions" spawn condition to check with dimension IDs instead of effects, so custom dimension IDs can be used.
### Fixes
- Fixed a bug in which adding organic material to the fossil tank via right click was adding the full count of the stack currently in hand
@@ -18,6 +20,8 @@
- Fixed Fossil Compartment crash with Jade / WAILA forks
- Fixed PCStore#resize not allowing PC boxes size reduction.
- Fixed pasture block PC lookups when the player is offline.
- Fixed an untranslated battle message that occurs when using a move that just ran out of PP (e.g. Fire Blast that just got spited mid-turn).
- Fixed held items being eaten even when the held item evolutions are already unlocked.
- Fixed Hisuian Decidueye not being Grass/Fighting
- Fixed both Decidueye forms learning both Triple Arrows and Spirit Shackle
- Fixed Pineco being unable to evolve into Shulker Forretress
@@ -234,7 +234,7 @@ object Cobblemon {
val player = event.player
val block = player.world.getBlockState(event.pos).block
player.party().forEach { pokemon ->
pokemon.evolutions
pokemon.lockedEvolutions
.filterIsInstance<BlockClickEvolution>()
.forEach { evolution ->
evolution.attemptEvolution(pokemon, BlockClickEvolution.BlockInteractionContext(block, player.world))
@@ -226,7 +226,7 @@ open class PokemonBattle(
val facedFainted = opponentPokemon.facedOpponents.contains(faintedPokemon)
val pokemon = opponentPokemon.effectedPokemon
if (facedFainted) {
pokemon.evolutions.forEach { evolution ->
pokemon.lockedEvolutions.forEach { evolution ->
evolution.requirements.filterIsInstance<DefeatRequirement>().forEach { defeatRequirement ->
if (defeatRequirement.target.matches(faintedPokemon.effectedPokemon)) {
val progress = pokemon.evolutionProxy.current().progressFirstOrCreate({ it is DefeatEvolutionProgress && it.currentProgress().target == defeatRequirement.target }) { DefeatEvolutionProgress() }
@@ -153,7 +153,7 @@ interface Evolution : EvolutionLike {
pokemon.getOwnerPlayer()?.sendMessage(lang("experience.learned_move", pokemon.getDisplayName(), move.displayName))
}
// we want to instantly tick for example you might only evolve your Bulbasaur at level 34 so Venusaur should be immediately available
pokemon.evolutions.filterIsInstance<PassiveEvolution>().forEach { evolution -> evolution.attemptEvolution(pokemon) }
pokemon.lockedEvolutions.filterIsInstance<PassiveEvolution>().forEach { evolution -> evolution.attemptEvolution(pokemon) }
pokemon.getOwnerPlayer()?.playSound(CobblemonSounds.EVOLVING, SoundCategory.NEUTRAL, 1F, 1F)
CobblemonEvents.EVOLUTION_COMPLETE.post(EvolutionCompleteEvent(pokemon, this))
}
@@ -78,7 +78,7 @@ abstract class SpawningCondition<T : SpawningContext> {
return false
} else if (ctx.position.z < minZ.orMin() || ctx.position.z > maxZ.orMax()) {
return false
} else if (dimensions != null && dimensions!!.isNotEmpty() && ctx.world.dimension.effects !in dimensions!!) {
} else if (dimensions != null && dimensions!!.isNotEmpty() && ctx.world.dimensionKey.value !in dimensions!!) {
return false
} else if (moonPhase != null && ctx.moonPhase !in moonPhase!!) {
return false
@@ -124,7 +124,7 @@ open class PlayerPartyStore(
}
// Passive evolutions
pokemon.evolutions.filterIsInstance<PassiveEvolution>().forEach { it.attemptEvolution(pokemon) }
pokemon.lockedEvolutions.filterIsInstance<PassiveEvolution>().forEach { it.attemptEvolution(pokemon) }
val removeList = mutableListOf<Evolution>()
pokemon.evolutionProxy.server().forEach {
if (!it.test(pokemon) && it is LevelUpEvolution && !it.permanent)
@@ -98,8 +98,6 @@ class GildedChestBlockEntity(pos: BlockPos, state: BlockState, val type: Type =
return dir == Direction.DOWN
}
override fun canPlayerUse(player: PlayerEntity) = !player.isSpectator && Inventory.canPlayerUse(this, player)
override fun getInvStackList(): DefaultedList<ItemStack> = inventoryContents
override fun setInvStackList(list: DefaultedList<ItemStack>) {
@@ -480,15 +480,19 @@ class FossilMultiblockStructure (
}
fun updateProgress(world: World) {
val screenID = if(protectionTime > 0F ) {
val screenID = if (protectionTime > 0F) {
MonitorBlock.MonitorScreen.GREEN_PROGRESS_9
} else if (timeRemaining <= 0) {
MonitorBlock.MonitorScreen.OFF
} else {
getProgressScreen((TIME_TO_TAKE - timeRemaining) / TIME_PER_STAGE)
}
val monitorState = world.getBlockState(monitorPos)
world.setBlockState(monitorPos, monitorState.with(MonitorBlock.SCREEN, screenID))
if (monitorState.contains(MonitorBlock.SCREEN)) {
world.setBlockState(monitorPos, monitorState.with(MonitorBlock.SCREEN, screenID))
}
}
fun getProgressScreen(progress:Int) : MonitorBlock.MonitorScreen {
@@ -28,8 +28,8 @@ class DubwoolModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Quadr
override val foreRightLeg = getPart("leg_front_right")
override val hindLeftLeg = getPart("leg_back_left")
override val hindRightLeg = getPart("leg_back_right")
val wool = getPart("wool")
val neckWool = getPart("neck_wool")
val wool = getPart("wool_shearable")
val neckWool = getPart("neck_wool_shearable")
override var portraitScale = 3.1F
override var portraitTranslation = Vec3d(-1.2, -0.7, 0.0)
@@ -28,7 +28,7 @@ class WoolooModel(root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Quadru
override val foreRightLeg = getPart("leg_front_right")
override val hindLeftLeg = getPart("leg_back_left")
override val hindRightLeg = getPart("leg_back_right")
val wool = getPart("wool")
val wool = getPart("wool_shearable")
override var portraitScale = 3.1F
override var portraitTranslation = Vec3d(-0.85, -1.8, 0.0)
@@ -21,7 +21,9 @@ import com.cobblemon.mod.common.api.interaction.PokemonEntityInteraction
import com.cobblemon.mod.common.api.net.serializers.PoseTypeDataSerializer
import com.cobblemon.mod.common.api.net.serializers.StringSetDataSerializer
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
import com.cobblemon.mod.common.api.pokemon.feature.ChoiceSpeciesFeatureProvider
import com.cobblemon.mod.common.api.pokemon.feature.FlagSpeciesFeature
import com.cobblemon.mod.common.api.pokemon.feature.StringSpeciesFeature
import com.cobblemon.mod.common.api.pokemon.status.Statuses
import com.cobblemon.mod.common.api.reactive.ObservableSubscription
import com.cobblemon.mod.common.api.reactive.SimpleObservable
@@ -81,6 +83,7 @@ import net.minecraft.entity.passive.PassiveEntity
import net.minecraft.entity.passive.TameableShoulderEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.fluid.FluidState
import net.minecraft.item.DyeItem
import net.minecraft.item.ItemStack
import net.minecraft.item.ItemUsage
import net.minecraft.item.Items
@@ -101,8 +104,11 @@ import net.minecraft.sound.SoundEvents
import net.minecraft.text.Text
import net.minecraft.text.TextContent
import net.minecraft.util.ActionResult
import net.minecraft.util.Colors
import net.minecraft.util.DyeColor
import net.minecraft.util.Hand
import net.minecraft.util.Identifier
import net.minecraft.util.Util
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Box
import net.minecraft.util.math.Vec3d
@@ -335,10 +341,13 @@ open class PokemonEntity(
if (this.tethering != null) {
//Only for online players
if (world.getPlayerByUuid(ownerUuid) != null){
val actualPokemon = Cobblemon.storage.getPC(this.ownerUuid!!)[this.pokemon.uuid]!!
//We want to use == over .equals here as we actually want to check the reference
if (actualPokemon !== pokemon) {
pokemon = actualPokemon
this.ownerUuid?.let {
val actualPokemon = Cobblemon.storage.getPC(it)[this.pokemon.uuid]
actualPokemon?.let {
if (it !== pokemon) {
pokemon = it
}
}
}
}
}
@@ -606,6 +615,7 @@ open class PokemonEntity(
override fun interactMob(player: PlayerEntity, hand: Hand) : ActionResult {
val itemStack = player.getStackInHand(hand)
val colorFeature = pokemon.getFeature<StringSpeciesFeature>(DataKeys.CAN_BE_COLORED)
if (itemStack.isOf(Items.SHEARS) && this.isShearable) {
this.sheared(SoundCategory.PLAYERS)
@@ -671,7 +681,6 @@ open class PokemonEntity(
pokemon.lastFlowerFed = ItemStack.EMPTY
return ActionResult.success(world.isClient)
}
else {
val mushroomStew = ItemUsage.exchangeStack(itemStack, player, Items.MUSHROOM_STEW.defaultStack)
player.setStackInHand(hand, mushroomStew)
@@ -712,6 +721,22 @@ open class PokemonEntity(
return ActionResult.SUCCESS
}
}
else if (itemStack.item is DyeItem && colorFeature != null) {
val item = itemStack.item as DyeItem
if (item.color.name.lowercase() != colorFeature.value.lowercase()) {
itemStack.decrement(1)
colorFeature.value = item.color.name.lowercase()
this.pokemon.markFeatureDirty(colorFeature)
this.pokemon.updateAspects()
}
}
else if (itemStack.item.equals(Items.WATER_BUCKET) && colorFeature != null) {
itemStack.decrement(1)
player.giveOrDropItemStack(Items.BUCKET.defaultStack)
colorFeature.value = ""
this.pokemon.markFeatureDirty(colorFeature)
this.pokemon.updateAspects()
}
if (hand == Hand.MAIN_HAND && player is ServerPlayerEntity && pokemon.getOwnerPlayer() == player) {
@@ -840,7 +865,7 @@ open class PokemonEntity(
// Check evolution item interaction
if (pokemon.getOwnerPlayer() == player) {
val context = ItemInteractionEvolution.ItemInteractionContext(stack, player.world)
pokemon.evolutions
pokemon.lockedEvolutions
.filterIsInstance<ItemInteractionEvolution>()
.forEach { evolution ->
if (evolution.attemptEvolution(pokemon, context)) {
@@ -1138,8 +1163,26 @@ open class PokemonEntity(
this.pokemon.markFeatureDirty(feature)
this.pokemon.updateAspects()
val i = this.random.nextInt(3) + 1
for (j in 0 until i) {
val itemEntity = this.dropItem(Items.WHITE_WOOL, 1) ?: return
for (j in 0 .. i) {
val color = this.pokemon.getFeature<StringSpeciesFeature>(DataKeys.CAN_BE_COLORED)?.value ?: "white"
val woolItem = when (color) {
"black" -> Items.BLACK_WOOL
"blue" -> Items.BLUE_WOOL
"brown" -> Items.BROWN_WOOL
"cyan" -> Items.CYAN_WOOL
"gray" -> Items.GRAY_WOOL
"green" -> Items.GREEN_WOOL
"light-blue" -> Items.LIGHT_BLUE_WOOL
"light-gray" -> Items.LIGHT_GRAY_WOOL
"lime" -> Items.LIME_WOOL
"magenta" -> Items.MAGENTA_WOOL
"orange" -> Items.ORANGE_WOOL
"purple" -> Items.PURPLE_WOOL
"red" -> Items.RED_WOOL
"yellow" -> Items.YELLOW_WOOL
else -> Items.WHITE_WOOL
}
val itemEntity = this.dropItem(woolItem, 1) ?: return
itemEntity.velocity = itemEntity.velocity.add(
((this.random.nextFloat() - this.random.nextFloat()) * 0.1f).toDouble(),
(this.random.nextFloat() * 0.05f).toDouble(),
@@ -1153,6 +1196,8 @@ open class PokemonEntity(
return !this.isBusy && !this.pokemon.isFainted() && !feature.enabled
}
override fun canUsePortals() = false
override fun setAir(air: Int) {
@@ -19,7 +19,7 @@ class LinkCableItem : CobblemonItem(Settings()), PokemonEntityInteraction {
override val accepted = setOf(PokemonEntityInteraction.Ownership.OWNER)
override fun processInteraction(player: ServerPlayerEntity, entity: PokemonEntity, stack: ItemStack): Boolean {
val pokemon = entity.pokemon
pokemon.evolutions.filterIsInstance<TradeEvolution>().forEach { evolution ->
pokemon.lockedEvolutions.filterIsInstance<TradeEvolution>().forEach { evolution ->
// If an evolution is possible non-optional or has been successfully queued we will consume the item and stop
// validate requirements to respect required held items and such.
if (evolution.requirements.all { it.check(pokemon) } && evolution.evolve(pokemon)) {
@@ -426,6 +426,8 @@ open class Pokemon : ShowdownIdentifiable {
// We want non-optional evolutions to trigger first to avoid unnecessary packets and any cost associate with an optional one that would just be lost
val evolutions: Iterable<Evolution> get() = this.form.evolutions.sortedBy { evolution -> evolution.optional }
val lockedEvolutions: Iterable<Evolution>
get() = evolutions.filter { it !in evolutionProxy.current() }
val preEvolution: PreEvolution? get() = this.form.preEvolution
@@ -98,11 +98,11 @@ object TradeManager {
party2.add(pokemon1)
party1.add(pokemon2)
pokemon1.evolutions.filterIsInstance<TradeEvolution>().firstOrNull {
pokemon1.lockedEvolutions.filterIsInstance<TradeEvolution>().firstOrNull {
it.attemptEvolution(pokemon1, pokemon2)
}
pokemon2.evolutions.filterIsInstance<TradeEvolution>().firstOrNull {
pokemon2.lockedEvolutions.filterIsInstance<TradeEvolution>().firstOrNull {
it.attemptEvolution(pokemon2, pokemon1)
}
CobblemonEvents.TRADE_COMPLETED.post(TradeCompletedEvent(player1, pokemon2, player2, pokemon1))
@@ -134,6 +134,7 @@ object DataKeys {
// Features
const val CAN_BE_MILKED = "milkable"
const val HAS_BEEN_SHEARED = "sheared"
const val CAN_BE_COLORED = "color"
// Variants
const val IS_MOOSHTANK = "mooshtank"
@@ -231,7 +231,7 @@
],
"position": [0, "(math.clamp(math.sin(q.anim_time*90*4-110+180)*1,0.5,1)-0.5)*0.7", 0]
},
"wool": {
"wool_shearable": {
"position": [0, "0.5+Math.sin((query.anim_time-0.3) * 90 * 8) * 0.3", 0]
},
"tail": {
@@ -419,10 +419,10 @@
},
"position": {
"0.0": [0, 0, 0],
"0.1667": [0, -2, -1],
"0.3333": [0, -4, 0],
"1.6667": [0, -4, 0],
"1.8333": [0, -2, -1],
"0.1667": [0, -1, -1],
"0.3333": [0, -3, 0],
"1.6667": [0, -3, 0],
"1.8333": [0, -1, -1],
"2.0": [0, 0, 0]
}
},
@@ -544,26 +544,28 @@
},
"ear_left": {
"rotation": {
"0.0": [0, -10, 0],
"0.2917": [0, -10, -10],
"0.4583": [0, -5, 5],
"0.6667": [0, -10, 0],
"1.6667": [0, -10, 0],
"1.9167": [0, 0, 10],
"2.0417": [0, -15, -5],
"2.1667": [0, -10, 0]
"0.0": [0, 0, 0],
"0.2917": [-5, 10, -10],
"0.4583": [-12.5, 11, -5],
"0.6667": [-14, 12.3, 0],
"1.0": [-15, 11.53, 0],
"1.6667": [-10, 10, 0],
"1.9167": [0, 10, 10],
"2.0417": [0, -5, -5],
"2.1667": [0, 0, 0]
}
},
"ear_right": {
"rotation": {
"0.0": [0, 10, 0],
"0.2917": [0, 10, 10],
"0.4583": [0, 5, -5],
"0.6667": [0, 10, 0],
"1.6667": [0, 10, 0],
"1.9167": [0, 0, -10],
"2.0417": [0, 15, 5],
"2.1667": [0, 10, 0]
"0.0": [0, 0, 0],
"0.2917": [-5, -10, 10],
"0.4583": [-12.5, -11, 5],
"0.6667": [-14, -12.3, 0],
"1.0": [-15, -11.53, 0],
"1.6667": [-10, -10, 0],
"1.9167": [0, -10, -10],
"2.0417": [0, 5, 5],
"2.1667": [0, 0, 0]
}
},
"neck": {
@@ -23,16 +23,16 @@
{
"name": "torso",
"parent": "body",
"pivot": [0, 8.5, 3.75],
"pivot": [0, 7.5, 3.75],
"cubes": [
{"origin": [-3, 6.75, 0], "size": [6, 6, 6], "uv": [24, 26]},
{"origin": [-3, 6.75, -5], "size": [6, 6, 6], "inflate": 0.01, "uv": [0, 26]}
{"origin": [-3, 5.75, 0], "size": [6, 6, 6], "uv": [24, 26]},
{"origin": [-3, 5.75, -5], "size": [6, 6, 6], "inflate": 0.01, "uv": [0, 26]}
]
},
{
"name": "wool",
"name": "wool_shearable",
"parent": "torso",
"pivot": [6.5, 2.75, -5],
"pivot": [6.5, 1.75, -5],
"cubes": [
{"origin": [-6.5, 2.75, -5.5], "size": [13, 13, 13], "inflate": 0.02, "uv": [0, 0]}
]
@@ -58,177 +58,201 @@
{
"name": "neck",
"parent": "torso",
"pivot": [0, 8.65, -1.5],
"pivot": [0, 7.65, -1.5],
"cubes": [
{"origin": [-2, 8.65, -5.5], "size": [4, 4, 4], "inflate": 0.01, "uv": [8, 56]}
{"origin": [-2, 7.65, -5.5], "size": [4, 4, 4], "inflate": 0.01, "uv": [8, 56]}
]
},
{
"name": "head",
"parent": "torso",
"pivot": [0.1, 10.75, -5],
"pivot": [0.1, 9.75, -5],
"cubes": [
{"origin": [-2.5, 8.75, -10.5], "size": [5, 4, 6], "uv": [0, 39]},
{"origin": [-1, 10, -10.5], "size": [2, 1, 0], "inflate": 0.01, "uv": [0, 30]},
{"origin": [-1.9, 12.75, -8.25], "size": [1, 2, 1], "pivot": [-1.9, 12.75, -7.25], "rotation": [0, -5, -5], "uv": [39, 0]},
{"origin": [0.9, 12.75, -8.25], "size": [1, 2, 1], "pivot": [1.9, 12.75, -7.25], "rotation": [0, 5, 5], "uv": [9, 0]}
{"origin": [-2.5, 7.75, -10.5], "size": [5, 4, 6], "uv": [0, 39]},
{"origin": [-1, 9, -10.5], "size": [2, 1, 0], "inflate": 0.01, "uv": [0, 30]}
]
},
{
"name": "horn_right",
"parent": "head",
"pivot": [-2, 12.75, -7.75],
"rotation": [-15, 0, -5],
"cubes": [
{"origin": [-2.5, 11.75, -8.25], "size": [1, 2, 1], "pivot": [-2, 12.75, -7.75], "rotation": [0, 47.5, 0], "uv": [39, 0]}
]
},
{
"name": "horn_left",
"parent": "head",
"pivot": [2, 12.75, -7.75],
"rotation": [-15, 0, 5],
"cubes": [
{"origin": [1.5, 11.75, -8.25], "size": [1, 2, 1], "pivot": [2, 12.75, -7.75], "rotation": [0, -47.5, 0], "uv": [9, 0]}
]
},
{
"name": "eyes",
"parent": "head",
"pivot": [-0.15, 10.75, -9]
"pivot": [-0.15, 9.75, -9]
},
{
"name": "eye_right",
"parent": "eyes",
"pivot": [-3.6, 10, -8.5],
"pivot": [-3.6, 9, -8.5],
"cubes": [
{"origin": [-2.51, 9.75, -9.5], "size": [0, 2, 1], "uv": [18, 25], "mirror": true},
{"origin": [-2.401, 9.75, -9.5], "size": [0, 2, 1], "inflate": 0.1, "uv": [0, 0], "mirror": true},
{"origin": [-2.52, 10.25, -9.5], "size": [0, 1, 1], "uv": [8, 9], "mirror": true}
{"origin": [-2.51, 8.75, -9.5], "size": [0, 2, 1], "uv": [18, 25], "mirror": true},
{"origin": [-2.451, 8.75, -9.5], "size": [0, 2, 1], "inflate": 0.05, "uv": [0, 0], "mirror": true},
{"origin": [-2.52, 9.25, -9.5], "size": [0, 1, 1], "uv": [8, 9], "mirror": true}
]
},
{
"name": "eyelid_right",
"parent": "eye_right",
"pivot": [-1.82, 10.75, -9],
"pivot": [-1.8645, 9.75, -9.01],
"cubes": [
{"origin": [-2.32, 9.75, -9.5], "size": [1, 2, 1], "inflate": 0.11, "uv": [54, 39]}
{"origin": [-2.3645, 8.75, -10.01], "size": [1, 2, 2], "inflate": 0.06, "uv": [54, 39]}
]
},
{
"name": "eye_left",
"parent": "eyes",
"pivot": [3.75, 10, -8.5],
"pivot": [3.75, 9, -8.5],
"cubes": [
{"origin": [2.51, 9.75, -9.5], "size": [0, 2, 1], "uv": [24, 25], "mirror": true},
{"origin": [2.402, 9.75, -9.5], "size": [0, 2, 1], "inflate": 0.1, "uv": [0, 7], "mirror": true},
{"origin": [2.52, 10.25, -9.5], "size": [0, 1, 1], "uv": [8, 10], "mirror": true}
{"origin": [2.51, 8.75, -9.5], "size": [0, 2, 1], "uv": [24, 25], "mirror": true},
{"origin": [2.452, 8.75, -9.5], "size": [0, 2, 1], "inflate": 0.05, "uv": [0, 7], "mirror": true},
{"origin": [2.52, 9.25, -9.5], "size": [0, 1, 1], "uv": [8, 10], "mirror": true}
]
},
{
"name": "eyelid_left",
"parent": "eye_left",
"pivot": [1.82, 10.75, -9],
"pivot": [1.8645, 9.75, -9.01],
"cubes": [
{"origin": [1.32, 9.75, -9.5], "size": [1, 2, 1], "inflate": 0.11, "uv": [52, 36], "mirror": true}
{"origin": [1.3645, 8.75, -10.01], "size": [1, 2, 2], "inflate": 0.06, "uv": [56, 32], "mirror": true}
]
},
{
"name": "mouth_open",
"parent": "head",
"pivot": [-0.05, 10, -9.5],
"pivot": [-0.05, 9, -9.5],
"cubes": [
{"origin": [-1.05, 8.75, -10.41], "size": [2, 1, 0], "uv": [8, 12]}
{"origin": [-1.05, 7.75, -10.41], "size": [2, 1, 0], "uv": [8, 12]}
]
},
{
"name": "head_wool",
"parent": "head",
"pivot": [-2.3928, 13.73889, -6.69372],
"pivot": [-2.3928, 12.73889, -6.69372],
"cubes": [
{"origin": [-2.025, 12, -9.19785], "size": [2, 2, 2], "pivot": [-1.05693, 12.8315, -8.01133], "rotation": [0, 5, 0], "uv": [50, 24]},
{"origin": [-2.5, 8.5, -7.5], "size": [5, 6, 4], "inflate": 0.01, "uv": [39, 0]},
{"origin": [0.025, 12, -9.19785], "size": [2, 2, 2], "pivot": [1.06611, 12.8315, -8.01133], "rotation": [0, -5, 0], "uv": [52, 10]},
{"origin": [-3.75, 11.5, -8.25], "size": [2, 2, 2], "uv": [8, 49]},
{"origin": [1.75, 11.5, -8.25], "size": [2, 2, 2], "uv": [16, 39]}
{"origin": [-2.025, 11, -9.19785], "size": [2, 2, 2], "pivot": [-1.05693, 11.8315, -8.01133], "rotation": [0, 5, 0], "uv": [50, 24]},
{"origin": [-2.5, 7.5, -7.5], "size": [5, 5, 3], "inflate": 0.01, "uv": [24, 56]},
{"origin": [0.025, 11, -9.19785], "size": [2, 2, 2], "pivot": [1.06611, 11.8315, -8.01133], "rotation": [0, -5, 0], "uv": [52, 10]},
{"origin": [-3.75, 10.75, -8.5], "size": [2, 2, 2], "uv": [8, 49]},
{"origin": [1.75, 10.75, -8.5], "size": [2, 2, 2], "uv": [16, 39]}
]
},
{
"name": "head_wool_shearable",
"parent": "head_wool",
"pivot": [0, -1, 0],
"cubes": [
{"origin": [-2.5, 9.5, -7.5], "size": [5, 4, 4], "inflate": 0.02, "uv": [39, 0]}
]
},
{
"name": "braid_right",
"parent": "head_wool",
"pivot": [-3, 11.5, -7.5],
"pivot": [-3, 10.75, -7.5],
"cubes": [
{"origin": [-3.5, 10.75, -8], "size": [1, 1, 1], "uv": [0, 39]},
{"origin": [-4, 9, -8.5], "size": [2, 2, 2], "uv": [0, 49]}
{"origin": [-3.5, 10, -8], "size": [1, 1, 1], "uv": [0, 39]},
{"origin": [-4, 8.25, -8.5], "size": [2, 2, 2], "uv": [0, 49]}
]
},
{
"name": "braid_middle_right",
"parent": "braid_right",
"pivot": [-3, 9, -7.5],
"pivot": [-3, 8.25, -7.5],
"cubes": [
{"origin": [-3.5, 8.25, -8], "size": [1, 1, 1], "uv": [0, 41]},
{"origin": [-4, 6.5, -8.5], "size": [2, 2, 2], "uv": [36, 48]}
{"origin": [-3.5, 7.5, -8], "size": [1, 1, 1], "uv": [0, 41]},
{"origin": [-4, 5.75, -8.5], "size": [2, 2, 2], "uv": [36, 48]}
]
},
{
"name": "braid_bottom_right",
"parent": "braid_middle_right",
"pivot": [-3, 6.5, -7.5],
"pivot": [-3, 5.75, -7.5],
"cubes": [
{"origin": [-3.5, 5.75, -8], "size": [1, 1, 1], "uv": [0, 43]},
{"origin": [-4, 4, -8.5], "size": [2, 2, 2], "uv": [28, 48]},
{"origin": [-4, 3.75, -8.5], "size": [2, 1, 0], "pivot": [-3, 4.75, -8.5], "rotation": [-12.5, 0, 0], "uv": [0, 61]},
{"origin": [-4, 3.75, -8.5], "size": [0, 1, 2], "pivot": [-4, 4.75, -7.5], "rotation": [0, 0, 12.5], "uv": [0, 60]},
{"origin": [-2, 3.75, -8.5], "size": [0, 1, 2], "pivot": [-2, 4.75, -7.5], "rotation": [0, 0, -12.5], "uv": [0, 61]},
{"origin": [-4, 3.75, -6.5], "size": [2, 1, 0], "pivot": [-3, 4.75, -6.5], "rotation": [12.5, 0, 0], "uv": [0, 60]}
{"origin": [-3.5, 5, -8], "size": [1, 1, 1], "uv": [0, 43]},
{"origin": [-4, 3.25, -8.5], "size": [2, 2, 2], "uv": [28, 48]},
{"origin": [-4, 3, -8.5], "size": [2, 1, 0], "pivot": [-3, 4, -8.5], "rotation": [-12.5, 0, 0], "uv": [0, 61]},
{"origin": [-4, 3, -8.5], "size": [0, 1, 2], "pivot": [-4, 4, -7.5], "rotation": [0, 0, 12.5], "uv": [0, 60]},
{"origin": [-2, 3, -8.5], "size": [0, 1, 2], "pivot": [-2, 4, -7.5], "rotation": [0, 0, -12.5], "uv": [0, 61]},
{"origin": [-4, 3, -6.5], "size": [2, 1, 0], "pivot": [-3, 4, -6.5], "rotation": [12.5, 0, 0], "uv": [0, 60]}
]
},
{
"name": "braid_left",
"parent": "head_wool",
"pivot": [3, 11.5, -7.5],
"pivot": [3, 10.75, -7.5],
"cubes": [
{"origin": [2.5, 10.75, -8], "size": [1, 1, 1], "uv": [26, 26]},
{"origin": [2, 9, -8.5], "size": [2, 2, 2], "uv": [48, 30]}
{"origin": [2.5, 10, -8], "size": [1, 1, 1], "uv": [26, 26]},
{"origin": [2, 8.25, -8.5], "size": [2, 2, 2], "uv": [48, 30]}
]
},
{
"name": "braid_middle_left",
"parent": "braid_left",
"pivot": [3, 9, -7.5],
"pivot": [3, 8.25, -7.5],
"cubes": [
{"origin": [2.5, 8.25, -8], "size": [1, 1, 1], "uv": [26, 28]},
{"origin": [2, 6.5, -8.5], "size": [2, 2, 2], "uv": [32, 39]}
{"origin": [2.5, 7.5, -8], "size": [1, 1, 1], "uv": [26, 28]},
{"origin": [2, 5.75, -8.5], "size": [2, 2, 2], "uv": [32, 39]}
]
},
{
"name": "braid_bottom_left",
"parent": "braid_middle_left",
"pivot": [3, 6.5, -7.5],
"pivot": [3, 5.75, -7.5],
"cubes": [
{"origin": [2.5, 5.75, -8], "size": [1, 1, 1], "uv": [26, 30]},
{"origin": [2, 4, -8.5], "size": [2, 2, 2], "uv": [0, 8]},
{"origin": [2, 3.75, -8.5], "size": [2, 1, 0], "pivot": [3, 4.75, -8.5], "rotation": [-12.5, 0, 0], "uv": [4, 61], "mirror": true},
{"origin": [2, 3.75, -8.5], "size": [0, 1, 2], "pivot": [2, 4.75, -7.5], "rotation": [0, 0, 12.5], "uv": [4, 61], "mirror": true},
{"origin": [4, 3.75, -8.5], "size": [0, 1, 2], "pivot": [4, 4.75, -7.5], "rotation": [0, 0, -12.5], "uv": [4, 60], "mirror": true},
{"origin": [2, 3.75, -6.5], "size": [2, 1, 0], "pivot": [3, 4.75, -6.5], "rotation": [12.5, 0, 0], "uv": [4, 60], "mirror": true}
{"origin": [2.5, 5, -8], "size": [1, 1, 1], "uv": [26, 30]},
{"origin": [2, 3.25, -8.5], "size": [2, 2, 2], "uv": [0, 8]},
{"origin": [2, 3, -8.5], "size": [2, 1, 0], "pivot": [3, 4, -8.5], "rotation": [-12.5, 0, 0], "uv": [4, 61], "mirror": true},
{"origin": [2, 3, -8.5], "size": [0, 1, 2], "pivot": [2, 4, -7.5], "rotation": [0, 0, 12.5], "uv": [4, 61], "mirror": true},
{"origin": [4, 3, -8.5], "size": [0, 1, 2], "pivot": [4, 4, -7.5], "rotation": [0, 0, -12.5], "uv": [4, 60], "mirror": true},
{"origin": [2, 3, -6.5], "size": [2, 1, 0], "pivot": [3, 4, -6.5], "rotation": [12.5, 0, 0], "uv": [4, 60], "mirror": true}
]
},
{
"name": "ear_left",
"parent": "head",
"pivot": [2.5, 11.75, -6.5],
"pivot": [2.5, 10.75, -6.5],
"rotation": [0, 0, 15],
"cubes": [
{"origin": [2.25, 10, -6.5], "size": [4, 2, 0], "uv": [48, 34]}
{"origin": [2.25, 9, -6.5], "size": [4, 2, 0], "uv": [48, 34]}
]
},
{
"name": "ear_right",
"parent": "head",
"pivot": [-2.5, 11.75, -6.5],
"pivot": [-2.5, 10.75, -6.5],
"rotation": [0, 0, -15],
"cubes": [
{"origin": [-6.25, 10, -6.5], "size": [4, 2, 0], "uv": [39, 10]}
{"origin": [-6.25, 9, -6.5], "size": [4, 2, 0], "uv": [39, 10]}
]
},
{
"name": "leg_front_right",
"parent": "body",
"pivot": [2.25, 8.5, -3],
"pivot": [2.25, 7.5, -3],
"cubes": [
{"origin": [0.75, 5, -4.5], "size": [3, 5, 3], "uv": [0, 0]}
{"origin": [0.75, 4, -4.5], "size": [3, 5, 3], "uv": [0, 0]}
]
},
{
"name": "leg_front_right2",
"parent": "leg_front_right",
"pivot": [2.25, 6, -3.75],
"pivot": [2.25, 5, -3.75],
"cubes": [
{"origin": [1.25, 1.25, -3.75], "size": [2, 4, 2], "uv": [18, 26]}
{"origin": [1.25, 1.25, -3.75], "size": [2, 3, 2], "uv": [18, 26]}
]
},
{
@@ -242,17 +266,17 @@
{
"name": "leg_front_left",
"parent": "body",
"pivot": [-2.25, 8.5, -3],
"pivot": [-2.25, 7.5, -3],
"cubes": [
{"origin": [-3.75, 5, -4.5], "size": [3, 5, 3], "uv": [47, 45]}
{"origin": [-3.75, 4, -4.5], "size": [3, 5, 3], "uv": [47, 45]}
]
},
{
"name": "leg_front_left2",
"parent": "leg_front_left",
"pivot": [-2.25, 5, -3.75],
"pivot": [-2.25, 4, -3.75],
"cubes": [
{"origin": [-3.25, 1.25, -3.75], "size": [2, 4, 2], "uv": [42, 26]}
{"origin": [-3.25, 1.25, -3.75], "size": [2, 3, 2], "uv": [42, 26]}
]
},
{
@@ -266,17 +290,17 @@
{
"name": "leg_back_right",
"parent": "body",
"pivot": [2.25, 8.5, 3.5],
"pivot": [2.25, 7.5, 3.5],
"cubes": [
{"origin": [0.75, 5, 1.5], "size": [3, 5, 4], "uv": [22, 39]}
{"origin": [0.75, 4, 1.5], "size": [3, 5, 4], "uv": [22, 39]}
]
},
{
"name": "leg_back_right2",
"parent": "leg_back_right",
"pivot": [2.25, 5, 5],
"pivot": [2.25, 4, 5],
"cubes": [
{"origin": [1.25, 1.25, 3.75], "size": [2, 4, 2], "uv": [46, 37]}
{"origin": [1.25, 1.25, 3.75], "size": [2, 3, 2], "uv": [46, 37]}
]
},
{
@@ -290,17 +314,17 @@
{
"name": "leg_back_left",
"parent": "body",
"pivot": [-2.25, 8.5, 3.5],
"pivot": [-2.25, 7.5, 3.5],
"cubes": [
{"origin": [-3.75, 5, 1.5], "size": [3, 5, 4], "uv": [36, 39]}
{"origin": [-3.75, 4, 1.5], "size": [3, 5, 4], "uv": [36, 39]}
]
},
{
"name": "leg_back_left2",
"parent": "leg_back_left",
"pivot": [-2.25, 5, 5],
"pivot": [-2.25, 4, 5],
"cubes": [
{"origin": [-3.25, 1.25, 3.75], "size": [2, 4, 2], "uv": [20, 48]}
{"origin": [-3.25, 1.25, 3.75], "size": [2, 3, 2], "uv": [20, 48]}
]
},
{
@@ -30,7 +30,7 @@
]
},
{
"name": "wool",
"name": "wool_shearable",
"parent": "torso",
"pivot": [0, 12.75, 0.25],
"cubes": [
@@ -47,7 +47,7 @@
]
},
{
"name": "neck_wool",
"name": "neck_wool_shearable",
"parent": "neck",
"pivot": [0, 15.5, -9.5],
"rotation": [-62.5, 0, 0],
@@ -57,7 +57,7 @@
},
{
"name": "neck_wool_middle_right",
"parent": "neck_wool",
"parent": "neck_wool_shearable",
"pivot": [0.25, 13.75, -9.5],
"rotation": [7.5, 0, 12.5],
"cubes": [
@@ -66,7 +66,7 @@
},
{
"name": "neck_wool_middle_left",
"parent": "neck_wool",
"parent": "neck_wool_shearable",
"pivot": [-0.25, 13.75, -9.5],
"rotation": [7.5, 0, -12.5],
"cubes": [
@@ -75,7 +75,7 @@
},
{
"name": "neck_wool_right",
"parent": "neck_wool",
"parent": "neck_wool_shearable",
"pivot": [-1.75, 13.75, -9.5],
"rotation": [12.5, 0, 25],
"cubes": [
@@ -84,7 +84,7 @@
},
{
"name": "neck_wool_left",
"parent": "neck_wool",
"parent": "neck_wool_shearable",
"pivot": [1.75, 13.75, -9.5],
"rotation": [12.5, 0, -25],
"cubes": [
@@ -324,19 +324,19 @@
{
"name": "tail",
"parent": "torso",
"pivot": [0, 15, 7],
"pivot": [0, 14, 7],
"rotation": [-42.5, 0, 0],
"cubes": [
{"origin": [-0.5, 14, 7], "size": [1, 1, 3], "inflate": 0.01, "uv": [102, 1]}
{"origin": [-0.5, 13, 7], "size": [1, 1, 3], "inflate": 0.01, "uv": [102, 1]}
]
},
{
"name": "tail2",
"parent": "tail",
"pivot": [0, 14, 10],
"pivot": [0, 13, 10],
"rotation": [35, 0, 0],
"cubes": [
{"origin": [-0.5, 14, 10], "size": [1, 1, 3], "uv": [98, 26]}
{"origin": [-0.5, 13, 10], "size": [1, 1, 3], "uv": [98, 26]}
]
},
{
@@ -14,6 +14,210 @@
"shiny"
],
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_shiny.png"
},
{
"aspects": [
"color-black"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_black.png",
"emissive": false
}
]
},
{
"aspects": [
"color-blue"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_blue.png",
"emissive": false
}
]
},
{
"aspects": [
"color-brown"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_brown.png",
"emissive": false
}
]
},
{
"aspects": [
"color-cyan"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_cyan.png",
"emissive": false
}
]
},
{
"aspects": [
"color-gray"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_gray.png",
"emissive": false
}
]
},
{
"aspects": [
"color-green"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_green.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_blue"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_light_blue.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_gray"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_light_gray.png",
"emissive": false
}
]
},
{
"aspects": [
"color-lime"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_lime.png",
"emissive": false
}
]
},
{
"aspects": [
"color-magenta"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_magenta.png",
"emissive": false
}
]
},
{
"aspects": [
"color-orange"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_orange.png",
"emissive": false
}
]
},
{
"aspects": [
"color-pink"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_pink.png",
"emissive": false
}
]
},
{
"aspects": [
"color-purple"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_purple.png",
"emissive": false
}
]
},
{
"aspects": [
"color-red"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_red.png",
"emissive": false
}
]
},
{
"aspects": [
"color-white"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool.png",
"emissive": false
}
]
},
{
"aspects": [
"color-white shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-yellow"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0831_wooloo/wooloo_wool_yellow.png",
"emissive": false
}
]
}
]
}
@@ -14,6 +14,390 @@
"shiny"
],
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_shiny.png"
},
{
"aspects": [
"color-black"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_black.png",
"emissive": false
}
]
},
{
"aspects": [
"color-blue"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_blue.png",
"emissive": false
}
]
},
{
"aspects": [
"color-brown"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_brown.png",
"emissive": false
}
]
},
{
"aspects": [
"color-cyan"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_cyan.png",
"emissive": false
}
]
},
{
"aspects": [
"color-gray"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_gray.png",
"emissive": false
}
]
},
{
"aspects": [
"color-green"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_green.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_blue"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_light_blue.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_gray"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_light_gray.png",
"emissive": false
}
]
},
{
"aspects": [
"color-lime"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_lime.png",
"emissive": false
}
]
},
{
"aspects": [
"color-magenta"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_magenta.png",
"emissive": false
}
]
},
{
"aspects": [
"color-orange"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_orange.png",
"emissive": false
}
]
},
{
"aspects": [
"color-pink"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_pink.png",
"emissive": false
}
]
},
{
"aspects": [
"color-purple"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_purple.png",
"emissive": false
}
]
},
{
"aspects": [
"color-red"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_red.png",
"emissive": false
}
]
},
{
"aspects": [
"color-white"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_white.png",
"emissive": false
}
]
},
{
"aspects": [
"color-yellow"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_yellow.png",
"emissive": false
}
]
},
{
"aspects": [
"color-black shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_black_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-blue shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_blue_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-brown shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_brown_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-cyan shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_cyan_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-gray shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_gray_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-green shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_green_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_blue shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_light_blue_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-light_gray shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_light_gray_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-lime shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_lime_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-magenta shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_magenta_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-orange shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_orange_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-pink shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_pink_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-purple shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_purple_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-red shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_red_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-white shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_white_shiny.png",
"emissive": false
}
]
},
{
"aspects": [
"color-yellow shiny"
],
"layers": [
{
"name": "color",
"texture": "cobblemon:textures/pokemon/0832_dubwool/dubwool_wool_yellow_shiny.png",
"emissive": false
}
]
}
]
}
@@ -1130,6 +1130,7 @@
"cobblemon.battle.cant.shelltrap": "%1$s's shell trap didn't work!",
"cobblemon.battle.cant.taunt": "%1$s can't use %2$s after the taunt!",
"cobblemon.battle.cant.throatchop": "The effects of Throat Chop prevent %1$s from using certain moves!",
"cobblemon.battle.cant.nopp": "%1$s can't use %2$s because it is out of PP!",
"cobblemon.battle.activate.confusion": "%1$s is confused!",
"cobblemon.battle.activate.happyhour": "Everyone is caught up in the happy atmosphere!",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -1,4 +1,4 @@
{
"pokemon": ["conkeldurr"],
"pokemon": ["conkeldurr", "wooloo", "dubwool"],
"features": ["color"]
}
@@ -1,4 +1,4 @@
{
"pokemon": ["gimmighoul"],
"pokemon": ["gimmighoul", "gholdengo"],
"features": ["roaming"]
}
@@ -1,7 +1,7 @@
{
"type": "choice",
"keys": ["color"],
"default": "false",
"keys": ["color", "colour"],
"default": "none",
"choices": [
"white",
"orange",