Compare commits

...
Author SHA1 Message Date
Slippy 2895c0a2ef I hate the crumbling arch 2024-07-18 08:57:11 -05:00
Slippy acc87f9eae Solhenge, Lunahenge, and Stonjournerhenge structures completed. 2024-07-17 12:31:55 -05:00
Slippy 928dfcdadf i hate the crumbling arch 2024-06-01 08:47:58 -05:00
Slippy 21363405fc console log spam fix for real this time 2024-05-18 12:00:11 -05:00
Slippy 08c4f4a0ff added loot to the trapped chest in unstable caves so you can't tell which one is trapped if you're using lootr muwahahahaha 2024-05-16 01:57:41 -05:00
Slippy c4a1704a8b unstable cave loot table fixes 2024-05-15 20:35:24 -05:00
Slippy 837aa5acf5 missing loot table in deserted tower 2024-05-14 16:58:55 -05:00
Slippy 969d6ac7fc console spam fix 2024-05-12 09:23:39 -05:00
Slippy 46bb9e1aec console fix 2024-05-11 21:58:50 -05:00
Slippy 9792ff3392 console spam fix 2024-05-11 21:36:29 -05:00
Slippy e863c6d094 Deleted Duplicate Loot Table 2024-05-10 16:19:15 -05:00
Slippy a070dc56bd Cleaning up unused files 2024-04-29 01:05:00 -05:00
Slippy 79f9e0f0f2 Gimmi Towers now have more junk it can generate at the top 2024-04-29 00:59:41 -05:00
Slippy 8500eb58ef Removed spam log issues and blended some structures into the world better 2024-04-29 00:49:48 -05:00
Slippy e835b833b3 One more try 2024-04-26 16:48:04 -05:00
Slippy 3b653b745e suspicious mound shoved further into the ground 2024-04-22 17:20:46 -05:00
Slippy d03541ff6f iron bar fix 2024-04-15 00:56:31 -05:00
Slippy 0d7aff0349 Please work 2024-04-15 00:24:54 -05:00
Slippy c904888c6a found a spelling error smh 2024-04-13 09:12:21 -05:00
Slippy c07d7d304e It wasnt the last D: 2024-04-09 19:19:02 -05:00
Slippy 5f94999b4f Is this the last push? 2024-04-09 19:15:02 -05:00
Slippy 6515bfa108 Decaying Crypt no longer has a random floating granite block 2024-04-05 12:14:57 -05:00
Slippy c502fec709 more bug fixes and balancing 2024-04-01 02:48:33 -05:00
Slippy 756ef48ba2 coins are more common in sus blocks 2024-03-31 04:52:02 -05:00
Slippy 2c4df6622a fixed spelling error in gilded chest loot table 2024-03-31 04:30:48 -05:00
Slippy f1213abdf4 candy adjustment 2024-03-31 01:04:02 -05:00
Slippy 9b1d847f59 added absorb bulb to some fossil loot tables 2024-03-31 00:09:28 -05:00
Slippy bf900a0167 Just an enormous amount of changes to loot tables and structures 2024-03-30 23:57:54 -05:00
Slippy 703282eca1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.5-Structures 2024-03-30 19:39:12 -05:00
Hiroku 4e3e6405d0 Merge branch 'FossilMachineBalancing01' into 'main'
Fossil machine balancing01

See merge request cable-mc/cobblemon!944
2024-03-30 23:01:44 +00:00
JazzMcNade 1e161a52ee Fixed an index out of bounds issue related to having a extreme excess of material in the tank 2024-03-30 02:27:04 -05:00
JazzMcNade 65b2204783 Decreased required material to 128 (from 256). Decreased restoration time to 12min (from 15min). 2024-03-30 02:14:06 -05:00
Slippy a9115bfb15 XL RCs are less common 2024-03-29 01:27:30 -05:00
Hiroku f2c5113f0b Merge branch 'json-addict' into 'main'
Advancement and Tag Updates

See merge request cable-mc/cobblemon!942
2024-03-29 05:31:33 +00:00
Hiroku e29a2402e9 Merge branch 'spawning-gamerule-change' into 'main'
Move doPokemonSpawning gamerule logic

See merge request cable-mc/cobblemon!941
2024-03-29 05:30:53 +00:00
Hiroku aa4857abbb Merge branch 'Quick-Move-Stacked-PokePotion-Bases' into 'main'
Add the ability to quick move stacked PokePotion bases into Brewing Stands.

See merge request cable-mc/cobblemon!935
2024-03-29 05:29:13 +00:00
Hiroku d29653233d Merge branch 'main' into 'Quick-Move-Stacked-PokePotion-Bases'
# Conflicts:
#   CHANGELOG.md
2024-03-29 05:28:22 +00:00
Hiroku 1b51a128d7 Merge branch 'OldAmberSpriteUpdate' into 'main'
Corrected Old Amber Sprite

See merge request cable-mc/cobblemon!939
2024-03-29 05:27:10 +00:00
Hiroku 245011cf5e Merge branch '1.5-Structures' into 'main'
Oh boy that's a lot of changes and fixes to structures

See merge request cable-mc/cobblemon!940
2024-03-29 05:26:30 +00:00
dhi_holo 20a97984a2 Misc Structures
Just a couple tags containing all structures not represented in a sub-tag, if someone wants to go in and make more tags to reduce the ones in here feel free, just make sure it adds up.
2024-03-29 10:54:10 +10:00
dhi_holo d1517548bd Update en_us.json
Gamerule Translation so it's not just a shitty string anymore
2024-03-29 10:09:22 +10:00
dhi_holo 3e1f9dc9b0 2 Shiny
Updated shiny icon for summary and advancement
2024-03-29 09:54:52 +10:00
miasmus fd19e65f79 move doPokemonSpawing gamerule logic 2024-03-28 16:42:42 -04:00
dhi_holo 6b10d81bc8 Update en_us.json
Capital fixes because it wasn't right
2024-03-28 23:53:56 +10:00
dhi_holo f3b9c03fc2 Advancement Updates
Reorgainised the advancements Healing Power, Consult the Fossil, and Free Roam: Enabled, renamed Tumbling Down to be correct, and changed the Shiny advancement to use Shiny icon.
2024-03-28 21:39:56 +10:00
Slippy 2b95138c46 Oh boy that's a lot of changes and fixes to structures 2024-03-27 20:02:02 -05:00
JazzMcNade 864e6be461 Corrected Old Amber Sprite 2024-03-27 19:53:10 -05:00
Apion c02fa1f85e Merge branch '1.5-Drops-and-Fixes' into 'main'
New drops and some tag/script fixes.

