Compare commits

..
Author SHA1 Message Date
jackowes 9f71ccb81a Change walk speeds to match animations 2026-10-05 19:19:49 -05:00
411 changed files with 702 additions and 452 deletions
+4 -6
View File
@@ -2,6 +2,9 @@
## [1.8.2 (MONTH xth, 2026)](#1-8-2)
### Additions
- The evolution tree can now be viewed on the Pokédex, showing a Pokémon's full family line and what's needed to evolve into each stage.
### New rideable Pokémon
- The following items can now be placed on the ground as blocks:
- King's Rock, Galarica Cuff, Unremarkable Teacup, Masterpiece Teacup, Chipped Pot, Cracked Pot, Sachet, Metal Powder, Quick Powder, Bright Powder, Icy Rock, Heat Rock, Smooth Rock, Damp Rock, Destiny Knot, Luminous Moss, Never-Melt Ice, Wide Lens, Scope Lens, and Zoom Lens.
- Iron Ball, Metal Coat, Throat Spray, HP Up, Protein, Iron, Carbos, Calcium, Zinc, PP Up, PP Max, Upgrade, Dubious Disc, and Loaded Dice.
@@ -13,8 +16,6 @@
- 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.
- The evolution tree can now be viewed on the Pokédex, showing a Pokémon's full family line and what's needed to evolve into each stage.
- Added custom sounds to a bunch of items that can be placed as blocks: liquid bottles, pill bottles, powders and dice.
### Pokémon Added
#### Generation 4
@@ -88,8 +89,6 @@
- Blank TM can now be inserted into the Disc Shelf
- Recall animation now renders ball in hand with the player arm raised.
- Made regional and Vivillon split-evo locations now mutually exclusive
- Item evolutions now unlock **all** locked evolutions whose requirements are met instead of stopping after the first.
- Exceptions being "forced" evolutions which will continue to stop after the first one
### Fixes
- Correctly grants "They're Minerals!" advancement when planting a type gem
@@ -116,11 +115,10 @@
- Fixed Alolan Diglett's cry not playing
- Fixed shiny alpha Snorlax using the non-shiny texture
- Various Structure fixes
- Fixed shiny Pokémon under certain circumstances forgetting taught TMs
- Fixed shiny pokemon under certain circumstances forgetting taught TMs
- Fixed certain Pokémon sounds sometimes being doubled when played at specific times in their animations
- Fixed ball capture beam origin coming from behind the ball.
- Fixed Safari Ball catch rate outside of battle
### Developer
- Evolution requirements can now set `pokedexIcon` and `pokedexTooltip` directly in their JSON to control how they're shown on the Pokédex's evolution tree, for example:
```json
@@ -657,11 +657,11 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
@JvmField
val SACHET = create("sachet", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(SoundType.WOOL).mapColor(MapColor.NONE).noOcclusion(), DecorativeItemBlock.DecorativeItemBlockType.POUCH))
@JvmField
val METAL_POWDER = create("metal_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_POWDER_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), DecorativeItemBlock.DecorativeItemBlockType.POUCH))
val METAL_POWDER = create("metal_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(SoundType.WOOL).mapColor(MapColor.NONE).noOcclusion(), DecorativeItemBlock.DecorativeItemBlockType.POUCH))
@JvmField
val QUICK_POWDER = create("quick_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_POWDER_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), DecorativeItemBlock.DecorativeItemBlockType.POUCH))
val QUICK_POWDER = create("quick_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(SoundType.WOOL).mapColor(MapColor.NONE).noOcclusion(), DecorativeItemBlock.DecorativeItemBlockType.POUCH))
@JvmField
val BRIGHT_POWDER = create("bright_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_POWDER_SOUNDS).mapColor(MapColor.NONE).noOcclusion().lightLevel{3}, DecorativeItemBlock.DecorativeItemBlockType.POUCH))
val BRIGHT_POWDER = create("bright_powder", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(SoundType.WOOL).mapColor(MapColor.NONE).noOcclusion().lightLevel{3}, DecorativeItemBlock.DecorativeItemBlockType.POUCH))
@JvmField
val NEVER_MELT_ICE = create("never_melt_ice", DecorativeItemBlock(BlockBehaviour.Properties.of().sound(SoundType.GLASS).mapColor(MapColor.NONE).noOcclusion().friction(0.989F), DecorativeItemBlock.DecorativeItemBlockType.NEVERMELT))
@@ -691,7 +691,7 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val EJECT_BUTTON = create("eject_button", EjectButtonBlock(BlockBehaviour.Properties.of().sound(SoundType.METAL).mapColor(MapColor.NONE).pushReaction(PushReaction.DESTROY).noOcclusion().strength(0.125f), 40))
@JvmField
val LOADED_DICE = create("loaded_dice", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_DICE_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.DICE))
val LOADED_DICE = create("loaded_dice", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.DICE))
@JvmField
val IRON_BALL = create("iron_ball", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.METAL).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.IRON_BALL))
@JvmField
@@ -702,40 +702,40 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val DUBIOUS_DISC = create("dubious_disc", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.UPGRADE))
@JvmField
val THROAT_SPRAY = create("throat_spray", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.THROAT_SPRAY))
val THROAT_SPRAY = create("throat_spray", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.THROAT_SPRAY))
@JvmField
val FULL_HEAL = create("full_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val FULL_HEAL = create("full_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val ANTIDOTE = create("antidote", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val ANTIDOTE = create("antidote", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val AWAKENING = create("awakening", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val AWAKENING = create("awakening", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val BURN_HEAL = create("burn_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val BURN_HEAL = create("burn_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val ICE_HEAL = create("ice_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val ICE_HEAL = create("ice_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val PARALYZE_HEAL = create("paralyze_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
val PARALYZE_HEAL = create("paralyze_heal", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.STATUS_RESTORE))
@JvmField
val ETHER = create("ether", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
val ETHER = create("ether", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
@JvmField
val MAX_ETHER = create("max_ether", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
val MAX_ETHER = create("max_ether", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
@JvmField
val ELIXIR = create("elixir", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
val ELIXIR = create("elixir", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
@JvmField
val MAX_ELIXIR = create("max_elixir", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
val MAX_ELIXIR = create("max_elixir", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.ETHER))
@JvmField
val POTION = create("potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
val POTION = create("potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
@JvmField
val SUPER_POTION = create("super_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
val SUPER_POTION = create("super_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
@JvmField
val HYPER_POTION = create("hyper_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
val HYPER_POTION = create("hyper_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.POTION))
@JvmField
val MAX_POTION = create("max_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.MAX_POTION))
val MAX_POTION = create("max_potion", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.MAX_POTION))
@JvmField
val FULL_RESTORE = create("full_restore", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.MAX_POTION))
val FULL_RESTORE = create("full_restore", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.MAX_POTION))
@JvmField
val DIRE_HIT = create("dire_hit", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.BATTLE_ITEM))
@@ -755,21 +755,21 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val X_SPEED = create("x_${Stats.SPEED.identifier.path}", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.BATTLE_ITEM))
@JvmField
val HP_UP = create("hp_up", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val HP_UP = create("hp_up", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val PROTEIN = create("protein", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val PROTEIN = create("protein", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val IRON = create("iron", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val IRON = create("iron", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val CARBOS = create("carbos", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val CARBOS = create("carbos", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val CALCIUM = create("calcium", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val CALCIUM = create("calcium", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val ZINC = create("zinc", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val ZINC = create("zinc", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val PP_UP = create("pp_up", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val PP_UP = create("pp_up", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val PP_MAX = create("pp_max", StackableItemBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.ITEM_BLOCK_BOTTLE_PILLS_SOUNDS).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
val PP_MAX = create("pp_max", StackableItemBlock(BlockBehaviour.Properties.of().sound(SoundType.CANDLE).mapColor(MapColor.NONE).noOcclusion(), StackableItemBlock.StackableItemBlockType.VITAMIN))
@JvmField
val MONITOR = create("monitor", MonitorBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().strength(5.0F, 6.0F).lightLevel { if (it.getValue(MonitorBlock.SCREEN) != MonitorBlock.MonitorScreen.OFF) 13 else 0 }))
@@ -657,65 +657,5 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
SoundEvents.WOOL_FALL
)
@JvmField
val ITEM_BLOCK_POWDER_PLACE = this.create("block.item_block.powder.place")
@JvmField
val ITEM_BLOCK_POWDER_BREAK = this.create("block.item_block.powder.break")
@JvmField
val ITEM_BLOCK_POWDER_STEP = this.create("block.item_block.powder.step")
@JvmField
val ITEM_BLOCK_POWDER_SOUNDS = SoundType(1f, 1.1f,
ITEM_BLOCK_POWDER_BREAK,
ITEM_BLOCK_POWDER_STEP,
ITEM_BLOCK_POWDER_PLACE,
ITEM_BLOCK_POWDER_STEP,
ITEM_BLOCK_POWDER_STEP
)
@JvmField
val ITEM_BLOCK_BOTTLE_LIQUID_PLACE = this.create("block.item_block.bottle_liquid.place")
@JvmField
val ITEM_BLOCK_BOTTLE_LIQUID_BREAK = this.create("block.item_block.bottle_liquid.break")
@JvmField
val ITEM_BLOCK_BOTTLE_LIQUID_STEP = this.create("block.item_block.bottle_liquid.step")
@JvmField
val ITEM_BLOCK_BOTTLE_LIQUID_SOUNDS = SoundType(1f, 1.1f,
ITEM_BLOCK_BOTTLE_LIQUID_BREAK,
ITEM_BLOCK_BOTTLE_LIQUID_STEP,
ITEM_BLOCK_BOTTLE_LIQUID_PLACE,
ITEM_BLOCK_BOTTLE_LIQUID_PLACE,
ITEM_BLOCK_BOTTLE_LIQUID_PLACE
)
@JvmField
val ITEM_BLOCK_BOTTLE_PILLS_PLACE = this.create("block.item_block.bottle_pills.place")
@JvmField
val ITEM_BLOCK_BOTTLE_PILLS_BREAK = this.create("block.item_block.bottle_pills.break")
@JvmField
val ITEM_BLOCK_BOTTLE_PILLS_STEP = this.create("block.item_block.bottle_pills.step")
@JvmField
val ITEM_BLOCK_BOTTLE_PILLS_SOUNDS = SoundType(1f, 1.1f,
ITEM_BLOCK_BOTTLE_PILLS_BREAK,
ITEM_BLOCK_BOTTLE_PILLS_STEP,
ITEM_BLOCK_BOTTLE_PILLS_PLACE,
ITEM_BLOCK_BOTTLE_PILLS_PLACE,
ITEM_BLOCK_BOTTLE_PILLS_PLACE
)
@JvmField
val ITEM_BLOCK_DICE_PLACE = this.create("block.item_block.dice.place")
@JvmField
val ITEM_BLOCK_DICE_BREAK = this.create("block.item_block.dice.break")
@JvmField
val ITEM_BLOCK_DICE_STEP = this.create("block.item_block.dice.step")
@JvmField
val ITEM_BLOCK_DICE_SOUNDS = SoundType(1f, 1.1f,
ITEM_BLOCK_DICE_BREAK,
ITEM_BLOCK_DICE_STEP,
ITEM_BLOCK_DICE_PLACE,
ITEM_BLOCK_DICE_STEP,
ITEM_BLOCK_DICE_STEP
)
private fun create(name: String): SoundEvent = this.create(name, SoundEvent.createVariableRangeEvent(cobblemonResource(name)))
}
@@ -545,12 +545,11 @@ abstract class PosableState : Schedulable {
primaryAnimation?.animation?.applyEffects(entity, this, previousSeconds, newSeconds)
currentModel?.let { model ->
val pose = currentPose?.let { model.poses[it] }
// Effects start playing from pose animations as long as the intensity is above 0.5. Pretty sloppy honestly.
pose?.animations
?.asSequence()
?.filter { it.condition(this) }
?.forEach {
it.applyEffects(entity, this, previousSeconds, newSeconds)
}
?.filter { shouldIdleRun(it, 0.5F) && it.condition(this) }
?.forEach { it.applyEffects(entity, this, previousSeconds, newSeconds) }
}
}
@@ -1483,31 +1483,19 @@ open class PokemonEntity(
// Evolution item logic
if (pokemon.getOwnerPlayer() == player) {
fun evolutionUnlocked(): Boolean {
stack.consume(1, player)
this.level().playSoundServer(
position = this.position(),
sound = CobblemonSounds.ITEM_USE,
volume = 1F,
pitch = 1F
)
return true
}
val context = ItemInteractionEvolution.ItemInteractionContext(stack, player.level())
val lockedItemEvolutions = pokemon.lockedEvolutions.filterIsInstance<ItemInteractionEvolution>()
// forced evolutions > check those first and do ONLY one if there's multiple
lockedItemEvolutions.filter { !it.optional }.forEach {
if (it.attemptEvolution(pokemon, context)) {
return evolutionUnlocked()
}
}
// optional evolutions > unlock all with single item use
lockedItemEvolutions.filter { it.optional }
// we unlock all evolutions that depend on this single item
.map { evolution -> return@map evolution.attemptEvolution(pokemon, context) }
.let {
if (it.contains(true)) { // if any of the evolutions were unlocked, we take the item
return evolutionUnlocked()
pokemon.lockedEvolutions
.filterIsInstance<ItemInteractionEvolution>()
.forEach { evolution ->
if (evolution.attemptEvolution(pokemon, context)) {
stack.consume(1, player)
this.level().playSoundServer(
position = this.position(),
sound = CobblemonSounds.ITEM_USE,
volume = 1F,
pitch = 1F
)
return true
}
}
}
@@ -977,102 +977,6 @@
{ "name": "cobblemon:block/item_block/paper_large_break_3", "volume": 0.6 }
]
},
"block.item_block.bottle_liquid.place": {
"subtitle": "subtitles.block.generic.place",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_liquid_place_1", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/bottle_liquid_place_2", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/bottle_liquid_place_3", "volume": 0.4 }
]
},
"block.item_block.bottle_liquid.break": {
"subtitle": "subtitles.block.generic.break",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_liquid_break_1", "volume": 0.5 },
{ "name": "cobblemon:block/item_block/bottle_liquid_break_2", "volume": 0.5 },
{ "name": "cobblemon:block/item_block/bottle_liquid_break_3", "volume": 0.5 }
]
},
"block.item_block.bottle_liquid.step": {
"subtitle": "subtitles.block.generic.footsteps",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_liquid_step_1", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/bottle_liquid_step_2", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/bottle_liquid_step_3", "volume": 0.2 }
]
},
"block.item_block.bottle_pills.place": {
"subtitle": "subtitles.block.generic.place",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_pills_place_1", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/bottle_pills_place_2", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/bottle_pills_place_3", "volume": 0.4 }
]
},
"block.item_block.bottle_pills.break": {
"subtitle": "subtitles.block.generic.break",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_pills_break_1", "volume": 0.5 },
{ "name": "cobblemon:block/item_block/bottle_pills_break_2", "volume": 0.5 },
{ "name": "cobblemon:block/item_block/bottle_pills_break_3", "volume": 0.5 }
]
},
"block.item_block.bottle_pills.step": {
"subtitle": "subtitles.block.generic.footsteps",
"sounds": [
{ "name": "cobblemon:block/item_block/bottle_pills_step_1", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/bottle_pills_step_2", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/bottle_pills_step_3", "volume": 0.2 }
]
},
"block.item_block.powder.place": {
"subtitle": "subtitles.block.generic.place",
"sounds": [
{ "name": "cobblemon:block/item_block/powder_place_1", "volume": 0.3 },
{ "name": "cobblemon:block/item_block/powder_place_2", "volume": 0.3 },
{ "name": "cobblemon:block/item_block/powder_place_3", "volume": 0.3 }
]
},
"block.item_block.powder.break": {
"subtitle": "subtitles.block.generic.break",
"sounds": [
{ "name": "cobblemon:block/item_block/powder_break_1", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/powder_break_2", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/powder_break_3", "volume": 0.4 }
]
},
"block.item_block.powder.step": {
"subtitle": "subtitles.block.generic.footsteps",
"sounds": [
{ "name": "cobblemon:block/item_block/powder_step_1", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/powder_step_2", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/powder_step_3", "volume": 0.2 }
]
},
"block.item_block.dice.place": {
"subtitle": "subtitles.block.generic.place",
"sounds": [
{ "name": "cobblemon:block/item_block/dice_place_1", "volume": 0.3 },
{ "name": "cobblemon:block/item_block/dice_place_2", "volume": 0.3 },
{ "name": "cobblemon:block/item_block/dice_place_3", "volume": 0.3 }
]
},
"block.item_block.dice.break": {
"subtitle": "subtitles.block.generic.break",
"sounds": [
{ "name": "cobblemon:block/item_block/dice_break_1", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/dice_break_2", "volume": 0.4 },
{ "name": "cobblemon:block/item_block/dice_break_3", "volume": 0.4 }
]
},
"block.item_block.dice.step": {
"subtitle": "subtitles.block.generic.footsteps",
"sounds": [
{ "name": "cobblemon:block/item_block/dice_step_1", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/dice_step_2", "volume": 0.2 },
{ "name": "cobblemon:block/item_block/dice_step_3", "volume": 0.2 }
]
},
"move.absorb.actor": {
"sounds": [ { "name": "cobblemon:move/absorb/absorb_actor", "volume": 0.3 } ]
},
@@ -138,7 +138,7 @@
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.2
"walkSpeed": 0.248
}
},
"resting": {
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.18
"walkSpeed": 0.189
},
"swim": {
"avoidsWater": true
@@ -63,6 +63,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.259
}
},
"combat": {
@@ -85,7 +85,7 @@
"canSwimInLava": true
},
"walk": {
"walkSpeed": "0.25"
"walkSpeed": 0.264
}
},
"resting": {
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.21
"walkSpeed": 0.222
},
"swim": {
"avoidsWater": true
@@ -156,7 +156,7 @@
"swimSpeed": "0.2"
},
"walk": {
"walkSpeed": 0.17
"walkSpeed": 0.176
}
},
"resting": {
@@ -91,6 +91,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.278
}
},
"combat": {
@@ -61,7 +61,7 @@
},
"moving": {
"walk": {
"walkSpeed": 0.26
"walkSpeed": 0.153
},
"swim": {
"avoidsWater": true
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.18
"walkSpeed": 0.192
},
"swim": {
"avoidsWater": true
@@ -139,7 +139,7 @@
"swimSpeed": 0.1
},
"walk": {
"walkSpeed": 0.147
"walkSpeed": 0.219
}
},
"resting": {
@@ -59,7 +59,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.245
"walkSpeed": 0.163
},
"swim": {
"swimSpeed": 0.1,
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.175
"walkSpeed": 0.138
},
"swim": {
"avoidsWater": true,
@@ -77,6 +77,9 @@
},
"fly": {
"canFly": true
},
"walk": {
"walkSpeed": 0.271
}
},
"combat": {
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.2,
"walkSpeed": 0.176,
"avoidsLand": true
},
"swim": {
@@ -146,6 +146,9 @@
"swim": {
"canBreatheUnderwater": true,
"swimSpeed": "0.2"
},
"walk": {
"walkSpeed": 0.236
}
},
"resting": {
@@ -66,6 +66,9 @@
"swim": {
"canSwimInWater": false,
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.222
}
},
"herd": {
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.4
"walkSpeed": 0.369
},
"swim": {
"avoidsWater": true
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.4
"walkSpeed": 0.324
},
"swim": {
"avoidsWater": true
@@ -172,7 +172,7 @@
"swimSpeed": "0.2"
},
"walk": {
"walkSpeed": 0.2
"walkSpeed": 0.236
}
},
"resting": {
@@ -54,6 +54,9 @@
"canBreatheUnderwater": true,
"swimSpeed": "0.2",
"canWalkOnWater": true
},
"walk": {
"walkSpeed": 0.248
}
},
"resting": {
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.19
"walkSpeed": 0.215
},
"swim": {
"avoidsWater": true
@@ -66,6 +66,9 @@
"swim": {
"canSwimInWater": false,
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.248
}
},
"herd": {
@@ -62,6 +62,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.233
}
},
"combat": {
@@ -56,6 +56,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.393
}
},
"herd": {
@@ -55,7 +55,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.25
"walkSpeed": 0.229
},
"swim": {
"avoidsWater": true
@@ -67,7 +67,7 @@
"canFly": true
},
"walk": {
"walkSpeed": 0.3
"walkSpeed": 0.248
},
"swim": {
"canWalkOnWater": true
@@ -84,7 +84,7 @@
},
"moving": {
"walk": {
"walkSpeed": 0.2
"walkSpeed": 0.222
},
"swim": {
"avoidsWater": true
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.2
"walkSpeed": 0.222
},
"swim": {
"avoidsWater": true
@@ -51,7 +51,8 @@
"behaviour": {
"moving": {
"walk": {
"avoidsLand": true
"avoidsLand": true,
"walkSpeed": 0.248
},
"swim": {
"swimSpeed": 0.1,
@@ -54,6 +54,9 @@
"swim": {
"swimSpeed": 0.1,
"canBreatheUnderwater": true
},
"walk": {
"walkSpeed": 0.248
}
},
"resting": {
@@ -56,7 +56,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.14
"walkSpeed": 0.184
},
"swim": {
"avoidsWater": true,
@@ -56,7 +56,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.146
"walkSpeed": 0.161
},
"swim": {
"avoidsWater": true,
@@ -56,6 +56,9 @@
"moving": {
"swim": {
"canWalkOnWater": true
},
"walk": {
"walkSpeed": 0.222
}
},
"resting": {
@@ -163,7 +163,7 @@
},
"walk": {
"avoidsLand": true,
"walkSpeed": 0.15
"walkSpeed": 0.208
}
},
"resting": {
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.2,
"walkSpeed": 0.136,
"avoidsLand": true
},
"swim": {
@@ -60,7 +60,7 @@
},
"moving": {
"walk": {
"walkSpeed": 0.25
"walkSpeed": 0.314
},
"swim": {
"avoidsWater": true
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.25
"walkSpeed": 0.274
},
"swim": {
"avoidsWater": true
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.18
"walkSpeed": 0.176
},
"swim": {
"avoidsWater": true
@@ -52,7 +52,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.23
"walkSpeed": 0.236
},
"swim": {
"avoidsWater": true
@@ -51,7 +51,7 @@
"behaviour": {
"moving": {
"walk": {
"walkSpeed": 0.41
"walkSpeed": 0.351
},
"swim": {
"swimSpeed": 0.1,
@@ -54,6 +54,9 @@
"swimSpeed": 0.1,
"canSwimInWater": false,
"canBreatheUnderwater": true
},
"walk": {
"walkSpeed": 0.248
}
},
"herd": {
@@ -128,7 +128,7 @@
},
"walk": {
"avoidsLand": true,
"walkSpeed": 0.15
"walkSpeed": 0.157
}
},
"resting": {
@@ -275,6 +275,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.304
}
},
"combat": {
@@ -253,6 +253,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.264
}
},
"combat": {
@@ -237,6 +237,9 @@
"moving": {
"swim": {
"avoidsWater": true
},
"walk": {
"walkSpeed": 0.192
}
},
"combat": {
@@ -85,7 +85,8 @@
"moving": {
"canLook": false,
"walk": {
"avoidsLand": true
"avoidsLand": true,
"walkSpeed": 0.304
},
"swim": {
"swimSpeed": 0.1,

Some files were not shown because too many files have changed in this diff Show More