See merge request cable-mc/cobblemon!938
2024-03-27 20:29:11 +00:00
Apion 503b1069fd Merge branch 'MultiBlockEntityClientCrashFix' into 'main'
MultiBlockEntity Safer Casting

See merge request cable-mc/cobblemon!937
2024-03-27 20:27:01 +00:00
JazzMcNade f1d593d53c MultiBlockEntity Safer Casting 2024-03-27 20:27:01 +00:00
Veraxiel 55dd486044 Updated Changelog. 2024-03-27 01:10:26 -04:00
Hiroku 3263837137 Merge branch '1.5-Structures' into 'main'
Structure fixes and generation rate adjustments

See merge request cable-mc/cobblemon!936
2024-03-25 21:14:19 +00:00
Slippy a471fcd948 Increased rates for underground ruin structures, forest ruin structures and gimmi towers 2024-03-25 12:29:03 -05:00
Slippy a14bfd55d1 Jungle Fossil rates were increased 2024-03-25 12:22:25 -05:00
Slippy 725e819e89 Snow Forest structures rates were increased 2024-03-25 12:21:23 -05:00
Slippy b52b843206 Ocean fossils structures rates were increased 2024-03-25 12:20:13 -05:00
Slippy 74c65e22cb Decaying Crypt generation rates increased 2024-03-25 12:19:20 -05:00
Slippy c348520a9b Increased the generation rate for Mossy Oubliette 2024-03-25 12:15:42 -05:00
Slippy 78dd5f334a Decrease how common desert ruins are and adjusted the weights at which each will generate 2024-03-25 12:12:54 -05:00
Slippy 67318c9307 Sandy Den's were way too common. Adjusted their rates of generation 2024-03-25 12:05:17 -05:00
Slippy 31c48407df Slightly lowered the amount of sus sand in the sandy den structure 2024-03-25 11:43:45 -05:00
Charzard4261 0957de86c7 Add the ability to quick move stacked PokePotion bases into Brewing Stands. 2024-03-25 00:05:19 +00:00
Slippy daae444fa9 Prehistoric Rooted Pits are more common 2024-03-23 22:51:39 -05:00
Slippy 79423ef5ee Prehistoric_Birch_Tree Fix 2024-03-23 22:13:07 -05:00
Veraxiel 6255f7dc31 Removed spawn that shouldn't be in. 2024-03-23 22:29:43 -04:00
Hiroku ff10306372 Merge branch 'GiveGimmighoulRightClick' into 'main'
Easier Gimmighoul Giving

See merge request cable-mc/cobblemon!930
2024-03-23 22:07:16 +00:00
Hiroku aaf7daa45b Merge branch 'sound' into 'main'
A lot of audio asset updates

See merge request cable-mc/cobblemon!933
2024-03-23 22:06:29 +00:00
Waldleufer ae550f78c4 Now the order of selection of input and output does not matter anymore. [skip-ci] 2024-03-23 16:19:40 +01:00
Waldleufer 66e4194a3e Made public spawn writer read Dex No. as int for consistency [skip-ci] 2024-03-23 16:04:53 +01:00
Waldleufer 12e6b76504 chore: added spawn specific drops to a bunch of cobblemon - mainly nether spawns. 2024-03-23 15:54:52 +01:00
Waldleufer 93861af71f dropping drops helps. [skip-ci] 2024-03-23 15:51:34 +01:00
Waldleufer 0c80748012 perf: script speed is over 9000! [skip-ci] 2024-03-23 15:18:30 +01:00
Waldleufer fcf832c22c more sensible script default values [skip-ci] 2024-03-23 13:17:48 +01:00
Sterrezo a065aff744 Added audio assets for fossil Pokemon cries 2024-03-23 13:04:19 +01:00
Sterrezo d77f424a83 Updated battle SFX 2024-03-23 12:49:47 +01:00
Waldleufer d5d2a2cec3 fix: improved hint for rare spreadsheet parsing bug. [skip-ci] 2024-03-23 11:55:02 +01:00
Sterrezo 036e150191 Merge branch 'main' into sound 2024-03-23 11:52:52 +01:00
Waldleufer 0bf1d84675 fix: added hint for rare spreadsheet parsing bug. [skip-ci] 2024-03-23 11:52:52 +01:00
Waldleufer b1b8e658b2 chore: updated drops data and fixed some missing form specific drops. 2024-03-23 11:42:20 +01:00
Waldleufer f984b21929 fix: Drops script now robustly handles form drops and hints at missing data in both spreadsheet and .json files [skip-ci] 2024-03-23 11:34:42 +01:00
Waldleufer 0a5193b209 perf: Increase preformance of drops script to be linear function, added dex_range option [skip-ci] 2024-03-23 10:46:59 +01:00
Veraxiel 43f1f1c30d Update to spawns to use SkyLight. 2024-03-23 04:05:56 -04:00
Waldleufer c16597ae41 chore: CHANGELOG [skip-ci] 2024-03-22 23:31:39 +01:00
Waldleufer f76e7582d2 Reworked our spawn writer script to be compatible with new UI [skip-ci] 2024-03-22 23:28:41 +01:00
Waldleufer 40761d87db Adding DexRange as input [skip-ci] 2024-03-22 20:45:19 +01:00
Waldleufer 89a9ad0bfb Refactoring the hell out of it [skip-ci] 2024-03-22 19:41:36 +01:00
Waldleufer 20291c54a5 First Version of public spawn writer script [skip-ci] 2024-03-22 19:12:13 +01:00
Hiroku d6fdfe6ebc Merge branch 'FetusResizing' into 'main'
Fossil Fetus Rescaling

See merge request cable-mc/cobblemon!927
2024-03-22 01:06:17 +00:00
Nick 9f63b62651 Merge branch '1.5-Structures' into 'main'
Hi Hiro

See merge request cable-mc/cobblemon!928
2024-03-21 16:42:25 +00:00
JazzMcNade 392632b7d4 Added the ability for a player to add to Gimighoul's treasure horde by right clicking directly on a gimmighoul that they own. 2024-03-21 00:48:59 -05:00
Slippy 0d377dcbe0 Changes, fixes, and balancing of 1.5 structures 2024-03-20 22:17:13 -05:00
JazzMcNade 88c31bcb7b Scaled Archen to0.55 (from 0.8). Scaled Kabuto to 0.85 (from 0.75) 2024-03-20 19:36:27 -05:00
Waldleufer 8efea17ae6 added structure: prefix for anticonditions and conditions and refactored script [skip-ci] 2024-03-20 21:03:37 +01:00
Waldleufer cdbf569bbc feat: made spawnwriter handle new preset: tag for spawn specific drops [skip-ci] 2024-03-20 16:26:28 +01:00
Veraxiel 0415cf8a69 Added Carnivine spawn files. 2024-03-19 04:09:58 -04:00
Sterrezo 79af092888 Merge branch 'main' into sound 2024-03-18 11:52:30 +01:00
Sterrezo 812d42a42f Merge branch 'main' into sound 2024-03-16 22:22:26 +01:00
Sterrezo 3f114706fa Implemented sounds for Revival Herb and Vivichoke. Volume adjustments.
Implemented sounds for Revival Herb and Vivichoke. Tweaked assets for Fossil Machine insert dna sounds. Adjusted volumes to Fossil Machine, Tumblestone and Coin Pouch sounds.
2024-03-16 22:21:05 +01:00
Sterrezo 9514a1d470 Fossil Machine sound updates
Updated audio assets. Moved and renamed the files for consistency. Adjusted volumes.
2024-03-12 13:31:02 +01:00
1172 changed files with 28911 additions and 2750 deletions

No files matched your search

+7 -2
View File
@@ -154,9 +154,14 @@
- Poké Ball recipes now use tags for their center ingredient, rather than specificied Copper Ingot, Iron Ingot, Gold Ingot, and Diamond, allowing for further datapack customisation.
- Starter Toast now closes once corresponding button is pressed once.
- Moved some items in the vanilla Food & Drinks category.
- Stacked Cobblemon Potion Bases can now be quick moved into Brewing Stands.
- Changed Healer recipe to swap the Max Revive for a Revive.
- Upped the rate that Gastly drop Ghast Tears from 2.5% to 5%.
- Pokémon with a low Blaze Powder drop chance now drop it more frequently in the Nether.
- Reorganised a few advancements.
### Fixes
- Resized Snorlax
- Resized Snorlax.
- Re-added the recipe for the Iron Vitamin.
- Cleaned up empty evolutions declaration in species files (no, I'm not listing all 169 by name).
- Fixed Exeggcute not being able to evolve.
@@ -188,13 +193,13 @@
- Made PokemonProperties.parse more interoperable with Java.
- Added the ``HeldItemEvent``, this comes with 2 implementation ``HeldItemEvent.Pre`` and ``HeldItemEvent.Post``.
- API to support dynamic lighting in any mod that implements this feature has been added to all Species & Forms, see LightingData class for details.
- Added a Mixin for the BrewingStandScreenHandler to fix the incorrect handling of quickMove in Fabric.
- Corrections to the ability implementation have been made that make ``Ability.forced`` function as intended and never reroll an ability for a Pokémon, please check your implementations to ensure the corrected behavior is intended for your use case.
- ``Pokemon.ability`` no longer has a public setter, please migrate to using ``Pokemon#updateAbility``, this handles the ability coordinate storage for you when necessary.
- ``Ability.forced``, ``Ability.index`` and ``Ability.priority`` have all had their setters internalized, there is no longer any need to manually adjust these migrate to the method mentioned above to handle that process for you.
- ``AbilityChanger`` has been added to API alongside some implementations, this is subject to change as the ability capsule and patch currently only expect the traditional behaviour in the Pokémon games of 1 to 2 regular abilities and 1 hidden.
- ``Pokemon#rollAbility`` has been added, this rerolls a legal ability for the Pokémon.
- `docs/cobblemon-tags` tags and spawn-presets can now be auto-generated from the current tags in the cobblemon mod with the `generateSpawnPresetList.py` and `generateTagList.py` scripts.
- `public_spawns_to_json.py` script has been added to give the powerful spawn.json generator a simplistic UI.
### Datapack & Resourcepack Creators
- The maximum amount of fossils that can fit in the Fossil Analyzer can be adjusted in the config.
@@ -160,7 +160,7 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
@JvmField
val BIG_ROOT = this.create("big_root", BigRootBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DARK_GREEN).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.BIG_ROOT_SOUNDS)))
@JvmField
val REVIVAL_HERB = this.create("revival_herb", RevivalHerbBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).mapColor(MapColor.DARK_GREEN).burnable().noCollision().breakInstantly().sounds(BlockSoundGroup.CROP)))
val REVIVAL_HERB = this.create("revival_herb", RevivalHerbBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).mapColor(MapColor.DARK_GREEN).burnable().noCollision().breakInstantly().sounds(CobblemonSounds.REVIVAL_HERB_SOUNDS)))
@JvmField
val TUMBLESTONE_CLUSTER = tumblestoneBlock("tumblestone_cluster", GrowableStoneBlock.STAGE_3, 7, 3, null)
@@ -428,7 +428,7 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
)
@JvmField
val VIVICHOKE_SEEDS = this.create("vivichoke_seeds", VivichokeBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DARK_GREEN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val VIVICHOKE_SEEDS = this.create("vivichoke_seeds", VivichokeBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DARK_GREEN).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.VIVICHOKE_SOUNDS)))
@JvmField
val PEP_UP_FLOWER = this.create("pep_up_flower", FlowerBlock(StatusEffects.LEVITATION, 10, AbstractBlock.Settings.create().mapColor(MapColor.DARK_GREEN).noCollision().breakInstantly().sounds(BlockSoundGroup.GRASS).offset(AbstractBlock.OffsetType.XZ).pistonBehavior(PistonBehavior.DESTROY)))
@JvmField
@@ -99,27 +99,27 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
val MULCH_REMOVE = this.create("mulch.remove")
@JvmField
val FOSSIL_MACHINE_ACTIVATE = this.create("fossilmachine.activate")
val FOSSIL_MACHINE_ACTIVATE = this.create("fossil_machine.activate")
@JvmField
val FOSSIL_MACHINE_ACTIVE_LOOP = this.create("fossilmachine.active_loop")
val FOSSIL_MACHINE_ACTIVE_LOOP = this.create("fossil_machine.active_loop")
@JvmField
val FOSSIL_MACHINE_ASSEMBLE = this.create("fossilmachine.assemble")
val FOSSIL_MACHINE_ASSEMBLE = this.create("fossil_machine.assemble")
@JvmField
val FOSSIL_MACHINE_DNA_FULL = this.create("fossilmachine.dna_full")
val FOSSIL_MACHINE_DNA_FULL = this.create("fossil_machine.dna_full")
@JvmField
val FOSSIL_MACHINE_FINISHED = this.create("fossilmachine.finished")
val FOSSIL_MACHINE_FINISHED = this.create("fossil_machine.finished")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA = this.create("fossilmachine.insert_dna")
val FOSSIL_MACHINE_INSERT_DNA = this.create("fossil_machine.insert_dna")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA_SMALL = this.create("fossilmachine.insert_dna_small")
val FOSSIL_MACHINE_INSERT_DNA_SMALL = this.create("fossil_machine.insert_dna_small")
@JvmField
val FOSSIL_MACHINE_INSERT_FOSSIL = this.create("fossilmachine.insert_fossil")
val FOSSIL_MACHINE_INSERT_FOSSIL = this.create("fossil_machine.insert_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_FOSSIL = this.create("fossilmachine.retrieve_fossil")
val FOSSIL_MACHINE_RETRIEVE_FOSSIL = this.create("fossil_machine.retrieve_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_POKEMON = this.create("fossilmachine.retrieve_pokemon")
val FOSSIL_MACHINE_RETRIEVE_POKEMON = this.create("fossil_machine.retrieve_pokemon")
@JvmField
val FOSSIL_MACHINE_UNPROTECTED = this.create("fossilmachine.unprotected")
val FOSSIL_MACHINE_UNPROTECTED = this.create("fossil_machine.unprotected")
@JvmField
val COIN_POUCH_BREAK = this.create("coin_pouch.break")
@@ -155,11 +155,21 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
@JvmField
val ENERGY_ROOT_PLACE = this.create("energy_root.place")
@JvmField
val VIVICHOKE_BREAK = this.create("vivichoke.break")
@JvmField
val VIVICHOKE_PLACE = this.create("vivichoke.place")
@JvmField
val MINT_BREAK = this.create("mint.break")
@JvmField
val MINT_PLACE = this.create("mint.place")
@JvmField
val REVIVAL_HERB_BREAK = this.create("revival_herb.break")
@JvmField
val REVIVAL_HERB_PLACE = this.create("revival_herb.place")
@JvmField
val MEDICINAL_LEEK_BREAK = this.create("medicinal_leek.break")
@JvmField
@@ -277,6 +287,15 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
SoundEvents.BLOCK_GRASS_FALL
)
@JvmField
val VIVICHOKE_SOUNDS = BlockSoundGroup(1f, 1f,
VIVICHOKE_BREAK,
SoundEvents.BLOCK_GRASS_STEP,
VIVICHOKE_PLACE,
SoundEvents.BLOCK_GRASS_HIT,
SoundEvents.BLOCK_GRASS_FALL
)
@JvmField
val MINT_SOUNDS = BlockSoundGroup(1f, 1f,
MINT_BREAK,
@@ -286,6 +305,15 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
SoundEvents.BLOCK_GRASS_FALL
)
@JvmField
val REVIVAL_HERB_SOUNDS = BlockSoundGroup(1f, 1f,
REVIVAL_HERB_BREAK,
SoundEvents.BLOCK_GRASS_STEP,
REVIVAL_HERB_PLACE,
SoundEvents.BLOCK_GRASS_HIT,
SoundEvents.BLOCK_GRASS_FALL
)
@JvmField
val GILDED_CHEST_SOUNDS = BlockSoundGroup(1f, 1f,
GILDED_CHEST_BREAK,
@@ -35,8 +35,8 @@ abstract class MultiblockBlock(properties: Settings) : BlockWithEntity(propertie
itemStack: ItemStack?
) {
if (world is ServerWorld) {
val multiblockEntity = world.getBlockEntity(pos) as MultiblockEntity
multiblockEntity.multiblockBuilder?.validate(world)
val multiblockEntity = world.getBlockEntity(pos) as? MultiblockEntity
multiblockEntity?.multiblockBuilder?.validate(world)
}
super.onPlaced(world, pos, state, placer, itemStack)
}
@@ -52,8 +52,8 @@ abstract class MultiblockBlock(properties: Settings) : BlockWithEntity(propertie
if(hand == Hand.OFF_HAND) {
return ActionResult.SUCCESS
}
val entity = world.getBlockEntity(pos) as MultiblockEntity
if (entity.multiblockStructure != null) {
val entity = world.getBlockEntity(pos) as MultiblockEntity?
if (entity?.multiblockStructure != null) {
return entity.multiblockStructure!!.onUse(state, world, pos, player, hand, hit)
}
return super.onUse(state, world, pos, player, hand, hit)
@@ -12,6 +12,8 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.spawning.spawner.PlayerSpawner
import com.cobblemon.mod.common.api.spawning.spawner.PlayerSpawnerFactory
import com.cobblemon.mod.common.platform.events.PlatformEvents
import com.cobblemon.mod.common.util.server
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
@@ -34,7 +36,7 @@ object CobblemonWorldSpawnerManager : SpawnerManager() {
fun onPlayerLogin(player: ServerPlayerEntity) {
// Disables spawning
if (!Cobblemon.config.enableSpawning) {
if (!Cobblemon.config.enableSpawning || server()?.gameRules?.getBoolean(CobblemonGameRules.DO_POKEMON_SPAWNING) == false) {
return;
}
@@ -12,6 +12,8 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.spawning.influence.SpawningInfluence
import com.cobblemon.mod.common.api.spawning.spawner.Spawner
import com.cobblemon.mod.common.api.spawning.spawner.TickingSpawner
import com.cobblemon.mod.common.util.server
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules.DO_POKEMON_SPAWNING
/**
* A manager of various spawners. This is a class in which you should register
@@ -49,7 +51,7 @@ open class SpawnerManager {
open fun onServerTick() {
// Disables spawning
if (!Cobblemon.config.enableSpawning) {
if (!Cobblemon.config.enableSpawning || server()?.gameRules?.getBoolean(DO_POKEMON_SPAWNING) == false) {
return
}
influences.removeIf { it.isExpired() }
@@ -63,9 +63,6 @@ abstract class AreaSpawner(
override fun run(cause: SpawnCause): Pair<SpawningContext, SpawnDetail>? {
val area = getArea(cause)
if (area?.world?.gameRules?.getBoolean(DO_POKEMON_SPAWNING) == false) {
return null
}
val constrainedArea = if (area != null) constrainArea(area) else null
if (constrainedArea != null) {
@@ -62,8 +62,8 @@ class MonitorBlock(properties: Settings) : MultiblockBlock(properties) {
if(world == null || pos == null) {
return 0
}
val monitorEntity = world.getBlockEntity(pos) as MultiblockEntity
val multiBlockEntity = monitorEntity.multiblockStructure
val monitorEntity = world.getBlockEntity(pos) as? MultiblockEntity
val multiBlockEntity = monitorEntity?.multiblockStructure
if(multiBlockEntity != null) {
return multiBlockEntity.getComparatorOutput(state, world, pos)
}
@@ -149,8 +149,8 @@ class RestorationTankBlock(properties: Settings) : MultiblockBlock(properties),
if(world == null || pos == null) {
return 0
}
val tankEntity = world.getBlockEntity(pos) as MultiblockEntity
val multiBlockEntity = tankEntity.multiblockStructure
val tankEntity = world.getBlockEntity(pos) as? MultiblockEntity
val multiBlockEntity = tankEntity?.multiblockStructure
if(multiBlockEntity != null) {
return multiBlockEntity.getComparatorOutput(state, world, pos)
}
@@ -180,7 +180,7 @@ class RestorationTankBlock(properties: Settings) : MultiblockBlock(properties),
return
}
val tankEntity = world.getBlockEntity(pos) as? MultiblockEntity
tankEntity?.multiblockStructure!!.onTriggerEvent(state, world, pos, random)
tankEntity?.multiblockStructure?.onTriggerEvent(state, world, pos, random)
}
override fun getOutlineShape(
@@ -42,7 +42,7 @@ open class FossilMultiblockEntity(
field
} else if (masterBlockPos != null && masterBlockPos != pos) {
val chunkPos = ChunkPos(masterBlockPos)
if (world?.chunkManager?.isChunkLoaded(chunkPos.x, chunkPos.z) == true) {
if (world?.chunkManager?.isChunkLoaded(chunkPos.x, chunkPos.z) == true) {
val entity: FossilMultiblockEntity? = world?.getBlockEntity(masterBlockPos) as FossilMultiblockEntity?
field = entity?.multiblockStructure
}
@@ -117,10 +117,10 @@ class FossilMultiblockBuilder(val centerPos: BlockPos) : MultiblockStructureBuil
val monitorPos = monitorPositions[fossilTankIndex]
val fossilAnalyzerPos = fossilAnalyzerPositions[fossilTankIndex]!!
val restorationTankPos = restorationTankPositions[fossilTankIndex]!!
val monitorEntity = world.getBlockEntity(monitorPos) as MultiblockEntity
val analyzerEntity = world.getBlockEntity(fossilAnalyzerPos) as MultiblockEntity
val tankBaseEntity = world.getBlockEntity(restorationTankPos) as MultiblockEntity
val tankTopEntity = world.getBlockEntity(restorationTankPos.up()) as MultiblockEntity
val monitorEntity = world.getBlockEntity(monitorPos) as? MultiblockEntity
val analyzerEntity = world.getBlockEntity(fossilAnalyzerPos) as? MultiblockEntity
val tankBaseEntity = world.getBlockEntity(restorationTankPos) as? MultiblockEntity
val tankTopEntity = world.getBlockEntity(restorationTankPos.up()) as? MultiblockEntity
val structure = FossilMultiblockStructure(monitorPos, fossilAnalyzerPos, restorationTankPos)
structure.tankConnectorDirection = dirsToCheck.filter {
@@ -128,20 +128,20 @@ class FossilMultiblockBuilder(val centerPos: BlockPos) : MultiblockStructureBuil
return@filter adjPos == fossilAnalyzerPos
}.first()
analyzerEntity.multiblockStructure = structure
tankBaseEntity.multiblockStructure = structure
tankTopEntity.multiblockStructure = structure
monitorEntity.multiblockStructure = structure
analyzerEntity?.multiblockStructure = structure
tankBaseEntity?.multiblockStructure = structure
tankTopEntity?.multiblockStructure = structure
monitorEntity?.multiblockStructure = structure
structure.syncToClient(world)
structure.markDirty(world)
world.playSound(null, centerPos, CobblemonSounds.FOSSIL_MACHINE_ASSEMBLE, SoundCategory.BLOCKS)
//Set these to null so the builders can be freed
analyzerEntity.multiblockBuilder = null
tankBaseEntity.multiblockBuilder = null
tankTopEntity.multiblockBuilder = null
monitorEntity.multiblockBuilder = null
analyzerEntity?.multiblockBuilder = null
tankBaseEntity?.multiblockBuilder = null
tankTopEntity?.multiblockBuilder = null
monitorEntity?.multiblockBuilder = null
}
companion object {
@@ -306,22 +306,22 @@ class FossilMultiblockStructure (
}
override fun onBreak(world: World, pos: BlockPos, state: BlockState, player: PlayerEntity?) {
val monitorEntity = world.getBlockEntity(monitorPos) as MultiblockEntity
val analyzerEntity = world.getBlockEntity(analyzerPos) as MultiblockEntity
val tankBaseEntity = world.getBlockEntity(tankBasePos) as MultiblockEntity
val tankTopEntity = world.getBlockEntity(tankBasePos.up()) as MultiblockEntity
val state = world.getBlockState(tankBaseEntity.pos)
val monitorEntity = world.getBlockEntity(monitorPos) as? MultiblockEntity
val analyzerEntity = world.getBlockEntity(analyzerPos) as? MultiblockEntity
val tankBaseEntity = world.getBlockEntity(tankBasePos) as? MultiblockEntity
val tankTopEntity = world.getBlockEntity(tankBasePos.up()) as? MultiblockEntity
val state = world.getBlockState(tankBaseEntity?.pos)
val direction = state.get(HorizontalFacingBlock.FACING).getOpposite()
val wildPokemon: Pokemon? = this.createdPokemon
monitorEntity.multiblockStructure = null
analyzerEntity.multiblockStructure = null
tankBaseEntity.multiblockStructure = null
tankTopEntity.multiblockStructure = null
monitorEntity.masterBlockPos = null
analyzerEntity.masterBlockPos = null
tankBaseEntity.masterBlockPos = null
tankTopEntity.masterBlockPos = null
monitorEntity?.multiblockStructure = null
analyzerEntity?.multiblockStructure = null
tankBaseEntity?.multiblockStructure = null
tankTopEntity?.multiblockStructure = null
monitorEntity?.masterBlockPos = null
analyzerEntity?.masterBlockPos = null
tankBaseEntity?.masterBlockPos = null
tankTopEntity?.masterBlockPos = null
// Drop fossils from machine as long as the machine is not started or near completion
if (this.timeRemaining == -1 || this.timeRemaining >= 20) {
@@ -619,8 +619,8 @@ class FossilMultiblockStructure (
}
const val TICKS_PER_MINUTE = 1200
const val MATERIAL_TO_START = 256
const val TIME_TO_TAKE = TICKS_PER_MINUTE * 15
const val MATERIAL_TO_START = 128
const val TIME_TO_TAKE = TICKS_PER_MINUTE * 12
const val TIME_PER_STAGE = TIME_TO_TAKE / 8
const val PROTECTION_TIME = TICKS_PER_MINUTE * 5
@@ -72,7 +72,7 @@ class RestorationTankRenderer(ctx: BlockEntityRendererFactory.Context) : BlockEn
val fluidModel = if (struct.isRunning()) FLUID_MODELS[8]
else if (struct.createdPokemon != null) FLUID_MODELS[7]
else FLUID_MODELS[fillLevel-1]
else FLUID_MODELS[fillLevel.coerceAtMost(FLUID_MODELS.size - 1) - 1]
fluidModel.getQuads(entity.cachedState, null, entity.world?.random).forEach { quad ->
transparentBuffer?.quad(matrices.peek(), quad, 0.75f, 0.75f, 0.75f, light, OverlayTexture.DEFAULT_UV)
}
@@ -54,6 +54,7 @@ import com.cobblemon.mod.common.pokemon.activestate.InactivePokemonState
import com.cobblemon.mod.common.pokemon.activestate.ShoulderedState
import com.cobblemon.mod.common.pokemon.ai.FormPokemonBehaviour
import com.cobblemon.mod.common.pokemon.evolution.variants.ItemInteractionEvolution
import com.cobblemon.mod.common.pokemon.misc.GimmighoulStashHandler
import com.cobblemon.mod.common.util.*
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
import java.util.EnumSet
@@ -663,6 +664,16 @@ open class PokemonEntity(
pokemon.lastFlowerFed = itemStack
return ActionResult.success(world.isClient)
}
} else if(!player.isSneaking && (itemStack.isOf(CobblemonItems.RELIC_COIN)
|| itemStack.isOf(CobblemonItems.RELIC_COIN_POUCH)
|| itemStack.isOf(CobblemonItems.RELIC_COIN_SACK)
|| itemStack.isOf(Items.NETHERITE_SCRAP)
|| itemStack.isOf(Items.NETHERITE_INGOT)
|| itemStack.isOf(Items.NETHERITE_BLOCK))) {
if(GimmighoulStashHandler.interactMob(player, hand, pokemon)) {
return ActionResult.SUCCESS
}
}
@@ -11,10 +11,13 @@ package com.cobblemon.mod.common.pokemon.misc
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.events.pokemon.HeldItemEvent
import com.cobblemon.mod.common.api.events.pokemon.interaction.HeldItemUpdatedEvent
import com.cobblemon.mod.common.api.pokemon.feature.IntSpeciesFeature
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.item.Item
import net.minecraft.item.Items
import net.minecraft.sound.SoundCategory
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Hand
/**
* Handles logic relating to Gimmighoul's Coin Stash and Scrap Stash bars.
@@ -30,13 +33,30 @@ object GimmighoulStashHandler {
val SCRAP_VALUE = 1
val INGOT_VALUE = SCRAP_VALUE * 4
val BLOCK_VALUE = INGOT_VALUE * 9
fun interactMob(player: PlayerEntity, hand: Hand, pokemon:Pokemon) : Boolean {
val itemStack = player.getStackInHand(hand)
var success = false
if(player is ServerPlayerEntity && pokemon.getOwnerPlayer() == player) {
success = handleItem(pokemon, itemStack.item)
if(success) {
itemStack.decrement(1)
}
}
return success
}
fun giveHeldItem(event: HeldItemEvent.Post) {
val goldHoard = event.pokemon.getFeature<IntSpeciesFeature>("gimmighoul_coins")
val netheriteHoard = event.pokemon.getFeature<IntSpeciesFeature>("gimmighoul_netherite")
val pokemon = event.pokemon
val item = event.received.item
if(handleItem(pokemon, item)) {
pokemon.removeHeldItem()
}
}
fun handleItem(pokemon: Pokemon, item: Item) : Boolean {
val goldHoard = pokemon.getFeature<IntSpeciesFeature>("gimmighoul_coins")
val netheriteHoard = pokemon.getFeature<IntSpeciesFeature>("gimmighoul_netherite")
if (goldHoard != null && goldHoard.value < 999) {
val increase = when (event.received.item) {
val increase = when (item) {
CobblemonItems.RELIC_COIN -> COIN_VALUE
CobblemonItems.RELIC_COIN_POUCH -> POUCH_VALUE
CobblemonItems.RELIC_COIN_SACK -> SACK_VALUE
@@ -46,14 +66,14 @@ object GimmighoulStashHandler {
if (increase != 0) {
goldHoard.value += increase
if (goldHoard.value > 999) goldHoard.value = 999
if (event.pokemon.entity != null) event.pokemon.entity!!.playSound(CobblemonSounds.GIMMIGHOUL_GIVE_ITEM_SMALL, 1f, 1f)
event.pokemon.markFeatureDirty(goldHoard)
event.pokemon.removeHeldItem()
if (pokemon.entity != null) pokemon.entity!!.playSound(CobblemonSounds.GIMMIGHOUL_GIVE_ITEM_SMALL, 1f, 1f)
pokemon.markFeatureDirty(goldHoard)
return true
}
}
if (netheriteHoard != null && netheriteHoard.value < 256) {
val increase = when (event.received.item) {
val increase = when (item) {
Items.NETHERITE_SCRAP -> SCRAP_VALUE
Items.NETHERITE_INGOT -> INGOT_VALUE
Items.NETHERITE_BLOCK -> BLOCK_VALUE
@@ -63,11 +83,12 @@ object GimmighoulStashHandler {
if (increase != 0) {
netheriteHoard.value += increase
if (netheriteHoard.value > 256) netheriteHoard.value = 256
if (event.pokemon.entity != null) event.pokemon.entity!!.playSound(CobblemonSounds.GIMMIGHOUL_GIVE_ITEM_SMALL, 1f, 1f)
event.pokemon.markFeatureDirty(netheriteHoard)
event.pokemon.removeHeldItem()
if (pokemon.entity != null) pokemon.entity!!.playSound(CobblemonSounds.GIMMIGHOUL_GIVE_ITEM_SMALL, 1f, 1f)
pokemon.markFeatureDirty(netheriteHoard)
return true
}
}
return false
}
}
@@ -1,5 +1,5 @@
{
"maxScale": 0.8,
"maxScale": 0.55,
"yTranslation": 0,
"yGrowthPoint": 0.5625,
"animations": [
@@ -1,5 +1,5 @@
{
"maxScale": 0.75,
"maxScale": 0.85,
"yTranslation": 0.1,
"yGrowthPoint": 0.3125,
@@ -884,7 +884,7 @@
"advancements.cobblemon.obtain_leek.description": "Obtain a Medicinal Leek, a wild crop that grows in freshwater",
"advancements.cobblemon.medicinal_brew": "Local Apothecary",
"advancements.cobblemon.medicinal_brew.description": "Brew a Medicinal Leek to create the basis for your healing needs",
"advancements.cobblemon.brew_potion": "You cannot handle my Potions",
"advancements.cobblemon.brew_potion": "You Cannot Handle My Potions",
"advancements.cobblemon.brew_potion.description": "Brew an Oran Berry into Medicinal Brew to create a Potion",
"advancements.cobblemon.brew_full_restore": "Champion's Choice",
"advancements.cobblemon.brew_full_restore.description": "Follow the brewing tree and create a Full Restore with a Lum Berry and Max Potion",
@@ -934,12 +934,12 @@
"advancements.cobblemon.obtain_fossil.description": "Discover a fossil buried in ancient ruins",
"advancements.cobblemon.evolve_gholdengo_netherite": "Cover thee in Debris",
"advancements.cobblemon.evolve_gholdengo_netherite.description": "Evolve a Gimmighoul into a fully netherite-coated Gholdengo",
"advancements.cobblemon.resurrect_pokemon": "Life finds a way",
"advancements.cobblemon.resurrect_pokemon": "Life Finds a Way",
"advancements.cobblemon.resurrect_pokemon.description": "Obtain a Fossil Pokémon from a Resurrection Machine",
"advancements.cobblemon.obtain_tumblestone": "The Rolling Stone",
"advancements.cobblemon.obtain_tumblestone.description": "Safely extract a Tumblestone from suspicious sand or gravel",
"advancements.cobblemon.grow_tumblestone": "Heat from stone, stone from heat",
"advancements.cobblemon.grow_tumblestone.description": "Place a Tumblestone near Lava or Magma, allowing the Tumblestone to grow slowly over time",
"advancements.cobblemon.grow_tumblestone": "Tumbling Down",
"advancements.cobblemon.grow_tumblestone.description": "Place a Tumblestone near Lava or Magma to grow it over time",
"advancements.cobblemon.craft_ancient_balls": "A true Antiquarian",
"advancements.cobblemon.craft_ancient_balls.description": "Utilize Tumblestones to craft all fifteen Ancient Balls",
@@ -1534,6 +1534,7 @@
"gamerule.doPokemonSpawning": "Spawn Pokémon",
"gamerule.doShinyStarters": "Starters will be shiny",
"gamerule.doPokemonLoot": "Drop Pokémon Loot",
"cobblemon.command.checkspawns.invalid-bucket": "Invalid Spawn Bucket",
"cobblemon.command.checkspawns.spawns": "Spawns",
"cobblemon.command.checkspawns.nothing": "Nothing can spawn here right now.",
@@ -38,7 +38,13 @@
"predicate": {
"custom_model_data": 6
},
"model": "cobblemon:item/cobblemon"
"model": "cobblemon:item/shiny_marker"
},
{
"predicate": {
"custom_model_data": 7
},
"model": "cobblemon:item/link_cable"
}
]
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "cobblemon:item/advancements/shiny_icon"
}
}
@@ -104,49 +104,54 @@
"berry.eat": {
"sounds": [ "cobblemon:berry_eat" ]
},
"fossilmachine.activate": {
"fossil_machine.activate": {
"subtitle": "cobblemon.subtitle.fossilmachine.activate",
"sounds": [ "cobblemon:fossilmachine/activate" ]
"sounds": [ { "name": "cobblemon:block/fossil_machine/fossil_machine_activate", "volume": 0.8 } ]
},
"fossilmachine.active_loop": {
"fossil_machine.active_loop": {
"subtitle": "cobblemon.subtitle.fossilmachine.active_loop",
"sounds": [ "cobblemon:fossilmachine/active_loop" ]
"sounds": [ { "name": "cobblemon:block/fossil_machine/fossil_machine_active_loop", "volume": 0.6 } ]
},
"fossilmachine.assemble": {
"fossil_machine.assemble": {
"subtitle": "cobblemon.subtitle.fossilmachine.assemble",
"sounds": [ "cobblemon:fossilmachine/assemble" ]
"sounds": [ { "name": "cobblemon:block/fossil_machine/fossil_machine_assemble", "volume": 0.3 } ]
},
"fossilmachine.dna_full": {
"fossil_machine.dna_full": {
"subtitle": "cobblemon.subtitle.fossilmachine.dna_full",
"sounds": [ "cobblemon:fossilmachine/dna_full" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_dna_full" ]
},
"fossilmachine.finished": {
"fossil_machine.finished": {
"subtitle": "cobblemon.subtitle.fossilmachine.finished",
"sounds": [ "cobblemon:fossilmachine/finished" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_finished" ]
},
"fossilmachine.insert_dna": {
"fossil_machine.insert_dna": {
"subtitle": "cobblemon.subtitle.fossilmachine.insert_dna",
"sounds": [ "cobblemon:fossilmachine/insert_dna" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_insert_dna" ]
},
"fossilmachine.insert_dna_small": {
"fossil_machine.insert_dna_small": {
"subtitle": "cobblemon.subtitle.fossilmachine.insert_dna_small",
"sounds": [ "cobblemon:fossilmachine/insert_dna_small" ]
"sounds": [
{ "name": "cobblemon:block/fossil_machine/fossil_machine_insert_dna_small_1", "volume": 0.7 },
{ "name": "cobblemon:block/fossil_machine/fossil_machine_insert_dna_small_2", "volume": 0.7 },
{ "name": "cobblemon:block/fossil_machine/fossil_machine_insert_dna_small_3", "volume": 0.7 },
{ "name": "cobblemon:block/fossil_machine/fossil_machine_insert_dna_small_4", "volume": 0.7 }
]
},
"fossilmachine.insert_fossil": {
"fossil_machine.insert_fossil": {
"subtitle": "cobblemon.subtitle.fossilmachine.insert_fossil",
"sounds": [ "cobblemon:fossilmachine/insert_fossil" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_insert_fossil" ]
},
"fossilmachine.retrieve_fossil": {
"fossil_machine.retrieve_fossil": {
"subtitle": "cobblemon.subtitle.fossilmachine.retrieve_fossil",
"sounds": [ "cobblemon:fossilmachine/retrieve_fossil" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_retrieve_fossil" ]
},
"fossilmachine.retrieve_pokemon": {
"fossil_machine.retrieve_pokemon": {
"subtitle": "cobblemon.subtitle.fossilmachine.retrieve_pokemon",
"sounds": [ "cobblemon:fossilmachine/retrieve_pokemon" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_retrieve_pokemon" ]
},
"fossilmachine.unprotected": {
"fossil_machine.unprotected": {
"subtitle": "cobblemon.subtitle.fossilmachine.unprotected",
"sounds": [ "cobblemon:fossilmachine/unprotected" ]
"sounds": [ "cobblemon:block/fossil_machine/fossil_machine_unprotected" ]
},
"gimmighoul.give_item_small": {
"sounds": [ "cobblemon:gimmighoul_give_item_small" ]
@@ -164,10 +169,10 @@
},
"coin_pouch.hit": {
"sounds": [
"cobblemon:block/coin_pouch/coin_pouch_block_hit_1",
"cobblemon:block/coin_pouch/coin_pouch_block_hit_2",
"cobblemon:block/coin_pouch/coin_pouch_block_hit_3",
"cobblemon:block/coin_pouch/coin_pouch_block_hit_4"
{ "name": "cobblemon:block/coin_pouch/coin_pouch_block_hit_1", "volume": 0.6 },
{ "name": "cobblemon:block/coin_pouch/coin_pouch_block_hit_2", "volume": 0.6 },
{ "name": "cobblemon:block/coin_pouch/coin_pouch_block_hit_3", "volume": 0.6 },
{ "name": "cobblemon:block/coin_pouch/coin_pouch_block_hit_4", "volume": 0.6 }
]
},
"coin_pouch.place": {
@@ -204,10 +209,10 @@
},
"tumblestone.hit": {
"sounds": [
"cobblemon:block/tumblestone/tumblestone_hit_1",
"cobblemon:block/tumblestone/tumblestone_hit_2",
"cobblemon:block/tumblestone/tumblestone_hit_3",
"cobblemon:block/tumblestone/tumblestone_hit_4"
{ "name": "cobblemon:block/tumblestone/tumblestone_hit_1", "volume": 0.8 },
{ "name": "cobblemon:block/tumblestone/tumblestone_hit_2", "volume": 0.8 },
{ "name": "cobblemon:block/tumblestone/tumblestone_hit_3", "volume": 0.8 },
{ "name": "cobblemon:block/tumblestone/tumblestone_hit_4", "volume": 0.8 }
]
},
"tumblestone.place": {
@@ -304,6 +309,20 @@
"cobblemon:block/plants/medicinal_leek/medicinal_leek_plant_3"
]
},
"vivichoke.break": {
"sounds": [
"cobblemon:block/plants/vivichoke/vivichoke_break_1",
"cobblemon:block/plants/vivichoke/vivichoke_break_2",
"cobblemon:block/plants/vivichoke/vivichoke_break_3"
]
},
"vivichoke.place": {
"sounds": [
"cobblemon:block/plants/vivichoke/vivichoke_place_1",
"cobblemon:block/plants/vivichoke/vivichoke_place_2",
"cobblemon:block/plants/vivichoke/vivichoke_place_3"
]
},
"mint.break": {
"sounds": [
"cobblemon:block/plants/mint/mint_break_1",
@@ -318,6 +337,20 @@
"cobblemon:block/plants/mint/mint_place_3"
]
},
"revival_herb.break": {
"sounds": [
"cobblemon:block/plants/revival_herb/revival_herb_break_1",
"cobblemon:block/plants/revival_herb/revival_herb_break_2",
"cobblemon:block/plants/revival_herb/revival_herb_break_3"
]
},
"revival_herb.place": {
"sounds": [
"cobblemon:block/plants/revival_herb/revival_herb_place_1",
"cobblemon:block/plants/revival_herb/revival_herb_place_2",
"cobblemon:block/plants/revival_herb/revival_herb_place_3"
]
},
"gilded_chest.break": {
"sounds": [
"cobblemon:block/gilded_chest/gilded_chest_break_1",
@@ -374,58 +407,220 @@
"sounds": [ "cobblemon:supereffective" ]
},
"impact.normal": {
"sounds": [ "cobblemon:attacks/impacts/impact_normal" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 0.8 }
]
},
"impact.ice": {
"sounds": [ "cobblemon:attacks/impacts/impact_ice" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ice_8", "volume": 0.8 }
]
},
"impact.water": {
"sounds": [ "cobblemon:attacks/impacts/impact_water" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_water_8", "volume": 0.8 }
]
},
"impact.fire": {
"sounds": [ "cobblemon:attacks/impacts/impact_fire" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fire_8", "volume": 0.8 }
]
},
"impact.electric": {
"sounds": [ "cobblemon:attacks/impacts/impact_electric" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_electric_8", "volume": 0.8 }
]
},
"impact.grass": {
"sounds": [ "cobblemon:attacks/impacts/impact_grass" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_grass_8", "volume": 0.8 }
]
},
"impact.fighting": {
"sounds": [ "cobblemon:attacks/impacts/impact_fighting" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fighting_8", "volume": 0.8 }
]
},
"impact.poison": {
"sounds": [ "cobblemon:attacks/impacts/impact_poison" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_poison_8", "volume": 0.8 }
]
},
"impact.ground": {
"sounds": [ "cobblemon:attacks/impacts/impact_ground" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ground_8", "volume": 0.8 }
]
},
"impact.flying": {
"sounds": [ "cobblemon:attacks/impacts/impact_flying" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_flying_8", "volume": 0.8 }
]
},
"impact.psychic": {
"sounds": [ "cobblemon:attacks/impacts/impact_psychic" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_psychic_8", "volume": 0.8 }
]
},
"impact.bug": {
"sounds": [ "cobblemon:attacks/impacts/impact_bug" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_bug_8", "volume": 0.8 }
]
},
"impact.rock": {
"sounds": [ "cobblemon:attacks/impacts/impact_rock" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_rock_8", "volume": 0.8 }
]
},
"impact.ghost": {
"sounds": [ "cobblemon:attacks/impacts/impact_ghost" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_ghost_8", "volume": 0.8 }
]
},
"impact.dragon": {
"sounds": [ "cobblemon:attacks/impacts/impact_dragon" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dragon_8", "volume": 0.8 }
]
},
"impact.dark": {
"sounds": [ "cobblemon:attacks/impacts/impact_dark" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_dark_8", "volume": 0.8 }
]
},
"impact.steel": {
"sounds": [ "cobblemon:attacks/impacts/impact_steel" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_steel_8", "volume": 0.8 }
]
},
"impact.fairy": {
"sounds": [ "cobblemon:attacks/impacts/impact_fairy" ]
"sounds": [
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_1", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_2", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_3", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_4", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_5", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_6", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_7", "volume": 0.8 },
{ "name": "cobblemon:attacks/impact_generic/impact_generic_fairy_8", "volume": 0.8 }
]
},
"pokemon.bulbasaur.ambient": {
"sounds": [ "cobblemon:pokemon/bulbasaur/bulbasaur_ambient" ]
Loaded 100 of 1172 files, more files were not shown because too many files have changed in this diff. Show more