Compare commits

...
Author SHA1 Message Date
Licious aeedec0b6d Make starters work from datapacks instead of config. 2024-04-03 12:24:06 +01:00
Paul a37fdf709a Fixed Inkay evo method. Fixes #787 2024-04-01 18:51:55 +10:00
Paul 5023f28d04 Fixed underwalking the target position leading to walking in place. Fixes #790 2024-04-01 18:40:57 +10:00
Hiroku 67de28386a Merge branch 'ball-animation-changes' into 'main'
Breakout Animation, Overhauled Sendout Logic

See merge request cable-mc/cobblemon!943
2024-04-01 01:03:16 +00:00
Hiroku cd37d3538e Formatting 2024-04-01 00:39:38 +00:00
Hiroku 3d03ee5eb3 Merge branch 'gilded_chest_names' into 'main'
Preserve and display custom names for gilded chests

Closes #792

See merge request cable-mc/cobblemon!945
2024-03-31 12:11:57 +00:00
Paul 0b685ed453 Actually that one field is nullable 2024-03-31 21:47:10 +10:00
Hiroku 115e990df6 Update GildedChestBlock.kt 2024-03-31 10:19:16 +00:00
Hiroku 2ee38f0a29 Merge branch '1.5-Structures' into 'main'
fixed spelling error in gilded chest loot table

See merge request cable-mc/cobblemon!948
2024-03-31 10:18:03 +00: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
Hiroku 425c41bc4b Merge branch 'waterloggable-tumblestones' into 'main'
Make tumblestones waterloggable

Closes #793

See merge request cable-mc/cobblemon!946
2024-03-31 07:22:48 +00:00
Hiroku 9f7a99b583 Merge branch '1.5-Structures' into 'main'
1.5 structures

See merge request cable-mc/cobblemon!947
2024-03-31 07:22:22 +00: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
miasmus d60d828e93 make tumblestones waterloggable 2024-03-30 23:00:08 -04: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
miasmus 5d7e6f6487 Preserve and display custom names for gilded chests 2024-03-30 19:38:38 -04: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
Flarkinater 76d9137ae4 Merge branch 'main' into ball-animation-changes 2024-03-29 22:09:21 -04:00
Flarkinater 9f6c44fd75 Sendout location is only shifted vertically when necessary 2024-03-29 22:08:40 -04:00
Flarkinater 6c086f5555 Fixed merge conflict goofs 2024-03-29 21:58:26 -04: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
Flarkinater 100bf7fee4 Merge remote-tracking branch 'origin/main' into ball-animation-changes
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/pokemon/PokemonRenderer.kt
2024-03-29 00:05:58 -04:00
Flarkinater be043a0ea1 Fixed minor issue with shifting Pokemon vertically during suffocation sendout check 2024-03-28 23:41:24 -04:00
Flarkinater a902f4a8a3 Fixed suffocation avoidance when sending out Pokemon adjacent to a wall, other related fixes 2024-03-28 23:05:30 -04:00
Flarkinater 442f54839f Improved spacing when targeting walls and above blocks 2024-03-28 22:09:41 -04: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
Flarkinater 92653c1307 When targeting a wall, Pokemon are sent out far enough away to avoid suffocation, based on their size. Wailord rejoice! 2024-03-27 23:42:24 -04:00
Flarkinater c372114da5 Improved avoidance of unsafe locations when sending out Pokemon 2024-03-27 23:26:07 -04: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
JazzMcNadeandApion 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
Flarkinater 43da7ecece First attempt at canceling sendouts into unsafe locations (cactus, fire if the Pokemon isn't immune) 2024-03-24 23:41:22 -04: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
Hiroku 8b81b13d01 Merge branch 'archaeology_fixup' into 'main'
Archaeology Fixup

See merge request cable-mc/cobblemon!925
2024-03-20 12:34:33 +00:00
Hiroku f19d9410c0 Merge branch 'GildedChestComparatorOutput' into 'main'
Add comparator output for the Gilded Chest

See merge request cable-mc/cobblemon!926
2024-03-20 11:36:52 +00:00
JazzMcNade 9ac3a9249d Added comparator output for the Gilded Chest 2024-03-20 00:49:56 -05:00
Lily 4f340b2eee - Fixed a bug involving hoppers and Gimmighoul chests
- Fixed certain structures not generating
- Fixed certain loot tables failing to load
2024-03-19 17:15:32 -04: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
Hiroku 5cff52df5f Merge branch 'archaeology' into 'main'
Merging Structure Tweaks for Playtesting

See merge request cable-mc/cobblemon!924
2024-03-18 06:38:20 +00:00
Hiroku ca311fa97c Merge branch 'Waldleufer/automatingTagListCreation' into 'main'
tooling: automating tag list creation

See merge request cable-mc/cobblemon!908
2024-03-18 06:34:42 +00:00
Slippy 27020d3068 Loot table changes for structures 2024-03-18 01:14:55 -05:00
Paul 3ac4b8622f Merge remote-tracking branch 'origin/main' into 1.5-Spawns 2024-03-18 15:41:22 +10:00
Paul acd7a0583c Fixed Ekans line spawns, fixed season tag references for new locations 2024-03-18 15:35:28 +10:00
Nick e341948bd4 Merge branch 'tooling-fixes' into 'main'
tooling: mark gradlew as executable & fix logs being created during unit tests

See merge request cable-mc/cobblemon!921
2024-03-18 04:24:22 +00:00
broccolaiandNick 1a465abf9d tooling: mark gradlew as executable & fix logs being created during unit tests 2024-03-18 04:24:22 +00:00
Paul e56a6e5b1a Updated qwilfish and overqwil spawns 2024-03-18 14:03:53 +10:00
Paul 33d707a73b Spawn fixes 2024-03-18 14:02:17 +10:00
Paul e3c3cd380c Merge remote-tracking branch 'origin/main' into 1.5-Spawns
# Conflicts:
#	utilityscripts/cobblemon_drops_csv_to_json.py
2024-03-18 13:42:02 +10:00
Hiroku 578ce789b1 Merge branch 'implement_pokemon' into 'main'
Many Pokémon implemented and some animation transition fixes.

See merge request cable-mc/cobblemon!923
2024-03-18 03:19:20 +00:00
Paul 460e8f7501 Fixed various Pokemon not being marked as implemented when they are, fixed Golem and Lairon legs moving in a hurry 2024-03-18 11:37:24 +10:00
Tyzillion 2fee86e7bc Updated branch and forgot to add diglett line updates to changelog. 2024-03-17 19:35:04 -04:00
Tyzillion f73e631f81 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-03-17 19:28:46 -04:00
Tyzillion 0ca0c1a552 hitboxes adjusted. 2024-03-17 19:26:34 -04:00
Hiroku b3bf2c5ded Merge branch 'test-improvements' into 'main'
tooling: improve tests by properly bootstrapping minecraft

See merge request cable-mc/cobblemon!922
2024-03-17 22:31:17 +00:00
broccoli 7875006c8e tooling: improve tests by properly bootstrapping minecraft
- uses the fabric-loader-junit build
- rewrites the SpawnValidator to use #getResource instead of code file paths
- create a junit extension to bootstrap easier
2024-03-17 21:13:45 +00:00
Slippy 67bb63b638 Well that didn't work at all... 2024-03-17 14:34:42 -05:00
Slippy 511f97b963 Fixed structures unintentionally generating in the oceans. Fixed structures unintentionally generating on the surface. 2024-03-17 13:15:31 -05:00
Waldleufer 54c426f5ff feat: spawn writer now handles skyLight [skip-ci] 2024-03-17 16:01:07 +01:00
Waldleufer f89902ece8 feat: spawn_csv_to_json script improvements [skip-ci]
* only verify biome tags if tag directories are available.
* Missing cobblemon items in the natural names to tags spreadsheet are now printed out as an error.
2024-03-17 15:45:32 +01:00
Waldleufer 52c6bbd842 chore: update Changelog [skip-ci] 2024-03-17 14:24:26 +01:00
Waldleufer 8246a822cf feat: added "ready for implementation" list to cry_checker script. [skip-ci] 2024-03-17 14:17:01 +01:00
Hiroku 54202bed98 Merge branch 'BalancedFossils' into 'main'
Play test values for fossil machine

See merge request cable-mc/cobblemon!920
2024-03-17 08:55:46 +00:00
Paul e6313cf4c5 Reverted partial run change 2024-03-17 16:44:56 +10:00
JazzMcNade 7debc6e047 Increased timings, increased required natural material, updated material values, increased quirk cooldown. Fixed bugs revealed upon changing these values 2024-03-16 22:37:16 -05:00
Tyzillion bf9b69a143 Updated Dragonite, Omanyte, Omastar, and Pinsir animations. 2024-03-16 21:44:02 -04:00
Hiroku d7f34972c1 Merge branch 'MoreHoldItems' into 'main'
more held items woah

See merge request cable-mc/cobblemon!918
2024-03-17 00:58:35 +00:00
Veraxiel fa7356d2ed Update to Ocean tag. 2024-03-16 18:10:07 -04: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
Lily 8d1f41919d nvm eject button can go back in 👍😄 2024-03-16 16:11:48 -04:00
Lily b40c21d99e pull eject pack and eject button since they brick battles 2024-03-16 16:07:35 -04:00
Lily 461d8bd282 more held items woah 2024-03-16 14:37:32 -04:00
Tyzillion 84d34709a3 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-03-16 13:44:49 -04:00
Tyzillion b6c04e8746 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation2/heracross.json
#	common/src/main/resources/data/cobblemon/species/generation5/darmanitan.json
#	common/src/main/resources/data/cobblemon/species/generation5/lilligant.json
#	common/src/main/resources/data/cobblemon/species/generation5/zoroark.json
#	common/src/main/resources/data/cobblemon/species/generation6/floette.json
#	common/src/main/resources/data/cobblemon/species/generation6/goodra.json
#	common/src/main/resources/data/cobblemon/species/generation7/kommoo.json
#	common/src/main/resources/data/cobblemon/species/generation7/lurantis.json
#	common/src/main/resources/data/cobblemon/species/generation7/salazzle.json
#	common/src/main/resources/data/cobblemon/species/generation8/copperajah.json
2024-03-16 13:43:31 -04:00
Hiroku 81a96afaa6 Merge branch 'tag-god' into 'main'
Added structure tags (for /locate command)

See merge request cable-mc/cobblemon!917
2024-03-16 11:19:40 +00:00
dhi_holo 724332dd34 Added structure tags (for /locate command)
The reason for these is primarily the /locate command, combining biome variants together so if you're just looking for a structure of a specific kind, but the biome doesn't matter, you don't have to deal with deciding which to search for.
2024-03-16 18:23:02 +10:00
Veraxiel f5bfd64495 Added some more spawns. 2024-03-16 01:32:55 -04:00
Hiroku bf8f7f628f Merge branch 'quick-ficks' into 'main'
Puffing Bells

See merge request cable-mc/cobblemon!916
2024-03-16 05:24:14 +00:00
dhi_holo 898fdf983f Puffing Bells
Hisui Puff hopefully fixed, and soothe bell recipe cleaned up (so many errors)

Also added the newer tags to the lang
2024-03-16 14:32:20 +10:00
Hiroku a547e0f535 Merge branch 'fix/adjust-node-type' into 'main'
fix: don't access entity in adjustNodeType

See merge request cable-mc/cobblemon!915
2024-03-16 02:34:46 +00:00
broccoli 564ced926c fix: don't access entity in adjustNodeType
Mojang has disposed of the entity by this point, leading to a crash that's
especially noticed in the Wander goal.
2024-03-16 02:16:28 +00:00
Paul a93dd14fd8 Fixed soothe bell recipe 2024-03-16 12:08:44 +10:00
Paul f0535901cb Fixed prepared transition animations not playing (lol) 2024-03-16 11:47:16 +10:00
Paul 7a42df591f Merge remote-tracking branch 'origin/main' into implement_pokemon
# Conflicts:
#	common/src/main/resources/assets/cobblemon/particles/snowstorm.json
#	common/src/main/resources/data/cobblemon/species/generation2/heracross.json
#	common/src/main/resources/data/cobblemon/species/generation5/darmanitan.json
#	common/src/main/resources/data/cobblemon/species/generation5/lilligant.json
#	common/src/main/resources/data/cobblemon/species/generation5/zoroark.json
#	common/src/main/resources/data/cobblemon/species/generation6/floette.json
#	common/src/main/resources/data/cobblemon/species/generation6/goodra.json
#	common/src/main/resources/data/cobblemon/species/generation7/kommoo.json
#	common/src/main/resources/data/cobblemon/species/generation7/lurantis.json
#	common/src/main/resources/data/cobblemon/species/generation7/salazzle.json
#	common/src/main/resources/data/cobblemon/species/generation8/copperajah.json
2024-03-16 11:21:54 +10:00
Veraxiel 616419880f Updated spawn files. 2024-03-15 16:45:09 -04:00
Slippy 9fa38430c0 Deleted old structure file 2024-03-15 13:42:25 -05:00
Slippy 26012278e7 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into archaeology 2024-03-15 13:35:42 -05:00
Slippy 2c0967d293 1.5 structures for real??? 2024-03-15 13:04:00 -05:00
Nick 885fc72d93 Revert "1.5 Structures final changes before Playtesting"
This reverts commit 8130cd0998
2024-03-15 17:56:22 +00:00
Slippy 8130cd0998 1.5 Structures final changes before Playtesting 2024-03-15 12:52:32 -05:00
Veraxiel 447d35f28b Updated tags. Added presets. 2024-03-15 05:47:07 -04:00
Hiroku bf82def925 Merge branch 'MoreHoldItems' into 'main'
Implement more held items

See merge request cable-mc/cobblemon!905
2024-03-15 02:57:05 +00:00
Hiroku dace364701 Merge branch 'FossilMachineHandWaggling' into 'main'
When using a pokeball, fossil, or natural material on the fossil machine the...

See merge request cable-mc/cobblemon!911
2024-03-15 02:49:31 +00:00
Lily d737444ac9 Merge branch 'main' into MoreHoldItems
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
2024-03-14 21:43:54 -04:00
Hiroku 95f58ba557 Merge branch 'panning_for_gilded_chests' into 'main'
make gilded chests waterloggable

See merge request cable-mc/cobblemon!910
2024-03-15 01:28:56 +00:00
Hiroku 8993b007a5 Merge branch 'FossilMachineChunkLoadFix' into 'main'
Fossil machine chunk load fix

See merge request cable-mc/cobblemon!912
2024-03-15 01:28:04 +00:00
Hiroku c84f9dd112 Merge branch 'anychangeobservable-public' into 'main'
Make anyChangeObservable public

See merge request cable-mc/cobblemon!909
2024-03-15 01:25:46 +00:00
apionandJazzMcNade eea7477f7f More changes to how things work in unloaded chunks 2024-03-14 01:19:10 -05:00
JazzMcNade 241abd79d7 FossilMultiblock multiblock getter performance improvement for chunkloading issues 2024-03-14 01:19:10 -05:00
Veraxiel 35618cea46 Merge branch '1.5-Spawns' of https://gitlab.com/cable-mc/pokemon-cobbled into 1.5-Spawns 2024-03-14 02:10:34 -04:00
Veraxiel 31b97d391d Updated tags. Reorganized tags. Added tags for blocks in biomes. 2024-03-14 02:10:00 -04:00
Lily 7769a73246 make gilded chests waterloggable 2024-03-13 23:28:00 -04:00
Nick 65bf9507d3 Fix invalid JSON 2024-03-13 04:48:50 +00:00
miasmus 6d336fc27b make anyChangeObservable public 2024-03-12 17:25:54 -04: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
Waldleufer 16df7695c4 feat: made speciesJsonReader more robust. 2024-03-10 21:32:11 +01:00
Waldleufer 8fd63912a3 feat: always sort tables alphabetically 2024-03-09 09:07:53 +01:00
Waldleufer 04941a9a38 feat: adding header and TOC 2024-03-09 09:06:24 +01:00
Waldleufer 1853a1677a feat: adding header and TOC 2024-03-09 09:06:18 +01:00
Waldleufer 94f8de8ddc feat: three column representation 2024-03-09 08:52:51 +01:00
Waldleufer 7ea866d82a feat: 2 column version 2024-03-09 08:46:34 +01:00
Waldleufer ea529a52c2 feat: initial version of SpawnPresetListWriter script 2024-03-09 08:34:47 +01:00
Waldleufer 1f6dd03064 refactor: separating code into functions. 2024-03-09 07:42:49 +01:00
Waldleufer d62ea394ee feat: added place for descriptive text for the detailed tag files. 2024-03-09 07:36:33 +01:00
Waldleufer d0b8a3368c feat: moved full tag lists to their own folder 2024-03-09 07:25:32 +01:00
Tyzillion 6d23e762d6 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-03-08 19:41:19 -05:00
Tyzillion 6edb0c19c4 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/assets/cobblemon/particles/snowstorm.json
#	common/src/main/resources/data/cobblemon/species/generation2/heracross.json
#	common/src/main/resources/data/cobblemon/species/generation5/darmanitan.json
#	common/src/main/resources/data/cobblemon/species/generation5/lilligant.json
#	common/src/main/resources/data/cobblemon/species/generation5/zoroark.json
#	common/src/main/resources/data/cobblemon/species/generation6/floette.json
#	common/src/main/resources/data/cobblemon/species/generation6/goodra.json
#	common/src/main/resources/data/cobblemon/species/generation7/kommoo.json
#	common/src/main/resources/data/cobblemon/species/generation7/lurantis.json
#	common/src/main/resources/data/cobblemon/species/generation7/salazzle.json
#	common/src/main/resources/data/cobblemon/species/generation8/copperajah.json
2024-03-08 19:27:53 -05:00
Veraxiel 71e9adae1f Merge branch '1.5-Spawns' of https://gitlab.com/cable-mc/pokemon-cobbled into 1.5-Spawns 2024-03-08 19:16:02 -05:00
Veraxiel 35b53daa09 Added tags. 2024-03-08 19:12:59 -05:00
Waldleufer 937c30fca5 feat: initial version of output mds. 2024-03-08 23:54:34 +01:00
Waldleufer 141249e6c7 feat: remove redundant "Tags ↓" 2024-03-08 23:50:52 +01:00
Waldleufer 94f9bf9f50 feat: splitting output in multiple md files. 2024-03-08 23:43:20 +01:00
Waldleufer 4638b01279 feat: first version of markdown writer. 2024-03-08 23:35:10 +01:00
Nick e39d59c37a Merge branch 'gen10-will-wash-this-away' into 'main'
Support Stellar tera type & fix tera type selection.

See merge request cable-mc/cobblemon!907
2024-03-08 20:31:44 +00:00
LiciousandNick 072071d679 Support Stellar tera type & fix tera type selection. 2024-03-08 20:31:44 +00:00
Licious aa4400395b Support for soothe bell mechanic. 2024-03-08 10:50:07 +00:00
Licious 09ad3d0a4d Merge branch 'consolidated-versioning' into 'main'
Quick Fix for Crash Report Details to Actually be Written

See merge request cable-mc/cobblemon!906
2024-03-08 10:30:22 +00:00
NickandLicious de7df10f36 Quick Fix for Crash Report Details to Actually be Written 2024-03-08 10:30:22 +00:00
Lily 897bcf6fc0 Merge branch 'main' into MoreHoldItems
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
2024-03-07 17:21:43 -05:00
Lily 1e14042455 removed recipes for cut held items 2024-03-07 17:14:47 -05:00
Nick 8583c9af4d Merge branch 'ores_galore' into 'main'
terracotta sun stone ore

See merge request cable-mc/cobblemon!904
2024-03-07 19:50:08 +00:00
LilyandNick ce756997d6 terracotta sun stone ore 2024-03-07 19:50:08 +00:00
Licious 4efc5b6748 Merge branch 'consolidated-versioning' into 'main'
Change Version Publication for Better Maven Support

See merge request cable-mc/cobblemon!901
2024-03-07 18:23:07 +00:00
NickandLicious 7ed6075410 Change Version Publication for Better Maven Support 2024-03-07 18:23:06 +00:00
Lily 320d995672 add new held item sprites 2024-03-07 12:19:23 -05:00
Nick 8ae91587aa Merge branch 'feat/rework-starter-toast' into 'main'
Removing Starter Toast when it is nice and crispy.

Closes #579, #656, #771, and #655

See merge request cable-mc/cobblemon!898
2024-03-06 23:12:49 +00:00
WaldleuferandNick 61362fa1b1 Removing Starter Toast when it is nice and crispy. 2024-03-06 23:12:49 +00:00
Nick d010129864 Merge branch 'food_reorganization' into 'main'
moved the items in the food category around to make more sense (previously...

See merge request cable-mc/cobblemon!903
2024-03-06 21:24:18 +00:00
Nick 282f002895 Merge branch 'amo/sendout-upgrade' into 'main'
Ancient Send Outs

See merge request cable-mc/cobblemon!902
2024-03-06 21:22:48 +00:00
Lily 863f6de059 moved the items in the food category around to make more sense (previously were all at the very bottom) 2024-03-06 14:43:03 -05:00
JazzMcNade 8ddf628f19 When using a pokeball, fossil, or natural material on the fossil machine the client will always play ActionResult.CONSUME. 2024-03-05 01:25:43 -06:00
dhi_holo 8762d518c1 Merge branch 'main' into amo/sendout-upgrade 2024-03-05 13:56:10 +10:00
Paul 46798d694e Fixed generic entities not rendering, fixed Torkoal particles going upside down, fixed idle animation particles not playing, fixed loop particles not looping 2024-03-04 11:26:20 +10:00
Hiroku 056dd0fd4b Merge branch 'JsonScriptFixes' into 'main'
tiny Json script fixes

See merge request cable-mc/cobblemon!853
2024-03-03 07:54:12 +00:00
WaldleuferandHiroku 3ac00d976b tiny Json script fixes 2024-03-03 07:54:11 +00:00
Paul b30a76855b Fixed cancelling spawn events not actually cancelling the action, closes #612 2024-03-03 17:18:08 +10:00
Paul e976556ae3 (Probably) fixed edge case with pose transitions 2024-03-03 16:10:02 +10:00
Paul 9f16eca621 Merge branch 'main' into implement_pokemon 2024-03-03 15:49:20 +10:00
dhi_holo f4a94bd732 Merge branch 'main' into amo/sendout-upgrade
does this really fix forge?
2024-03-03 15:14:10 +10:00
Paul b6c964e03b Fixed Forge runs, again 2024-03-03 14:40:18 +10:00
dhi_holo aed2204483 Merge branch 'main' into amo/sendout-upgrade 2024-03-03 13:39:35 +10:00
Paul 3ed46cb7af Removed unused option in config (maxHorizontalSpace) 2024-03-03 13:38:59 +10:00
Paul cf9efe9b8c Fixed Snowstorm particles sometimes not appearing 2024-03-03 13:28:40 +10:00
Paul 02b9431731 Attach the entity from the entity particle packet to the storm (oops) 2024-03-03 13:14:13 +10:00
Paul a30ae0ccef Added query functions for entity_width, height, size, and radius to entity tracked particle storms 2024-03-03 12:46:28 +10:00
Hiroku a2905f4d37 Merge branch 'particle-events' into 'main'
Added "event" support to bedrock particles, locator support in the command,...

Closes #767

See merge request cable-mc/cobblemon!900
2024-03-03 02:00:36 +00:00
Paul b3aba1532c Added "event" support to bedrock particles, locator support in the command, and fixed inwards motion direction 2024-03-03 11:28:54 +10:00
Hiroku 6369bdb612 Merge branch '1.5_Structures' into 'main'
Added most of the 1.5 Structures

See merge request cable-mc/cobblemon!877
2024-03-03 00:20:02 +00:00
Hiroku b5db5605ef Merge branch 'FossilAnalyzerDirRenderFix' into 'main'
Fossils are now positioned correctly in all possible block facing directions

See merge request cable-mc/cobblemon!899
2024-03-02 23:48:29 +00:00
JazzMcNade 0207459a0f Fossils are now positioned correctly in all possible block facing directions 2024-03-02 16:37:44 -06:00
Hiroku 0e2fdfbce8 Merge branch 'ability-fix' into 'main'
Abilities fix

See merge request cable-mc/cobblemon!891
2024-03-02 05:20:10 +00:00
Hiroku 8c9da885c7 Merge branch 'main' into 'ability-fix'
# Conflicts:
#   CHANGELOG.md
2024-03-02 04:16:11 +00:00
Hiroku a5b6529f3c Merge branch 'display_case' into 'main'
Display case

See merge request cable-mc/cobblemon!879
2024-03-02 04:10:44 +00:00
Tyzillion 6e9bdb6019 Many hitboxes adjusted. Updated Squirtle and Wartortle animations. 2024-03-01 21:27:34 -05:00
Paul b430b7db76 Corrected Gimmighoul chest battle behaviour on server environments 2024-03-02 12:02:35 +10:00
Hiroku 8015ff0e20 Merge branch 'fix-grow-tumblestone-advancement' into 'main'
Grow Tumblestone Advancement triggers when placed near Lava or Magma

See merge request cable-mc/cobblemon!893
2024-03-02 01:21:55 +00:00
Dhyan PatelandHiroku ee78657e3d Grow Tumblestone Advancement triggers when placed near Lava or Magma 2024-03-02 01:21:55 +00:00
Hiroku 6cc84cd38c Merge branch 'tooltip-fix-fix' into 'main'
fix a small issue with appending tooltips

See merge request cable-mc/cobblemon!897
2024-03-02 00:28:30 +00:00
miasmus 31d6ff541e fix a small issue with appending tooltips 2024-03-01 16:36:31 -05:00
Veraxiel 841a40c973 Added and updated spawns. 2024-03-01 01:42:54 -05:00
jeffw773 e1a4086f24 - push new changes for Slippy 2024-02-29 20:11:09 -08:00
Tyzillion df049a315c Finished adjusting portraits and profiles on all newly implemented Pokemon. Started adjusting hitboxes. 2024-02-29 22:19:38 -05:00
Tyzillion 9ce5486189 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-02-29 22:18:54 -05:00
Paul b1992a94d3 Fixed piglin entity mixin on Forge 2024-03-01 11:10:47 +10:00
Veraxiel 167a1ea8eb Added some new tags. Updated spawn writer. 2024-02-29 10:19:57 -05:00
dhi_holo f95beaa7a1 Delete LICENSE
Gonna hope this wasn't important, it's giving a log error though and feels randomly placed in this folder, if we're meant to have it in here, probably shouldn't randomly be in the fossil items folder?
2024-02-29 20:08:36 +10:00
dhi_holo 1c0f7bbf8f Update restoration_tank.json
was erroring, so I fixed it so it'd be two less errors in the log (and potentially not break ingame, didn't test if these things could happen in natural gameplay)
2024-02-29 20:07:07 +10:00
dhi_holo 34cc2cda46 Maybe Masterball Fixes?
Need to break so just pushing this
2024-02-29 13:58:11 +10:00
dhi_holo 696e58bd1a Update snowstorm.json
removed unneeded/erroring lines
2024-02-29 13:50:40 +10:00
Tyzillion 10412b80ca Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-02-28 21:59:22 -05:00
dhi_holo 458c2ce0ed Merge branch 'main' into amo/sendout-upgrade 2024-02-29 12:34:00 +10:00
Tyzillion 6182715644 Implemented Salandit, Salazzle, Skarmory, Flabebe, Floette, Florges, Ferroseed Carbink, Goomy, Sliggoo, Goodra, Hisuian Goomy, Sliggoo, and Goodra, Flabebe, Floette, Florges, Jangmo-o, Hakamo-o, and Kommo-o.
Caught up a little on Profile and Portrait frames.
2024-02-28 21:26:20 -05:00
Hiroku b41c4c21a8 Merge branch 'publish-versioning-fix' into 'main'
fix versioning

See merge request cable-mc/cobblemon!894
2024-02-28 22:07:33 +00:00
miasmus e1893f50ae fix versioning 2024-02-28 16:52:13 -05:00
Tyzillion a1bdf3ded6 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-02-28 15:21:29 -05:00
Lily a458b31c9f Merge branch 'main' into display_case
# Conflicts:
#	.gitignore
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonSounds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/subscreen/BattleGeneralActionSelection.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/group/CobblemonItemGroups.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/models/item/relic_coin_pouch.json
#	common/src/main/resources/assets/cobblemon/sounds.json
2024-02-28 14:07:19 -05:00
Lily 03b5336eb8 refactor getPositioningType to avoid using tags 2024-02-28 14:02:29 -05:00
Apion a270371632 Merge branch 'sturdier_tumblestones' into 'main'
fix tumblestone blocks being breakable without a pickaxe

See merge request cable-mc/cobblemon!892
2024-02-28 18:23:21 +00:00
LilyandApion a9caf92d2f fix tumblestone blocks being breakable without a pickaxe 2024-02-28 18:23:21 +00:00
apion 9e2d00df63 Finished Anorith, Armaldo, Tyrantrum, Zorua, Zoroark, ZoruaH 2024-02-28 11:11:37 -05:00
apion e8003bb29a Added a few comments 2024-02-28 04:15:02 -05:00
apion a248d661fa Finished omastar 2024-02-28 01:07:05 -05:00
apion 59390f4d84 Finished archen line 2024-02-28 01:00:51 -05:00
apion 99b7e4a89e Finished tyrunt 2024-02-28 00:49:36 -05:00
apion fb37e543cf Fixed issues with json posers 2024-02-28 00:43:25 -05:00
apion c0c75a9735 Finished Rowlet line 2024-02-28 00:25:58 -05:00
apion 3febee21b6 Changed increment of debug keybindings 2024-02-28 00:03:44 -05:00
apion c3a017687c Finished Gen VIII fossil mons 2024-02-28 00:01:05 -05:00
apion afd082c966 Added scaling/translation key binds to portrait view, enableable/disableable via config 2024-02-27 23:34:52 -05:00
apion a6a1f7b75b Added scaling/translation keybinds to summary menu 2024-02-27 22:00:10 -05:00
apion 72738a45e6 Made portraitScale, portraitTranslation, profileScale, and profileTranslation vars instead of vals in every model file 2024-02-27 21:46:44 -05:00
Apion ff4d9ae208 Merge branch 'gimmighoul_gholdengo' into 'main'
Add Gimmighoul, Gholdengo, Relic Coins and Gilded Chests

See merge request cable-mc/cobblemon!888
2024-02-28 02:03:37 +00:00
LilyandApion a87d522f6d Add Gimmighoul, Gholdengo, Relic Coins and Gilded Chests 2024-02-28 02:03:37 +00:00
apion 8a0076acb4 Start working on dragovish 2024-02-27 20:54:53 -05:00
apion f7e1def555 Fixed arctovish scaling and translations 2024-02-27 20:45:44 -05:00
apion c13f6ae627 Implemented Ferrothorn, fixed missing anim on Dragonair 2024-02-27 19:12:39 -05:00
Licious c24ab2049d Merge branch 'main' into ability-fix
# Conflicts:
#	CHANGELOG.md
2024-02-26 11:45:32 +00:00
Licious b7b1850a4e Clarify changelog. 2024-02-26 11:41:49 +00:00
Licious 8995c107f7 Fix abilities, add ability capsule & patch. 2024-02-26 11:38:22 +00:00
Hiroku dca6b5273d Merge branch 'FossilAssetUpdate2' into 'main'
New animation assets for fetuses

See merge request cable-mc/cobblemon!889
2024-02-26 07:57:15 +00:00
dhi_holo d6a412b91a tags
tags
2024-02-26 17:38:30 +10:00
JazzMcNade 2e8483cdc7 Corrected comment, fixed machine not dropping fossils when destroyed while not started. 2024-02-26 01:29:11 -06:00
dhi_holo 5984d7a126 Cups and Functions
Adds Masterpiece and Unremarkable Teacups (Sinistea evolution items), and makes Medicinal Leek, Bone, and Snowball work as the Leek, Thick Club, and Snowball held items.
Snowballs do have a small issue with being thrown when trying to give it to a Pokemon though, for someone cool to investigate.
2024-02-26 16:44:26 +10:00
dhi_holo 6d8e645092 Merge branch 'main' into MoreHoldItems 2024-02-26 15:03:45 +10:00
Hiroku 6b1c2e2074 Merge branch 'showdown_gen9dlc' into 'main'
Update Showdown with Gen9 DLC.

See merge request cable-mc/cobblemon!890
2024-02-26 03:52:34 +00:00
Segfault Guy 8af5b5e07a Update Showdown with Gen9 DLC. 2024-02-25 22:44:27 -05:00
Hiroku 7ae19ca774 Merge branch 'issue-763' into 'main'
Stop Rails from being Spawnable tiles

Closes #763

See merge request cable-mc/cobblemon!881
2024-02-26 03:13:27 +00:00
Dhyan PatelandHiroku 830f00553e Stop Rails from being Spawnable tiles 2024-02-26 03:13:27 +00:00
Tyzillion 55f0db2263 Implemented Lunatone, Solrock, Woobat, Swoobat, Sandile, Krokorok, Krookodile, Frillish, Jellicent, Cubchoo, Beartic, Deino, Zweilous, Hydreigon, Larvesta, Volcarona, Fomantis, Lurantis, Dreepy, Drakloak, Dragapult, Makuhita, Hariyama, Alolan Diglett, Alolan Dugtrio, and Alomomola.
Updated Diglett and Dugtrio models.
2024-02-25 19:38:27 -05:00
Tyzillion 411788a07e Implemented Turtonator, Stonjourner, Cufant, Copperajah, Budew, Roselia, and Roserade.
Updated Growlithe's model.
2024-02-24 21:52:09 -05:00
Tyzillion f6151041c5 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-02-24 21:51:27 -05:00
Hiroku c87f56c83f Merge branch 'lang-fixes' into 'main'
brought a couple inconsistent lang keys into consistency

See merge request cable-mc/cobblemon!887
2024-02-25 02:06:17 +00:00
tmetcalfe89 4478532bcb brought a couple inconsistent lang keys into consistency 2024-02-24 18:02:02 -08:00
Flarkinater f99168f1c3 Pokeball items no longer drift backwards when thrown directly overhead 2024-02-24 06:33:34 -05:00
Flarkinater adce1d8838 Fixed Pokemon not appearing when sent out from shoulder 2024-02-24 05:58:35 -05:00
Flarkinater e95c82b5af Greatly improved send-out location targeting 2024-02-24 05:16:44 -05:00
Flarkinater dd273ffef2 Added beam mode for sending out Pokemon with no delay 2024-02-23 19:18:11 -05:00
Hiroku 184348d6fa Merge branch 'lazy-psf' into 'main'
made the spawns lazy so we can ref the object's other properties without violating the lateinit

Closes #765

See merge request cable-mc/cobblemon!886
2024-02-23 23:31:03 +00:00
Hiroku 04d288ed7e Merge branch 'issue-760' into 'main'
Fix Medicinal Brews / Potions Stacking in Brewing Stand

See merge request cable-mc/cobblemon!876
2024-02-23 23:29:52 +00:00
Dhyan PatelandHiroku 0d5cce730e Fix Medicinal Brews / Potions Stacking in Brewing Stand 2024-02-23 23:29:51 +00:00
tmetcalfe89 3e01535203 license 2024-02-23 12:03:45 -08:00
tmetcalfe89 f0d99a9d83 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into lazy-psf 2024-02-23 11:42:40 -08:00
tmetcalfe89 b4eb46d632 it's lazy, but it can change 2024-02-23 11:42:35 -08:00
Hiroku 7e52336255 Merge branch 'InconsistentHpBarFix' into 'main'
InconsistentHpBarFix

Closes #761

See merge request cable-mc/cobblemon!875
2024-02-23 02:39:42 +00:00
Hiroku 2b40b5b689 Merge branch 'feather-dusting' into 'main'
Feathers

See merge request cable-mc/cobblemon!882
2024-02-23 02:39:01 +00:00
tmetcalfe89 da889f220b made the spawns lazy so we can ref the object's other properties without violating the lateinit 2024-02-22 14:55:29 -08:00
Lily ac65910380 updated the relic coin pouch rendering inside display case 2024-02-22 17:18:20 -05:00
Lily ba6847be9a Merge branch 'gimmighoul_gholdengo' into display_case
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonSounds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/group/CobblemonItemGroups.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/sounds.json
2024-02-22 16:27:39 -05:00
Lily 5ddbcd1830 various changes to display case 2024-02-22 15:03:17 -05:00
Lily 47605646d0 Merge branch 'main' into display_case 2024-02-22 14:26:33 -05:00
Lily d9fdf089c2 fix display case z-fighting 2024-02-22 14:00:15 -05:00
dhi_holo 41db2a53ce Update en_us.json
just adding the feather tag to the translations so EMI stops complaining about it (and fixing a typo)
2024-02-22 11:28:58 +10:00
dhi_holo 85d8779818 The Sound of... Feathers?
it seems to be working correctly, so let's ship it out
2024-02-22 11:27:54 +10:00
Lily e9a405694c display case sounds 2024-02-21 18:47:20 -05:00
Hiroku d817ce1471 Merge branch 'gui-mod-compat-fixes' into 'main'
Client screen crash fixes with other mods

See merge request cable-mc/cobblemon!885
2024-02-21 11:44:38 +00:00
LiciousandHiroku ce09b66db5 Client screen crash fixes with other mods 2024-02-21 11:44:38 +00:00
Hiroku d0c666a20d Merge branch 'main' into 'feather-dusting'
# Conflicts:
#   CHANGELOG.md
2024-02-21 10:03:38 +00:00
Hiroku 04cef915e4 Merge branch 'tagging-youre-it' into 'main'
Big Tags

See merge request cable-mc/cobblemon!884
2024-02-21 09:50:44 +00:00
dhi_holo e50412443e Update CHANGELOG.md
Removed weird incorrect text from Type Gem changelog entry, mentioned additions from this branch.
2024-02-21 19:11:24 +10:00
dhi_holo 3fe1f87f18 apricorn trapdoor now doesn't look jank when opening
just changed the blockstate from the oak trapdoor style to the spruce trapdoor style, so the pokeball direction stays consistent when opened or closed
2024-02-21 19:08:38 +10:00
dhi_holo 5a0fc199ff Create feathers.json
item tag, since I forgot that would be smart to have
2024-02-21 17:35:07 +10:00
dhi_holo beb769c2a5 Update CobblemonItemGroups.kt
small tweak to how the items are placed for gaurenteed consistency
2024-02-21 17:31:29 +10:00
dhi_holo a7b6fae4ed gems, fang, claw, and armors get tagged
Type Gems are now considered held items, and four evolution items are considered evolution items (by tags)
2024-02-21 17:28:00 +10:00
dhi_holo af2ff7bbfa Gems
Type Gems given an item tag, and moved from Evolution Items to Archeology and Held Items
2024-02-21 17:11:17 +10:00
dhi_holo 4f3575b2c6 Poke Ball Materials and Bud Item Tag
adds the tumblestone clusters and buds to the item tags, and adds fire stone ore to each ore tag, but primarily

Redoes every Poké Ball recipe (besides Master) to use tags to handle the tier material, allowing datapacks to easily add alternate recipes besides Copper, Iron, Gold, or Diamonds
2024-02-21 16:41:41 +10:00
dhi_holo 8555168a6a Undoing commit "Tags on top of Tags"
Moving it to a new branch, so just removing it from here so my new changes don't conflict later
2024-02-21 15:41:48 +10:00
dhi_holo 98c248ef13 corrections
renaming some stuff to be prepared for the next step of this insane idea
2024-02-21 15:34:20 +10:00
dhi_holo 4a2c69d47c Tags on top of Tags
Added a very large amount of tags.
The different tiers of Poké balls, also the Apricorn balls so it's easier for people to see what balls count for that advancement, different healing and battle item types, some evolution item sets which made sense to make tags (may add more later, these ones were just the obvious ones to make thing easier for future), the three colours for tumblestones, machine blocks, as well as adding the fence gate item tag, and adding the new tumblestone stuff to the pickaxe tag (although they can still be mined with an axe, probably something that needs fixing)

Mod loader tags were not tested on Forge, due to a crash involving CobblemonEntities, but Fabric works all nicely
2024-02-21 15:29:55 +10:00
Tyzillion 1b5c0be975 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-02-20 23:25:41 -05:00
dhi_holo 5924398eff Update CobblemonItemGroups.kt
soothe bell to creative tab
2024-02-21 10:47:10 +10:00
dhi_holoandPlastered_Crab a08855ab37 Heal and Harm
Added translations for the battle text of Dry Skin, Cheek Pouch, Earth Eater, Icy Body, Volt Absorb, Water Absorb, and Sand Tomb.
2024-02-20 16:09:52 -08:00
Plastered_Crab 91abe39cdd Merge remote-tracking branch 'origin/MoreHoldItems' into MoreHoldItems
# Conflicts:
#	CHANGELOG.md
2024-02-20 16:07:49 -08:00
Plastered_Crab ad8aab7c19 - Added Soothe Bell 2024-02-20 16:06:45 -08:00
Plastered_Crab aa6b196c29 Merge branch 'main' into MoreHoldItems
# Conflicts:
#	common/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
#	common/src/main/resources/data/minecraft/tags/items/decorated_pot_sherds.json
2024-02-20 15:58:50 -08:00
dhi_holo c23cb644d9 Update CHANGELOG.md
grr evil file
2024-02-21 09:43:33 +10:00
dhi_holo a8b12cfca3 Feathers
Adds the six EV Feathers, hopefully they work first try :)
2024-02-21 09:32:05 +10:00
dhi_holo 5268447fa3 could've sworn I pushed these yesterday
placeholder particles for balls which aren't getting particles yet
2024-02-21 09:11:07 +10:00
Apion b489e747bb Merge branch 'type_gem' into 'main'
added type gems

See merge request cable-mc/cobblemon!880
2024-02-20 13:22:41 +00:00
Lily 08f957e33b Update CHANGELOG.md 2024-02-19 21:32:30 -05:00
Lily e17d38c53a added type gems 2024-02-19 21:24:29 -05:00
dhi_holo 818b39e945 Dusky
Apparently missed this one

But why do Ancient Feather, Wing, Jet, Leaden, Gigaton no worky??
(remaining unimplemented: cherish, dream, beast, origin)
2024-02-20 12:08:29 +10:00
apion 0397e39735 I have become the very thing I swore to destroy (Pushing a license to main D:) 2024-02-19 20:18:55 -05:00
Apion 6ca1d23f45 Merge branch 'no_more_pick_block' into 'main'
disallow pick-stacking blocks that are part of a multiblock structure to prevent weird issues with NBT copying

See merge request cable-mc/cobblemon!874
2024-02-19 23:38:26 +00:00
dhi_holo 30666349a1 [WIP] Ancient Send Outs
base 7, great, and ultra work right, but the heavy/wing sets have broken send out flashes (besides ancient heavy specifically)
Just pushing because it's 11pm and it's honkshnoomemememememe time
2024-02-19 23:09:17 +10:00
JazzMcNade 44def2be76 Fossil is returned if the machine is broken before completion. Restoration Block now uses glass sounds. Mobs no longer attempt to pathfind through the restoration tank. 2024-02-17 20:37:05 -06:00
JazzMcNade 507f70c2d5 Fixed tank missing blockstates, fixed hoppers inserting into tank 2024-02-17 18:46:02 -06:00
JazzMcNade d91118d05f Updated helix fossil item image 2024-02-17 14:17:34 -06:00
JazzMcNade 07d8e6ed09 Adjusted fetus offset and scaling 2024-02-16 21:20:09 -06:00
Lily fb34d4bd23 suppressed gimmighoul's desire to be a necromancer 2024-02-16 20:50:03 -05:00
Paul 6ca1337ff9 Merge branch 'gimmighoul_gholdengo' into 1.5_Structures 2024-02-17 10:29:18 +10:00
Tyzillion 98106cad12 Implemented Darumaka line, and Petilil line with Hisuian counterparts. 2024-02-16 16:14:43 -05:00
Lily 0d344337dd Merge branch 'main' into display_case
# Conflicts:
#	.gitignore
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
2024-02-16 11:55:15 -05:00
Hiroku 64d160020b Merge branch 'issue-745' into 'main'
Sobble Line Can Swim and Breathe Underwater

Closes #745

See merge request cable-mc/cobblemon!878
2024-02-16 06:36:50 +00:00
Dhyan PatelandHiroku fb4c80f68c Sobble Line Can Swim and Breathe Underwater 2024-02-16 06:36:50 +00:00
Paul 3d27681aaa Randomize Pokémon spawn positions and position gimmighoul reveals better 2024-02-16 16:31:00 +10:00
Paul 2b5433f9da Added hit effect for pokemon receiving battle damage 2024-02-16 15:37:52 +10:00
Paul 352202203a Merge branch 'gimmighoul_gholdengo' into 1.5_Structures 2024-02-16 15:04:51 +10:00
Paul 62cfbd7087 Licenses 2024-02-16 15:03:53 +10:00
Paul 5a64e8ea1b Animated the trap chest opening 2024-02-16 15:03:15 +10:00
Paul 8dc9863a5d Conflict resolution and cleanup 2024-02-16 14:39:22 +10:00
JazzMcNade 9bad141c3f Added remaining fetus animations, updated embryo animations 2024-02-15 21:57:42 -06:00
Myslippy 9280258413 Implemented most of the Fossil & Ruin Structures 2024-02-16 03:13:32 +00:00
Paul 51a11163dd Merge remote-tracking branch 'origin/main' into gimmighoul_gholdengo
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonSounds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/block/FossilTubeRenderer.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/bedrock/animation/BedrockStatefulAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/group/CobblemonItemGroups.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/Species.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/sounds.json
2024-02-16 12:43:35 +10:00
Paul fe8e4dcaff Improved Pokémon pathfinding so they don't run through cactus and such so recklessly 2024-02-16 12:24:58 +10:00
Paul e0bd6766fc Fixed basculin stripe spawning 2024-02-16 11:37:16 +10:00
Paul 4da800d396 Fixed Arbok patterns not being used properly in spawn files 2024-02-16 11:19:24 +10:00
JazzMcNade f3246ae14a Updated fossil sprites, refactored Galar fossil names 2024-02-15 01:33:11 -06:00
Flarkinater 82548b5383 Pokémon recoil when hit by a ball 2024-02-13 22:48:27 -05:00
Lily d5ad84a495 refactored PositioningType 2024-02-13 19:02:53 -05:00
Flarkinater ad73202e17 Adjusted timing on breaking free animation + sound 2024-02-13 18:50:08 -05:00
Tyzillion 1560b142d2 Updated quirks for implemented Pokemon. 2024-02-13 08:22:50 -05:00
JazzMcNade 47f87b1be3 Rearranged pokemon creation so that currentHealth is assigned after ivs and evs are set 2024-02-13 00:08:04 -06:00
Flarkinater 2965a04742 Implemented existing "break free" animation when capture fails 2024-02-12 23:02:55 -05:00
Lily b01086270a fix positioning on certain items that use block entity renderers 2024-02-12 19:18:18 -05:00
Lily da6a09c942 disallow pick-stacking blocks that are part of a multiblock structure to prevent weird issues with NBT copying 2024-02-12 17:40:39 -05:00
Lily 8d5eb5883d gilded chests now get blocked with blocks above them like regular chests do 2024-02-12 14:57:24 -05:00
Tyzillion d5fa693f43 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/BlastoiseModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ChanseyModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/DragonairModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/DratiniModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ElectabuzzModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen2/ElekidModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/IllumiseModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/NumelModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/VolbeatModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen4/CarnivineModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen4/DrifblimModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen4/DrifloonModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen5/ChandelureModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen5/LampentModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen5/LitwickModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen9/LechonkModel.kt
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/animations/0009_blastoise/blastoise.animation.json
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/models/0009_blastoise/blastoise.geo.json
#	common/src/main/resources/assets/cobblemon/particles/snowstorm.json
2024-02-11 12:52:08 -05:00
JazzMcNade 0d12bf1190 Relic Coins Sacks can be bartered with Piglins for loot.
Can always remove this if undesired or make it a tag, change the item, etc.
2024-02-10 21:23:05 -06:00
Nick 4217938ada Merge branch 'move-animations' into 'main'
Simplistic move animations

See merge request cable-mc/cobblemon!871
2024-02-10 22:51:29 +00:00
HirokuandNick 4c5f88db06 Simplistic move animations 2024-02-10 22:51:29 +00:00
Lily 4f773f63cb fix hopper dupe bug 2024-02-09 22:04:01 -05:00
Hiroku cfd743c4c0 Merge branch 'armor_trims' into 'main'
oops

See merge request cable-mc/cobblemon!872
2024-02-10 02:11:35 +00:00
Lily 1bbfc6dce5 Merge branch 'main' into armor_trims 2024-02-09 21:06:33 -05:00
Lily 6f2235c751 i swear if this doesn't work 2024-02-09 21:04:59 -05:00
Hiroku 50a0f2d858 Merge branch 'armor_trims' into 'main'
Added Automaton armor trim

See merge request cable-mc/cobblemon!868
2024-02-10 01:37:25 +00:00
Hiroku 27210512f6 Oops 2024-02-10 01:25:08 +00:00
Hiroku 53aa124de6 Merge branch 'main' into 'armor_trims'
# Conflicts:
#   CHANGELOG.md
2024-02-10 01:24:45 +00:00
Apion a18b54849f Merge branch 'FetusAnimsUpdate' into 'main'
Many updates, asset changes, and refactors for the fossil machine

See merge request cable-mc/cobblemon!863
2024-02-10 01:24:04 +00:00
Hiroku c868c63a5f Merge branch 'whatsy/evo_stone_blocks' into 'main'
added nether fire stone ore

See merge request cable-mc/cobblemon!867
2024-02-10 01:23:41 +00:00
Lily 31df7c92f4 remove leftovers from trim materials 2024-02-09 20:00:36 -05:00
Lily 3f3ae74535 update .gitignore 2024-02-09 19:58:44 -05:00
Lily 7429fea802 fixed crash on dedicated servers (again) + made cases compatible with hoppers 2024-02-09 19:46:23 -05:00
Hiroku 3b65d1967e Merge branch 'main' into 'whatsy/evo_stone_blocks'
# Conflicts:
#   CHANGELOG.md
2024-02-10 00:16:06 +00:00
Paul f30b15003f Remove lingering oceanic trim references 2024-02-10 10:05:10 +10:00
Hiroku c4c1b7ac27 Merge branch 'main' into 'armor_trims'
# Conflicts:
#   CHANGELOG.md
2024-02-09 23:56:54 +00:00
Paul ea9287cfb5 Fixed langs on interaction GUIs 2024-02-10 09:55:31 +10:00
Hiroku 02f845af5c Merge branch 'amo/sendout-upgrade' into 'main'
Added generic bedrock entity system, updated molang for fix, added test evo...

See merge request cable-mc/cobblemon!869
2024-02-09 23:11:04 +00:00
Lily ac5cd47715 multiple display case bugfixes 2024-02-09 17:59:57 -05:00
Paul 3bb3a00cef Renamed InteractionGUICreationEvent to PokemonInteractionGUICreationEvent 2024-02-10 08:28:31 +10:00
Paul f1ae4163c9 Cleaned up transition portion of PokemonRender#render and removed glow effect we don't want anymore 2024-02-10 08:27:31 +10:00
Paul 05957f2106 Renamed GenericBedrockModelRepository to GenericBedrockEntityModelRepository for clarity 2024-02-10 08:03:50 +10:00
Paul 4b9ea1d4cd Use an entity renderer for GenericBedrockEntities, obviously 2024-02-10 08:03:12 +10:00
Lily 78dff75db9 Update CHANGELOG.md 2024-02-09 16:46:56 -05:00
Lily dbab6404a1 Update CHANGELOG.md 2024-02-09 16:45:48 -05:00
Tyzillion 9901d39f9b Implemented Hisuian Sneasel, Sneasler, and Tropius. 2024-02-09 14:46:18 -05:00
Paul e5c4240ae0 Merge remote-tracking branch 'origin/main' into amo/sendout-upgrade
# Conflicts:
#	CHANGELOG.md
#	forge/src/main/kotlin/com/cobblemon/mod/forge/client/CobblemonForgeClient.kt
2024-02-09 20:22:27 +10:00
Paul 317112f9bb Cleanup 2024-02-09 19:38:32 +10:00
JazzMcNade c635a1d331 Removed duped block tag entry 2024-02-09 01:08:35 -06:00
Paul 58fda2e261 Changelog 2024-02-09 16:22:22 +10:00
JazzMcNade cf2173a281 Opening a gilded chest now aggros piglins 2024-02-09 00:15:55 -06:00
Paul 3b442d387a licenses good, pipeline errors bad 2024-02-09 16:04:53 +10:00
JazzMcNade 710d37f453 Added piglin related tags for glided chests and relic coin related items 2024-02-08 23:52:36 -06:00
Paul 2b575c888f Disable evo effect since it's not done yet 2024-02-09 14:15:58 +10:00
Paul 6e5e572412 Fixed some ball effects occurring even when snap-recalling before send out completes 2024-02-09 14:14:55 +10:00
Lily ce87d0dc48 Merge branch 'main' into whatsy/nether_fire_stone
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/item/group/CobblemonItemGroups.kt
2024-02-08 23:10:14 -05:00
Lily d43c91129c implemented nether fire stone ore 2024-02-08 23:02:26 -05:00
Lily d66b9c8d3b removed unused assets, oceanic pattern to be redone/possibly scrapped 2024-02-08 22:51:05 -05:00
Lily 1fb3416211 implemented the display case 2024-02-08 22:46:16 -05:00
JazzMcNade dc37b381a0 Review Changes: Refactored part of setStack into its own function 2024-02-07 21:17:56 -06:00
Lily 1206aaaf13 some updated textures 2024-02-07 21:13:12 -05:00
JazzMcNade 95bcb9a7b8 Most of the requested review changes 2024-02-06 23:28:15 -06:00
Lily c7d879ec57 removed custom trim materials, added automaton and oceanic trim patterns 2024-02-06 19:03:37 -05:00
Tyzillion f49f2a7305 Implemented Amaura, Aurorus, Hisuian Voltorb, Hisuian Electrode, Sentret, Furret, Qwilfish, Hisuian Qwilfish, and Overqwil.
Updated Dracovish model.
2024-02-06 14:30:54 -05:00
Tyzillion b0e9c1ab28 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-02-06 14:22:32 -05:00
Nick d5752982d7 Merge branch 'crystal_block' into 'main'
internal changes to tumblestones

See merge request cable-mc/cobblemon!865
2024-02-06 00:41:19 +00:00
Lily f1439ec724 internal changes to tumblestones 2024-02-05 19:18:53 -05:00
Nick 0cac5714ac Merge branch 'sherd_updates' into 'main'
added a missing sherd + added sherds to the vanilla ingredients tab

See merge request cable-mc/cobblemon!864
2024-02-05 22:45:46 +00:00
Lily 8529bb119f added a missing sherd + added sherds to the vanilla ingredients tab 2024-02-05 17:24:44 -05:00
JazzMcNade ac1c7d8b78 Mobs can now pathfind around Gilded Chests 2024-02-04 20:00:20 -06:00
JazzMcNade b68b3ad55e Fossil Machine now stores return items of natural materials fed via hopper. Return items can be retrieved via hopper or by breaking the machine. Restoration Tank block can now be place on hoppers. 2024-02-04 18:35:23 -06:00
Tyzillion dec5151eb8 /gradlew updateLicenses go brrrrrrrrr. 2024-02-04 00:11:14 -05:00
Hiroku 70c6b74f0f Merge branch 'pottery-sherds' into 'main'
Implemented pottery sherds

See merge request cable-mc/cobblemon!861
2024-02-04 05:00:54 +00:00
Tyzillion 196edc2711 Updated animations for Happiny, Carnivine, Litwick, Lampent, Chandelure, Lechonk, and Falinks.
Updated model for Lechonk, Drifloon, and Drifblim.
Fixed Drifloon eyes.
2024-02-03 23:35:35 -05:00
Hiroku 5cb7a51163 Merge branch 'test-build-rename' into 'main'
Made it so when a snapshot build is built the commit hash and branch is included

See merge request cable-mc/cobblemon!862
2024-02-04 04:27:50 +00:00
apion a68b6928aa Made it so when a snapshot build is built the commit hash and branch is included 2024-02-03 23:26:32 -05:00
Apion 0c26cb026c Remove extra braces 2024-02-04 03:57:40 +00:00
Hiroku 6078e22b14 Merge branch 'ball-entity-names' into 'main'
Empty Poké Ball Entity Name

Closes #755

See merge request cable-mc/cobblemon!852
2024-02-04 03:52:05 +00:00
Apion cb1226013d Removed unneeded access widener 2024-02-04 03:47:39 +00:00
apion 0c8318d317 Licenses :P 2024-02-03 22:46:04 -05:00
apion 8d80bcfd6b Fixed remaining patterns 2024-02-03 22:45:26 -05:00
apion cfd4fa1785 Fix dome, helix, and sus patterns 2024-02-03 22:35:56 -05:00
apion 86bd70177c Sherds work :O 2024-02-03 22:28:57 -05:00
Tyzillion 18015a26fd Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-02-03 21:10:07 -05:00
Tyzillion aa296a79a9 Added placeholder walk animations to Zoroark. Updated animations for Galarian Meowth, Galarian Rapidash, Venonat, Venomoth, Phanphy, Donphan, Dratini, Dragonair, Chansey, Blissey, Volbeat, Illumise, Numel, Drifloon, and Drifblim.
Updated model and texture for Danphan.
Updated model for Illumise, Dratini, Dragonair, Drifloon, and Drifblim.
Added cries for all Meowth variants.
Added missing blink to Psyduck.
2024-02-03 21:09:04 -05:00
Lily 92dd85643e Merge branch 'amo/sendout-upgrade' into gimmighoul_gholdengo
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
2024-02-03 19:45:47 -05:00
Lily 8849de1bfd Merge remote-tracking branch 'origin/amo/sendout-upgrade' into amo/sendout-upgrade
# Conflicts:
#	common/src/main/resources/assets/cobblemon/bedrock/particles/balls/capture/capturestar.particle.json
#	common/src/main/resources/assets/cobblemon/bedrock/particles/balls/capture/hisui/hisuicapturestar.particle.json
2024-02-03 19:44:41 -05:00
Nick ce668b31ff Merge branch 'dynamic-lighting-compat' into 'main'
Dynamic lighting compat

See merge request cable-mc/cobblemon!860
2024-02-03 21:49:28 +00:00
LiciousandNick 943d6e0c55 Dynamic lighting compat 2024-02-03 21:49:27 +00:00
apion 7d82a2f7c8 Start working on injecting sherd textures, bunch of immutable maps need to not be immutable 2024-02-02 20:53:04 -05:00
Lily 782ba524df fossil block break speed + loot table 2024-02-02 20:24:07 -05:00
apion c571d79035 Added sherd tag 2024-02-02 19:48:31 -05:00
Hiroku 054c22b926 Merge branch 'inkay-grumm' into 'main'
Inkay: Add 2nd easter egg nickname evo

See merge request cable-mc/cobblemon!859
2024-02-02 22:20:48 +00:00
KyozennoandHiroku d2fce5edb5 Inkay: Add 2nd easter egg nickname evo 2024-02-02 22:20:48 +00:00
jeffw773 cba32b7443 - Adding Tweaked textures for fossil embryo goopies that are a tad darker in case they are liked better 2024-02-02 13:32:56 -08:00
JazzMcNade 4a81c24a3d Hopefully less mobs will get hung up on the Monitor Block 2024-02-02 01:03:41 -06:00
Lily 776e629850 updated CobblemonItemTags and fixed hand animation not playing on pure client instances 2024-02-01 21:38:20 -05:00
Paul 9afb8b04c2 Fixed edge case in FPS particles 2024-02-02 11:54:12 +10:00
Lily 2a349697b4 colored gilded chest variants :3 2024-02-01 20:28:12 -05:00
Tyzillion a4055e6206 Been a minute since I've last added stuff...
Updated models and textures for Omanyte, Squirtle, Rowlet line, Psyduck, Dusknoir, Swinub, and Piloswine.

Implemented Aron, Gossifleur, Zorua, Hisui Zorua, Hippopotas, Tyrunt, Anorith, and Archen line.
2024-01-31 20:58:23 -05:00
Lily 03bda4e27d fixes to be compatible with the updated held item event 2024-01-30 17:33:51 -05:00
Lily 5d8abbd4c7 Merge branch 'main' into gimmighoul_gholdengo
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/Pokemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/evolution/adapters/CobbledRequirementAdapter.kt
2024-01-30 16:51:56 -05:00
Lily 6b167a7a17 gilded chest variants are implemented, waiting for textures 2024-01-30 16:46:22 -05:00
Tyzillion 5c64bc94ff Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-01-30 13:32:04 -05:00
Nick 90c74eddc8 Merge branch 'does_this_qualify_as_grafting' into 'main'
Implement #748 Allow players to plant apricorn sprouts on leaves

Closes #748

See merge request cable-mc/cobblemon!854
2024-01-30 17:53:47 +00:00
Nick 3600178d3b Merge branch 'lefties-not-the-store-pls-no-copyright' into 'main'
Adds leaves_leftovers item tag.

See merge request cable-mc/cobblemon!858
2024-01-30 17:52:26 +00:00
Apion 66d8a01917 Merge branch 'hold-my-event' into 'main'
Implement HeldItemEvent. Remove unnecessary setter method for already public var.

See merge request cable-mc/cobblemon!857
2024-01-29 23:55:57 +00:00
Licious 68e32b21b5 Adds leaves_leftovers item tag. 2024-01-29 23:21:47 +00:00
Licious 670882bb4d Implement HeldItemEvent. Remove unnecessary setter method for already public var. 2024-01-29 23:13:27 +00:00
apion d36c24075c Fixed rotations? 2024-01-29 16:48:21 -05:00
Lily d1a8122296 fixed rotation for gilded chest as well 2024-01-29 12:44:41 -05:00
Lily a8e6e684ab updated relic_coin_pouch.png 2024-01-29 12:22:55 -05:00
Lily 188fc2b5d9 fixed inconsistencies between the actual value of the facing property and the direction the coin pouch was facing 2024-01-29 12:19:50 -05:00
dhi_holo 9c0708651f Cobble Particles
Azure, Slate, Citrine, Verdant, Roseate
2024-01-29 17:09:34 +10:00
JazzMcNade 1b3bb3b5bc Ownership message can now identify players who are currently not connected to the server. 2024-01-29 01:08:57 -06:00
dhi_holo cd03ef68c3 Gen 3 4-7, Gen 4 1-2
Dive, Nest, Repeat, Timer, Heal, Quick
2024-01-29 17:03:20 +10:00
dhi_holo 69716b5050 Gen 2 7-9 and Gen 3 1-3
Friend, Love, Moon, Luxury, Premier, Net
2024-01-29 16:28:40 +10:00
dhi_holo 015deb4eeb Gen 2 1-6
Particles for Park, Sport, Fast, Level, Lure, Heavy Balls
2024-01-29 15:07:53 +10:00
dhi_holo 96023077ad Gen 1 Full
Should fix all of the remaining issues with the Gen 1 particles
2024-01-29 13:09:31 +10:00
JazzMcNade d96c68b5b4 All monitor blockstates now use the off state's particle texture. 2024-01-28 21:05:22 -06:00
JazzMcNade dc27867502 Dry stuff for markedRemoved (related to stopping sounds). Loop sound stops when the monitor block is destroyed. 2024-01-28 20:58:29 -06:00
JazzMcNade bfbea377c1 Monitor now switches to the OFF state if the fossil pokemon is retrieved while machine was in the protected state 2024-01-28 19:55:30 -06:00
dhi_holo f5954fcb33 Gen 1 Poomfs
Ultra, Master, and Safari complete the 5
2024-01-29 11:47:23 +10:00
JazzMcNade eaa909a9f2 Fossilmachine's owner now persists when the machine is loaded/unloaded and is now based on the user's uuid 2024-01-28 19:28:51 -06:00
dhi_holo 5ba4d460b1 great error
should mean the poke ball and great ball particles are all functional, and I can start working on the other balls!
2024-01-29 11:01:51 +10:00
dhi_holo 09143b7ad6 the identifiers need the directory
atleast, that's how they were, so let's redo that
2024-01-29 10:48:49 +10:00
dhi_holo aa1e14b4ac Merge branch 'main' into amo/sendout-upgrade 2024-01-29 10:24:07 +10:00
dhi_holo 0f29cdeaf9 update pokeball and greatball particles
lets see if this works
2024-01-29 10:15:41 +10:00
JazzMcNade b976b9dd68 Fossil machine now stops its loop sound when the machine finishes or is destroyed. 2024-01-28 16:51:40 -06:00
Tyzillion 2bc2e3f020 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation8/basculegion.json
2024-01-28 12:36:36 -05:00
dhi_holo fa94ca8033 The Origin Master
Origin Ball is now Guaranteed, like the Master Ball, because that's the intended behaviour according to Chroma
2024-01-27 19:07:51 +10:00
dhi_holo f206352b6e I am a genius
origin ball go entity
2024-01-27 18:28:34 +10:00
dhi_holo cdee981933 Origin Textures
Tried fixing the Origin Ball not using the right texture. Only worked for the item texture, entity texture doesn't seem to load still
2024-01-27 15:06:16 +10:00
dhi_holo f2fc32b6a9 Updated Catch Particles
Up to date as of time of commit, mostly looking good, some minor issues to be fixed up.
2024-01-27 14:04:26 +10:00
Nick f46b581327 Merge branch 'new-model-repo' into 'main'
Added a bedrock model repo for miscellaneous models

See merge request cable-mc/cobblemon!855
2024-01-26 23:16:16 +00:00
ApionandNick ff1241304b Added a bedrock model repo for miscellaneous models 2024-01-26 23:16:16 +00:00
Lily 7a15e6b004 Merge remote-tracking branch 'origin/amo/sendout-upgrade' into amo/sendout-upgrade
# Conflicts:
#	CHANGELOG.md
#	common/src/main/resources/assets/cobblemon/bedrock/particles/balls/capture/hisui/hisuicapturestar.particle.json
2024-01-26 17:46:34 -05:00
Lily 6ee6beddeb capture particles... again 2024-01-26 17:45:31 -05:00
Lily b92960da77 Merge branch 'main' into amo/sendout-upgrade 2024-01-26 17:29:13 -05:00
dhi_holo dd746e6775 Merge branch 'main' into ball-entity-names 2024-01-22 16:39:51 +10:00
dhi_holo 99618184e7 Heal and Harm
Added translations for the battle text of Dry Skin, Cheek Pouch, Earth Eater, Icy Body, Volt Absorb, Water Absorb, and Sand Tomb.
2024-01-22 16:18:55 +10:00
dhi_holo fcdff126fd Merge branch 'main' into MoreHoldItems 2024-01-22 15:22:31 +10:00
Licious 44956ec6da Implement #748 Allow players to plant apricorn sprouts on leaves 2024-01-21 15:03:53 +00:00
Hiroku 83e7a1968a Merge branch 'can-moe-scrape' into 'main'
Blueberry allergy fix

See merge request cable-mc/cobblemon!851
2024-01-19 23:59:49 +00:00
jeffw773 3b285cc8bd - Changes to Relic Coin sack default placement direction for Structures 2024-01-19 10:51:21 -08:00
Paul 553ecc8509 Various corrections to pokeballs, including a fix for the delayed bounce animation 2024-01-19 13:48:58 +10:00
Paul 7b0d488b7c Improved fetus transitions 2024-01-19 12:34:50 +10:00
jeffw773 4dead98e6b - Pesky little chest Gimmieghouls spawn facing the direction of the chest block now 2024-01-18 18:16:09 -08:00
jeffw773 db36f8da2a - Gimmieghoul Chest and Gilded Chest now face the player when placed down 2024-01-18 16:07:45 -08:00
JazzMcNade 3f7a5e1318 Fossils in the analyzer block are now have a 1 item spaced gap between them for visibility. 2024-01-17 19:52:39 -06:00
JazzMcNade ce7485f557 Adjusted analyzer block's fossil positioning to avoid clipping and match the base item's orientation. 2024-01-17 01:09:08 -06:00
JazzMcNade b5ca5c29d4 Fixed an issue in which if the machine finished and then was unloaded, breaking the machine would not release the pokemon. 2024-01-17 00:13:24 -06:00
JazzMcNade 43f60da22e Refactored Monitor blockstate into a single enum driven screenid. Protection time of the fossil machine is now saved into nbt. 2024-01-16 23:32:11 -06:00
JazzMcNade 0102c8b392 Updated Restoration tank textures and connector model 2024-01-16 00:58:29 -06:00
dhi_holo 3a448071d7 Merge branch 'main' into MoreHoldItems 2024-01-16 11:38:51 +10:00
JazzMcNade 6bb5c5dadf Fix for Blockupdates interrupting the fetus animation, added phase offset for fetus animations (for real). 2024-01-14 22:18:41 -06:00
JazzMcNade dd21fe2ea3 Implemented locked state visual in the monitor block 2024-01-14 03:56:15 -06:00
JazzMcNade 656c46817a Implemented Resoration_tank's animated texture when the machine is currently running 2024-01-14 02:01:38 -06:00
JazzMcNade a373f437fa Refactored fossil machine block files out of fossil directories 2024-01-13 21:22:23 -06:00
JazzMcNade 0fe3637034 Deep rename of fossil_tube to restoration_tank, fossil_monitor to monitor, fossil_compartment to fossil_analyzer. Updated fossil machine component block assets. 2024-01-13 20:44:58 -06:00
Paul 7215860d74 Merge remote-tracking branch 'origin/gimmighoul_gholdengo' into gimmighoul_gholdengo 2024-01-14 08:08:04 +10:00
Paul dc899ffc1b Fixed gimmighoul stuff for realsies this time 2024-01-14 08:07:49 +10:00
Lily 88fe55bbb9 pouch blocks and bugfixes 2024-01-13 16:23:39 -05:00
dhi_holo 4b4be0e2cc Merge branch 'main' into ball-entity-names 2024-01-13 16:14:43 +10:00
dhi_holo 3e673ae8f0 Don't Forget
I'll keep my kneecaps today, thanks
2024-01-13 16:12:02 +10:00
dhi_holo 4b3b7443d3 Empty Poké Ball
Names the Empty Pokeball entity to `Empty Poké Ball`, so it has a name.

Closes #755, possibly. I'm not sure if this entity name is the same kind of entity name as the report, as the order of words is different, but yeah.
2024-01-13 16:10:21 +10:00
Hiroku 70c1b42ede Merge branch 'non-entity-spawning' into 'main'
Abstracted spawning so it could be made to support non-entity spawning

Closes #729

See merge request cable-mc/cobblemon!850
2024-01-13 05:58:32 +00:00
MoeBoy76 b2048bb66f git hates me [skip-ci] 2024-01-13 16:48:45 +11:00
MoeBoy76 9956f1c159 dipplin fix [skip-ci] 2024-01-13 14:14:43 +11:00
MoeBoy76 25857dafc5 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into can-moe-scrape
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation9/dipplin.json
2024-01-13 14:10:22 +11:00
MoeBoy76 80345b3810 blueberry allergy fix [skip-ci] 2024-01-13 14:01:59 +11:00
JazzMcNade d4dc24ec49 Updated fossil item sprites. 2024-01-12 20:52:32 -06:00
Paul 2209ee10b6 Licenses 2024-01-13 12:05:07 +10:00
Paul a91aa9835c interop improvement on PokemonProperties.parse 2024-01-13 11:48:29 +10:00
Paul 0e980a846c Abstracted spawning so it could be made to support non-entity spawning 2024-01-13 11:36:31 +10:00
Paul 3d3c421b5c Fixed syncing issues with species feature providers 2024-01-12 18:15:10 +10:00
JazzMcNade f54bbe754f Adjust Aerodactyl's y offset inside the fossil tube 2024-01-11 21:31:24 -06:00
Apion 92fff27b4e Merge branch 'can-moe-scrape' into 'main'
Add gen 9 DLC movesets

See merge request cable-mc/cobblemon!846
2024-01-12 03:16:58 +00:00
MoeBoy76andApion 255874cbe4 Add gen 9 DLC movesets 2024-01-12 03:16:58 +00:00
Apion 824bc1b080 Merge branch 'botanypots' into 'main'
Botanypots integration - with additional fixes

See merge request cable-mc/cobblemon!844
2024-01-12 03:12:38 +00:00
GregerandApion 3ee55f24d8 Botanypots integration - with additional fixes 2024-01-12 03:12:38 +00:00
Lily c3379ddf21 fix crash with fossil machine on servers 2024-01-11 17:48:45 -05:00
jeffw773 5983b17e87 - Added in Retro's adjusted capture animation JSON for regular ball and ancient ball 2024-01-11 08:31:24 -08:00
Hiroku 27986d28a7 Merge branch 'musical-blocks' into 'main'
Musical Blocks

See merge request cable-mc/cobblemon!845
2024-01-11 13:06:09 +00:00
Hiroku 8807f2134e Merge branch 'main' into 'musical-blocks'
# Conflicts:
#   CHANGELOG.md
2024-01-11 11:31:10 +00:00
Hiroku d74b1228c1 Merge branch 'new_poison_touch_fix' into 'main'
- Fixed battle lang for Poison Touch in a much simpler way

See merge request cable-mc/cobblemon!849
2024-01-11 11:30:38 +00:00
Hiroku a3dcfe8bfb Merge branch 'main' into 'main'
Update PokemonEntity to be an open class.

See merge request cable-mc/cobblemon!847
2024-01-11 11:24:10 +00:00
jeffw773 8725ef2b54 - Fixed battle lang for Poison Touch in a much simpler way 2024-01-10 19:22:47 -08:00
Tyzillion 3c2cfa4ffc Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-01-10 18:46:04 -05:00
Pebbles 3074b067dc Update PokemonEntity to be an open class. 2024-01-10 19:08:23 +00:00
Lily 8d0ee6dd6f more particle changes 2024-01-10 11:44:12 -05:00
JazzMcNade a1c1c9bc90 Updated Fossil Tube textures. Fluid opacity increased, Line removed from tank. 2024-01-10 00:41:45 -06:00
MoeBoy76 5e52d350c1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into can-moe-scrape
# Conflicts:
#	CHANGELOG.md
2024-01-10 12:25:21 +11:00
MoeBoy76 e3ad34e023 changelogs [skip-ci] 2024-01-10 12:23:30 +11:00
MoeBoy76 f308918fd1 update Z species for gen 9 movesets 2024-01-10 12:19:26 +11:00
MoeBoy76 82a8257fa9 update Y species for gen 9 movesets 2024-01-10 12:13:30 +11:00
MoeBoy76 6c06c91cca update W species for gen 9 movesets 2024-01-10 12:07:12 +11:00
MoeBoy76 c5e44031a6 update V species for gen 9 movesets 2024-01-10 11:53:58 +11:00
MoeBoy76 6be2e14af4 update U species for gen 9 movesets 2024-01-10 11:29:04 +11:00
MoeBoy76 5cae25c059 update T species for gen 9 movesets 2024-01-10 11:25:17 +11:00
Lily 87e4f94af5 hisui capture particles, modern capture particles still need to be fixed 2024-01-09 19:18:55 -05:00
MoeBoy76 90ac9ae4df update S species for gen 9 movesets 2024-01-10 10:38:34 +11:00
Apion 527518d0c2 Merge branch 'funny_butterfly' into 'main'
changes to vivillon advancements and patterns

See merge request cable-mc/cobblemon!842
2024-01-09 21:21:10 +00:00
LilyandApion bcb326cd87 changes to vivillon advancements and patterns 2024-01-09 21:21:09 +00:00
Lily 89a4edb327 drops and creative inv 2024-01-09 15:59:33 -05:00
Lily ab37580258 gimmighoul chests crash ur game a little bit less now :o 2024-01-09 14:56:50 -05:00
Lily c116c01fd6 licenses 2024-01-09 14:16:09 -05:00
Lily e3ad8f8079 gimmi now challenges the player on reveal 2024-01-09 13:54:35 -05:00
Lily a491d508b6 gilded chest visuals, loot tables/recipes, sounds, etc. 2024-01-09 12:38:58 -05:00
Lily 43075f1cb8 updated capture particles, waiting for the animation files 2024-01-09 08:27:31 -05:00
dhi_holo 3e11d0550f More item sprites!
24 left, I think, since there's 4 updates and 4 news today
2024-01-09 18:49:20 +10:00
JazzMcNade e1b1e3d5e9 embryo stages now shrink down to nothing before disappearing 2024-01-09 02:44:25 -06:00
MoeBoy76 c226b80430 update R species for gen 9 movesets 2024-01-09 15:38:58 +11:00
dhi_holo 935f7039cf Musical Blocks
Note Block Instruments!
2024-01-09 13:19:32 +10:00
dhi_holo e8b50f8115 Merge branch 'main' into MoreHoldItems 2024-01-09 11:40:46 +10:00
apion 02fb825328 Update Gimmighoul model, add disguised chest block entity, gilded chests now save contents 2024-01-08 14:05:09 -05:00
JazzMcNade a7095b30a3 FossilTuberRenderer now gradually shifts between embryo models. Still needs more turning. 2024-01-08 03:09:18 -06:00
Paul ac5a03eebc Made particles use particle sheet translucent 2024-01-08 13:51:56 +10:00
Paul 8df6eea107 Fixed various issues with the gilded chest and its animations 2024-01-08 11:00:20 +10:00
apion 1376bb68f4 Tried again, failed again 2024-01-07 11:53:38 -05:00
apion beb8f2ccf1 Merge branch 'main' into gimmighoul_gholdengo
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonSounds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/party/PlayerPartyStore.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/repository/PokemonModelRepository.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/PokemonDTO.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/sounds.json
#	common/src/main/resources/data/cobblemon/species/generation9/gimmighoul.json
2024-01-07 10:41:34 -05:00
JazzMcNade bd79b58571 Added Embryo model. Very rough draft on swapping embryo stages. 2024-01-07 05:38:14 -06:00
apion 7c164fc4c8 Revert "Added BotanyPots integration"
This reverts commit 846acaef88.
2024-01-07 02:28:40 -05:00
Paul 5e1c233493 Fixed some ancient pokeball animation stuff 2024-01-07 14:02:17 +10:00
Paul 95e95afef3 Conflict resolution stuff 2024-01-07 13:39:46 +10:00
Paul bf9c54e539 Merge remote-tracking branch 'origin/main' into amo/sendout-upgrade
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/JsonPokemonPoseableModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/Poseable.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/DataKeys.kt
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/client/CobblemonFabricClient.kt
2024-01-07 13:28:42 +10:00
Apion 2ccda57c66 Merge branch 'botanypots' into 'main'
Added BotanyPots integration

Closes #642

See merge request cable-mc/cobblemon!828
2024-01-06 15:17:50 +00:00
GregerandApion 846acaef88 Added BotanyPots integration 2024-01-06 15:17:50 +00:00
dhi_holo 510dfec0e5 Merge branch 'main' into MoreHoldItems 2024-01-06 13:12:24 +10:00
dhi_holo e54932c876 8 Textures
Replaced Black Belt and Focus Band textures, added Covert Cloak, Expert Belt, Focus Sash, Iron Ball, Red Card, and Shell Bell
2024-01-06 13:12:00 +10:00
Hiroku 5fa12ff1c5 Merge branch 'punch-apricorn' into 'main'
Punch apricorn

See merge request cable-mc/cobblemon!843
2024-01-06 01:11:53 +00:00
tmetcalfe89 2b3db32243 right, we should make sure it's proper age before harvesting 2024-01-05 15:20:34 -08:00
tmetcalfe89 4b54405017 added ability to punch apricorn to harvest 2024-01-05 13:48:16 -08:00
Tyzillion dd14c3bbdd Implemented Basculegion, Cranidos, and Rampardos. Tyrogue can mount shoulder.
Updated models and textures for Basculin and Squirtle line.
2024-01-05 13:30:57 -05:00
Tyzillion 5ea237f8a0 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-01-05 13:29:56 -05:00
JazzMcNade b7addd0203 Added rudimentary randomized phase offset for fetus animations 2024-01-05 02:12:47 -06:00
JazzMcNade 7e64938ec9 Updated fetus anims for Aerodactyl, Archen, Galarian Fossils, Omanyte, Shieldon, Cranidos, and Substitute. Slowed Fossil animation rate to expected speed. 2024-01-05 01:35:19 -06:00
Paul 3824531735 Made moveToPose able to function without an entity 2024-01-05 16:14:32 +10:00
amo 618f66c775 fix up sendout particle code and implement greatball particles 2024-01-05 01:36:37 +00:00
MoeBoy76 9eb9c782ce update Q species for gen 9 movesets 2024-01-05 12:24:54 +11:00
MoeBoy76 49149c9c54 update P species for gen 9 movesets 2024-01-05 12:18:58 +11:00
Paul fd1d1075db Corrections to textures on ballsparkles 2024-01-05 10:16:59 +10:00
Paul 1648926aa6 Fixed direction vectors not being normalized 2024-01-05 10:16:42 +10:00
MoeBoy76 7784794689 update O species for gen 9 movesets 2024-01-05 10:16:26 +11:00
MoeBoy76 07b41d7c0a update N species for gen 9 movesets 2024-01-05 10:08:14 +11:00
MoeBoy76 f5287c7e83 update M species for gen 9 movesets 2024-01-05 09:45:46 +11:00
dhi_holo fb154ba457 Merge branch 'main' into MoreHoldItems 2024-01-05 08:39:23 +10:00
dhi_holo f7812896a8 Weather Rock Textures
4 down, 36 to go (+6 unimplemented)
2024-01-05 08:38:55 +10:00
Lily b0d57dd875 coin bags and blocks and stuff 2024-01-04 15:56:58 -05:00
Lily 6c09e2b553 Merge remote-tracking branch 'origin/gimmighoul_gholdengo' into gimmighoul_gholdengo 2024-01-04 13:47:21 -05:00
Lily 593104fb0a BIG COIN BAG!! 2024-01-04 13:45:43 -05:00
apion e314664731 Throw some stuff in and hope Hiro can fix it (I need a hero! I'm holding out for a hero...) 2024-01-04 07:31:29 -05:00
apion d0a38a9704 Add chest assets, do some work on getting chest animation working 2024-01-04 06:48:59 -05:00
Paul 63a30dcfd0 Merge remote-tracking branch 'origin/main' 2024-01-04 21:47:27 +10:00
Paul 9cc63b59e6 Fixed forge runs 2024-01-04 21:44:37 +10:00
Hiroku cb17c29be5 Merge branch 'squawkabilly_aspect' into 'main'
Fix Squawkabilly forms to use correct aspect

Closes #742

See merge request cable-mc/cobblemon!841
2024-01-04 11:28:02 +00:00
KyozennoandHiroku fd16d59ea2 Fix Squawkabilly forms to use correct aspect 2024-01-04 11:28:01 +00:00
Lily 6e155d7651 Merge remote-tracking branch 'origin/gimmighoul_gholdengo' into gimmighoul_gholdengo 2024-01-04 00:04:41 -05:00
Lily ae8f8a2fb8 working run button!!! wow!!! 2024-01-04 00:04:26 -05:00
apion 5a6a83aac1 Cleanup, add new model 2024-01-03 23:50:55 -05:00
dhi_holo e8236b55a4 Recipe Fixes plus Information in Description
There are 6 items left unimplemented from the recipe document.
Soothe Bell, due to being an out of battle effect, I don't want to attempt, and Amulet Coin needs design work before implementation.
The four terrain seeds, due to future plans, I'm not sure if need to be set up differently. Beyond those six held items, this branch has all currently requested held items to my knowledge, all should now work as intended, although I have not confirmed all battle dialogue works, in part due to not wanting to find all the documentations of what the lines should be. I might come back to that another day, though.

Commits marked with "No Obtain Method" refer to items which have obtain methods of loot or whatever, which can be handled later by people familiar with those systems. If not, I'm down to learn, just not a thing for today.
2024-01-04 13:52:21 +10:00
dhi_holo 2ea07899ea -Added Sticky Barb
No Obtain Method
2024-01-04 13:01:30 +10:00
dhi_holo d0ce03cd5e -Added Shed Shell
No Obtain Method
2024-01-04 13:00:02 +10:00
dhi_holo 8ae0c409a3 -Added Light Ball
No Obtain Method
2024-01-04 12:58:15 +10:00
dhi_holo 2782cb5f34 -Added Lagging Tail
No Obtain Method
2024-01-04 12:56:09 +10:00
dhi_holo 2f10707211 -Added Grip Claw
No Obtain Method
2024-01-04 12:54:48 +10:00
dhi_holo f40a9d762a -Added Float Stone
No Obtain Method
2024-01-04 12:53:17 +10:00
dhi_holo 17587f97e5 -Added Absorb Bulb
No Obtain Method
2024-01-04 12:51:46 +10:00
dhi_holo 5230820657 -Added Punching Glove 2024-01-04 12:49:01 +10:00
dhi_holo 61c55e136f -Added Throat Spray
need to figure out how to add the potion brewing later, not a huge priority at this stage
2024-01-04 12:45:59 +10:00
dhi_holo 22cced74f5 -Added Luminous Moss 2024-01-04 12:43:40 +10:00
dhi_holo 3cd2dec8e0 -Added Loaded Dice 2024-01-04 12:40:34 +10:00
amo 3ce22c0759 particle stuff 2024-01-04 01:32:35 +00:00
dhi_holo cea930893a -Added Iron Ball 2024-01-04 10:26:54 +10:00
dhi_holo 8662364ca8 -Added Wide Lens and Zoom Lens 2024-01-04 10:24:00 +10:00
dhi_holo 1fd079b1b4 -Added Weather Rocks
Damp Rock, Heat Rock, Smooth Rock, Icy Rock, terrible items
2024-01-04 10:19:53 +10:00
dhi_holo 244876a26c -Added Weakness Policy 2024-01-04 10:11:52 +10:00
dhi_holo e7790f530f -Added Utility Umbrella 2024-01-04 10:08:56 +10:00
dhi_holo 04a9ab0e67 -Adds Terrain Extender
If someone wants to work out how to make it so we can have a recipe that costs a water bucket, rather than water from a bucket, that'd be good, for now the recipe just costs an empty bucket
2024-01-04 10:06:39 +10:00
dhi_holo 3f338d27c3 -Added Scope Lens 2024-01-04 09:55:46 +10:00
dhi_holo 5da3dfb451 -Added Room Service 2024-01-04 09:54:00 +10:00
dhi_holo fd329e00cd -Added Ring Target 2024-01-04 09:52:00 +10:00
dhi_holo 6da47a8b2c -Added Red Card
Not gonna test this one for now, don't feel like setting up a second instance test. But, given Eject Button works, I'd say decent shot this one also works
2024-01-04 09:49:02 +10:00
dhi_holo 860c73fac9 -Added Protective Pads 2024-01-04 09:45:50 +10:00
dhi_holo e26fdd4bdd -Added Metronome
Deciding I'll ignore all held items with a * next to the name for now, not sure what they mean but hey, makes it easier to work through, and I can come back to them afterwards
2024-01-04 09:42:31 +10:00
dhi_holo 8e642f71b8 Merge branch 'main' into MoreHoldItems 2024-01-04 09:32:19 +10:00
MoeBoy76 797eeb09cc update L species for gen 9 movesets 2024-01-04 10:20:15 +11:00
MoeBoy76 e6df322556 update K species for gen 9 movesets 2024-01-04 08:32:17 +11:00
MoeBoy76 744d1e1263 update J species for gen 9 movesets 2024-01-04 07:53:07 +11:00
MoeBoy76 7987713179 update I species for gen 9 movesets 2024-01-04 07:45:43 +11:00
MoeBoy76 f8efe0a7d1 update H species for gen 9 movesets 2024-01-04 07:12:13 +11:00
MoeBoy76 be558ed0ab update G species for gen 9 movesets 2024-01-04 06:32:46 +11:00
amo a786adee9e Merge branch 'evolution-effect' into amo/balls
# Conflicts:
#	common/src/main/java/com/cobblemon/mod/common/mixin/GameRendererMixin.java
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/interact/wheel/InteractWheelGuiFactory.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/pokemon/PokemonRenderer.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/resources/assets/cobblemon/particles/snowstorm.json
#	common/src/main/resources/mixins.cobblemon-common.json
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/client/CobblemonFabricClient.kt
2024-01-03 15:02:26 +00:00
Apion 2d6c7f5148 Merge branch 'dialogue' into 'main'
Dialogue

See merge request cable-mc/cobblemon!834
2024-01-03 12:20:39 +00:00
MoeBoy76 f3f3bfead4 update F species for gen 9 movesets 2024-01-03 22:44:49 +11:00
MoeBoy76 506ff8d1e4 update E species for gen 9 movesets 2024-01-03 22:14:04 +11:00
MoeBoy76 4764264c9a update D species for gen 9 movesets 2024-01-03 21:44:03 +11:00
Paul 7a761003c5 Merge remote-tracking branch 'origin/main' into dialogue
# Conflicts:
#	CHANGELOG.md
2024-01-03 19:07:51 +10:00
Paul f9fa9dcf24 Added ServerRealTimeTaskTracker for server-sided epoch scheduler and use it for dialogue 2024-01-03 19:07:18 +10:00
Hiroku dfc4873ce3 Merge branch 'open-itemdropentry' into 'main'
Opens up the ItemDropEntry class, so it can be extended.

See merge request cable-mc/cobblemon!836
2024-01-03 08:46:07 +00:00
dhi_holo f17884b4e1 Eject Button Lang, Read Description
All of the items added just now by me were tested besides Eviolite (don't feel like crunching those numbers today), Eject Pack is broken in my testing (see https://canary.discord.com/channels/725110639554592879/993671151870017656/1192009424282320957 for details), and ofc no item sprites yet, but that's dev life
2024-01-03 17:53:57 +10:00
Nick 65bd00033c Merge branch 'berry-rendering' into 'main'
Improve Berry Rendering Perf

See merge request cable-mc/cobblemon!838
2024-01-03 07:35:28 +00:00
ApionandNick f82fa2b4e6 Improve Berry Rendering Perf 2024-01-03 07:35:27 +00:00
dhi_holo c40b456948 -Added Eviolite and Expert Belt
test and finalise this little bit time (also corrected some jsons)
2024-01-03 17:19:31 +10:00
dhi_holo 7e74e85315 -Added Eject Button and Pack
I'm not testing these in game rn, I'll do that at the end of the session, which will probably be in a couple more items. But, these all hit the internet at the same time, so haha
2024-01-03 17:09:13 +10:00
dhi_holo 21fd4d7cbf -Added Covert Cloak 2024-01-03 17:00:58 +10:00
dhi_holo 908bff9892 -Added Cell Battery and Clear Amulet 2024-01-03 16:57:32 +10:00
Nick 966acecf6d Merge branch 'Fetus_Updates' into 'main'
Fix for Fossil Block Renderers and Fetus Asset Updates

See merge request cable-mc/cobblemon!839
2024-01-03 06:31:05 +00:00
dhi_holo fa14f70bbb -Added Shell Bell
Bell Go Heal
2024-01-03 15:59:01 +10:00
JazzMcNade 2cd09af4d0 Added all remaining fetus models for the fossil machine, updated existing fetus assets. Reregistered fossil block entity renderers. 2024-01-02 23:51:50 -06:00
MoeBoy76 1bc22f1afc update C species for gen 9 movesets 2024-01-03 16:49:27 +11:00
MoeBoy76 3480085a29 update B species for gen 9 movesets 2024-01-03 14:04:43 +11:00
MoeBoy76 f5c0bfb40e update A species for gen 9 movesets (again) 2024-01-03 13:04:28 +11:00
MoeBoy76 9dc9740363 Revert "update A species for gen 9 movesets"
This reverts commit be16d00dd5.
2024-01-03 12:20:30 +11:00
MoeBoy76 be16d00dd5 update A species for gen 9 movesets 2024-01-03 10:15:21 +11:00
MoeBoy76 777ece02cc Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into can-moe-scrape 2024-01-03 08:35:03 +11:00
Lily 188ae2ac85 changes to the gimmighoul evolution system. added relic coins, updated bars, removed NetheriteMaterials and GoldMaterials 2024-01-02 14:09:52 -05:00
Deltric 388e03e261 Opens up the ItemDropEntry class, so it can be extended. 2024-01-02 01:12:48 -06:00
dhi_holo 346559f292 Tags on top of Tags
Added a very large amount of tags.
The different tiers of Poké balls, also the Apricorn balls so it's easier for people to see what balls count for that advancement, different healing and battle item types, some evolution item sets which made sense to make tags (may add more later, these ones were just the obvious ones to make thing easier for future), the three colours for tumblestones, machine blocks, as well as adding the fence gate item tag, and adding the new tumblestone stuff to the pickaxe tag (although they can still be mined with an axe, probably something that needs fixing)

Mod loader tags were not tested on Forge, due to a crash involving CobblemonEntities, but Fabric works all nicely
2024-01-02 14:44:01 +10:00
dhi_holo 331b282fcf Decorated sherds tag, and fixed Focus Sash not being named
`focus_Sash` isn't valid, sadly
2024-01-02 12:41:28 +10:00
dhi_holo 7f97eeafed Update is_held_item.json
Reorganized alphabetically, for the most part, roughly matches the registry now.
2024-01-02 11:45:38 +10:00
dhi_holo 51f5a1f5a8 Merge branch 'main' into MoreHoldItems 2024-01-02 11:35:53 +10:00
Paul 1829f7d48a Renamed FlatfileMoLangDataStoreFactory.kt to NbtMoLangDataStoreFactory.kt 2024-01-01 22:44:30 +10:00
Hiroku bcc3c885d7 Merge branch 'holographic-cleaners-inc' into 'main'
Tags on Tags (plus a couple tiny fixes)

Closes #736 and #706

See merge request cable-mc/cobblemon!835
2024-01-01 12:40:09 +00:00
Paul e2a6dbc709 Undid temp example thingy dw about it 2024-01-01 22:13:15 +10:00
Paul b32ca4af5d Added autocompletion to /opendialogue 2024-01-01 22:11:58 +10:00
Paul a2e728905e Clarified PlayerRenderableFace 2024-01-01 21:47:07 +10:00
dhi_holo 7c0535b8bd Merge branch 'main' into MoreHoldItems 2024-01-01 21:08:33 +10:00
dhi_holo ead232be6f Merge branch 'main' into holographic-cleaners-inc 2024-01-01 19:59:44 +10:00
dhi_holo feaba85ba0 Update CHANGELOG.md
improved a description slightly
2024-01-01 19:52:26 +10:00
dhi_holo 6a8822ca76 Undone what was done before
Given it exists in another branch, and this was just me learning anyway, removed the ore from this branch.
2024-01-01 19:50:36 +10:00
dhi_holo 4f15ac0cbc Update CobblemonItems.kt
No More "why are the held items not in alphabetical order" for the time being (besides the three Powders and four Herbs, I left them together at the bottom because nobody cares about them)
2024-01-01 18:37:53 +10:00
Paul 8fc6d93be4 Merge remote-tracking branch 'origin/main' into dialogue
# Conflicts:
#	CHANGELOG.md
2024-01-01 18:22:33 +10:00
Paul 97f8dc562a Oopsy 2024-01-01 18:20:08 +10:00
JazzMcNade 35a0d8a80d -Added Blunder Policy 2024-01-01 01:31:08 -06:00
Hiroku 6616cd1d4c Merge branch 'moe-minor-fixes' into 'main'
empty evolutions tag cleanup and related fixes

See merge request cable-mc/cobblemon!832
2024-01-01 07:08:00 +00:00
Paul f9635cf03f Merge remote-tracking branch 'origin/main' into dialogue
# Conflicts:
#	CHANGELOG.md
2024-01-01 16:52:41 +10:00
Hiroku 49db87737f Merge branch 'original-trainer' into 'main'
Original Trainer Implementation

See merge request cable-mc/cobblemon!831
2024-01-01 06:51:09 +00:00
Hiroku a414213255 Merge branch 'main' into 'original-trainer'
# Conflicts:
#   CHANGELOG.md
#   common/src/main/kotlin/com/cobblemon/mod/common/util/MiscUtils.kt
2024-01-01 06:44:21 +00:00
Paul 59a8c21429 Merge remote-tracking branch 'origin/main' into dialogue
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobblemonDataProvider.kt
2024-01-01 16:27:58 +10:00
Paul b67fda7a37 changelog for dialogue 2024-01-01 16:27:25 +10:00
Hiroku 4392a61ab5 Merge branch 'archaeology' into 'main'
Archeology

See merge request cable-mc/cobblemon!833
2024-01-01 06:26:13 +00:00
Hiroku a9d96818ec Removed duplicated block entity renderer registration 2024-01-01 06:24:35 +00:00
Paul 6b285e48e9 Added faces to dialogue API 2024-01-01 16:20:46 +10:00
JazzMcNade c0270d3ef0 -Added Binding Band 2023-12-31 23:58:24 -06:00
JazzMcNade 82a1eb2a55 -Finished Air Balloon implementation. Fixed white space on recipes for for focus sash and Ability Shield 2023-12-31 21:44:26 -06:00
JazzMcNade a528ea952a -Added Ability Shield and Focus Sash. Begin work on Air Balloon. 2023-12-31 21:20:10 -06:00
MoeBoy76 532ef09acd updates for recent transformed parts update 2024-01-01 08:14:21 +11:00
MoeBoy76 f0f7bb96ad Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into archaeology
# Conflicts:
#	CHANGELOG.md
2024-01-01 07:10:17 +11:00
Tyzillion af2df51a2a Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-12-30 18:25:27 -05:00
Paul ecfb6c60c3 Added dialogue API 2023-12-30 21:55:35 +10:00
dhi_holo 5be436f25c Merge branch 'main' into holographic-cleaners-inc 2023-12-29 18:55:23 +10:00
dhi_holo 2ddc265b0f Destiny Tears
Updated Destiny Knot to use a ghast tear
2023-12-29 18:54:26 +10:00
MoeBoy76 52af8ceb99 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into moe-minor-fixes
# Conflicts:
#	CHANGELOG.md
2023-12-28 23:15:51 +11:00
Hiroku 14a5060100 Merge branch 'dispatch-refactor' into 'main'
Refactored battle interpretor to load into a sequence before starting dispatches

See merge request cable-mc/cobblemon!830
2023-12-28 10:55:22 +00:00
Hiroku 9d33586b44 Merge branch 'improved-transformed-parts' into 'main'
Rebuilt transformed model parts

See merge request cable-mc/cobblemon!829
2023-12-28 10:55:09 +00:00
MoeBoy76 d4f328157e Update file PokemonBattle.kt 2023-12-27 23:35:49 +00:00
MoeBoy76 c4331043f7 changelog file that was missed in selection 2023-12-28 10:05:09 +11:00
MoeBoy76 9945d8a069 cleanup check and fix for empty evolutions in species files 2023-12-28 10:03:39 +11:00
dhi_holo 2595d6ee91 Tags for Ore!
Adds block and item tags for each evolution store ore type, as well as adding the ores to the modloader tags properly, making it match with how ores are handled regularly.
Also boat tags.
2023-12-28 06:04:51 +10:00
Lily 95a0f9603c gilded chest model stuffs 2023-12-27 14:54:28 -05:00
dhi_holo f16e024bbe I don't get it
Readded the Iron recipe. No clue why it disappeared, just, isn't a file for it suddenly.
Closes #736
2023-12-28 05:29:05 +10:00
Charzard4261 87a5522acc Update CHANGELOG.md 2023-12-27 16:10:14 +00:00
Charzard4261 2c812cdc3c Change system to explicitly declare if an Original Trainer is NONE, PLAYER or NPC through the use of OriginalTrainerType 2023-12-27 16:06:52 +00:00
dhi_holo f6e910038e Update beast_ball.png
Replaces `assets\cobblemon\textures\item\poke_balls\models\beast_ball.png` with `assets\cobblemon\textures\poke_balls\beast_ball.png`, so they match, as only one was updated.
Resolves #706
2023-12-27 18:55:52 +10:00
dhi_holo 5c7d96897d Generation Sucks, Please Help
Added basically everything for Netherrack Fire Stone Ore, but the generation doesn't work and I'm not sure why. Feel free to investigate it, won't merge until it's solved.
2023-12-27 18:50:53 +10:00
dhi_holo 862d892c84 More EMI Compat
Added the new tags to the lang file, so they look nicer with mods such as EMI
2023-12-27 15:31:50 +10:00
dhi_holo 9246e1e8ee Held Tags
Should add all missed held items to the held item tag, as well as adding Metal Coat to the Held Items tab, and moving Power Herb to after the six Power Items because sure, alphabetical is nice, but it's a set, let's let it sit together xD
2023-12-27 14:23:43 +10:00
Paul 0715cb465f Fixed faints with loop set to true causing super whacky animations 2023-12-26 13:30:22 +10:00
Paul 2e251972aa Merge branch 'main' into improved-transformed-parts 2023-12-26 12:48:22 +10:00
Paul de89c11f24 Fixed issue with localPosition on inward/outward motion particles 2023-12-26 11:40:41 +10:00
Charzard4261 7a1f96e31e Add missing OTPlayer Username -> UUID lookup in PokemonProperties.apply(PokemonEntity) 2023-12-25 21:07:50 +00:00
Charzard4261 d405b099b3 Added the ability to modify the Original Trainer of a Pokémon through Commands 2023-12-25 21:04:42 +00:00
MoeBoy76 a8e4f87c59 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into can-moe-scrape 2023-12-26 07:49:22 +11:00
Hiroku 74322e2f48 Turn snapshot back on 2023-12-25 11:13:48 +00:00
Paul f16d233693 Put the evolution effect behind a switch so we can pull the fixes into main 2023-12-25 20:49:26 +10:00
Paul 54d2711583 Resolved issues from merging main 2023-12-25 20:44:30 +10:00
Paul e54f179ccf Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityState.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/spawn/SpawnPokemonPacket.kt
#	deps/local/com/bedrockk/molang/maven-metadata-local.xml
2023-12-25 20:33:56 +10:00
Paul 40a37fedd2 Actually maybe don't try tracking causality yet 2023-12-25 20:28:47 +10:00
Paul 3bc6c50d79 Don't use deprecated scheduling 2023-12-25 20:19:13 +10:00
Paul 1ef9f44a1b Merge remote-tracking branch 'origin/main' into dispatch-refactor
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt
2023-12-25 20:18:43 +10:00
Tyzillion d38aa6b1a2 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-12-24 22:45:50 -05:00
MoeBoy76 f1ed339d9d update for 1.4.1 2023-12-25 11:26:26 +11:00
Paul f07930ef16 Just a little AI activity access widener 2023-12-25 09:53:11 +10:00
Tyzillion 4566e1b33f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-12-24 07:07:56 -05:00
Paul c6d18cda44 Fixed a fringe flickering issue with pose transitioning 2023-12-24 14:21:27 +10:00
Paul 263b86e833 Merge remote-tracking branch 'origin/main' into improved-transformed-parts
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityState.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
2023-12-24 10:45:12 +10:00
Paul 953560051d Merge conflict corrections 2023-12-24 10:26:12 +10:00
Paul bf3904a214 Merge remote-tracking branch 'origin/main' into tracked-data-cleanup
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/BattleBuilder.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/block/entity/PokemonPastureBlockEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokeball/EmptyPokeBallEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonServerDelegate.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/Pokemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/evolution/requirements/BattleCriticalHitsRequirement.kt
2023-12-24 10:04:03 +10:00
MoeBoy76 c426f4154b Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into can-moe-scrape 2023-12-24 10:18:55 +11:00
MoeBoy76 a326eb3832 Blueberry dex additions 2023-12-24 10:18:06 +11:00
Hiroku 1708eb9b3e Merge branch 'scheduling-rework' into 'main'
Rebuilt scheduling mechanism to be better contained and avoid side issues

See merge request cable-mc/cobblemon!793
2023-12-23 23:15:25 +00:00
Hiroku 0dee18dbfd Merge branch 'spawn-rules' into 'main'
Spawn rules

See merge request cable-mc/cobblemon!825
2023-12-23 23:15:14 +00:00
Tyzillion f2d16ca9b7 Implemented Lileep, Cradily, Tirtouga, Carracosta, Arctovish, Dracovish, Arctozolt, Dracozolt, Shieldon, Bastiodon.
Updated models for Kabuto, Kabutops, Piplup, Prinplup, Elekid, Electabuzz, Cubone, Marowak, Paras, Venonat, Venomoth, Yanma, and Yanmega, and Raboot. Resized Snorlax.
2023-12-23 17:47:44 -05:00
Paul 7ee7aaab76 Licenses 2023-12-23 21:18:58 +10:00
Paul 3dd4f515dd Squeezed OT into a single value pair 2023-12-23 21:00:16 +10:00
Paul f24310d043 Merge remote-tracking branch 'origin/main' into original-trainer 2023-12-23 20:38:48 +10:00
Paul 61bfe02322 Merge branch 'spawn-rules' into scheduling-rework 2023-12-23 20:17:48 +10:00
Paul 7cbcb30aff Add standard functions from a .setup() on MoLangRuntime 2023-12-23 15:21:59 +10:00
Paul 6fc8fa5b60 Wait no that's not where general functions are meant to go 2023-12-23 15:19:34 +10:00
Paul 7763a6d3e7 Added standard functions to registry entry molang values 2023-12-23 15:18:40 +10:00
Paul 1288469172 Some fixes for spawn rules and include real example 2023-12-23 15:06:42 +10:00
Paul 86cf79bff9 Merge remote-tracking branch 'origin/main' into spawn-rules 2023-12-23 14:10:21 +10:00
Paul 765e9f2cc3 snapshot = false 2023-12-23 11:39:57 +10:00
Paul ffda34742c Edge case protection with nickname migration 2023-12-23 11:01:03 +10:00
Paul c2385edbe7 more more changelog [skip-ci] 2023-12-23 11:00:00 +10:00
Paul 961ad0f4bd more changelog [skip-ci] 2023-12-23 10:45:07 +10:00
Paul 8851594347 Changelog polishing and removing stacks of unused item files 2023-12-23 10:44:32 +10:00
Paul 3c1ad2bea6 Add pokeball vivillon variant back into advancement 2023-12-23 09:10:17 +10:00
Hiroku e1960792d7 Merge branch 'bush_pathing' into 'main'
Berry bush avoidance

See merge request cable-mc/cobblemon!824
2023-12-22 22:50:24 +00:00
gr3ger 23b9f933c7 Updated changelog. 2023-12-22 23:37:27 +01:00
Paul 9662699bcb Fix mongo adapter constructor issue 2023-12-23 08:29:54 +10:00
Hiroku 32b2d2023b Merge branch 'nickname-migrate' into 'main'
Adds json nickname migrate + bug fix for non player entity backed battle actors.

See merge request cable-mc/cobblemon!821
2023-12-22 22:24:03 +00:00
Paul 22441e0b09 More evo effect reworking 2023-12-23 08:20:36 +10:00
Hiroku c64612859c Merge branch '732_spelling' into 'main'
Fix wrong name on animation/model folders

Closes #732

See merge request cable-mc/cobblemon!822
2023-12-22 22:17:12 +00:00
gr3ger 6c97c4c238 Removed extra call to getBlockState() and made function return on match instead of going through all if statements. 2023-12-22 23:11:58 +01:00
Lily 8c6f7335a5 bring changelog up to date. pls keep updating this from now on!! 2023-12-22 19:25:43 +00:00
gr3ger 6535d43964 PoC bush avoidance 2023-12-22 18:16:21 +01:00
gr3ger 234d1dad44 Closes #732
Tested spawning entities after changes, nothing seems out of the ordinary.
2023-12-22 10:12:47 +01:00
Deltric da247e9902 Adds json nickname migrate + bug fix for non player entity backed battle actors. 2023-12-22 01:47:19 -06:00
Paul 8418bc87c8 Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/adapter/flatfile/NBTStoreAdapter.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/client/CobblemonFabricClient.kt
#	forge/src/main/kotlin/com/cobblemon/mod/forge/client/CobblemonForgeClient.kt
2023-12-22 15:41:11 +10:00
Paul c747d089ca More reworking of dispatches and instructions 2023-12-22 13:50:01 +10:00
Paul 8c881ab85a Merge branch 'main' into dispatch-refactor 2023-12-22 13:25:42 +10:00
Paul 0655d63dc5 Removed a couple of recipe advancements that are for items not ingame 2023-12-22 12:06:23 +10:00
Paul 81ba5ef615 Removed errant "light powder" item 2023-12-22 10:53:59 +10:00
Paul 8354c3838a Merge remote-tracking branch 'origin/main' 2023-12-22 10:10:12 +10:00
Paul 80db305aba Updated heaps of langs from crowdin 2023-12-22 10:10:00 +10:00
apion ec43a78ae4 Merge branch 'main' into archaeology 2023-12-20 22:48:50 -05:00
Hiroku 60e0314f29 Merge branch 'Spawn_Level_Scaling' into 'main'
Level scaling tweak

See merge request cable-mc/cobblemon!820
2023-12-19 22:14:21 +00:00
Nick 5f868630e0 Merge branch 'neo-bounties' into 'main'
:)

See merge request cable-mc/cobblemon!818
2023-12-19 20:46:10 +00:00
MoeBoy76 762a53923c license fix 2023-12-19 13:36:16 +11:00
MoeBoy76 1cf03d4a0d Merge branch 'tumblestones' into 'archaeology'
move ancient pokeballs to archaeology branch

See merge request cable-mc/cobblemon!819
2023-12-19 01:56:23 +00:00
LilyandMoeBoy76 48f7be485f move ancient pokeballs to archaeology branch 2023-12-19 01:56:22 +00:00
MoeBoy76 89364a9fd0 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into archaeology 2023-12-19 12:51:12 +11:00
MoeBoy76 b93adae945 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into Spawn_Level_Scaling
# Conflicts:
#	CHANGELOG.md
2023-12-19 12:49:57 +11:00
MoeBoy76 9f1ed344d8 Changelog 2023-12-19 12:46:48 +11:00
MoeBoy76 2c256eefde Correct logic and cleanup unused test code 2023-12-19 12:27:41 +11:00
Neovitalism b075fce83f :)
#725 - Adds a boolean property to PokemonEntity to make it not count towards the spawn cap.
#728 - Makes PokemonEntity respect minecraft's silent flag.
2023-12-18 15:10:19 -06:00
Paul f2ed332c4c Fixed minor error in lang 2023-12-19 05:51:00 +10:00
Paul e8f083d8bf Merge remote-tracking branch 'origin/main' 2023-12-19 05:50:38 +10:00
Paul 43d965f2a1 Further reworks of dispatch refactor 2023-12-19 05:50:11 +10:00
Hiroku 1684a341a1 Merge branch 'Swim_Behavior_Fix' into 'main'
Fixed Swim Behaviors for some Pokemon

See merge request cable-mc/cobblemon!817
2023-12-18 19:40:34 +00:00
Hiroku b4e1bf794d Merge branch 'Pokemon_Weight_Watchers' into 'main'
Changed calculations of Pokemon's weight and height before it is sent to Showdown so that battle damage for weight-based moves are accurate

See merge request cable-mc/cobblemon!816
2023-12-18 19:40:22 +00:00
jeffw773 c85ad7d60c - Changelog 2023-12-18 11:28:53 -08:00
jeffw773 e61e92a5d4 - Changelog 2023-12-18 11:27:08 -08:00
jeffw773 a245e9661c - final tweaks for MR 2023-12-18 11:01:35 -08:00
jeffw773 059152b34c - removed unused test code 2023-12-18 10:58:59 -08:00
Lily e4a698b04b subtitles for fossil machine sounds 2023-12-18 18:48:08 +00:00
jeffw773 0d35157fcf - removed unused test code 2023-12-18 10:42:43 -08:00
jeffw773 302388d0a6 - Added Swim behaviors to Samurott line, Clodsire, Wimpod, Golisopod, Quaxwell, Quaquaval, 2023-12-18 10:30:07 -08:00
jeffw773 ab957f82e1 - Altered some code for how Pokemon's height and weight is calculated for weight-based moves during battles as it had issues and was doing more damage than it should have been 2023-12-17 20:18:41 -08:00
jeffw773 fef82ae6bf - Altered some code for how Pokemon's height and weight is calculated for weight-based moves during battles as it had issues and was doing more damage than it should have been 2023-12-17 20:16:06 -08:00
jeffw773 8b979c1944 - Altered some code for how Pokemon's height and weight is calculated for weight-based moves during battles as it had issues and was doing more damage than it should have been 2023-12-17 19:52:32 -08:00
Paul 4bbbaacacf Merge remote-tracking branch 'origin/main' 2023-12-18 08:34:34 +10:00
jeffw773 eda8e15509 Merge remote-tracking branch 'origin/main' 2023-12-17 10:03:21 -08:00
Nick d53a71c188 Merge branch '1.4.1-fixes' into 'main'
1.4.1 fixes

See merge request cable-mc/cobblemon!814
2023-12-17 01:16:44 +00:00
HirokuandNick d2f02b0d06 1.4.1 fixes 2023-12-17 01:16:44 +00:00
Paul 5c0bb194b6 Fixed Tyrogue fainting into the floor 2023-12-17 10:50:08 +10:00
Paul e41562f5ad Fixed status apply fail messages for when they're already afflicted by that status 2023-12-17 10:49:59 +10:00
Paul 69ea1ac3bf Fixed things like Keen Eye not having translation stuff 2023-12-17 10:29:19 +10:00
Paul 7c15f0f924 Fixed confusing poison heal messages 2023-12-17 09:40:32 +10:00
Paul 6165e5e871 Corrected mistaken changelog entry 2023-12-17 09:19:41 +10:00
Paul dd8f59e0d0 Removed pink bow recipe as not needed anymore 2023-12-17 09:11:56 +10:00
Paul 87611795e9 Fixed battle messages getting out of sync after spectating, unspectating, re-spectating 2023-12-17 09:11:18 +10:00
Paul d2fe9b1132 Fixed Life Orb not having a proper item name 2023-12-17 08:57:26 +10:00
Hiroku e95759a710 Merge branch 'whatsy/bugfixes' into 'main'
Various bugfixes for 1.4.1

Closes #722 and #724

See merge request cable-mc/cobblemon!805
2023-12-16 21:50:39 +00:00
Hiroku 7284f8d35d Merge branch 'can-moe-scrape' into 'main'
Teal Mask species data

See merge request cable-mc/cobblemon!806
2023-12-16 21:24:07 +00:00
Hiroku 334dd1206e Merge branch 'share-the-explove' into 'main'
Balanced EXP Share Recipe

Closes #727

See merge request cable-mc/cobblemon!811
2023-12-16 21:23:32 +00:00
Hiroku e7caab0ae0 Merge branch 'Waldleufer/spawnCSVScriptPolishing' into 'main'
minor spawn CSV Script improvements and pokemon.json fix

See merge request cable-mc/cobblemon!812
2023-12-16 21:22:58 +00:00
Waldleufer 47f02f6e50 Restored Script default settings 2023-12-16 11:42:31 +01:00
Waldleufer 3367b0c39c dissolved bug in script
that would occur if the filled out Multiplier column for one pokemon was followed by an empty field
2023-12-16 11:40:47 +01:00
Waldleufer 0e43d7730c verified omanyte, omastar kabuto and kabutops json 2023-12-16 11:07:06 +01:00
Waldleufer b5604686f2 fix: Updated all minecraft:nether_quartz to minecraft:quartz 2023-12-16 11:05:00 +01:00
Waldleufer e030dbfbf5 refactor: Made the script report more readable. 2023-12-16 11:03:56 +01:00
Lily 96647a9398 fix conflict in changelog 2023-12-15 19:09:58 +00:00
Charzard4261 33cfbf7d1c First implementation of storing OT UUID and Name. Updates for Starter Selection, Catching, and Shedninja creation. Needs thorough reviewing. 2023-12-13 22:30:42 +00:00
dhi_holo 9e2c0ab0db Balanced EXP Share Recipe
Closes #727
2023-12-14 06:48:43 +10:00
Lily 1bc953f3f3 lang update 2023-12-12 14:40:06 +00:00
jeffw773 d089eab60f - Start of a tweak to how spawns work in terms of scaling the level of Pokémon based off of player party highest level 2023-12-11 17:19:19 -08:00
Lily d6fbb70db0 add level ranges to DisguisedPokemonBlock 2023-12-11 16:10:13 -05:00
Lily 150a5c668a redid disguised gimmighouls 2023-12-11 14:55:43 -05:00
JazzMcNade 09da392c36 Added quirk support for tank fetuses, added basic posers and variation jsons for a bunch of fossil mons 2023-12-11 00:10:28 -06:00
Paul 94ad2f1250 Added Waffle's particles but they're kinda busted ngl 2023-12-11 13:32:08 +10:00
Hiroku d18cab39a9 Merge branch 'kkeenanwong-main-patch-46161' into 'main'
Update garganacl.json quartz item ID

See merge request cable-mc/cobblemon!808
2023-12-11 03:21:09 +00:00
Keenan Wong 4492666f5a Update garganacl.json quartz item ID 2023-12-11 03:04:33 +00:00
Paul 6ddf048984 Started rework of battle dispatch construction for more context-aware interpreting 2023-12-11 10:15:18 +10:00
Hiroku 6a0985958b Merge branch 'reknot' into 'main'
Knot Flip

See merge request cable-mc/cobblemon!807
2023-12-10 23:37:43 +00:00
dhi_holo 308c5e6d32 Knot Flip
Destiny Knot recipe has been vertically flipped, to closer match the sprite.
2023-12-11 09:15:40 +10:00
MoeBoy76 bd83cc143b redo broken é 2023-12-09 23:43:12 +11:00
MoeBoy76 c9e6cb1022 fix line separator 2023-12-09 23:40:43 +11:00
MoeBoy76 74c75b7faa Applin evo data 2023-12-09 23:31:52 +11:00
MoeBoy76 45819a17f6 Teal Mask new data 2023-12-09 22:36:32 +11:00
Lily e3f84248b8 Added StructureLikeCondition.kt and a new StructureRequirement for evolutions. Closes #722 2023-12-05 19:35:30 -05:00
Lily 0ff518194f Fix grammar errors on certain pokeballs. made small fixes to Vivillon evolutions. Closes #724 2023-12-05 18:42:58 -05:00
Lily 634a1ad6fc Fixed Inkay evolution, fixed conflicting biome requirements for ocean, river, sun, and tundra vivillion variants. Closes #724 2023-12-05 16:58:39 +00:00
Lily 41217ebdcc Remove poke ball variant from the Vivillionaire advancement 2023-12-05 16:42:05 +00:00
JazzMcNade f396b63a34 Added FossilRegistrySyncPacket
Multiplayer clients can now see fossil tank fetuses
2023-12-05 01:17:44 -06:00
Hiroku a021ec1337 Merge branch 'sound' into 'main'
Fixed missing cries again

See merge request cable-mc/cobblemon!803
2023-12-04 20:30:00 +00:00
Sterrezo b03f95b7da Fixed missing cries again
Scatterbug and Spewpa lost their cries somewhere so I re-added them. No changelog because this happened during development, so it's as it was in 1.4
2023-12-04 17:55:26 +01:00
Paul d8cee44661 Changelog [skip-ci] 2023-12-02 14:56:45 +10:00
Hiroku 5dd2287441 Merge branch 'fastutil-crash' into 'main'
Fixed fastutil crash

See merge request cable-mc/cobblemon!802
2023-12-02 04:39:25 +00:00
Paul 1eb6af14c2 Changelog 2023-12-02 10:53:18 +10:00
Paul 61b73972d4 Merge branch '1.4.0a'
# Conflicts:
#	CHANGELOG.md
2023-12-02 10:39:31 +10:00
Hiroku f8bcf8c291 Merge branch 'rendercontext-additions' into 'main'
Add species and aspects to RenderContext

See merge request cable-mc/cobblemon!799
2023-12-02 00:28:20 +00:00
Waterpicker 543d408e63 Merge remote-tracking branch 'cable-mc/main' into rendercontext-additions 2023-12-01 00:46:35 -06:00
Apion 2cdc781e93 Merge branch 'battles-unlanguished' into 'main'
Added langs and update interpreter

See merge request cable-mc/cobblemon!801
2023-12-01 05:45:42 +00:00
Segfault Guy 8dc0a7f72d Interpreter trimmings and fixes. 2023-12-01 00:18:50 -05:00
Paul 8b5231d6f0 Alternative way to fix dupe issue to not crash (huge) 2023-12-01 12:07:00 +10:00
Hiroku 665c4cc26c Merge branch 'particle-command' into 'main'
Added /bedrockparticle command

See merge request cable-mc/cobblemon!798
2023-11-30 22:50:25 +00:00
Lily 253cfd55d8 Merge remote-tracking branch 'origin/archaeology' into archaeology 2023-11-30 15:27:35 -05:00
Lily 1bf01a2826 more bar stuff 2023-11-30 15:16:32 -05:00
apion 7c860d8f91 Fix some of seg's review threads 2023-11-30 12:39:09 -05:00
apion 006e86f3c3 Fix my review threads 2023-11-30 11:37:52 -05:00
JazzMcNade e75d0c564f -onUse for the fossil tube top now redirects to the bottom half of the tube if it's available. (Allows for better client prediction.) 2023-11-29 21:25:10 -06:00
Lily 1e97143a6a poisonous potatoes now subtract from the fuel level because why not 2023-11-29 22:11:37 -05:00
Lily 4d1bf677a1 bar color update 2023-11-29 21:49:06 -05:00
Lily 069f56acfd gholdengo/gimmighoul are basically done, gilded chests still unfinished 2023-11-29 20:32:20 -05:00
MoeBoy76 91dec859e8 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into battles-unlanguished
# Conflicts:
#	CHANGELOG.md
2023-11-30 11:55:53 +11:00
Apion 85f08c9d28 Merge branch 'regionalise' into 'main'
Regionalise

See merge request cable-mc/cobblemon!800
2023-11-30 00:51:21 +00:00
MoeBoy76 d465f465c8 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into battles-unlanguished
# Conflicts:
#	CHANGELOG.md
2023-11-30 11:43:02 +11:00
MoeBoy76 a87bd35fd6 changelog time 2023-11-30 11:38:39 +11:00
MoeBoy76 0c32da0ce1 added species feature for all regional forms that were missing it 2023-11-30 08:51:54 +11:00
Waterpicker 2bdb110c92 Remove some debug code I missed! 2023-11-29 14:04:20 -06:00
Waterpicker d21f3747fc Add species and aspects to RenderContext 2023-11-29 13:56:53 -06:00
jeffw773 fb303fcd97 - Started basic functionality of Battle menu that can be controlled by WASD or keybinded keys. Still more todo on this, but wanted to make a branch for it now 2023-11-29 11:35:50 -08:00
JazzMcNade 7b4e63001b -Refactored comparator output and Trigger behavior into the multiblock structure.
-Ownership protection now prevents release via a redstone signal.
2023-11-29 01:25:55 -06:00
jeffw773 31b185b96c - Added -endability and -transform handlers 2023-11-28 00:06:52 -08:00
jeffw773 034a51b904 Merge remote-tracking branch 'origin/battles-unlanguished' into battles-unlanguished 2023-11-27 22:12:01 -08:00
jeffw773 9e1c491d9c - Moe said it was okay 2023-11-27 22:11:42 -08:00
jmmcp f695a99705 Added -swapboost langs for Guard Swap, Power Swap, and Heart Swap, as well as -start lang for Tar Shot. 2023-11-28 00:31:13 -05:00
jmmcp a8567f9190 Added check for optional effects in handleStartInstruction to allow for proper handling of moves like Reflect Type. 2023-11-27 23:39:27 -05:00
jmmcp 7d455b2dac Merge remote-tracking branch 'origin/battles-unlanguished' into battles-unlanguished
# Conflicts:
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
2023-11-27 23:10:57 -05:00
jmmcp 1dffbd1b37 Added -start langs for embargo and general typeadd moves. 2023-11-27 23:10:10 -05:00
jeffw773 332e25fa76 Merge remote-tracking branch 'origin/battles-unlanguished' into battles-unlanguished 2023-11-27 20:07:53 -08:00
jeffw773 f080fb5639 - Added Substitute Start Language 2023-11-27 20:07:34 -08:00
jmmcp 769a1862e4 Added -copyboost lang, new copyboost instruction handler, new copy method to ContextManager, silent optional argument check to -clearnegativeboost instruction handler, and tweaked -enditem instruction handler in CobblemonHeldItemManager to allow for cases with null source (example: Fling). 2023-11-27 22:25:54 -05:00
Lily bd4df4485e added nether fire stone ores, and storage blocks for evo stones (need textures) 2023-11-27 21:39:03 -05:00
jmmcp 127c5e7a8b Merge branch 'main' into battles-unlanguished 2023-11-27 19:11:22 -05:00
Lily 19cdc8fbef Merge remote-tracking branch 'origin/gimmighoul_gholdengo' into gimmighoul_gholdengo 2023-11-27 17:31:27 -05:00
Lily 1408b94f06 started on gilded chests 2023-11-27 17:31:17 -05:00
JazzMcNade 58fba24f01 -Natural materials data is now synced with the client
-Allowed for improved client prediction in onUse()
-Fixed an issue in which a redstone signal into the machine wouldn't work if the machine was loaded in the completed state.
2023-11-27 01:48:36 -06:00
JazzMcNade f49265ae52 -Fixed return items not working with the Fossil Machine 2023-11-26 22:07:39 -06:00
Paul d1a71373c0 Added /bedrockparticle command 2023-11-27 13:26:26 +10:00
Paul de081dc514 Added aspects support for int range features 2023-11-27 11:53:06 +10:00
Hiroku 77def6de43 Merge branch 'mooshtank_fix_and_shuckle_nerf' into 'main'
Shuckle Berry Nerf + Brown Mooshtank Sus Stew Fix

See merge request cable-mc/cobblemon!792
2023-11-27 01:42:01 +00:00
jmmcp 973c6bb05f Merge remote-tracking branch 'origin/battles-unlanguished' into battles-unlanguished 2023-11-26 19:39:26 -05:00
jmmcp 5b83e49669 Added -start lang for type changing moves Camouflage, Conversion, and Conversion2, as well as -sidestart and -sideend langs for Lucky Chant and Mist. 2023-11-26 19:38:59 -05:00
Hiroku e01bc2eeab Merge branch 'nickname_invalid_format' into '1.4.0'
Resolves a bug in the format in which the nickname is saved in JSON.

See merge request cable-mc/cobblemon!797
2023-11-26 23:19:50 +00:00
Pedro Souza f6f3070b8e changelog 2023-11-26 20:18:37 -03:00
Pedro Souza 0f2301e668 Resolved nickname invalid format bug 2023-11-26 12:24:54 -03:00
jeffw773 80ce5bab58 - Added battle language for powertrick and powershift 2023-11-26 01:25:15 -08:00
Hiroku 8fb678b0f8 Merge branch 'battle_music_enhancements' into 'main'
Add new battle music features

Closes #587

See merge request cable-mc/cobblemon!790
2023-11-26 08:17:45 +00:00
jeffw773 c0a77aca23 - Added battle language for Stockpile 2023-11-26 00:02:37 -08:00
jmmcp e4c0eab8e2 Added -fieldactivate langs for Fairy Lock and Teatime, as well as a new handler for -invertboost instructions. 2023-11-26 00:02:04 -05:00
Hiroku b9ff46e1b2 Merge branch 'sirrfuchs-main-patch-53627' into 'main'
Added canFly true to Yveltal

See merge request cable-mc/cobblemon!796
2023-11-25 21:22:45 +00:00
sirrfuchs 45a998d3d7 Added canFly true to Yveltal 2023-11-25 16:27:57 +00:00
Hiroku a108d85531 Merge branch 'root-burn' into 'main'
Remedy Alternate Cooking

See merge request cable-mc/cobblemon!795
2023-11-25 07:22:27 +00:00
dhi_holo 0fae45f811 Remedy Alternate Cooking
Smokers and Campfires work now
2023-11-25 10:13:19 +10:00
Hiroku 88717d598d Merge branch 'Waldleufer/speciesJsonFixes' into 'main'
small species json fixes

See merge request cable-mc/cobblemon!794
2023-11-24 22:14:28 +00:00
WaldleuferandHiroku 33123b4a33 small species json fixes 2023-11-24 22:14:27 +00:00
JazzMcNade 001864e20c -Added a sound when a pokemon is kicked out of the fossil machine via a redstone signal. 2023-11-24 02:31:27 -06:00
Paul 0c9fe19da3 Merge remote-tracking branch 'origin/main' into scheduling-rework
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
2023-11-24 10:04:51 +10:00
Hiroku 74e0915ec8 Merge branch 'SmarterDrops' into 'main'
Corrected some drops, added missing drops to a bunch of base forms and forms.

See merge request cable-mc/cobblemon!789
2023-11-24 00:00:28 +00:00
WaldleuferandHiroku 39cd5e9726 Corrected some drops, added missing drops to a bunch of base forms and forms. 2023-11-24 00:00:28 +00:00
JazzMcNade 28ebd1dec1 The fossil mon rendered inside of the tank now always faces the opposite direction of the tank. 2023-11-23 17:03:18 -06:00
JazzMcNade 94bbc0e574 -Added "smart" hoppering for the fossil compartment. Hoppers can only insert into the compartment of the resulting inventory would be a valid subset of a fossil recipe. 2023-11-23 00:26:32 -06:00
jeffw773 876be2afcf - Brown Mooshtanks give Suspicious Stews like vanilla brown mooshrooms do (plus Pep Up Flower)
- Nerfed Infinite Berry Juice Shuckle
2023-11-22 19:07:39 -08:00
jeffw773 d693f452bc - Fixed Mooshtanks not giving mushroom stew in creative
- Nerfed Shuckle infinite Berry Juice
2023-11-22 15:49:54 -08:00
JazzMcNade 034e7d315c Fixed null pointer exceptions / sync issues from early return in onBreak 2023-11-22 02:39:02 -06:00
jeffw773 fb785b4204 - Hopper only sends fossils to machine when the machine doesn't already have a valid fossil combination inside 2023-11-21 23:18:27 -08:00
jeffw773 ac807ce25b - Hopper only sends fossils to machine when not full or not running 2023-11-21 23:11:06 -08:00
jeffw773 c065f0f8fd - Hoppers now dispense Fossil Items into Microwave of Fossil Machine 2023-11-21 22:42:30 -08:00
jmmcp a1e94b8200 Added -activate langs for eerie spell and crafty shield. 2023-11-22 01:04:11 -05:00
JazzMcNade 9c7d286dd8 -Sending a redstone signal to a tube that has completed the resurrection will cause the fossil pokemon to pop out as a wild pokemon.
-Replaced magic numbers with constants
-Added a bunch of TODOs
2023-11-21 02:00:18 -06:00
jeffw773 69d8e4fab9 - Removed Fossils from Consumable UI list 2023-11-20 21:52:37 -08:00
jeffw773 b788fe3984 - Fixed Skull Fossil lang 2023-11-20 21:08:56 -08:00
apion cfd90fac04 Fixed sherd names 2023-11-20 23:20:44 -05:00
apion 1cf2359195 Bumped ver number and fixed visual formation bug 2023-11-20 23:16:13 -05:00
JazzMcNade 6868d7f26c -Added Comparator output for the monitor of the fossil machine.
-Refactored tube comparator output to use a constant instead of a magic number.
2023-11-20 21:54:52 -06:00
apion 3e58229a89 Fixed another formation issue 2023-11-20 20:56:23 -05:00
apion d76f1524bd Added sherd items and a creative tab for archeology. 2023-11-20 06:44:18 -05:00
apion 58b5eb155d Fixed sounds and hoppers putting material in to finished machines 2023-11-20 04:07:32 -05:00
JazzMcNade fd9caa537b Added Comparator output for the tube 2023-11-20 02:52:44 -06:00
apion 5262972a8d Start working on hopper for tubes 2023-11-20 03:39:30 -05:00
apion 011a095314 Dumb style thing 2023-11-20 01:13:08 -05:00
apion 3520c50541 Fixed issue where adjacent machines didn't form properly 2023-11-20 01:01:39 -05:00
Paul 3eccac861f Migrated regular pose transitioning over to being a primary animation 2023-11-20 15:24:34 +10:00
Paul 7a85b0b690 Fixed dedicated transition animations not resetting the primary animation portion 2023-11-20 14:49:28 +10:00
jeffw773 ff3aa5d782 - Apricorns now work as organic material 2023-11-19 19:34:13 -08:00
Segfault Guy 8b4552a532 Unique wild encounter themes. 2023-11-19 22:33:26 -05:00
Segfault Guy 41673ba90f Battle music for spectators. 2023-11-19 22:33:26 -05:00
Segfault Guy 18f9942dc6 BattleStartedEvent rework and battle music override support. 2023-11-19 22:33:23 -05:00
Segfault Guy 875fe46d21 Player specific battle themes. 2023-11-19 22:32:42 -05:00
Segfault Guy 66c6f9bdd1 BattleMusicHandler upgrades and bug fixes. 2023-11-19 22:32:04 -05:00
jeffw773 9e6dec8605 - Fossil pokemon will become wild pokemon if the machine is broken when the machine is done running. 2023-11-19 18:29:19 -08:00
Paul 1fe223c772 Comments are good 2023-11-20 11:57:46 +10:00
Paul d89ccc110e Merge remote-tracking branch 'origin/main' into improved-transformed-parts 2023-11-20 11:57:40 +10:00
Paul 72c337195a Added the concept of a primary animation 2023-11-20 11:54:35 +10:00
Hiroku b72af84c8c Merge branch 'tooltip-fix' into 'main'
Tooltip fix

See merge request cable-mc/cobblemon!788
2023-11-20 00:32:18 +00:00
miasmus a5ee270b8b account for tooltips with only 1 element 2023-11-19 19:00:05 -05:00
miasmus c08ef4247d doing it this way cause the other way was bad 2023-11-19 18:24:47 -05:00
jmmcp 9424bafabb Merge remote-tracking branch 'origin/battles-unlanguished' into battles-unlanguished 2023-11-19 18:21:02 -05:00
jmmcp a96ecfcdf2 Added -fail instructions for Burn Up and Double Shock, as well as lang for healing moves and weight based moves against Dynamaxed mons failing 2023-11-19 18:20:07 -05:00
Hiroku b1d11e8c22 Merge branch 'HOLDY2' into 'main'
Fixed some minor errors in the newly added dropps

See merge request cable-mc/cobblemon!787
2023-11-19 22:05:02 +00:00
WaldleuferandHiroku c1fb1379a9 Fixed some minor errors in the newly added dropps 2023-11-19 22:05:02 +00:00
Hiroku 5a220e0ef0 Merge branch 'implement_pokemon' into 'main'
Implemented Drifloon line and minor asset updates.

See merge request cable-mc/cobblemon!786
2023-11-19 22:01:03 +00:00
Hiroku b379fc62b1 Merge branch 'Waldleufer/cry_checker_script' into 'main'
cry audio checker script

See merge request cable-mc/cobblemon!785
2023-11-19 21:55:53 +00:00
WaldleuferandHiroku d442e4e956 cry audio checker script 2023-11-19 21:55:53 +00:00
Tyzillion bb22c22db9 added "implemented": true to the species.json for the new Pokemon implemented. 2023-11-19 10:33:58 -05:00
JazzMcNade 09bc174401 Added code to display enditem.incinerate's message when it occurs. 2023-11-19 04:26:13 -06:00
Tyzillion e109a1d59f Implemented Drifloon line, Updated Dodrio textures, updated aegislash_shiny texture, Updated models for Geodude line. Added emissives for Noctowl. 2023-11-18 22:12:23 -05:00
jmmcp 3b97a0c847 Added -activate langs for Skill Swap and Wide Guard, -enditem langs for Corrosive Gas and Bug Bite, -fail lang for Aura Wheel, and allow for effectID to pass through as null in handle fail instruction for fails that don't have an effect, such as Baton Pass and Bide. 2023-11-18 16:02:58 -05:00
jeffw773 28a2ec3fc0 - Fossil pokemon and tank fluid now get removed from the tanks when player takes pokemon out with the pokeball 2023-11-18 10:11:48 -08:00
apion 72bba7fdfd Allowed for use of tags for natural materials 2023-11-18 06:19:08 -05:00
apion a258e48582 Pokemon now stay suspended in the tank when it finishes 2023-11-18 02:58:56 -05:00
apion 21a15686b2 Added full tube texture 2023-11-18 02:26:11 -05:00
jeffw773 5da7183ae3 - Fossils can be placed and removed from the Fossil Machine with an empty hand now 2023-11-17 23:04:10 -08:00
apion d847972bb1 Fixed issue where you couldn't form a multiblock from previously formed blocks, also fixed the no block update when fossils are inserted 2023-11-18 01:06:45 -05:00
jeffw773 5e88e73e3f - Fossil machine drops the fossils that are in the machine if the machine hasn't started yet 2023-11-17 21:48:02 -08:00
JazzMcNade 87e8fcd7f7 Added -end lang for Healblock and Skydrop. Added -fail for Skydrop 2023-11-17 22:47:41 -06:00
Hiroku b34f8a045d Merge branch 'null-safety-time' into 'main'
Fix to NullPointerException in PokemonOnShoulderHandler

Closes #677

See merge request cable-mc/cobblemon!783
2023-11-18 04:26:38 +00:00
jeffw773 e9086ec2bd - Prevented Fossil Tank from being overfilled which caused a crash and corrupted the world save 2023-11-17 20:00:07 -08:00
Paul 866db464c4 Merge remote-tracking branch 'origin/main' into improved-transformed-parts
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/BeldumModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
2023-11-18 13:40:36 +10:00
JPAKx4 4f79b9f8a7 Fix to https://gitlab.com/cable-mc/cobblemon/-/issues/677 2023-11-17 21:30:49 -06:00
JazzMcNade d1b651a876 Added -activate langs for Grudge, Speedswap and Switcheroo. 2023-11-17 21:13:55 -06:00
Hiroku b30a67651e Merge branch 'VillagerCropInteractionFix' into 'main'
Fix for villagers not being able to pick and plant mint seeds, vivichoke seeds...

Closes #647

See merge request cable-mc/cobblemon!760
2023-11-18 01:43:10 +00:00
JazzMcNade a1398e9495 Fixed capitalization. 2023-11-17 19:22:42 -06:00
jmmcp ca319764f0 Added -activate langs for Ingrain, Mist, Poltergeist, Powder, Quash, Quick Guard, Safeguard, and Sketch. 2023-11-17 19:00:12 -05:00
Hiroku ac03c68f41 Merge branch 'defaultIssueTemplate' into 'main'
Added a default Issue Template

See merge request cable-mc/cobblemon!769
2023-11-17 22:16:35 +00:00
Nick 0eb4b43b49 Merge branch 'updated-showdown' into 'main'
Updated Showdown version to latest master from Smogon

Closes #542

See merge request cable-mc/cobblemon!764
2023-11-17 21:18:05 +00:00
HirokuandNick b49376dba5 Updated Showdown version to latest master from Smogon 2023-11-17 21:18:03 +00:00
Nick 81f6e7b786 Merge branch 'shuckle_milk' into 'main'
Added ability for Shuckles to be milked for Berry Juice

See merge request cable-mc/cobblemon!770
2023-11-17 21:17:28 +00:00
Plastered_CrabandNick 574ee1ae4a Added ability for Shuckles to be milked for Berry Juice 2023-11-17 21:17:27 +00:00
Nick 07a83f54a2 Merge branch 'HOLDY-lite' into 'main'
It's holding time

See merge request cable-mc/cobblemon!777
2023-11-17 19:41:59 +00:00
JordanandNick 6f3b530d7b It's holding time 2023-11-17 19:41:59 +00:00
Nick 4b86dc1e58 Merge branch 'ability-optional-arguments' into 'main'
Implement method to properly handle showdown ability instructions with optional arguments.

Closes #499

See merge request cable-mc/cobblemon!778
2023-11-17 19:30:45 +00:00
JMMCPandNick bb141aee50 Implement method to properly handle showdown ability instructions with optional arguments. 2023-11-17 19:30:45 +00:00
Nick acb473c01f Merge branch 'Waldleufer/fixUndergroundSpawningAlgorithm' into 'main'
Underground Spawning Algorithm Improvements

See merge request cable-mc/cobblemon!737
2023-11-17 18:37:02 +00:00
WaldleuferandNick a8dc3f40a4 Underground Spawning Algorithm Improvements 2023-11-17 18:37:02 +00:00
Nick b55f11628d Merge branch 'Waldleufer/spawnSpreadsheetToCodeAutomation' into 'main'
Validated and corrected all Spawnfiles

See merge request cable-mc/cobblemon!755
2023-11-17 18:27:17 +00:00
WaldleuferandNick 150c03d4f5 Validated and corrected all Spawnfiles 2023-11-17 18:27:17 +00:00
Nick 1c092588f4 Merge branch 'HealingWishUnfaintPostBattleFix' into 'main'
HealingWishUnfaintPostBattleFix

See merge request cable-mc/cobblemon!779
2023-11-17 18:19:11 +00:00
JazzMcNade 683473c34c - Added activate.electricterrain 2023-11-17 02:43:36 -06:00
jeffw773 c7dee1bd53 - Added some more -start flags 2023-11-16 23:00:03 -08:00
jeffw773 d83a1086d3 - Added start.futuresight 2023-11-16 22:17:35 -08:00
Hiroku b34ca3d42b Merge branch 'HealthBarUpdateOnDamageFix' into 'main'
Fix for health bars not updating when a pokemon takes damage from commit 132a43c5

See merge request cable-mc/cobblemon!775
2023-11-17 05:04:34 +00:00
MoeBoy76 3a1389d719 start of missing battle messages 2023-11-17 10:18:44 +11:00
Hiroku e608dc84ae Merge branch 'mongodb-timestamp' into 'main'
Added timestamp to MongoDB store to signify when the save was created.

See merge request cable-mc/cobblemon!781
2023-11-16 14:49:52 +00:00
navneetset c987a5ba19 Added timestamp to MongoDB store to signify when the save was created. 2023-11-16 14:08:18 +01:00
apion 3dbcc2d28c Moved a bunch of stuff into the MultiblockStructure and out of the individual blockentities. Hopefully helps with the synchronization issues. 2023-11-16 06:41:38 -05:00
Hiroku d65090ce10 Merge branch 'main' into 'main'
Issue #699 - Fixed typo in Coba Berry tooltip.

See merge request cable-mc/cobblemon!780
2023-11-16 11:09:45 +00:00
Michael 206ec25a99 Issue #699 - Fixed typo in Coba Berry tooltip. 2023-11-16 03:22:47 -05:00
JazzMcNade ccd376c055 Refactoring 2023-11-14 22:19:40 -06:00
Lily 1538f12934 more gimmighoul changes 2023-11-14 20:59:10 -05:00
Paul 857f67604c Fixed some logic in held item event + gimmighoul item 2023-11-14 19:30:27 +10:00
Paul ae49e3f977 Fixed gold materials data registry not being loaded 2023-11-14 19:18:45 +10:00
Lily ec01a03820 pushed some stuff idk what to put here 2023-11-14 00:47:15 -05:00
Lily 96cc3671da Merge branch 'held_item_event' into gimmighoul_gholdengo 2023-11-13 18:36:09 -05:00
Lily ad7c9c560c add an event for updating a pokemon's held item 2023-11-13 18:33:45 -05:00
Tyzillion ee15ff6b35 Corrected Gimmighoul chest and roaming size. 2023-11-13 16:49:00 -05:00
Lily b8e95bd210 Merge remote-tracking branch 'origin/archaeology' into archaeology 2023-11-13 16:45:57 -05:00
Lily b14465f2a1 advancements and recipe unlocks and so forth 2023-11-13 16:45:45 -05:00
Tyzillion ca83103703 Bling, bling, every time I come around your city. 2023-11-13 16:33:07 -05:00
Tyzillion 1aeb894b09 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into gimmighoul_gholdengo 2023-11-13 13:42:38 -05:00
Lily 8e9ab26963 json files for gold and netherite materials (doesnt work in-game yet) 2023-11-13 18:09:34 +00:00
Paul 44b4fbcfe3 Minor license thing 2023-11-13 20:04:29 +10:00
Paul 42cc1dd8a9 Upgraded species features so they can be synced and rendered in summary screen 2023-11-13 19:39:17 +10:00
JazzMcNade 6214fb1b97 The handleDamageInstruction inner dispatch is now placed at the head of the queue to make sure it stays ahead of the handleFaintInstruction dispatch. 2023-11-13 01:13:27 -06:00
JazzMcNade a65cee3e24 Fix for health bars not updating when a pokemon takes damage from commit 132a43c5 2023-11-13 00:51:50 -06:00
Hiroku 9999a04692 Merge branch 'status-complete' into 'main'
added tab completion for Statuses

See merge request cable-mc/cobblemon!774
2023-11-13 06:29:19 +00:00
MoeBoy76 6901f3e43d added tab completion for Statuses 2023-11-13 17:07:22 +11:00
Waldleufer 1a0135c1fd Added a feature request issue template. 2023-11-12 10:25:44 +01:00
Waldleufer 23dab6546f Added requested changes 2023-11-12 10:25:16 +01:00
Hiroku 3b94b6660c Merge branch 'new_battle_fix' into 'main'
New 100+ Battle languages fixed

See merge request cable-mc/cobblemon!771
2023-11-12 08:55:05 +00:00
jeffw773 dc46c96ecf Fixed merge conflicts 2023-11-12 00:33:00 -08:00
jmmcp 2a60048f7e Remove unnecessary test injection. 2023-11-11 23:46:01 -05:00
Hiroku 55861a249e Merge branch 'augh-u-rite' into 'main'
More Augurite Usage

Closes #687

See merge request cable-mc/cobblemon!754
2023-11-12 03:28:42 +00:00
Hiroku f00a569d9d Merge branch 'main' into 'augh-u-rite'
# Conflicts:
#   CHANGELOG.md
2023-11-12 02:40:29 +00:00
Hiroku aaa5484752 Update CHANGELOG.md [skip-ci] 2023-11-12 01:38:44 +00:00
Hiroku c6e82ebfb9 Merge branch 'fix-405-recall-visual-bug' into 'main'
Fix visual Pokemon recall bug

Closes #415 and #405

See merge request cable-mc/cobblemon!750
2023-11-12 01:37:19 +00:00
Hiroku 365844ae2e Merge branch 'battle_text_fail_block' into 'main'
Added -fail and -block handlers to ShowdownInterpreter as well as added around...

See merge request cable-mc/cobblemon!753
2023-11-12 01:33:22 +00:00
Hiroku c18c1f39fb Merge branch 'main' into 'battle_text_fail_block'
# Conflicts:
#   CHANGELOG.md
2023-11-12 01:09:42 +00:00
Hiroku 1fd2aa06ae Merge branch 'EXP-Item-Pokemon-Select' into 'main'
Exp Candies - Party Pokemon Select

Closes #692

See merge request cable-mc/cobblemon!757
2023-11-11 22:55:31 +00:00
Hiroku 931852bd36 Merge branch 'alolanRatataFix' into 'main'
Fixed alolan Rattata animations

Closes #695

See merge request cable-mc/cobblemon!768
2023-11-11 19:48:25 +00:00
WaldleuferandHiroku 272f429f59 Fixed alolan Rattata animations 2023-11-11 19:48:24 +00:00
Waldleufer b4787b8db8 Added a default Issue Template 2023-11-11 19:44:02 +01:00
Hiroku 6a5c6d2b17 Merge branch 'licious/190' into 'main'
Conditional held item consumption

Closes #190

See merge request cable-mc/cobblemon!767
2023-11-11 12:37:16 +00:00
Hiroku 618453caaa Update CHANGELOG.md 2023-11-11 11:53:18 +00:00
Hiroku e1d048ec9d Merge branch 'main' into 'licious/190'
# Conflicts:
#   CHANGELOG.md
2023-11-11 11:52:37 +00:00
Lily d69310e52c re-do the way the other stats screen draws stuff 2023-11-10 20:15:40 -05:00
Hiroku 26ebd23d14 Merge branch 'sound' into 'main'
Added cries to the Beldum line, tweaked Pikachu and Raichu cries

See merge request cable-mc/cobblemon!766
2023-11-11 01:07:05 +00:00
Lily a0f89274d1 started work on SummaryValue properties (CW: messy, incomplete systems) 2023-11-10 18:57:11 -05:00
Paul eefc125f24 Changelog to confirm fix for pokeballs being locked open sometimes 2023-11-11 09:57:08 +10:00
Paul f95f17d0c6 Merge remote-tracking branch 'origin/main' into improved-transformed-parts 2023-11-11 09:46:52 +10:00
Paul b446415200 Fixed minor position error in new pokeball animations 2023-11-11 09:45:47 +10:00
jeffw773 ed8fe19dc1 Fixed redundancies, added shared langs for a few moves, and fixed red formatting for fail lang. 2023-11-10 15:30:11 -08:00
Paul ba7e98e95c Migrated more things to contained schedulers and handle animation duration more directly 2023-11-11 08:59:03 +10:00
Hiroku cdcc071ce0 Merge branch 'main' into 'VillagerCropInteractionFix'
# Conflicts:
#   CHANGELOG.md
2023-11-10 22:51:44 +00:00
dhi_holo e674b042d0 Nerfed Obsidian
reduced crafting to output 1 because it makes more sense
2023-11-11 08:49:21 +10:00
dhi_holo 53abb58ae6 Merge branch 'main' into augh-u-rite 2023-11-11 08:47:01 +10:00
Sterrezo 17fed9662c Merge branch 'main' into sound 2023-11-10 21:38:28 +01:00
Sterrezo 74dd2a6c0d Added cries to the Beldum line, tweaked Pikachu and Raichu cries 2023-11-10 21:38:11 +01:00
Lily 02067929a2 add advancement for obtaining a fossil item 2023-11-10 18:46:31 +00:00
Lily 0bc3e8465b finish list of fossil machine fuels 2023-11-10 18:37:01 +00:00
Stephen White 7505ce15e3 Merge remote-tracking branch 'upstream/main' into fix-405-recall-visual-bug 2023-11-10 12:27:43 -04:00
Lily 0ebf5712b9 add item tag for fossil items 2023-11-10 16:04:02 +00:00
Lily 4020e28da9 add recipes to fossil machine blocks 2023-11-10 15:37:13 +00:00
Charzard4261 30ba97ea69 Merge remote-tracking branch 'origin/EXP-Item-Pokemon-Select' into EXP-Item-Pokemon-Select 2023-11-10 14:15:20 +00:00
Charzard4261 5fee2df9f7 Added a missing POKEMON_INTERACT trigger in PokemonSelectingItem, when successfully using an Item on a Pokemon out of battle. 2023-11-10 14:14:53 +00:00
Charzard4261 238c7474b3 Merge branch 'main' into 'EXP-Item-Pokemon-Select'
# Conflicts:
#   CHANGELOG.md
2023-11-10 11:14:39 +00:00
Hiroku 5da5c72b4f Merge branch 'main' into 'main'
Restored Fabric BrewingStandBlockEntityMixin for brewing stand/sidehopper interaction

See merge request cable-mc/cobblemon!746
2023-11-10 05:55:58 +00:00
Hiroku 0604b45b9d Merge branch 'spectate' into 'main'
Added ability to spectate pokemon battles

See merge request cable-mc/cobblemon!747
2023-11-10 05:28:50 +00:00
ApionandHiroku 132a43c5c7 Added ability to spectate pokemon battles 2023-11-10 05:28:50 +00:00
Lily dbc074bfde Update protected message to show on action bar 2023-11-09 23:47:04 -05:00
Lily 17cdedf65f Rename ResurrectionMachineMultiblockBuilder to FossilMultiblockBuilder for consistency 2023-11-09 23:46:28 -05:00
Paul f96766505b Merge remote-tracking branch 'origin/scheduling-rework' into improved-transformed-parts
# Conflicts:
#	CHANGELOG.md
2023-11-10 14:32:44 +10:00
Paul fe96642be4 Conflict resolution 2023-11-10 14:31:53 +10:00
Hiroku b1e8f9cfb6 Merge branch 'fortune_evo_ores' into 'main'
Fortune evo ores

Closes #686

See merge request cable-mc/cobblemon!765
2023-11-10 04:21:57 +00:00
Lily 701af6cd8f Fix conflicting imports 2023-11-09 23:14:45 -05:00
Paul 5515fbfeda Merge remote-tracking branch 'origin/main' into improved-transformed-parts
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/GolbatModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ZubatModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen2/CrobatModel.kt
2023-11-10 14:11:09 +10:00
Lily 41a0dce7fc Merge remote-tracking branch 'origin/main' into archaeology
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlockEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/CobblemonFabric.kt
2023-11-09 23:07:30 -05:00
Lily a166a38c4b Update CHANGELOG.md 2023-11-09 22:59:52 -05:00
Lily 57fa6a58d5 Add Fortune compatibility to evo stone ores. Closes #686 2023-11-09 22:58:39 -05:00
Lily 3b122b7bcc Add fossils to the creative inventory 2023-11-09 22:36:39 -05:00
Lily 2b3500dfc3 Add a sound for retrieving a fossil from the fossil machine 2023-11-09 22:05:32 -05:00
Lily e921253a57 Added the missing fossil jsons 2023-11-09 21:53:05 -05:00
Lily da45797022 Added a 5-minute protection period where only the player who input the fossil can claim the resulting Pokemon 2023-11-09 21:34:46 -05:00
Lily fc1f68711d Added more sounds to the fossil machine, and added a visual when done growing 2023-11-09 20:57:29 -05:00
Lily da9c1f440c Added sounds to the fossil machine 2023-11-09 19:48:26 -05:00
Charzard4261 95006ae327 Merge branch 'main' into 'EXP-Item-Pokemon-Select'
# Conflicts:
#   CHANGELOG.md
2023-11-10 00:08:03 +00:00
Hiroku ad6fc97eef Merge branch 'implement_pokemon' into 'main'
One new Pokémon line, Animation, Textures, and Models updated. Pokémon Sleep? Naw just sleepy Pokemon.

See merge request cable-mc/cobblemon!763
2023-11-10 00:03:21 +00:00
Tyzillion fc39baaa30 Fixed Exeggcute faint, Added emissive to Hoothoot. 2023-11-09 18:40:59 -05:00
Tyzillion 887ff8ccdb Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-11-09 18:29:47 -05:00
Paul 4d6117f5bf Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-11-10 09:13:44 +10:00
Paul 3dc26639a5 Fixed Trevenant sleep animation 2023-11-10 09:13:28 +10:00
Paul ae10ca9541 Rebuilt scheduling mechanism to be better contained and avoid side issues 2023-11-10 08:48:13 +10:00
Lily 80d2f76dfc Merge remote-tracking branch 'origin/archaeology' into archaeology 2023-11-09 17:38:20 -05:00
Lily ebf3c9b82f Changed NaturalMaterial into a data class. Added a returnItem parameter for returning leftovers after using an item as fuel (e.g. a bowl when using mushroom stew) 2023-11-09 17:38:05 -05:00
Lily af57ac45a2 Added list of cobblemon items that can be used as fuel for the fossil machine. Also moved mint seeds to their own tag. 2023-11-09 17:35:37 -05:00
Tyzillion 252f9d5dbd Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-11-09 16:46:47 -05:00
Charzard4261 599b8c5eec Merge branch 'main' into 'EXP-Item-Pokemon-Select'
# Conflicts:
#   CHANGELOG.md
2023-11-09 18:55:55 +00:00
Nick 974f839d61 Merge branch 'more_composting' into 'main'
Update composting functionality for Heal Powder and mutated Herbs

Closes #681

See merge request cable-mc/cobblemon!759
2023-11-09 18:50:44 +00:00
Nick b4ea13ab20 Merge branch 'milk_the_mooshtank' into 'main'
Allow Mooshtanks to be milked for mushroom stew. Closes #684

Closes #684

See merge request cable-mc/cobblemon!758
2023-11-09 18:49:33 +00:00
Nick 06afb04050 Merge branch 'missing_messages' into 'main'
Added a bunch of missing texts. Fixes #582, #588

Closes #588 and #582

See merge request cable-mc/cobblemon!752
2023-11-09 18:48:25 +00:00
Lily 92c3d9464b Merge branch 'main' into milk_the_mooshtank
# Conflicts:
#	CHANGELOG.md
2023-11-09 13:04:53 -05:00
Lily 03ed8f3edd Update CHANGELOG.md 2023-11-09 13:03:23 -05:00
Hiroku b475b02fff Merge branch 'Bee-Related-Changes' into 'main'
Bee Related Changes

See merge request cable-mc/cobblemon!762
2023-11-08 20:10:18 +00:00
amo 0ad45df8f5 white glow happens but its buggy 2023-11-08 18:13:45 +00:00
Charzard4261 8c462f1567 Gave the Pep-Up Flower item the "minecraft:flowers" tag, to allow Bees to be fed using them. 2023-11-08 16:23:16 +00:00
JazzMcNade 1c25ae69a5 Fix for villagers not being able to pick and plant mint seeds, vivichoke seeds and revival herbs. Closes #647 2023-11-08 03:05:03 -06:00
Lily e668735dd8 Update composting functionality for Heal Powder and mutated Herbs. Closes #681 2023-11-07 21:15:22 -05:00
Lily f0e65fe4de Allow Mooshtanks to be milked for mushroom stew. Closes #684 2023-11-07 20:41:19 -05:00
Charzard4261 084a7bfb3c CandyItem now uses PokemonSelectingItem, and does not consume when in Creative. 2023-11-08 00:46:51 +00:00
Tyzillion 3c11a673dc Update models for Hitmontop. Updated animations for Zubat, Golbat, Scatterbug, Spewpa. Added Shoulder animations for Zubat. 2023-11-07 07:23:36 -05:00
dhi_holo deb2cff477 A Use?
Augurite now can make axes and obsidian, closes #687
2023-11-07 12:16:30 +10:00
jeffw773 79d89852d4 Added -fail and -block handlers to ShowdownInterpreter as well as added around 17 battle texts related to them 2023-11-06 15:51:09 -08:00
Tyzillion 8d38144551 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-11-06 14:08:39 -05:00
Stephen White a21a172be3 Fix visual Pokemon recall bug 2023-11-06 10:32:05 -04:00
Paul 7f464f2e3e Changelogfor prior change 2023-11-06 09:39:29 +10:00
Paul d8e209e4a2 Rebuilt transformed model parts, pose transitions are now smoother and interpolate active idle animations 2023-11-06 09:38:43 +10:00
JazzMcNade b44e5c797e Made sure mixin logic is applied for all potion slots in brewing stands. 2023-11-05 17:12:15 -06:00
JazzMcNade ae9337c84a Mixin compatibility changes. 2023-11-05 16:33:44 -06:00
JazzMcNade 5db2c4c955 Restored BrewingStandBlockEntityMixin for brewing stand/hopper interaction 2023-11-05 03:59:54 -06:00
Hiroku 8af1225c90 Merge branch 'npc-revival' into 'main'
Prevent NPCs from freezing battles upon using Revival Blessing.

See merge request cable-mc/cobblemon!745
2023-11-05 05:14:51 +00:00
jmmcp 4b181d75c8 Added a check to avoid NPCs freezing battles upon using Revival Blessing. 2023-11-05 00:51:38 -04:00
Hiroku 9e28dce3d7 Merge branch 'revival-blessing-fix' into 'main'
Fixes the move Revival Blessing

Closes #660

See merge request cable-mc/cobblemon!744
2023-11-05 02:29:27 +00:00
jmmcp 39f084bd56 Can't forget the changelog. 2023-11-04 21:46:29 -04:00
jmmcp c82bba7872 Add checks throughout the switch process to allow the Revival Blessing forceSwitch command to validate. 2023-11-04 21:42:03 -04:00
Hiroku 3f557d9ae6 Merge branch 'return_bottles' into 'main'
Return bottles

Closes #674 and #673

See merge request cable-mc/cobblemon!742
2023-11-04 04:35:26 +00:00
Tyzillion c15976a936 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-11-03 21:38:04 -04:00
Hiroku c8652b519a Merge branch 'vivillon_wings' into 'main'
Implement new Vivillon patterns

Closes #600 and #676

See merge request cable-mc/cobblemon!743
2023-11-04 00:51:32 +00:00
Lily 67c828dd0c missed one 2023-11-03 19:49:30 -04:00
Lily 10a1bc6bc6 Merge remote-tracking branch 'origin/return_bottles' into return_bottles 2023-11-03 19:42:35 -04:00
Lily e4db065a85 change friendshop drop through json and not the item class 2023-11-03 19:42:09 -04:00
Hiroku 171cd45e32 Merge branch 'main' into 'return_bottles'
# Conflicts:
#   CHANGELOG.md
2023-11-03 23:27:57 +00:00
Lily d638315fb1 Rename "Patterned Wings" to "Vivillonaire". Closes #676 2023-11-03 19:27:38 -04:00
Hiroku 980fa6a13d Merge branch 'healing_percent_fix' into 'main'
Fix issue involving health display after healing

Closes #663

See merge request cable-mc/cobblemon!740
2023-11-03 23:27:37 +00:00
Hiroku 267faf9397 Merge branch 'get-nerfed' into 'main'
Harder Healing Machine, Nerds

Closes #672

See merge request cable-mc/cobblemon!741
2023-11-03 23:25:56 +00:00
Lily 7549d77ad7 Update CHANGELOG.md 2023-11-03 19:24:59 -04:00
Lily 0f6929dd5e implement new vivillon wing patterns. Closes #600 2023-11-03 19:23:18 -04:00
Licious 79597a81fe Implemented conditional held item consumption. 2023-11-03 11:44:42 +00:00
dhi_holo e54e822c3a Harder Healing Machine, Nerds
Closes #672
2023-11-03 15:12:30 +10:00
Lily 5e60bb525c Changes to healing items. Closes #673, #674 2023-11-02 23:47:12 -04:00
Tyzillion c49cb45892 Fixed sleeping animations not playing for many Pokmeon. Implemented Litwick line, Update model, texture, and animations for Zubat line. Fixed Ceruledge back spike texture error. Updated Dusknoir, Ratatta, and Exegguter animation. Fixed Volbeat t-pose when flying. Fixed Wimpod asymmetric eyebrows. Fixed Voltorb texture. Fixed shiny Pidgeotto texture. 2023-11-02 22:22:16 -04:00
Tyzillion e0a896377e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-11-02 22:19:43 -04:00
Lily b96638226c Fixes #663 2023-11-02 22:19:36 -04:00
Lily 7c025582e0 Added a bunch of missing texts. Fixes #582, #588 2023-11-02 19:59:52 -04:00
Hiroku 623dfbb78b Merge branch 'licious/potion-fixes' into 'main'
Rework potion stuff & fixes

Closes #667 and #460

See merge request cable-mc/cobblemon!739
2023-11-02 23:28:37 +00:00
Licious 942bf8247e Consistent names aren't my specialty okay? 2023-11-02 22:44:26 +00:00
Licious d6a991e81e Fix various potion related issues. 2023-11-02 22:43:33 +00:00
Tyzillion 5d5de4f2f3 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-11-02 15:38:50 -04:00
Hiroku 7e952295a5 Merge branch 'licious/a-sign-of-boats-to-come' into 'main'
Implement Apricorn boats & signs

See merge request cable-mc/cobblemon!725
2023-11-02 08:14:26 +00:00
Hiroku d299cad9db Merge branch 'main' into 'licious/a-sign-of-boats-to-come'
# Conflicts:
#   CHANGELOG.md
2023-11-01 20:35:35 +00:00
Nick 261408d542 Merge branch 'licious/606' into 'main'
Progress related evolution requirement fixes

Closes #606

See merge request cable-mc/cobblemon!738
2023-11-01 19:01:24 +00:00
Nick cde163c1d1 Merge branch 'licious/597' into 'main'
Fix loot injection on Forge

Closes #597

See merge request cable-mc/cobblemon!736
2023-11-01 16:52:54 +00:00
Licious dbc478fc89 Fix battle critical hits evolution, fixed DamageTakenEvolutionProgress & DefeatEvolutionProgress not being registered. 2023-11-01 14:49:03 +00:00
Licious dde6c1dc97 *Apricorn 2023-10-31 23:47:46 +00:00
Licious 41d7740374 Merge branch 'main' into licious/a-sign-of-boats-to-come
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/resources/mixins.cobblemon-common.json
2023-10-31 23:44:21 +00:00
Licious 29f0c6f7bc Rework LootInjector functionality, fix Forge. 2023-10-31 23:38:17 +00:00
Licious d128d3e025 Merge branch 'blame-json' into 'main'
Advancements Fixed

See merge request cable-mc/cobblemon!735
2023-10-31 09:50:59 +00:00
Licious 422bd5a0de Merge branch 'licious/596' into 'main'
Add the Fairy Feather.

Closes #596

See merge request cable-mc/cobblemon!734
2023-10-31 09:50:28 +00:00
Licious 65271dc1b1 Merge branch 'licious/595' into 'main'
Add the Cleanse Tag item

Closes #595

See merge request cable-mc/cobblemon!733
2023-10-31 09:50:07 +00:00
dhi_holo 8a604fdefe Only Canon
Removed Cobblemon Vivillon patterns from advancement for time being, so this can be merged
2023-10-31 12:15:26 +10:00
dhi_holo a525df98cd Merge branch 'main' into blame-json 2023-10-31 12:14:19 +10:00
Licious 6a5c52ca0e Add the Fairy Feather. 2023-10-30 11:40:47 +00:00
Licious 57509b6bba Fix typo. 2023-10-30 11:21:27 +00:00
Licious 0a4b7fe5c8 Added the cleanse tag. 2023-10-30 11:21:19 +00:00
Paul 41a87d0c8a Added baby fossil Pokémon rendering in the resurrection tube 2023-10-30 20:11:59 +10:00
Hiroku 45f72e0e9e Merge branch 'spawner-fixes' into 'main'
Two spawner fixes

See merge request cable-mc/cobblemon!732
2023-10-30 07:30:06 +00:00
Paul 45faed038f Merge remote-tracking branch 'origin/main' into archaeology 2023-10-30 17:06:19 +10:00
Deltric 029e152d95 Updated changelog for spawning fixes. 2023-10-30 02:00:22 -05:00
Deltric 08d6fa00eb Two spawner fixes 2023-10-30 01:47:36 -05:00
Hiroku 35bb803fb0 Merge branch 'battle-lang-fix' into 'main'
Battle lang fix

Closes #617 and #637

See merge request cable-mc/cobblemon!731
2023-10-29 23:48:38 +00:00
Plastered_Crab ec028c89e4 Update CHANGELOG.md 2023-10-29 18:47:27 +00:00
Plastered_Crab 1de8a40bae Added case for Disable to ShowdownInterpreter.kt 2023-10-29 18:45:24 +00:00
Plastered_Crab 8c682356bb Added extra battle text for various moves en_us.json 2023-10-29 18:42:33 +00:00
Nick e817675abc Merge branch 'licious/354' into 'main'
Make pasture blocks connect to all wall-like blocks

Closes #354

See merge request cable-mc/cobblemon!730
2023-10-29 17:20:17 +00:00
Licious 49ebd740b6 Change up pasture block bottom voxelshape to be able to connect to blocks like walls. Remove unnecessary FenceBlockMixin due to changes. 2023-10-29 16:42:37 +00:00
Licious a96b550618 Merge branch 'advancement-fixes-and-additions' into 'main'
Advancement Evolution crash fix

Closes #608

See merge request cable-mc/cobblemon!729
2023-10-29 10:59:51 +00:00
MoeBoy76 b1431b1be1 Update file CHANGELOG.md 2023-10-29 09:47:03 +00:00
MoeBoy76 19400a71f2 added evolution ID 2023-10-29 20:37:56 +11:00
MoeBoy76 87661224da be more verbose with error message and use fancy Kotlin thingy 2023-10-29 19:45:37 +11:00
MoeBoy76 92dc6fefe0 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into advancement-fixes-and-additions
# Conflicts:
#	CHANGELOG.md
2023-10-29 19:19:35 +11:00
dhi_holo f7adaa6100 Moving recipes to correct root (4/4) 2023-10-29 01:16:51 +00:00
dhi_holo 7381ef6a02 Moving recipes to correct root (3/4) 2023-10-29 01:16:36 +00:00
dhi_holo a54acc48e7 Moving recipes to correct root (2/4) 2023-10-29 01:16:14 +00:00
dhi_holo 5478db4e32 Moving recipes to correct root (1/4) 2023-10-29 01:15:59 +00:00
Hiroku c99b1503cb Merge branch 'spawning-json-fix' into 'main'
Fixed json spawning files

Closes #650

See merge request cable-mc/cobblemon!723
2023-10-28 23:21:58 +00:00
JPAKx4 8ede54739b Added a tool to check for mistakes in spawning jsons. also fixed the json problems that were reported. 2023-10-28 18:01:18 -05:00
JPAKx4 921f3796c1 Drop is an intended property. 2023-10-28 17:57:32 -05:00
Hiroku 225d170ee3 Merge branch 'licious/620' into 'main'
Add EvolutionTestedEvent

Closes #620

See merge request cable-mc/cobblemon!728
2023-10-28 21:39:53 +00:00
MoeBoy76 5e3479eb8f added catch for bad evolution data crashing the AdvancementHandler and print warning for the evolution that has bad data. 2023-10-29 07:59:50 +11:00
Licious 13379eb8d0 Add EvolutionTestedEvent. 2023-10-28 21:09:43 +01:00
Nick 47f05d0b37 Merge branch 'licious/612' into 'main'
Fixed the SpawnEvent not respecting usage of Cancelable#cancel

Closes #612

See merge request cable-mc/cobblemon!727
2023-10-28 19:30:36 +00:00
Nick 5f6bfa03aa Merge branch 'licious/stat-fix' into 'main'
Fix some more stuff in PokemonStats

See merge request cable-mc/cobblemon!726
2023-10-28 19:08:53 +00:00
Licious 83ac0388d6 Fixed the SpawnEvent not respecting usage of Cancelable#cancel 2023-10-28 19:38:11 +01:00
Licious 454c2b368a Fix coercion for present stat 2023-10-28 19:26:36 +01:00
Licious 4395514376 Fix some more stuff in PokemonStats 2023-10-28 19:25:05 +01:00
Licious 5f55cbb5d3 Implement Apricorn boats & signs, pending texture approval. Fix a few missing item tags in CobblemonItemTags. Added support for injecting into specific points of ItemGroups. 2023-10-28 15:20:08 +01:00
Hiroku a8f7141c14 Merge branch 'main' into 'main'
Update `SpawnAction#run` to `open`

See merge request cable-mc/cobblemon!724
2023-10-28 04:46:23 +00:00
corgi in tights eba32fbf60 Update SpawnAction#run to open 2023-10-28 04:30:58 +00:00
JPAKx4 57a3ad9c9b Added a tool to check for mistakes in spawning jsons. also fixed the json problems that were reported. 2023-10-27 21:36:57 -05:00
JPAKx4 40c2c843a2 Merge remote-tracking branch 'origin/main' 2023-10-27 20:27:39 -05:00
Hiroku b20db43afa Merge branch 'curseMessageFix' into 'main'
Fixed cursed battle message

Closes #632

See merge request cable-mc/cobblemon!722
2023-10-27 22:07:49 +00:00
WaldleuferPlastered_Crab <jeffw773@gmail.com><name@example.com>Hiroku
e81c025152 Fixed cursed battle message
Closes #632

Co-authored-by: Plastered_Crab <jeffw773@gmail.com><name@example.com>
Co-authored-by: Hiroku <paul_l_preston@hotmail.com>
2023-10-27 23:09:30 +02:00
Hiroku 39a9c60a84 Merge branch 'Extra-Brewing-Stand-Hopper-Items' into 'main'
More Brewing Stand Insertables

See merge request cable-mc/cobblemon!717
2023-10-27 20:18:11 +00:00
Hiroku dd3787896b Merge branch 'passengerDefaultPose' into 'main'
Default pose for Passenger Pokemon = PosteType.STAND

Closes #636

See merge request cable-mc/cobblemon!720
2023-10-27 20:17:16 +00:00
Hiroku 80ddbaf50c Merge branch 'main' into 'passengerDefaultPose'
# Conflicts:
#   CHANGELOG.md
2023-10-27 20:16:52 +00:00
Hiroku 62c9654f97 Merge branch 'fix-iv-loading' into 'main'
Query all stats on data read, even if they don't exist. Fixes #625

Closes #625

See merge request cable-mc/cobblemon!721
2023-10-27 20:16:02 +00:00
NickandHiroku 98b5d69d01 Query all stats on data read, even if they don't exist. Fixes #625 2023-10-27 20:16:02 +00:00
Waldleufer 87f0811c2b Default pose for Passenger Pokemon = PosteType.STAND
Added the fix to the changelog
2023-10-27 17:58:36 +02:00
tyzillion dfa104d8cf Updated Pokeball animations and model tweaks.
- Added cries to Raticate, Onix, Unfezant, Bergmite, Avalugg, Boltund, Revavroom.
- Turtwig can now be put on shoulder.
- Added animations for Hitmontop, Tyrogue, and Mightyena.
- Tweaked animations for Bewear, Exeggutor, and Alolan Exeggutor.
- Sized Kantonian Exeggutor down. Still big but not TOO BIG.
2023-10-26 15:07:39 -04:00
tyzillion 6ff53c0be3 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-10-26 15:04:49 -04:00
Waldleufer ec58079b4f Default pose for Passenger Pokemon = PosteType.STAND 2023-10-26 15:51:15 +02:00
Charzard4261 7c3cf3f498 Simplified the check to just check against the BrewingRecipes.brewableItems list. 2023-10-26 11:01:38 +01:00
Hiroku a7c0a911e3 Merge branch 'pokemon-drop-credit' into 'main'
Credits the player who defeated the pokemon in battle for drops.

See merge request cable-mc/cobblemon!718
2023-10-26 09:54:10 +00:00
Hiroku fee8634661 Merge branch 'ai-actor-tweak' into 'main'
Move choice request to its own method that can be overridden.

See merge request cable-mc/cobblemon!719
2023-10-26 09:53:29 +00:00
Hiroku 68a517332f Merge branch 'clefairy-moon-phase' into 'main'
Fixed Clefairy moon phase issue

See merge request cable-mc/cobblemon!716
2023-10-26 09:52:58 +00:00
dhi_holo 088159bab2 Advancements Fixed
Repairs harvest_apricorn_seed and catch_all_vivillon advancements (can't be merged until confirmation on whether the Vivillon forms are ready for 1.4.1 or not)
2023-10-26 16:02:23 +10:00
tyzillion 6682049be1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-10-25 20:17:49 -04:00
tyzillion fa2bbdbb10 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-10-25 20:17:02 -04:00
Deltric b78bdd727f Move choice request to its own method that can be overridden. 2023-10-25 18:19:09 -05:00
Deltric 610e197236 Credits the player who defeated the pokemon in battle for drops. 2023-10-25 17:43:49 -05:00
Charzard4261 27ee34573d Added PP Restoring and Status Healing items to the BrewingStandBlockEntityMixin isValid check for Hopper Insertion. 2023-10-25 23:07:17 +01:00
Plastered_Crab e4bd024567 Added: "Fixed Moonphases for Clefairy line" 2023-10-25 17:40:06 +00:00
Plastered_Crab e41d94b5dc Update 0173_cleffa.json 2023-10-25 17:38:36 +00:00
Plastered_Crab 00ae3841db Update 0036_clefable.json 2023-10-25 17:37:44 +00:00
Plastered_Crab b0a54a408f Update 0035_clefairy.json 2023-10-25 17:37:10 +00:00
Hiroku a34735891a Merge branch 'sound' into 'main'
Sound stuff

See merge request cable-mc/cobblemon!715
2023-10-25 10:05:20 +00:00
Sterrezo 17552017f9 Update CHANGELOG.md 2023-10-25 11:31:17 +02:00
Sterrezo d90cd5b9a8 Merge branch 'main' into sound 2023-10-25 11:30:13 +02:00
Sterrezo 33fe1a7c32 Made sounds.json easier to look at 2023-10-25 11:27:13 +02:00
Hiroku 17096f3bb7 Merge branch 'cooking-with-berries' into 'main'
Two Tags

Closes #598

See merge request cable-mc/cobblemon!703
2023-10-25 07:36:18 +00:00
Hiroku 81f733e89f Merge branch 'main' into 'cooking-with-berries'
# Conflicts:
#   CHANGELOG.md
2023-10-25 07:08:43 +00:00
Hiroku fac7419225 Merge branch 'Licenses-are-fun' into 'main'
Fixing Licenses

See merge request cable-mc/cobblemon!714
2023-10-25 06:56:30 +00:00
JPAKx4 69d174b6a6 Merge remote-tracking branch 'origin/main' 2023-10-24 19:07:22 -05:00
Hiroku d66f534b95 Merge branch 'roggenrola_drop_fix' into 'main'
fixing drops for roggenrola

See merge request cable-mc/cobblemon!713
2023-10-24 20:14:24 +00:00
Waldleufer 6f342045f4 Fixing Licenses for Jordan
I'm not mad, just disappointed.
2023-10-24 22:01:56 +02:00
Waldleufer 726aeac836 fixing drops for roggenrola
and some auto reformatting that happens when the .py script runs.
2023-10-24 21:22:05 +02:00
Deltric 30a78f978d textures didn't commit? 2023-10-23 20:22:21 -05:00
Deltric d8c1d50aa5 Progress on fossils 2023-10-23 20:20:17 -05:00
JPAKx4 f01c5a5ceb Merge remote-tracking branch 'origin/main'
# Conflicts:
#	CHANGELOG.md
2023-10-23 19:31:52 -05:00
Licious 5876d83147 Merge branch 'chansey_drop_fix' into 'main'
fix drops for chansey/blissey

Closes #628

See merge request cable-mc/cobblemon!712
2023-10-23 19:01:20 +00:00
Lily ae1a55fa98 fix drops for chansey/blissey 2023-10-23 18:14:14 +00:00
Hiroku 417fefa911 Merge branch 'Brewing-Stand-Hopper-Interaction' into 'main'
Allow Hoppers to insert Medicinal Brew / Poke Potions into Brewing Stands

See merge request cable-mc/cobblemon!698
2023-10-23 05:11:12 +00:00
Hiroku e30cc3dce8 Merge branch 'main' into 'Brewing-Stand-Hopper-Interaction'
# Conflicts:
#   CHANGELOG.md
2023-10-23 03:59:30 +00:00
Hiroku 63f721bc9b Merge branch 'main' into 'main'
Created a system to add blocks to the flammable registry in FireBlock and...

Closes #553

See merge request cable-mc/cobblemon!711
2023-10-23 00:33:04 +00:00
JordanandHiroku 27248fd17d Created a system to add blocks to the flammable registry in FireBlock and... 2023-10-23 00:33:04 +00:00
JPAKx4 c198aee827 Moved the array into the init method and adjusted wording to be better. 2023-10-22 19:22:16 -05:00
JPAKx4 a8c6d58499 Merge remote-tracking branch 'origin/main' 2023-10-22 19:20:57 -05:00
Hiroku 9e748cc9cf Merge branch 'mintedNatureQOLChanges' into 'main'
Italicized Nature and Hovertext for Minted Natures in Info, PC and Trade Screen.

Closes #480

See merge request cable-mc/cobblemon!702
2023-10-22 23:32:00 +00:00
amo 03f377cf0a white glow happens but its buggy 2023-10-22 21:06:03 +01:00
Waldleufer 5890918e04 Added MPL Header 2023-10-22 21:49:49 +02:00
Waldleufer c0567ac11f The nature of Cobblemon will now indicate minted Nature. 2023-10-22 21:38:18 +02:00
Waldleufer 5036e334dc Compostability 2023-10-22 21:23:01 +02:00
Waldleufer 9f798cddf5 Display MintedNature Italicized and with Tooltip showing the Mint used. 2023-10-22 21:09:48 +02:00
Waldleufer eb2828e0a4 Moved Minted Nature reformatting to its own file. 2023-10-22 21:09:48 +02:00
Waldleufer 53f127fc23 added onHover for Text 2023-10-22 21:09:48 +02:00
Waldleufer c463bb6e06 Compostable integration 2023-10-22 21:09:17 +02:00
Waldleufer 4e9d45d38c MutableText.onHover() now is actually drawn if text is being hovered
#480
2023-10-22 21:08:15 +02:00
Waldleufer 4e2f7d3bc5 InfoWidget refactored into multiple smaller widgets.
#480
2023-10-22 21:08:15 +02:00
Waldleufer 8975b099ad InfoWidget reworked.
#480
2023-10-22 21:08:09 +02:00
Waldleufer 308380706a Implemented Hovertext and italicized Nature for Minted Natures in Info and Trade Screen.
I am sure there is a better way to do that though.

#480
2023-10-22 21:01:31 +02:00
Waldleufer ef80924526 Display MintedNature Italicized and with Tooltip showing the Mint used. 2023-10-22 20:58:43 +02:00
Waldleufer fadf57046d Moved Minted Nature reformatting to its own file. 2023-10-22 20:44:17 +02:00
JPAKx4 13cedaaf73 Refactored the flammable blocks system, it's now in one centralized place and has comments to make things clearer. The values are all based on the vanilla counterparts. 2023-10-22 10:08:27 -05:00
Waldleufer 0a0806716b added onHover for Text 2023-10-22 15:18:35 +02:00
Waldleufer af59cb5e58 Using Map for better performance 2023-10-22 15:16:22 +02:00
Charzard4261 c0f8e37206 Merge branch 'main' into 'Brewing-Stand-Hopper-Interaction'
# Conflicts:
#   CHANGELOG.md
2023-10-22 13:14:34 +00:00
Waldleufer e64aaf66ab MutableText.onHover() now is actually drawn if text is being hovered
#480
2023-10-22 14:49:58 +02:00
Waldleufer a946dfea1f InfoWidget refactored into multiple smaller widgets.
#480
2023-10-22 14:49:25 +02:00
dhi_holo f2c459cc06 Pain, Suffering Even
Moved the tags to only be in their respective modloaders, that took way too long to figure out, updated the Forge version to what Farmer's Delight uses because of failed testing, and added this to the changelog
2023-10-22 15:39:19 +10:00
Jordan 6f12f53e85 Update CHANGELOG to include branch changes 2023-10-22 04:14:11 +00:00
JPAKx4 073ee8e283 Merge https://gitlab.com/superpizzaman10/cobblemon-compost-fix 2023-10-21 22:44:25 -05:00
JPAKx4 d3a5ad8efa Created a system to add blocks to the flammable registry in FireBlock and added apricorn wood to it. 2023-10-21 22:43:19 -05:00
Jordan 62a2dcc606 Merge branch cobblemon:main into main 2023-10-22 03:37:25 +00:00
dhi_holo a7f71eb437 Merge branch 'main' into cooking-with-berries 2023-10-22 13:03:28 +10:00
JPAKx4 b65dab7f30 Merge remote-tracking branch 'origin/main' 2023-10-21 20:15:53 -05:00
Hiroku ac76878002 Merge branch 'main' into 'main'
Simplified composting as well as made mint, apricorn, and berries more consistent.

See merge request cable-mc/cobblemon!710
2023-10-22 01:13:46 +00:00
JordanandHiroku fe219e52e6 Simplified composting as well as made mint, apricorn, and berries more consistent. 2023-10-22 01:13:45 +00:00
Jordan bfd28ec9b0 Update CHANGELOG.md 2023-10-22 01:05:18 +00:00
JPAKx4 1063441b0e Merge https://gitlab.com/superpizzaman10/cobblemon-compost-fix into tempBranch 2023-10-21 18:39:29 -05:00
JPAKx4 4e89f45253 Simplified composting as well as made mint, apricorn, and berries more consistent. 2023-10-21 16:00:18 -05:00
Deltric eb7bf65e02 I probably missed this during rebase 2023-10-21 14:19:18 -05:00
amo 373092f572 interact gui upgrades 2023-10-21 19:55:13 +01:00
Deltric c7d3164ff4 Merge branch 'sus-archaeology' into archaeology
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/CobblemonFabric.kt
2023-10-21 13:44:00 -05:00
Sterrezo 2798f73397 Fixed a couple missing cries
Fixed typo in farfetchd_galar.animation.json, added a cry provider to QuaxwellModel.kt, added a placeholder cry for Raticate, added missing sound keyframes to Onix, Unfezant, Bergmite, Avalugg, Boltund, Revavroom
2023-10-21 20:13:25 +02:00
Paul e6da43be6d Merge remote-tracking branch 'origin/main' into spawn-rules
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokemon/PokemonProperties.kt
2023-10-21 12:59:57 +10:00
dhi_holo 56aa5ae8d8 Merge branch 'main' into cooking-with-berries 2023-10-21 12:53:21 +10:00
Hiroku 156a7a70eb Merge branch 'battle-potion-fix' into 'main'
Fix Potions, Super Potions, and Hyper Potions not working during Battle

See merge request cable-mc/cobblemon!708
2023-10-21 02:21:09 +00:00
Hiroku 3b13b9f246 Merge branch 'PlasteredCrab-main-patch-56636' into 'main'
Update CHANGELOG.md to include Potion use during battle issue

See merge request cable-mc/cobblemon!709
2023-10-21 02:21:03 +00:00
Plastered_Crab 0a8d920285 Update CHANGELOG.md to include Potion use during battle issue 2023-10-21 02:15:28 +00:00
Plastered_Crab f5418a8088 Update PotionItem.kt to fix Potions, Super Potions, and Hyper Potions not working during Battle 2023-10-21 02:07:00 +00:00
Hiroku cae097bf2c Merge branch 'berry-juice-bowl' into 'main'
Fixed Berry Juice so bowl is given back to player

See merge request cable-mc/cobblemon!706
2023-10-21 01:56:36 +00:00
Hiroku f760003c3a Merge branch 'PlasteredCrab-main-patch-58336' into 'main'
Update CHANGELOG.md to include Berry Juice changes

See merge request cable-mc/cobblemon!707
2023-10-21 01:56:17 +00:00
Plastered_Crab 38f70c5960 Update CHANGELOG.md to include Berry Juice changes 2023-10-21 01:55:00 +00:00
Plastered_Crab 81b00d7f85 Fixed Berry Juice so that when it is used in and outside of Battle when in Survival Mode a wooden bowl is given back to the player 2023-10-21 01:47:43 +00:00
Paul 948ceeaa8d Merge remote-tracking branch 'origin/main' 2023-10-21 10:14:25 +10:00
Paul 1eda446897 Fixed bad PC loading from JSON and NBT store adapters due to 392b6993 2023-10-21 10:14:15 +10:00
Paul 8bfc0fefaf Improvements to evolution effect 2023-10-21 08:13:56 +10:00
Charzard4261 49d03c0336 Merge branch 'main' into 'Brewing-Stand-Hopper-Interaction'
# Conflicts:
#   CHANGELOG.md
2023-10-20 21:57:53 +00:00
Licious c5d254cca7 Merge branch 'Berries-On-Modded-Farmland' into 'main'
Allow Berries on Modded Farmland

See merge request cable-mc/cobblemon!705
2023-10-20 20:29:52 +00:00
Waldleufer 4f7fda1e96 InfoWidget reworked.
#480
2023-10-20 20:22:01 +02:00
Charzard4261 d3e10cb570 Merge remote-tracking branch 'origin/Berries-On-Modded-Farmland' into Berries-On-Modded-Farmland 2023-10-20 19:12:34 +01:00
Charzard4261 51d7d2cb04 Added Forge and Fabric (unofficial but according to their standards) farmlands tag to facilitate better compatibility, as advised by Licious. 2023-10-20 19:12:19 +01:00
amo 4e44807523 new throwout sounds & timings 2023-10-20 19:02:55 +01:00
Charzard4261 ac53d2da95 Merge branch 'main' into 'Berries-On-Modded-Farmland'
# Conflicts:
#   CHANGELOG.md
2023-10-20 16:43:45 +00:00
Charzard4261 17e41f5f0b Updated CHANGELOG.md 2023-10-20 17:30:29 +01:00
Charzard4261 4bd70698ce Added a "below.block is FarmlandBlock" check for Berry blocks to allow them to be placed on other blocks that extend from it. 2023-10-20 17:25:57 +01:00
Sterrezo 23b750d5e9 Added a sound for giving Pokemon items and taking items from them 2023-10-20 17:46:43 +02:00
Charzard4261 ab2b67c426 Merge branch 'main' into 'Brewing-Stand-Hopper-Interaction'
# Conflicts:
#   CHANGELOG.md
2023-10-20 12:17:00 +00:00
Hiroku d68c912ca6 Merge branch 'Dispenser-Shear-Apricorn-Fix' into 'main'
Fixed Dispensers being unable to shear grown Apricorns

See merge request cable-mc/cobblemon!701
2023-10-20 09:32:17 +00:00
Paul 36251fea75 Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/LocatorAccess.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/spawn/SpawnPokemonPacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/Species.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
#	common/src/main/resources/assets/cobblemon/particles/snowstorm.json
#	deps/local/com/bedrockk/molang/1.1.5/molang-1.1.5.pom
2023-10-20 19:28:23 +10:00
Hiroku c391d1a5e0 Merge branch 'main' into 'Dispenser-Shear-Apricorn-Fix'
# Conflicts:
#   CHANGELOG.md
2023-10-20 07:42:04 +00:00
Nick 0af39118eb Merge branch 'multi-party-fix' into 'main'
Allows PlayerPartyStore's to have their own unique storage id, separate from the player uuid.

See merge request cable-mc/cobblemon!704
2023-10-20 07:21:03 +00:00
Deltric 392b69937f Allows PlayerPartyStore's to have their own unique storage id, separate from the player uuid. 2023-10-20 01:53:32 -05:00
Hiroku e32af733f1 Merge branch 'more-mod-compat' into 'main'
Fix compatibility with the Forge version of Carry On, add compatibility for Adorn.

See merge request cable-mc/cobblemon!697
2023-10-20 06:41:13 +00:00
amo 06206a7447 pokeball anim 2023-10-20 06:37:09 +01:00
dhi_holo e1509c9dab Two Tags
Adds Cobblemon Berries to the Forge and Fabric general tags for berries (which aren't core to their APIs), allowing for Farmer's Delight compatibility, unsure if anything else actually uses it but eh, doesn't hurt to have this set up
2023-10-20 12:30:14 +10:00
Waldleufer 1cb6baee59 Implemented Hovertext and italicized Nature for Minted Natures in Info and Trade Screen.
I am sure there is a better way to do that though.

#480
2023-10-20 00:09:19 +02:00
Sterrezo 9403cb6296 Merge branch 'main' into sound 2023-10-19 23:59:55 +02:00
Sterrezo fd157fae4f Lowered the volume of all cries 2023-10-19 23:59:08 +02:00
amo 66e901f88d sync pokeball 2023-10-19 17:08:53 +01:00
amo 05f089d390 attempt to fix particle materials but fabric fucking sucks 2023-10-19 17:01:05 +01:00
Charzard4261 9ca472ccaf Fixed Dispensers being unable to shear grown Apricorns. 2023-10-19 11:48:27 +01:00
Paul f52345036d Changelog again 2023-10-19 20:44:43 +10:00
Paul bd99ff2bfd Changelog 2023-10-19 20:38:21 +10:00
Paul 19510ca8ba Merge remote-tracking branch 'origin/main' into tracked-data-cleanup 2023-10-19 20:37:30 +10:00
Charzard4261 13b7e0d418 Update CHANGELOG.md 2023-10-19 10:20:07 +00:00
amo 23df8f70cf testing 2023-10-19 02:39:48 +01:00
Charzard4261 a6ddc1e4ae Add missing MAX_POTION check. 2023-10-19 00:30:10 +01:00
Charzard4261 a5b1b87ec5 Add a new Mixin for BrewingStandBlockEntity that allows for Hopper interaction with Cobblemon POTIONs and MEDICINAL_BREW. 2023-10-18 22:24:59 +01:00
Licious b3255045fa Fix compatibility with the Forge version of Carry On, add compatibility for Adorn. 2023-10-18 22:17:35 +01:00
Hiroku 90f3acebac Merge branch 'main' into 'main'
Check chunks are loaded before running AreaSpawner

See merge request cable-mc/cobblemon!692
2023-10-18 20:00:56 +00:00
Nick 0da91fb255 Merge branch 'Miltank-Milk-Revert-Fix' into 'main'
Fix Miltank Bucket Reversion

See merge request cable-mc/cobblemon!696
2023-10-18 18:22:23 +00:00
Charzard4261 ba3b26ac74 Fix desync that was causing milk buckets occasionally reverting to regular buckets by removing the ServerClientPlayer check in PokemonEntity.interactMob for Shearing and Milking, and modifying it slightly to be the same calls as CowEntity (minus the SFX). 2023-10-18 17:49:47 +01:00
amo bd25e8682a Merge remote-tracking branch 'origin/tracked-data-cleanup' into amo/balls
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
2023-10-18 13:16:01 +01:00
Xander Forrest 966761776d Merge branch cobblemon:main into main 2023-10-18 10:20:29 +00:00
Nick 24f07c58a0 Merge branch 'fabric-roots-spreading-fix' into 'main'
Fix Fabric big root spreading.

See merge request cable-mc/cobblemon!695
2023-10-17 23:06:24 +00:00
Xander Forrest a8b5f649a8 Merge branch cobblemon:main into main 2023-10-17 21:49:58 +00:00
Xander Forrest 295c73ae69 Don't create chunk in SpawningProspector 2023-10-17 22:47:38 +01:00
Xander Forrest 899bdb38ac Removes ServerChunkManagerMixin.java
Update chunk logic in AreaSpawner.constrainArea to reflect this
Updated Prospector to not use SCCM when getting chunks
2023-10-17 21:40:47 +01:00
Nick f30e5bda1e Merge branch 'improve-mongo-db-store-override' into 'main'
Improve the ability to reuse and override the MongoDBStoreAdapter.

See merge request cable-mc/cobblemon!694
2023-10-17 19:50:18 +00:00
Licious 76c870b472 Fix Fabric big root spreading. 2023-10-17 20:40:43 +01:00
Nick 963448e173 Merge branch 'composter-registration-changes' into 'main'
Update Composter block valid item registration

See merge request cable-mc/cobblemon!693
2023-10-17 19:30:03 +00:00
Licious 48d2fc6e2e Improve the ability to reuse and override the MongoDBStoreAdapter. 2023-10-17 20:08:49 +01:00
Licious 5868d39431 Rework Composter item registration to be platform implementation specific. 2023-10-17 19:53:48 +01:00
Paul 0ece90bcf1 Reworked our use of data trackers to be more like vanilla (maybe no T-pose anymore?), added battle ID to spawn packet so battle poses always work 2023-10-17 21:53:31 +10:00
Xander Forrest c47b3a21db Move isBoxLoaded to WorldExtensions.kt 2023-10-17 10:41:47 +01:00
Xander Forrest 0d12fb1f1c When running AreaSpawner, check area box's chunks are all loaded before attempting to get all entities in the area 2023-10-17 10:18:05 +01:00
amo 906cd54c98 initial mockup 2023-10-17 03:15:06 +01:00
Hiroku 78c7188a11 Merge branch 'update_version' into 'main'
update version

See merge request cable-mc/cobblemon!691
2023-10-16 03:49:53 +00:00
Hiroku ff5f63a998 Merge branch 'main' into 'update_version'
# Conflicts:
#   gradle.properties
2023-10-16 03:49:34 +00:00
Lily b9a8a9be11 update version 2023-10-15 22:24:29 -04:00
Paul 2046482252 Turn snapshot back on, 1.4 looks good 2023-10-14 17:46:43 +10:00
Hiroku 6a737999a9 Merge branch 'sendingOutShoulderedCobblemon' into 'main'
Dismounting Shouldered Cobblemon

Closes #473

See merge request cable-mc/cobblemon!680
2023-10-14 07:04:34 +00:00
WaldleuferandHiroku 89d37e583b Dismounting Shouldered Cobblemon 2023-10-14 07:04:33 +00:00
Paul e077a5d453 Not snapshot 2023-10-14 10:32:40 +10:00
Paul e7208ed396 Changelog polish 2 [skip-ci] 2023-10-14 10:31:27 +10:00
Paul 27f8bbf029 Changelog polish 2023-10-14 10:29:36 +10:00
Hiroku 2f97a69b8c Merge branch 'implement_pokemon' into 'main'
LAST MERGE REQUEST FOR ME TONIGHT? LAST MINUTE?

See merge request cable-mc/cobblemon!690
2023-10-13 23:44:13 +00:00
tyzillion 79d67389ba Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-10-13 19:36:11 -04:00
tyzillion 61f2150f2e Fixed Exeggcute looping faint. Fixed Baltoy texture zfighting. Fixed Wishiwashi framing. 2023-10-13 19:36:00 -04:00
tyzillion 5d63c8fe06 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-10-13 19:35:16 -04:00
Hiroku 0d109a64fd Merge branch 'scriptedDropsCSVtoJson' into 'main'
Automating the manual Drop Json editing

See merge request cable-mc/cobblemon!686
2023-10-13 23:34:54 +00:00
Hiroku 5daef700e7 Merge branch 'gimmick_data_fix' into 'main'
Remove gmax factor from natural spawns.

See merge request cable-mc/cobblemon!689
2023-10-13 23:15:18 +00:00
Paul 21bd1550f0 Fixed exeggcute and pikachu evolutions to kanto forms not undoing alolan flag 2023-10-14 09:13:28 +10:00
Segfault Guy 0d4f63ba01 Remove gmax factor from natural spawns. 2023-10-13 19:12:22 -04:00
Paul 946cff21fb Merge remote-tracking branch 'origin/main' into implement_pokemon 2023-10-14 08:43:40 +10:00
Paul 8a2291cd6e Fixed form order for exeggcute and pikachu 2023-10-14 08:43:33 +10:00
Hiroku 304ac0e07a Merge branch '1.4-fixes' into 'main'
Fixed underscores not really working as species names, fixed recalls not working (that was close)

See merge request cable-mc/cobblemon!688
2023-10-13 22:27:46 +00:00
tyzillion 3cac1138fb 😂😂😂 ˙sǝxᴉɟ uoᴉʇnloʌǝ ǝʇnuᴉɯ ʇsɐl 2023-10-13 18:05:33 -04:00
Paul b19a11f8ab Merge remote-tracking branch 'origin/main' into 1.4-fixes 2023-10-14 07:41:25 +10:00
Hiroku cad64ae24b Merge branch 'shedninja-evolution-fixes' into 'main'
Shedinja fixes

Closes #561

See merge request cable-mc/cobblemon!687
2023-10-13 21:40:23 +00:00
Paul 9036909968 Fixed underscores not really working as species names, fixed recalls not working (that was close) 2023-10-14 07:40:08 +10:00
MoeBoy76 53b98e8008 order of operations 2023-10-14 08:31:34 +11:00
MoeBoy76 574fd92827 added trigger to Shedinja evolution code and made Creative not care about Pokeballs 2023-10-14 08:06:31 +11:00
Waldleufer e6d7513c20 Merge branch 'main' into 'scriptedDropsCSVtoJson'
# Conflicts:
#   common/src/main/resources/data/cobblemon/species/generation1/golem.json
#   common/src/main/resources/data/cobblemon/species/generation1/graveler.json
#   common/src/main/resources/data/cobblemon/species/generation5/boldore.json
#   common/src/main/resources/data/cobblemon/species/generation5/gigalith.json
2023-10-13 20:47:11 +00:00
Waldleufer e36252318a Removed dangling Import. 2023-10-13 22:37:58 +02:00
Waldleufer 5d5dbb9e79 Fruits of the labor. 100% Datasheet and code consistency. 2023-10-13 22:28:04 +02:00
Hiroku 4036592c9a Merge branch 'go-to-sleep-flywheel' into 'main'
Remove flywheel, for now

See merge request cable-mc/cobblemon!684
2023-10-13 20:27:23 +00:00
Waldleufer c0ddbad4f5 Pulling fresh data from spreadsheet
Also added a printout for Troublesome IDs. (missing in the natural language to IDs map)
2023-10-13 22:19:50 +02:00
Paul fa1f485cd2 Merge remote-tracking branch 'origin/main' into go-to-sleep-flywheel
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/block/BerryEntityInstance.kt
2023-10-14 06:18:35 +10:00
Waldleufer b5aeb0e5f7 Removed debug logs. 2023-10-13 22:18:13 +02:00
Paul 9c2680783a Reapply a fix from main for when flywheel is turned back on 2023-10-14 06:09:33 +10:00
Hiroku b7ed72241b Merge branch 'berry_bugfixes' into 'main'
No longer just berry bugfixes

Closes #568

See merge request cable-mc/cobblemon!685
2023-10-13 20:07:54 +00:00
Hiroku 689f9eabc0 Merge branch 'lang-updates' into 'main'
Updated heaps of lang

See merge request cable-mc/cobblemon!670
2023-10-13 20:07:02 +00:00
Hiroku 4fd24be1d3 Merge branch '1.4-fixes' into 'main'
1.4 fixes

Closes #564, #569, #578, #573, and #576

See merge request cable-mc/cobblemon!683
2023-10-13 20:06:57 +00:00
Paul 7579203527 Merge remote-tracking branch 'origin/main' into berry_bugfixes
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation5/boldore.json
#	common/src/main/resources/data/cobblemon/species/generation5/gigalith.json
#	common/src/main/resources/data/cobblemon/species/generation5/roggenrola.json
2023-10-14 06:04:24 +10:00
Martin Wagner 9e3dd9373c Use correct indent (2). 2023-10-13 21:44:18 +02:00
Martin Wagner c9b9ac7d07 If the spreadsheet does not contain drop data, then remove any drops. 2023-10-13 21:26:53 +02:00
Martin Wagner dddae893cd Polishing of csv to json skript 2023-10-13 19:42:17 +02:00
Lily 86508801d3 Update destiny_knot.json 2023-10-13 17:24:48 +00:00
Lily de44411ad2 added everstone drop to geodude and roggenrola lines 2023-10-13 17:17:26 +00:00
Waldleufer e59aa01345 Logging some info for testing 2023-10-13 17:46:36 +02:00
Waldleufer 3f3e8b5747 Parsing Drops from spreadsheet 2023-10-13 15:36:45 +02:00
Waldleufer bb769fa165 get list of all files we need to change. 2023-10-13 14:15:14 +02:00
Waldleufer 163218c0a8 Creation of a python script to automate drop configuration 2023-10-13 14:07:16 +02:00
Paul e61eadb834 Will this make the license thing shut up no.2 2023-10-13 20:21:19 +10:00
Paul 29c8bbe9e9 Will this make the license thing shut up 2023-10-13 18:27:38 +10:00
Paul 7c42390515 Keep the license bit in here mate that's alright 2023-10-13 18:06:33 +10:00
Paul ff84ca69cd Updated pt_br and zh_cn 2023-10-13 15:33:22 +10:00
Paul dda3c4e981 Merge branch 'main' into lang-updates 2023-10-13 15:28:30 +10:00
Paul 072ad5ff12 Fixed Haban hitbox, fixed one weird Pomeg berry placement 2023-10-13 15:27:22 +10:00
Paul 1570bbf42b Remove flywheel, for now 2023-10-13 14:59:23 +10:00
Paul 41cfe79b0e Updated mutations for Haban, Sitrus, Hopo. Closes #576 2023-10-13 09:28:57 +10:00
Paul dc4e3dc39c Added 'biomeAnticondition' to BiomeRequirement, closes #573 2023-10-13 09:18:31 +10:00
Paul d100537d41 Changed hide overlay default keybind from P to O, closes #578 2023-10-13 09:06:10 +10:00
Paul fe218399e2 Fixed possible stack overflow removing owned pokemon from the world, closes #569 2023-10-13 09:05:31 +10:00
Paul 8f4a4a7e45 Fixed flower models not showing, closes #564 2023-10-13 08:58:38 +10:00
Hiroku b3757113ac Merge branch 'pokemon-drops' into 'main'
Pokemon drops

Closes #552

See merge request cable-mc/cobblemon!678
2023-10-12 21:29:06 +00:00
Nick 3bb17ffc6e Merge branch 'pokemon-removing-fix' into 'main'
Fixes owned Pokemon not being removed, when they should.

See merge request cable-mc/cobblemon!682
2023-10-12 18:15:32 +00:00
Deltric f37924fb0c Fixes owned Pokemon not being removed, when they should. 2023-10-12 10:44:16 -05:00
Hiroku 6e2765902e Merge branch '1.4-Spawns' into 'main'
lAsT miNuTE Spawn edits.

See merge request cable-mc/cobblemon!681
2023-10-12 11:02:30 +00:00
tyzillion d7c32e4ad8 A few spawns updated. 2023-10-11 18:12:24 -04:00
tyzillion 8732094c28 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns
# Conflicts:
#	common/src/main/resources/data/cobblemon/spawn_detail_presets/shipwreck.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0025_pikachu.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0026_raichu.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0037_vulpix.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0038_ninetales.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0043_oddish.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0044_gloom.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0052_meowth.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0053_persian.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0058_growlithe.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0059_arcanine.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0063_abra.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0064_kadabra.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0065_alakazam.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0072_tentacool.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0073_tentacruel.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0077_ponyta.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0078_rapidash.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0083_farfetchd.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0088_grimer.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0089_muk.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0090_shellder.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0091_cloyster.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0092_gastly.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0096_drowzee.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0097_hypno.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0100_voltorb.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0101_electrode.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0102_exeggcute.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0103_exeggutor.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0109_koffing.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0110_weezing.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0113_chansey.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0116_horsea.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0117_seadra.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0122_mrmime.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0124_jynx.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0132_ditto.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0133_eevee.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0134_vaporeon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0135_jolteon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0136_flareon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0147_dratini.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0148_dragonair.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0149_dragonite.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0152_chikorita.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0153_bayleef.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0154_meganium.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0167_spinarak.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0168_ariados.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0170_chinchou.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0171_lanturn.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0177_natu.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0178_xatu.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0190_aipom.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0193_yanma.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0196_espeon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0197_umbreon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0209_snubbull.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0210_granbull.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0216_teddiursa.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0217_ursaring.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0230_kingdra.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0238_smoochum.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0241_miltank.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0242_blissey.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0261_poochyena.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0262_mightyena.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0278_wingull.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0279_pelipper.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0280_ralts.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0281_kirlia.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0282_gardevoir.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0283_surskit.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0284_masquerain.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0290_nincada.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0293_whismur.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0294_loudred.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0295_exploud.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0313_volbeat.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0314_illumise.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0343_baltoy.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0344_claydol.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0355_duskull.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0356_dusclops.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0366_clamperl.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0367_huntail.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0368_gorebyss.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0369_relicanth.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0374_beldum.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0375_metang.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0376_metagross.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0396_starly.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0397_staravia.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0398_staraptor.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0415_combee.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0416_vespiquen.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0424_ambipom.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0427_buneary.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0428_lopunny.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0439_mimejr.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0440_happiny.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0442_spiritomb.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0469_yanmega.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0470_leafeon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0471_glaceon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0475_gallade.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0477_dusknoir.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0506_lillipup.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0507_herdier.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0508_stoutland.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0519_pidove.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0520_tranquill.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0521_unfezant.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0532_timburr.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0533_gurdurr.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0534_conkeldurr.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0561_sigilyph.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0562_yamask.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0563_cofagrigus.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0622_golett.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0623_golurk.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0664_scatterbug.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0665_spewpa.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0666_vivillon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0679_honedge.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0681_aegislash.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0700_sylveon.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0742_cutiefly.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0743_ribombee.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0764_comfey.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0767_wimpod.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0768_golisopod.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0778_mimikyu.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0835_yamper.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0836_boltund.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0863_perrserker.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0868_milcery.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0869_alcremie.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0870_falinks.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0901_ursaluna.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0924_tandemaus.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0925_maushold.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0926_fidough.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0927_dachsbun.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0931_squawkabilly.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0935_charcadet.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0936_armarouge.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0937_ceruledge.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0942_maschiff.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0943_mabosstiff.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0944_shroodle.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0945_grafaiai.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0974_cetoddle.json
#	common/src/main/resources/data/cobblemon/spawn_pool_world/0975_cetitan.json
#	common/src/main/resources/data/cobblemon/species/generation6/spewpa.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_beach.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_cold.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_cold_ocean.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_deep.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_desert.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_frozen.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_jungle.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_lush.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_mountain.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_mushroom.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_basalt.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_crimson.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_fungus.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_quartz.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_soul_sand.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_nether_wasteland.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_ocean.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_peak.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_plains.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_plateau.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_spooky.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_spring.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_swamp.json
#	common/src/main/resources/data/cobblemon/tags/worldgen/biome/is_taiga.json
2023-10-11 18:05:10 -04:00
Hiroku 38fecf337e Merge branch 'implement_pokemon' into 'main'
Last minute Pokemon fixes and updates.

See merge request cable-mc/cobblemon!679
2023-10-11 20:44:18 +00:00
tyzillion 3c7c640217 Last minute changes? More like last minute bugs. Amiright? 2023-10-10 23:58:38 -04:00
tyzillion b7e8cad3bd Fixed Pokemon not playing faint animations if fainted while asleep. Also fixed Alolan Raichu T-posing while battling. 2023-10-10 21:34:59 -04:00
tyzillion d553332017 Fixed Icy snow and High plains Vivillon not spawning as Meadow. Also fixed Spewpa evolving into Meadow instead of Icy and High Plains. Updated Alolan Exeggutor model, animations, and texture. Updated Boltund animation, updated Raticate models and animations. Added Stufful and Bewears shiny textures. 2023-10-10 20:46:14 -04:00
Lily de04379297 fixed broken advancement for getting an apricorn sprout 2023-10-10 20:23:56 -04:00
Lily 10bf9d1abd berries will now drop when broken. Closes #568 2023-10-10 19:49:22 -04:00
Lily 03b0bb9937 a bunch of missed pokemon drops 2023-10-10 18:23:58 +00:00
Lily 51a3d686ff gen 6 drops done 2023-10-10 15:47:42 +00:00
Lily 267c14cdd5 and here's 14 more because my IDE broke again somehow 2023-10-10 15:45:39 +00:00
Lily c9367f63b4 only 6 pokemon drops because my IDE broke and i dont wanna lose these 2023-10-10 15:30:15 +00:00
Lily 48f8561662 fixed typos 2023-10-10 14:44:16 +00:00
Lily 951a36f82e gen 9 drops 2023-10-10 14:22:51 +00:00
Lily e9edd7a1e9 gen 8 drops 2023-10-10 13:52:18 +00:00
Paul cb407bb649 Convenience dataTracker function [skip-ci] 2023-10-09 16:59:00 +10:00
Hiroku 5e28612d99 Actually the dip should probably still max at 1 2023-10-09 06:07:23 +00:00
Hiroku ea007d21db Fixed braised vivichokes and vivichoke dip not stacking, closes #560 2023-10-09 06:05:09 +00:00
Paul dc1a035dae Merge remote-tracking branch 'origin/main' into 1.4-fixes-5 2023-10-09 15:12:49 +10:00
Hiroku 71db46d86b Merge branch '1.4-Spawn-Fixes' into 'main'
1.4 spawn fixes

See merge request cable-mc/cobblemon!677
2023-10-09 05:12:13 +00:00
Paul a61b71205b Struck down by licenses again 2023-10-09 14:36:42 +10:00
Paul 63b14aa4ba Fixed pokemon selection GUIs not showing aspects, closes #547 2023-10-09 11:12:42 +10:00
Hiroku fb23e3961c Merge branch '1.4-fixes-4' into 'main'
Fixed animation stacking with cries and battle animations that made Typhlosion horrifying

See merge request cable-mc/cobblemon!675
2023-10-09 00:55:23 +00:00
Paul bdf9606d61 Fixed pasture click sounds not playing / playing when they shouldn't, fixes #404 2023-10-09 10:55:07 +10:00
Paul bf5b03398c Fix fakemon breaking PCs when the addon is removed 2023-10-09 10:41:16 +10:00
Hiroku 3a824b1971 Merge branch 'mongdb-datastore' into 'main'
Implemented MongoDB support for new PlayerData props.

See merge request cable-mc/cobblemon!674
2023-10-09 00:34:44 +00:00
Paul 0bbecc5951 Fixed Ninjask T-posing in battle, closes #555 2023-10-09 10:10:23 +10:00
Paul c60fb253cd Fixed no-fallback texture situations causing crashing, closes #557 2023-10-09 09:59:18 +10:00
navneetset 34240a101a Fixed paddlin' 2023-10-09 01:58:24 +02:00
Paul c6a4db47f4 Fixed animation stacking with cries and battle animations that made Typhlosion horrifying 2023-10-09 09:33:22 +10:00
Hiroku ac2dbde41e Merge branch '1.4-fixes-3' into 'main'
1.4 fixes 3

See merge request cable-mc/cobblemon!673
2023-10-08 23:20:06 +00:00
navneetset b8d19b3c4c Added support for new additional PlayerData props. 2023-10-09 01:10:17 +02:00
MoeBoy76 c2894b4bf1 Fix mixin double up 2023-10-09 09:53:09 +11:00
Paul 747aedca27 Fixed battle tile animations having the zoomies in Forge 2023-10-09 08:45:10 +10:00
Paul 9540bc9394 Fixed Forewarn message being silly 2023-10-09 08:44:59 +10:00
MoeBoy76 8c3958cdf0 Update from main and added fossil structures from Slippy 2023-10-09 09:42:47 +11:00
miasmus a7fed0d042 gen 5 drops, edits for consistency 2023-10-08 18:38:57 -04:00
Paul aedb0755f9 Added sleeping to Mareep line 2023-10-09 08:19:37 +10:00
Paul 23eb10f5ea Fixed sleeping pokemon in the wild never waking up 2023-10-09 08:19:28 +10:00
MoeBoy76 92cb847755 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into sus-archaeology
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
2023-10-09 09:15:05 +11:00
Paul 2c134c5e1b More shoulder effect backcompat (slow falling) 2023-10-09 07:05:40 +10:00
Paul f7f70f14bc Spawning JSON syntax fixes 2023-10-09 06:22:02 +10:00
Paul d3834b0bb7 Merge remote-tracking branch 'origin/main' into 1.4-Spawn-Fixes 2023-10-09 06:04:37 +10:00
Veraxiel 2033240b83 Added missing evo moves for gen 9 and some starters. 2023-10-08 15:49:49 -04:00
Veraxiel 1400505757 Made changes to spawn files, presets, tags, and loot tables. 2023-10-08 14:35:56 -04:00
miasmus 9da0459793 its not bonemeal its bone_meal silly 2023-10-07 20:20:16 -04:00
miasmus 7ac41e2f68 rearrange some json to be more consistent (gen 4) 2023-10-07 20:14:39 -04:00
miasmus e0cdc08cd3 gen 4 drops 2023-10-07 20:14:20 -04:00
Hiroku 438e502a5a Merge branch 'mongdb-datastore' into 'main'
Added MongoDB datastore piggybacking off JSON store. Fixed package typo.

See merge request cable-mc/cobblemon!601
2023-10-08 00:02:00 +00:00
navneetset d7b344cff8 Added to changelog. 2023-10-08 01:47:43 +02:00
Pebbles 249c305474 Merge branch 'main' into 'mongdb-datastore'
# Conflicts:
#   common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
2023-10-07 23:16:29 +00:00
Lily 5b6ed359a3 gen 1, 2, 3, and 7 drops (i spent 4 hours on this :3) 2023-10-07 18:59:12 -04:00
Hiroku d14e16fe5b Merge branch 'battle-builder-fix' into 'main'
Missing returns for SuccessfulBattleStart

See merge request cable-mc/cobblemon!672
2023-10-07 22:45:42 +00:00
Deltric 65dd132081 Missing returns for SuccessfulBattleStart 2023-10-07 17:24:45 -05:00
Paul 54cd0ba700 Updated ru_ru 2023-10-08 07:58:01 +10:00
Hiroku 7f8b241695 Merge branch 'shoulder-back-arm-leg-compat' into 'main'
Added light backwards compatibility for shoulder mount effects

See merge request cable-mc/cobblemon!671
2023-10-07 12:20:54 +00:00
Paul 0b824fe4c1 Added light backwards compatibility for shoulder mount effects 2023-10-07 21:23:02 +10:00
Paul 46b4bfa7ea Updated pt_pt 2023-10-07 20:59:04 +10:00
Hiroku c9fc2ce95d Merge branch 'datapack-fix' into 'main'
Switched to findAllResources instead of findResources

See merge request cable-mc/cobblemon!667
2023-10-07 10:56:21 +00:00
Deltric 91eff015dc Ordered loading alphabetically 2023-10-07 04:03:13 -05:00
Deltric a9c8825b3c Forgot to change method parameters 2023-10-07 03:06:42 -05:00
Hiroku 9d64b0f06a Merge branch 'untradeable-rework' into 'main'
Untradeable rework

See merge request cable-mc/cobblemon!669
2023-10-07 04:10:53 +00:00
Paul f5a308e579 Updated heaps of lang 2023-10-07 13:21:28 +10:00
Deltric 2b3c2358a5 Merge remote-tracking branch 'origin/datapack-fix' into datapack-fix 2023-10-06 22:11:00 -05:00
Deltric a84a2aac58 Progress on resource fix 2023-10-06 22:10:51 -05:00
Deltric fe86d644ad Switched to findAllResources instead of findResources 2023-10-06 22:10:51 -05:00
Deltric 9eb8d5e832 Progress on resource fix 2023-10-06 22:10:07 -05:00
Hiroku 5d2e877176 Merge branch 'berry-with-flywheel' into 'main'
Make berries render with flywheel, improve perf 100x

Closes #444

See merge request cable-mc/cobblemon!665
2023-10-07 03:08:28 +00:00
apion b2b08ac098 Rollback apricorn plank model change (but fr this time) 2023-10-06 22:08:19 -04:00
Lily ae8e4a4f3a gen 1 drops updated 2023-10-06 22:03:52 -04:00
apion e5f0911b83 Rollback apricorn plank model change 2023-10-06 21:52:29 -04:00
Paul e1ae600419 Properly implemented tradeable property in trade GUI 2023-10-07 11:13:59 +10:00
Paul 34315d9f1d Added a bunch of license files 2023-10-07 09:32:58 +10:00
Paul 773cef8e46 Forgot sprout texture 2023-10-07 09:32:25 +10:00
Paul 282a15b1b2 Updated Touga, Coba, Kelpsy, flower, and sprout assets 2023-10-07 09:30:48 +10:00
Hiroku 3b17ad4f54 Merge branch 'leaf-me-alone' into 'main'
Apricorn Leaf Update

See merge request cable-mc/cobblemon!668
2023-10-06 06:57:17 +00:00
dhi_holo 04c5b698c2 New colour, who this?
All the leaves are different again
2023-10-06 16:55:39 +10:00
Paul 123029199c Fixed UV rotations not being applied to berry models 2023-10-06 16:05:38 +10:00
Deltric 8f70bd5eaf Switched to findAllResources instead of findResources 2023-10-06 00:57:55 -05:00
Hiroku 24310d5144 Merge branch 'mulch-fix' into 'main'
Modified mulch code

Closes #550

See merge request cable-mc/cobblemon!666
2023-10-06 03:04:02 +00:00
Deltric b4b5d62632 Modified mulch code 2023-10-05 21:22:36 -05:00
apion d550d775a6 Fix dependency notation for flywheel 2023-10-05 22:05:01 -04:00
apion e572584dbf Remove render caching stuff from BerryBlockEntities 2023-10-05 22:02:03 -04:00
apion 6ac58cf7c2 Added fallback to vanilla renderer 2023-10-05 21:56:04 -04:00
apion e8a1e66658 Merge branch 'main' into berry-with-flywheel 2023-10-05 21:44:55 -04:00
apion 9c67d0ad6f Fixed forge build 2023-10-05 21:42:00 -04:00
apion 0747d08a90 Forge build not working, pushing to compare 2023-10-05 21:17:11 -04:00
apion 299ab3d5f7 Merge branch 'main' into berry-with-flywheel 2023-10-05 21:05:32 -04:00
Hiroku 7e0f48ea54 Merge branch 'main' into 'main'
Update aspects when applying PokemonProperties to a Pokemon or PokemonEntity

See merge request cable-mc/cobblemon!655
2023-10-05 21:06:06 +00:00
Xander Forrest 49a5090903 Merge branch cobblemon:main into main 2023-10-05 17:55:12 +00:00
Xander Forrest 7e0e55d126 Undo setting FormData changes on PokemonProperties 2023-10-05 17:13:10 +01:00
Hiroku f3fa765890 Merge branch 'fix-double-dipping' into 'main'
Items are double consumed

See merge request cable-mc/cobblemon!658
2023-10-05 09:08:31 +00:00
Hiroku a9a91a813a Merge branch 'nickname-fix' into 'main'
Fix nickname updates not applying when returning to species name.

See merge request cable-mc/cobblemon!662
2023-10-05 09:06:27 +00:00
Hiroku 579e48f93c Merge branch 'implement_pokemon' into 'main'
Some more minor fixes for Pokemon.

See merge request cable-mc/cobblemon!661
2023-10-05 09:01:41 +00:00
Hiroku e8520953f6 Merge branch 'sound' into 'main'
Updated the Healing Machine sound

See merge request cable-mc/cobblemon!663
2023-10-05 08:49:06 +00:00
apion 47deb6504b Get flywheel packaged into the fabric built jar, fix some create conflicts 2023-10-04 19:21:58 -04:00
Sterrezo cd0f95169a Merge branch 'main' into sound 2023-10-04 23:58:56 +02:00
Sterrezo a23b37ee47 Updated the Healing Machine sound 2023-10-04 23:57:10 +02:00
Pebbles 370d65284d Merge branch 'main' into 'mongdb-datastore'
# Conflicts:
#   common/src/main/kotlin/com/cobblemon/mod/common/api/storage/factory/FileBackedPokemonStoreFactory.kt
2023-10-04 14:10:01 +00:00
Deltric e2b2ee9031 Remove ignore case from check 2023-10-03 21:04:48 -05:00
Deltric 141b38b81c Fix nickname updates not applying when returning to species name. 2023-10-03 20:59:41 -05:00
Lily f41c2aa0c1 fixed 5 billion typos 2023-10-03 18:46:59 -04:00
tyzillion 87fffe67f5 Made Frogadiers cry not loop, fixed Patrat and Watchog emissives. Fixed Phantumps shiny emissive AGAIN, and fixed shiny phantump texture. 2023-10-03 17:18:42 -04:00
tyzillion 7a13a5a4d1 Updated Garchomp animation tweaks, updated Nidoking texture, updated Nidorino model and animations, Removed Blazing and Ender variants from Vivillon. 2023-10-03 16:58:02 -04:00
Lily 9efc3f1eef gen 8 drops 2023-10-03 18:47:53 +00:00
Lily 8188cabb4f gen 7 drops 2023-10-03 18:23:14 +00:00
Lily b545e01aef gen 6 drops 2023-10-03 18:01:54 +00:00
Lily c34a09430a gen 5 drops 2023-10-03 17:39:38 +00:00
Lily 403acf5822 gen 4 drops 2023-10-03 16:49:30 +00:00
Lily d53c17bc8e gen 3 drops 2023-10-03 15:00:24 +00:00
Lily 7bc9778ce3 gen 2 drops 2023-10-03 14:20:07 +00:00
Paul 57687ffcdb Fixed wild Pokémon not sleeping in the wild 2023-10-03 20:59:51 +10:00
Paul d40e2706c0 Merge remote-tracking branch 'origin/main' 2023-10-03 20:32:50 +10:00
Paul abecc6c74d Fixed light in spawning not being a very good condition at all 2023-10-03 20:32:38 +10:00
Hiroku 709b933661 Merge branch 'store_bug' into 'main'
Fixes an error in the Pokémon list in the BottomlessStore

See merge request cable-mc/cobblemon!659
2023-10-03 10:13:25 +00:00
Hiroku d426d6e843 Merge branch 'untinted-glasses' into 'main'
Updates the Apricorns

See merge request cable-mc/cobblemon!660
2023-10-03 07:31:06 +00:00
dhi_holo 234acf0787 consistency patch
makes stripped and unstripped logs have the same top
2023-10-03 14:37:33 +10:00
dhi_holo b4b0bed36c correction
wrong files lmao
2023-10-03 14:28:03 +10:00
dhi_holo 65f0bfdcd9 Update CobblemonClient.kt
knew I'd miss some random thing about leaf tinting, damn you line 96
2023-10-03 14:19:50 +10:00
dhi_holo f598af314a Fitting In
All the Apricorn Items (plus the Sprout blocks) now have fitting leaves

I also finally fixed the log textures not being updated 🗡️
2023-10-03 14:12:37 +10:00
dhi_holo cef14e938f Updates the Leaves
Leaves now no longer use tinting (commented out the code incase we need to roll it back eventually)
2023-10-03 13:32:53 +10:00
Pedro Souza f53cd87081 Fixed BottomlessStore 2023-10-03 00:26:36 -03:00
Deltric bfc820808f Items are double consumed 2023-10-02 04:20:57 -05:00
Hiroku 57a34e490d Merge branch 'new-tag-syncing' into 'main'
Unbattleable and Hide label spawn packet

See merge request cable-mc/cobblemon!657
2023-10-02 08:10:15 +00:00
Deltric e817496f7e Unbattleable and Hide label spawn packet 2023-10-02 02:47:03 -05:00
Paul 8aea2d5b74 Tweaks to relative berry growth speeds 2023-10-02 15:59:03 +10:00
Paul 47213c3ae4 Fixed growth mulch oops 2023-10-02 15:50:13 +10:00
Paul fc4fed42b5 Added (most of) a spawn rule system for datapacking spawning systems 2023-10-02 15:26:37 +10:00
Hiroku d70fbe70d2 Merge branch 'pd-extension-safety' into 'main'
PD Extension Load Safety

See merge request cable-mc/cobblemon!656
2023-10-02 03:09:48 +00:00
Deltric 3768d4278e Increase Mint grow chance x5 2023-10-01 20:05:15 -05:00
Xander Forrest 6283a0bee0 Merge remote-tracking branch 'origin/main' 2023-10-01 15:48:15 +01:00
Xander Forrest 43a24a9c98 Instead of just setting FormData field on a Pokemon when applying PokemonProperties, apply each aspect of that new Form Data.
When updating the form, get the current form, and remove those aspects first. If not, you can not switch a regional formed Pokemon "back to normal", because there is no "normal" aspect, "normal" form is just the default if the other Form's aspects aren't present.
2023-10-01 15:48:03 +01:00
Xander Forrest d8b401aee0 Merge branch cobblemon:main into main 2023-10-01 14:46:31 +00:00
Hiroku f64e919bf2 Merge branch 'no-more-advancement-for-you' into 'main'
Do more complicated check for level up trigger

Closes #536

See merge request cable-mc/cobblemon!653
2023-10-01 10:07:18 +00:00
Hiroku a727c099ae Slowed mints back down again, just a bit 2023-10-01 04:40:43 +00:00
Hiroku e4ae8fe6dd Merge branch 'rest-fix' into 'main'
fix rest move not updating client-side hp

Closes #539

See merge request cable-mc/cobblemon!654
2023-09-30 22:33:33 +00:00
Xander Forrest c46ab35af0 Update aspects when applying PokemonProperties to a Pokemon or PokemonEntity 2023-09-30 22:50:51 +01:00
miasmus 25bfdb3aa2 fix rest move not updating client-side hp 2023-09-30 17:14:52 -04:00
MoeBoy76 7d5b0c9648 increased complication of level up trigger to fix #536 2023-10-01 07:52:45 +11:00
Hiroku 2ccf49e65c Made mints ~10% rarer in each band 2023-09-30 20:11:37 +00:00
Licious bc12466e09 Merge branch 'more-1.4-fixes' into 'main'
Various bug fixes

Closes #507, #534, #504, #505, and #503

See merge request cable-mc/cobblemon!650
2023-09-30 19:54:55 +00:00
Hiroku 7d03f5f780 Faster mint growth 2023-09-30 05:45:53 +00:00
Hiroku 2eb23f0707 Merge branch 'pp-to-the-max' into 'main'
Update pp_max.json

See merge request cable-mc/cobblemon!651
2023-09-30 04:07:32 +00:00
dhi_holo cbe7626bdc Update pp_max.json
Changes the required berry to Hopo
2023-09-30 14:03:52 +10:00
Paul f83b10643c Added attack knockback attribute to Pokémon, closes #503 2023-09-30 13:23:53 +10:00
Paul 40be5a2060 Fixed most of the berry mulches not working, closes #505 2023-09-30 13:15:37 +10:00
Paul 2b26576a1c Fixed mutations not working woops, closes #504 2023-09-30 12:52:33 +10:00
Paul 48d6f7f707 Fixed pasture block drops and Pokémon not despawning from pastures under regular block break situations, closes #534 2023-09-30 12:29:03 +10:00
Paul ea6bf1fcd1 Make berries take a sec to break instead of being instant 2023-09-30 12:27:27 +10:00
Paul e0ab5e60d0 Fixed pasture and PC drop behaviour 2023-09-30 12:21:42 +10:00
Paul 3d4e941af2 Fixed errors when partying pastured Pokémon 2023-09-30 12:15:52 +10:00
Paul 6aa359d7cc Merge remote-tracking branch 'origin/main' 2023-09-30 10:58:13 +10:00
Hiroku 646fc606d6 Merge branch 'increase-mint-growth' into 'main'
Increase Mint grow chance x5

See merge request cable-mc/cobblemon!649
2023-09-30 00:42:19 +00:00
Deltric 37e9823fe0 Increase Mint grow chance x5 2023-09-29 19:41:17 -05:00
Paul 9cd24e76d2 Fixed party lock relating to switching in PvP battles, closes #507 2023-09-30 09:45:18 +10:00
Paul fb52c1badd Merge remote-tracking branch 'origin/main' 2023-09-30 08:55:42 +10:00
Paul 24126e582b Many crop rarity tweeks 2023-09-30 08:55:28 +10:00
Veraxiel a08ca9c8eb Update apricorns_normal.json 2023-09-29 22:38:21 +00:00
Hiroku 896198eca2 Merge branch 'implement_pokemon' into 'main'
Minor fixes to oversights on Pokemon

Closes #496

See merge request cable-mc/cobblemon!648
2023-09-29 21:44:36 +00:00
tyzillion 38a20c76a1 Made Gallades battle quirk more frequent. Added Garchomps battle idle. Added Floragato's battle cry. 2023-09-29 17:03:33 -04:00
tyzillion 7ac80cb716 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/animations/0497_serperior/serperior.animation.json
#	common/src/main/resources/assets/cobblemon/sounds/pokemon/cofagrigus/cofagrigus_cry.ogg
#	common/src/main/resources/assets/cobblemon/sounds/pokemon/yamask/yamask_cry.ogg
2023-09-29 16:35:24 -04:00
Sterrezo 2a83af5626 Updated audio assets, fixed Serperior missing a cry, fixed Floragato's sound keyframe, changed Gallade's cry to include the quirk 2023-09-29 10:23:50 +02:00
Hiroku 7cc8fd8201 Merge branch 'pasture-block-fixes' into 'main'
Pastured Pokémon fixes

Closes #522 and #520

See merge request cable-mc/cobblemon!646
2023-09-29 07:05:48 +00:00
Deltric 901de0031c Pastured Pokémon fixes 2023-09-29 00:46:21 -05:00
Paul f762ba7425 Fixed healing moves looking like they fully heal opponent Pokémon, closes #528 2023-09-29 14:36:21 +10:00
Hiroku f5b92c11a0 Merge branch 'mint-altitude-tweaks' into 'main'
Altitude placement for mints

See merge request cable-mc/cobblemon!645
2023-09-29 04:16:57 +00:00
Deltric ecc5143ae6 Altitude placement for mints 2023-09-28 22:57:36 -05:00
Hiroku c6a7dcde33 Merge branch 'pokemon-json-fix' into 'main'
Json safety checks for Pokemon loadFromJson

See merge request cable-mc/cobblemon!643
2023-09-29 01:50:03 +00:00
Hiroku 7821801c83 Merge branch '1.4-fixes' into 'main'
1.4 fixes

Closes #525, #521, #514, #518, and #511

See merge request cable-mc/cobblemon!642
2023-09-29 01:30:59 +00:00
Deltric 85f8f971da Json safety checks for Pokemon loadFromJson 2023-09-28 20:28:28 -05:00
Paul 2808e52873 Merge remote-tracking branch 'origin/1.4-fixes' into 1.4-fixes 2023-09-29 10:53:48 +10:00
Paul 69f8d4a306 Tweaked medicinal leek rarity, relates to #513 2023-09-29 10:52:39 +10:00
Paul e7351af2a8 Tweaked sparse berry rarity, relates to #512 2023-09-29 10:50:07 +10:00
Paul 7ad5ee633d Tweaked big root rarity and depth, relates to #510 2023-09-29 10:49:25 +10:00
Paul 742c4c8087 Fixed berries not having the correct generation weights, closes #511 2023-09-29 10:48:11 +10:00
Paul ae41d4ac58 Fixed Forge pasture block issues wherever pasture blocks are near the world center, closes #518 2023-09-29 10:21:53 +10:00
Paul 3f4086fc90 Fixed only one store saving on disconnect, closes #514 2023-09-29 10:08:38 +10:00
Paul 9e993df788 Moved brewing stand mixin to common to fix it not working on servers, closes #521 2023-09-29 08:10:00 +10:00
Paul a389c21b25 Fixed shoulder-mount icon displaying even for non-shoulder-mountable Pokémon, closes #525 2023-09-29 07:59:57 +10:00
Hiroku b20be79ce6 Merge branch 'json-changes' into 'main'
Recipe changes and some spawn fixes

Closes #524

See merge request cable-mc/cobblemon!641
2023-09-28 08:46:22 +00:00
dhi_holoandHiroku 9b05db6c5f Recipe changes and some spawn fixes 2023-09-28 08:46:22 +00:00
Nick f7de61ce71 Merge branch 'tyzillion-main-patch-53704' into 'main'
Update 0_phantump_base.json

See merge request cable-mc/cobblemon!640
2023-09-27 22:10:00 +00:00
Tyzillion 9811390573 Update 0_phantump_base.json 2023-09-27 21:49:51 +00:00
Nick 11e7d193fb Merge branch 'arclight-incompat-fix' into 'main'
Fix Arclight incompat

See merge request cable-mc/cobblemon!639
2023-09-27 00:12:05 +00:00
Neovitalism 3e2788b789 Fix Arclight incompat 2023-09-26 19:31:20 -04:00
Hiroku bda999e1fd Merge branch 'small-changelog-fix' into 'main'
Update CHANGELOG.md - fixed typos and added two missing pokemon

See merge request cable-mc/cobblemon!638
2023-09-26 20:21:42 +00:00
Lily e249a96749 Update CHANGELOG.md - fixed typos and added two missing pokemon 2023-09-26 14:38:42 +00:00
Paul 2078108ea7 Fixed aspear berry behaving weirdly when harvested from above 2023-09-26 18:23:25 +10:00
Hiroku ddb24e9621 Merge branch '1.4-Spawns' into 'main'
Updated spawn files.

See merge request cable-mc/cobblemon!633
2023-09-26 08:08:03 +00:00
TyzillionandHiroku b07795e547 Updated spawn files. 2023-09-26 08:08:03 +00:00
miasmus 7e63cd9c1d adds drops for sneasels, fixes #496 2023-09-25 19:32:09 -04:00
Nick 8680f2ade0 Merge branch 'implement_pokemon' into 'main'
Final merge on Pokémon Implementation for 1.4!

See merge request cable-mc/cobblemon!637
2023-09-25 17:33:41 +00:00
TyzillionandNick 5679d4dc05 Final merge on Pokémon Implementation for 1.4! 2023-09-25 17:33:41 +00:00
tyzillion 980c0d4c37 Made Gallade's battle quirk not overlay on battle idle. 2023-09-25 09:24:36 -04:00
tyzillion 50f1abd47e Adjusted Sprigatito ui frames and fixed Oinkologne's gender differences not working. 2023-09-24 13:05:38 -04:00
tyzillion a555ac8e6d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-23 23:57:13 -04:00
Veraxiel 96d2b322a3 Update is_dense.json 2023-09-24 03:04:30 +00:00
Veraxiel 7bae99468b Update is_sparse.json 2023-09-24 03:04:26 +00:00
Veraxiel 8b99cfe98d Update is_dense.json 2023-09-24 01:52:15 +00:00
Veraxiel ac6eb38152 Update is_sparse.json 2023-09-24 01:52:12 +00:00
Paul 1621910428 Merge remote-tracking branch 'origin/main' 2023-09-24 11:45:50 +10:00
Paul b74037afb6 Fixed incompatibility crash with Pixelmon Reforged 2023-09-24 11:45:39 +10:00
Veraxiel 753bfa6936 Update is_sparse.json 2023-09-24 01:32:55 +00:00
Hiroku 53d575b1c4 Merge branch 'some-api-utilities' into 'main'
Add some API utilities

See merge request cable-mc/cobblemon!636
2023-09-23 23:57:48 +00:00
Paul 97e90a87c1 Rework density tags to be sparse and dense 2023-09-24 09:13:14 +10:00
Neovitalism a72525cf65 Add some API utilities 2023-09-23 18:38:06 -04:00
Paul 07e487e0cd Further further rarity tweaking for berries 2023-09-23 21:07:38 +10:00
Hiroku bcf3fe1dc6 Merge branch 'battle-advancer' into 'main'
Battle Victory Advancement fix and tweaks

Closes #470

See merge request cable-mc/cobblemon!635
2023-09-23 08:01:16 +00:00
MoeBoy76andHiroku 8d5d567153 Battle Victory Advancement fix and tweaks 2023-09-23 08:01:15 +00:00
Paul 0643bc8d58 Merge remote-tracking branch 'origin/main' 2023-09-23 13:29:06 +10:00
Paul 1c6633bfdc Further rarity tweaking for berries 2023-09-23 13:28:52 +10:00
Hiroku f876c5f6c8 Merge branch 'persistence-and-extra-flags' into 'main'
Implement persistence on Pokemon and flags for hide label and unbattleable.

See merge request cable-mc/cobblemon!634
2023-09-23 03:19:40 +00:00
Deltric 99744af491 Implement persistence on Pokemon and flags for hide label and unbattleable. 2023-09-21 21:06:51 -05:00
Paul 9f2a4261f0 Fixed jump keyframes using smooth interpolation 2023-09-22 11:07:26 +10:00
Paul 1b6b0524e8 Merge remote-tracking branch 'origin/main' into implement_pokemon 2023-09-22 10:39:49 +10:00
Paul 5f740b1c58 Merge branch 'main' into berry-with-flywheel
# Conflicts:
#	gradle/libs.versions.yml
2023-09-22 10:07:53 +10:00
Paul 0cd79c6c8f Updated fabric-api to 0.89.0 2023-09-22 10:07:27 +10:00
tyzillion f5e492a6ce Fixed Diggersby UI's, Fixed Sprigatito shiny, Make Boltunds cry not loop, and Made Pidgeotto's look animation us neck. 2023-09-21 19:45:13 -04:00
tyzillion c8c1677182 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-21 17:23:57 -04:00
tyzillion 8431e25c31 Fixed error that caused build to fail. 2023-09-21 17:02:37 -04:00
tyzillion 121f7c6a9a Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-21 17:02:19 -04:00
Hiroku 37f508793d Merge branch 'sound' into 'main'
Probably final iteration of Pokeball sounds

See merge request cable-mc/cobblemon!632
2023-09-21 20:01:53 +00:00
SterrezoandHiroku 5807e4526e Probably final iteration of Pokeball sounds 2023-09-21 20:01:53 +00:00
Licious 63a42edb7f Merge branch 'more-crop-gen-fixes' into 'main'
Many crop fixes

Closes #476, #494, and #495

See merge request cable-mc/cobblemon!629
2023-09-21 19:43:23 +00:00
tyzillion c523408fe0 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-21 14:32:30 -04:00
Paul 7baf8e079d Improve medicinal leek anti-beach from Miasmus 2023-09-21 18:39:11 +10:00
Hiroku 88105e070b Merge branch 'this-is-just-your-nature' into 'main'
Fixed mints not visually changing stats

See merge request cable-mc/cobblemon!630
2023-09-21 07:54:29 +00:00
tyzillion cef0ad7efa Forgot to update Cetitan animation. 2023-09-21 02:15:33 -04:00
tyzillion 592ead6674 Misc Fixes 2023-09-21 02:13:10 -04:00
Paul 98556c1b24 Made medicinal leeks substantially rarer 2023-09-20 20:29:26 +10:00
Paul 137f080ba9 Fixed mints not visually changing stats 2023-09-20 20:27:50 +10:00
Paul 4f3601ab3b Added beach exclusion to medicinal leeks 2023-09-20 20:15:26 +10:00
Paul e523c46594 Improve rarity of generating big roots and only generate them with good space (and not water) 2023-09-20 20:10:14 +10:00
Paul 251ebe2a37 Improve berry generation in jungles by being able to replace leaves with them 2023-09-20 20:09:45 +10:00
Paul 12191b5d96 Fixed big roots not generating from stone 2023-09-20 20:09:24 +10:00
Paul 4da74f0bfb Fixed issues with wild berries not generating berries if spawned at mature age, reworked growth point timing 2023-09-20 20:09:11 +10:00
Paul b893681af5 Made berry groves rarer again 2023-09-20 20:08:34 +10:00
tyzillion eb159d0702 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-19 18:55:25 -04:00
Veraxiel d47197ab3b Updated spawn files. Added spawn compat for William Wythers' Overhauled Overworld. 2023-09-19 18:26:41 -04:00
Paul 64a2b9c60f Updated berry data because a bunch of positions were missing 2023-09-19 20:25:11 +10:00
tyzillion b4585cabd4 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-09-18 16:45:16 -04:00
tyzillion dd15de6e94 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-18 16:45:07 -04:00
Paul c5dab7208f License and registration, please 2023-09-18 18:46:29 +10:00
Paul 4a5d53a020 More fixes to Flywheel implementation, it renders all the berries correctly! 2023-09-18 18:45:04 +10:00
Paul cc163b73e1 Many fixes for flywheel 2023-09-18 15:51:25 +10:00
Sterrezo d1682b78c6 I didn't break anything
Accidentally removed a line for Mimikyu's shoulder mount last commit, readding it.
2023-09-17 11:39:11 +02:00
Sterrezo 52827c3be6 Documented all new cries in the changelog 2023-09-17 11:31:48 +02:00
Nick 23e2d56db4 Merge branch 'root-and-herb-fixes' into 'main'
Root and herb fixes

See merge request cable-mc/cobblemon!628
2023-09-17 06:58:52 +00:00
Hiroku 3451a70cfd Micro-optimized at Nick's request 2023-09-17 05:39:27 +00:00
tyzillion 3869fc590d Fixed Meowscarada spawning everywhere. 2023-09-16 20:33:09 -04:00
tyzillion ba4f4c8137 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-16 20:32:15 -04:00
Paul 7f372c1f16 Merge remote-tracking branch 'origin/main' into berry-with-flywheel 2023-09-17 10:09:07 +10:00
tyzillion 4624e7cab2 Gave long boi Exeggutor a proper hit box. 2023-09-16 19:08:19 -04:00
Paul 967053824b Made revival herbs rarer 2023-09-17 09:04:33 +10:00
tyzillion 95bc331dc9 Updated Changelog with Pokemon in previous versions that got a cry. 2023-09-16 19:04:23 -04:00
Paul 3c3ef6a387 Fixed roots being able to spread forever 2023-09-17 09:04:14 +10:00
Paul 309de12a0e Fixed big roots being too rare 2023-09-17 09:03:52 +10:00
tyzillion 90b22316cb Combee flys when walking, adjusted Exegguttor and Exeggcute sizes. Updated Shulker Forretress texture. 2023-09-16 18:56:41 -04:00
tyzillion dc1aec75ba Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-16 18:56:23 -04:00
tyzillion f60b3f1f4f Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-09-16 18:56:00 -04:00
Paul 3e118dcca6 Reworking flywheel impl 2023-09-17 06:47:35 +10:00
Sterrezo 12aac4f52d Implemented 13 new cries , updated 9
Added cries to Hoothoot, Noctowl, Aipom, Shroomish, Breloom, Ambipom, Chingling, Yamask, Cofagrigus, Nickit, Thievul
2023-09-16 14:04:26 +02:00
Hiroku 9b1699b507 Merge branch 'discovered-advanced-typoment' into 'main'
Update catch_all_vivillon.json

See merge request cable-mc/cobblemon!627
2023-09-16 00:29:53 +00:00
dhi_holoandHiroku f0cf94b830 Update catch_all_vivillon.json 2023-09-16 00:29:52 +00:00
Nick ddab45148c Merge branch 'mod-compat' into 'main'
Mod compat

See merge request cable-mc/cobblemon!626
2023-09-15 23:30:13 +00:00
HirokuandNick 2a23c77da7 Mod compat 2023-09-15 23:30:12 +00:00
tyzillion 97625d2750 Fixed Bergmite and Avalugg spawns. 2023-09-15 13:50:18 -04:00
tyzillion ef600fda79 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-15 13:33:52 -04:00
navneetset bd6364deac Removed pretty printing for MongoDB Gson. 2023-09-15 19:00:40 +02:00
navneetset 1fbdf1fce1 Fixed single save not picking up dirtyStore other than first one. 2023-09-15 19:00:24 +02:00
navneetset 6060013110 Merge branch 'mongdb-datastore' of https://gitlab.com/navneetset/cobblemon-peb-fork into mongdb-datastore 2023-09-15 18:56:51 +02:00
navneetset 755cf731f0 Fix dumb rebasing I did to merge main, add back previous implementation. 2023-09-15 18:55:54 +02:00
navneetset 6246af2979 Added MongoDB support for Cobblemon playerdata. 2023-09-15 18:55:54 +02:00
navneetset 6b27f13396 Added MongoDB datastore piggybacking off JSON store. Fixed package typo. 2023-09-15 18:55:54 +02:00
Hiroku 9a4fcb15b2 Merge branch 'mint-generation' into 'main'
Fixed mint generation

See merge request cable-mc/cobblemon!625
2023-09-15 11:49:27 +00:00
Paul 07bb57c009 Buffed mints spawning 2023-09-15 21:30:08 +10:00
Paul 2934e38077 Fixed mints not generating 2023-09-15 20:32:31 +10:00
Hiroku d60592b5e4 Merge branch 'berry-gen-fixes' into 'main'
Fixed berries generating midair or where water was, fixed snowy grass blocks...

Closes #478

See merge request cable-mc/cobblemon!624
2023-09-15 08:36:12 +00:00
apion f563f69afd Fixing rotations 2023-09-15 02:45:21 -04:00
tyzillion 354914105e Merge remote-tracking branch 'origin/1.4-Spawns' into 1.4-Spawns 2023-09-15 00:01:03 -04:00
tyzillion b154b6de64 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-14 23:53:17 -04:00
Paul 66e1f621cf Fixed berries generating midair or where water was, fixed snowy grass blocks with berries on them, made berries rarer. Closes #478 2023-09-15 13:52:46 +10:00
tyzillion 7d55d52608 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-14 23:52:24 -04:00
Hiroku 63d84df283 Merge branch 'implement_pokemon' into 'main'
Last of Pokémon Implemented.

See merge request cable-mc/cobblemon!623
2023-09-15 03:49:07 +00:00
TyzillionandHiroku 94400e61f5 Last of Pokémon Implemented. 2023-09-15 03:49:07 +00:00
tyzillion ce337e8fff Beldum line can fly, Updated Bunnelby and Sprigatito model, updated onix animation. Updated Trevenants and Vivillon textures. 2023-09-14 21:16:44 -04:00
apion 72b6f46c4b Merge branch 'main' into berry-with-flywheel 2023-09-14 21:04:28 -04:00
Veraxiel 547af6dd77 Fixed spawn files. 2023-09-14 21:02:10 -04:00
tyzillion 70119478a5 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-14 20:14:22 -04:00
Hiroku 029e120b2c Merge branch '1-point-4-bug-fixes' into 'main'
Some bug fixes

Closes #456 and #481

See merge request cable-mc/cobblemon!622
2023-09-15 00:05:53 +00:00
MiaandHiroku 7a305792af Some bug fixes 2023-09-15 00:05:53 +00:00
Nick 06ed32e4cb Merge branch 'issue-484' into 'main'
Fixes issue #484 (this is what you get for using regexes Hiroku)

Closes #484

See merge request cable-mc/cobblemon!621
2023-09-13 20:16:10 +00:00
apion ee63bf0eab Fixes issue #484 (this is what you get for using regexes Hiroku) 2023-09-13 15:54:18 -04:00
Hiroku 48a4add7aa Merge branch 'berry' into 'main'
Berry hitboxes, berry reordering

Closes #444 and #428

See merge request cable-mc/cobblemon!617
2023-09-12 11:34:28 +00:00
Paul dc8d7e36e0 Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/block/BerryBlock.kt
2023-09-12 20:52:23 +10:00
Paul 1c1a683f2d Fixed exploding pasture blocks crashing servers on Forge, closes #472 2023-09-12 20:36:35 +10:00
Paul 0ee4f60391 Fixed bad registration of processor types on Forge 2023-09-12 20:26:52 +10:00
Paul 4a7893f647 Fixed species.create not working for some species with weird names, added /clearpc command 2023-09-12 19:51:12 +10:00
Paul 76890135ef Fixed many items not being possible to give to pokemon by shift rc 2023-09-12 18:48:12 +10:00
Hiroku 930f95d3b6 Merge branch 'sound' into 'main'
Sound updates and consistency fixes

See merge request cable-mc/cobblemon!619
2023-09-12 07:49:54 +00:00
SterrezoandHiroku 0c15d14f1a Sound updates and consistency fixes 2023-09-12 07:49:54 +00:00
Hiroku a2bb0fb3cd Merge branch '1-point-4-bug-fixes' into 'main'
1.4 Bug Fixes

Closes #471, #455, #385, #445, #456, and #463

See merge request cable-mc/cobblemon!620
2023-09-12 07:49:14 +00:00
miasmus a97753c339 add block break particles to mulch removal 2023-09-11 22:48:47 -04:00
miasmus 557dda4c1d holy crap im so smrat (fixes harvesting berries with bonemeal in hand not playing interact anim) 2023-09-11 22:03:25 -04:00
miasmus 944fdf7c0c no one told me to test before pushing to main 2023-09-11 17:06:33 -04:00
tyzillion 10b2aecc12 Updated Floragato mode and Meowscarada model. Fixed Volbeat and Illumise taking baths in water. 2023-09-11 17:06:23 -04:00
tyzillion 565d38f085 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation1/pikachu.json
2023-09-11 17:06:01 -04:00
miasmus ada8bc9403 Merge main into 1-point-4-bug-fixes 2023-09-11 16:56:03 -04:00
Paul 2d3d245b03 Fix pikachu evolution properly apparently and fix Nincada -> Shedinja direct evo being a thing 2023-09-11 19:57:03 +10:00
Veraxiel 9adeb60abe Updated spawn files. 2023-09-11 04:35:58 -04:00
Paul 6c91342954 Licenses mf, do you speak it? 2023-09-11 17:45:52 +10:00
Hiroku 98b84d853c Merge branch 'screw-mark-removed' into 'main'
markRemoved bad, PreEmptsExplosion good

See merge request cable-mc/cobblemon!618
2023-09-11 06:55:45 +00:00
NeovitalismandHiroku 83ee5f3c3d markRemoved bad, PreEmptsExplosion good 2023-09-11 06:55:45 +00:00
Paul 137088296e Merge remote-tracking branch 'origin/main' into berry 2023-09-11 16:50:42 +10:00
Paul e748059052 Basic protections against blocks being switched underneath a pasture BE's nose 2023-09-11 15:15:35 +10:00
tyzillion d748241727 Fixed names on spawn files. 2023-09-11 01:06:11 -04:00
Paul f515a2ef72 Merge remote-tracking branch 'origin/main' into berry 2023-09-11 14:45:37 +10:00
Paul 0c9017d5e2 Merge remote-tracking branch 'origin/berry' into berry 2023-09-11 14:44:57 +10:00
Paul fd12789791 Colliders for all the berry trees 2023-09-11 14:44:38 +10:00
Hiroku 638c92ec4c Merge branch 'starter-ball' into 'main'
Chested Balls

Closes #461

See merge request cable-mc/cobblemon!616
2023-09-11 04:26:17 +00:00
dhi_holoandHiroku bee865931a Chested Balls 2023-09-11 04:26:16 +00:00
Veraxiel 77ee8b1743 Merge branch '1.4-Spawns' of https://gitlab.com/cable-mc/pokemon-cobbled into 1.4-Spawns 2023-09-10 21:21:16 -04:00
Veraxiel 5eef45b49a Fixed structure names in presets and spawns. 2023-09-10 21:21:03 -04:00
tyzillion 79f7dd1519 Funny liscense moment. 2023-09-10 19:35:50 -04:00
tyzillion 919dec6809 Fixed json loading error. 2023-09-10 19:02:20 -04:00
tyzillion f00f73491d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-10 18:58:05 -04:00
tyzillion c7cf73812c Added spawns for many new pokemon, added biome based evos to Spewpa, and fixed issues. 2023-09-10 18:56:28 -04:00
tyzillion 80fbab35dc Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.4-Spawns 2023-09-10 15:14:56 -04:00
miasmus ad039cb949 re-order berries, fixes #428 2023-09-10 12:16:26 -04:00
miasmus 0436b36872 partially heal PP when sleeping (fixes #463) 2023-09-10 11:58:42 -04:00
navneetset 9f60ce51c7 Fix dumb rebasing I did to merge main, add back previous implementation. 2023-09-10 14:17:12 +02:00
navneetset 343e13d1ac Added MongoDB support for Cobblemon playerdata. 2023-09-10 14:10:38 +02:00
navneetset ca175ab164 Added MongoDB datastore piggybacking off JSON store. Fixed package typo. 2023-09-10 14:09:03 +02:00
Hiroku 8a62088fb4 Merge branch 'battle_gimmicks' into 'main'
Mega Evolution, Z-Moves, Dynamax, and Terastallization

See merge request cable-mc/cobblemon!572
2023-09-10 09:54:30 +00:00
Segfault GuyandHiroku 7e2bb0ca6a Mega Evolution, Z-Moves, Dynamax, and Terastallization 2023-09-10 09:54:29 +00:00
tyzillion ebad166b12 Tweaked Emissives on Gengar, Fixed Quilava cries, Fixed Braixen emissive pixel. 2023-09-10 04:34:04 -04:00
tyzillion 92f5fd7cd6 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-10 04:33:30 -04:00
Veraxiel 507319fa0f Added new presets and biome tags. Updated presets and biome tags. Updated spawn files. 2023-09-10 04:12:10 -04:00
Paul 228347e46f Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/java/com/cobblemon/mod/common/mixin/StructurePoolGeneratorMixin.java
#	common/src/main/kotlin/com/cobblemon/mod/common/world/CobblemonStructures.kt
2023-09-10 16:20:04 +10:00
Paul 3a2c12c652 Fixed displayName in spawn files not working properly. Closes #320 2023-09-10 15:11:45 +10:00
Paul a6945adf5a Added optional 'enabled' property to model layers so that they can be disabled later in resolver variations. Closes #373 2023-09-10 15:08:17 +10:00
Paul 295e68b0d5 Poison Heal Pokémon will heal if poisoned out of battle. Closes #373 2023-09-10 14:43:29 +10:00
Paul be983f6115 Fixed an apparently unsafe cast to client world for Litematica, closes #375 2023-09-10 14:27:56 +10:00
Paul 6eeda04b78 Fixed reused models from multiple posers causing rotation problems, closes #414 2023-09-10 14:26:58 +10:00
Paul c03097e627 Fixed quirks being idle-preventing from resource packs, closes #429 and closes #419 2023-09-10 14:14:35 +10:00
tyzillion 163e17fb3f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-09 22:48:45 -04:00
Paul a330f95559 Improve sneaking positioning of shoulder mounts 2023-09-10 11:12:53 +10:00
Paul 25d7c8376e Fixed shoulder mount animations being a blur 2023-09-10 11:05:50 +10:00
Paul bc93bae9ab Check the form during readfromnbt/json 2023-09-10 11:01:32 +10:00
Paul 4f9ca14301 Fixed evolutions being blank for forms that rely on root-species evos 2023-09-10 11:01:12 +10:00
Paul b9515a2a81 Fixed more nicknaming glitches 2023-09-10 11:00:54 +10:00
miasmus 6200e3a693 update changelog 2023-09-09 19:35:12 -04:00
miasmus 290f3e2845 adjusted steelix and dragalge hitboxes 2023-09-09 19:30:56 -04:00
miasmus 516e3c4cd9 fix typhlosion/quilava cry anim playing during battle idle 2023-09-09 19:10:38 -04:00
miasmus e419030339 pokemon that can fly will not fall to their deaths 2023-09-09 18:45:54 -04:00
Paul 7675148d37 Fixed inconsistency with sending out tracing 2023-09-10 08:45:42 +10:00
tyzillion fe739cd644 Meganium and Galarian Meowth crash fixed. Updated hitboxes and frames for the last set of Pokemon implemented. 2023-09-09 18:23:14 -04:00
tyzillion dd5e9c08aa Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-09 18:22:48 -04:00
miasmus 03b29ce468 fix leeks, for real this time (fixes #456) 2023-09-09 18:18:53 -04:00
Paul d2668a15b0 Grouped structure maximums and limited berry farms to 2 total per village 2023-09-10 08:05:21 +10:00
miasmus d9a99ad65b Fix players being able to battle/trade in spectator mode 2023-09-09 17:42:41 -04:00
miasmus 0fc9d29884 fix leeks generating on ice 2023-09-09 17:16:39 -04:00
Hiroku f500ab4a87 Merge branch 'berry' into 'main'
Reworked berry generation in villages using their own structures, rarity & gen fixes

Closes #444

See merge request cable-mc/cobblemon!615
2023-09-09 20:55:30 +00:00
Hiroku 19a85276af Reworked berry generation in villages using their own structures, rarity & gen fixes 2023-09-09 20:55:30 +00:00
tyzillion 70c2404b20 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-09 16:01:43 -04:00
Paul 27a4b3b6f4 Reworked berry generation in villages using their own structures 2023-09-09 20:28:42 +10:00
Paul 5df79f083a Fixed wild berry trees being still too common and surviving on air 2023-09-09 20:26:28 +10:00
Paul 1501c3689a Merge remote-tracking branch 'origin/main' into berry 2023-09-09 19:20:44 +10:00
Hiroku 277ec8ffcd Merge branch 'lootchestplate' into 'main'
chestlootplate

See merge request cable-mc/cobblemon!614
2023-09-09 02:52:19 +00:00
dhi_holoandHiroku c7b82adfb0 chestlootplate 2023-09-09 02:52:19 +00:00
tyzillion fb56430213 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-08 19:05:26 -04:00
tyzillion 083b439049 Fixes, Frames, and Hitboxes. Fixed Gengar texture. 2023-09-08 19:05:02 -04:00
Paul 98e495f7e4 Merge remote-tracking branch 'origin/main' into berry 2023-09-09 08:53:50 +10:00
Paul 508e607440 Merge remote-tracking branch 'origin/main' 2023-09-09 08:48:38 +10:00
Paul ab69588331 Flying AI improvements 2023-09-09 08:48:26 +10:00
apion a8ac109a50 Allowed for the use of existing berry models in flywheel optimizations 2023-09-08 18:34:51 -04:00
tyzillion 1813baaa6f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-08 16:04:21 -04:00
tyzillion 5b5171b9bc Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-09-08 16:04:09 -04:00
Hiroku b912e8cbca Merge branch 'berry' into 'main'
Berry fixes including mulch visibility

Closes #444

See merge request cable-mc/cobblemon!613
2023-09-08 19:55:32 +00:00
Hiroku cc2eaf6c1a Berry fixes including mulch visibility 2023-09-08 19:55:32 +00:00
apion fbe31f3232 Try rendering berry trees with flywheel 2023-09-08 11:52:18 -04:00
Sterrezo b530af1ff6 Added missing placeholder assets to Exeggutor to prevent an error in the log 2023-09-08 12:47:13 +02:00
Paul a608cbe0fe Merge conflicty stuff 2023-09-08 19:46:18 +10:00
Paul a4ed9393f0 Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/block/BerryBlock.kt
2023-09-08 19:46:05 +10:00
Paul f294d4fcef Fixed berry juice, energy root, heal powder, potions, and status cure items not being consumed when used outside of battle 2023-09-08 19:43:12 +10:00
Paul 6046ca10d0 Merge remote-tracking branch 'origin/berry' into berry 2023-09-08 19:39:09 +10:00
Paul d24371b9e4 Added mulch visibility for berry trees, and fixed surprise mulch on revival herbs 2023-09-08 19:37:18 +10:00
Hiroku 645d84858e Merge branch 'unloaded-pasture-fix' into 'main'
Fix removing pokemon from an unloaded pasture

See merge request cable-mc/cobblemon!612
2023-09-08 08:09:13 +00:00
NeovitalismandHiroku 04ecd3d976 Fix removing pokemon from an unloaded pasture 2023-09-08 08:09:13 +00:00
Paul c02fe8a00c Fixed hand not swinging when applying mulch 2023-09-08 16:33:28 +10:00
Hiroku 008e42a267 Merge branch 'berry' into 'main'
Latest Berry Updates

Closes #444

See merge request cable-mc/cobblemon!606
2023-09-08 06:29:28 +00:00
NickandHiroku 316ab772bf Latest Berry Updates 2023-09-08 06:29:28 +00:00
Hiroku bca4b06750 Should return pass not fail for isSneaking interaction check 2023-09-08 06:29:04 +00:00
Hiroku dea1d74e40 Merge branch 'fix-battle-particle-misrendering' into 'main'
Fix Issues Related to RenderContext Changes

See merge request cable-mc/cobblemon!611
2023-09-08 05:30:17 +00:00
NickandHiroku 12f1259495 Fix Issues Related to RenderContext Changes 2023-09-08 05:30:17 +00:00
Lily cc30f4f207 fix sneaking checks when using items on pokemon 2023-09-08 00:51:27 -04:00
Hiroku 775a2038d0 Merge branch 'shiny_starters_gamerule' into 'main'
add shiny starters gamerule

See merge request cable-mc/cobblemon!557
2023-09-08 04:51:07 +00:00
LilyandHiroku 1dc8ae036f add shiny starters gamerule 2023-09-08 04:51:07 +00:00
Paul 0011993afb Fixed wiki berry pivot 2023-09-08 13:59:49 +10:00
Hiroku 1ef22ad52a Merge branch 'pokemon-item-tint' into 'main'
Added in tint nbt for Pokemon items

See merge request cable-mc/cobblemon!608
2023-09-08 03:16:33 +00:00
Hiroku e8030c0180 Merge branch 'fix_446' into 'main'
Fix Drag Dispatch.

Closes #446

See merge request cable-mc/cobblemon!610
2023-09-08 03:16:24 +00:00
Segfault Guy e929f6f02d Fix Drag Dispatch. 2023-09-07 22:56:22 -04:00
tyzillion 8ec91f7a40 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-07 21:28:01 -04:00
apion 41b9411d06 Merge branch 'berry' into berry-perf-improvements
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/block/entity/BerryBlockEntity.kt
2023-09-07 21:17:12 -04:00
Deltric 9518422f62 Added in tint nbt for Pokemon items 2023-09-07 20:17:12 -05:00
Lily 4c03891f19 berry grove trees now only spawn at age 3 or higher ( Closes #445 ) 2023-09-07 21:16:13 -04:00
Hiroku 52a3bf50d0 Merge branch 'armor-sprites' into 'main'
updated sprites for auspicious and malicious armor + clarified what a renderable pokemon is

See merge request cable-mc/cobblemon!607
2023-09-08 00:52:28 +00:00
LilyandHiroku c1657b5772 updated sprites for auspicious and malicious armor + clarified what a renderable pokemon is 2023-09-08 00:52:28 +00:00
Lily e57c9487ca prevent berry groves from replacing water blocks 2023-09-07 20:13:36 -04:00
miasmus 7e583d6319 fix itemgroup, add descriptions for 96 pokemon, fixes #455 2023-09-07 19:49:00 -04:00
Paul 11256c0e3a Fixed berry flowers not rendering 2023-09-08 09:41:34 +10:00
Paul ffb53626eb Only allow mulching berry trees that are pre-flowering and are on farmland 2023-09-08 09:27:34 +10:00
Paul a74671f710 Re-delete unused mixin [skip-ci] 2023-09-08 09:09:25 +10:00
Hiroku 04d83251b4 Merge branch 'evolution-changes-&-fixes' into 'main'
Evolution changes & fixes

Closes #287, #386, and #398

See merge request cable-mc/cobblemon!582
2023-09-07 23:04:40 +00:00
LiciousandHiroku bece6dfbb0 Evolution changes & fixes 2023-09-07 23:04:40 +00:00
miasmus 5e5cb4e388 no more pokemon waterboarding (fixes #385) 2023-09-07 18:02:01 -04:00
Hiroku 8f9dc451f1 Merge branch 'a-guide-to-1-point-4' into 'main'
Advancements (from hell)

See merge request cable-mc/cobblemon!543
2023-09-07 21:48:19 +00:00
dhi_holoandHiroku ffb1c94c3f Advancements (from hell) 2023-09-07 21:48:19 +00:00
Lily d9b2f0cef8 Merge remote-tracking branch 'origin/berry' into berry 2023-09-07 17:18:20 -04:00
Lily 458fa1732c make berry groves 3x rarer 2023-09-07 17:17:38 -04:00
tyzillion 3040eee59c Updated Gengar, Readded Shulker Forretress, Updated Doduo shiny texture, Updated Serperior textures. 2023-09-06 21:54:51 -04:00
miasmus 23e532a214 fixed compile errors from merge 2023-09-06 16:53:57 -04:00
Nick 70f1e5e621 Fix conflicts between main and berry branch 2023-09-06 17:12:04 +00:00
apion 10033be4b5 Actually fix flower models 2023-09-06 11:19:54 -04:00
apion 914067038a Fix forge client, fix flower models 2023-09-06 11:13:28 -04:00
miasmusandapion bf9f08826b Fixes #444 (some berries not consumed on use outside of battle) 2023-09-06 10:50:07 -04:00
ApionXDandapion da27b80e82 Fixed bug where tall grass wouldn't be deleted when a berry tree replaced its lower block 2023-09-06 10:50:07 -04:00
miasmusandapion e6c9c7798e Adds other crops to maintains_farmland tag 2023-09-06 10:50:07 -04:00
miasmusandapion d0b7b956e8 Adds a #cobblemon:berry tag with all the berry blocks, adds them to the #maintains_farmland tag 2023-09-06 10:50:07 -04:00
Lilyandapion 0301064ed5 added missing particles for figy, micle, passho, starf, and wacan berries 2023-09-06 10:50:06 -04:00
Lilyandapion b8595f8d59 prevent player from interacting with pokemon when sneaking 2023-09-06 10:50:06 -04:00
tyzillion d120c8e031 Readded Phantump and Trevenants Emissives. License moment 🤙 2023-09-06 00:22:32 -04:00
tyzillion aa91b5b20b Misc Fixes, Many walk speeds modified, Removed Shulker Forretress and Minecraft tree variants of Phantump and Trevenant. 2023-09-05 23:58:16 -04:00
tyzillion 84dfaa0a77 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-05 23:57:23 -04:00
Nick 1e8ae04ad5 Merge branch 'gui-model-hook' into 'main'
Add reference to previously polled species name and aspects.

See merge request cable-mc/cobblemon!594
2023-09-06 03:00:38 +00:00
WaterpickerandNick 0cfa7bf61d Add reference to previously polled species name and aspects. 2023-09-06 03:00:37 +00:00
tyzillion 9987c0c13f Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-09-05 16:45:37 -04:00
miasmus 99a88e66e7 Fixes #444 (some berries not consumed on use outside of battle) 2023-09-05 16:07:59 -04:00
Sterrezo b7a3e276f1 Implemented 82 cries
I'm gonna lie down
2023-09-05 20:14:40 +02:00
ApionXD 0240f925f6 Fixed bug where tall grass wouldn't be deleted when a berry tree replaced its lower block 2023-09-05 10:32:12 -04:00
tyzillion d9774272ce Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-09-05 09:10:58 -04:00
Hiroku aa2532df6f Merge branch 'x-treme-crafting' into 'main'
X-Item Recipes

See merge request cable-mc/cobblemon!604
2023-09-05 11:52:28 +00:00
dhi_holoandHiroku 0c14e5dedc X-Item Recipes 2023-09-05 11:52:28 +00:00
Hiroku 62248ff97c Merge branch 'long_lost_logs' into 'main'
Oops! Forgot to update the changelogs. No one cares about these, right?

See merge request cable-mc/cobblemon!603
2023-09-05 10:54:13 +00:00
Segfault GuyandHiroku 17343abce2 Oops! Forgot to update the changelogs. No one cares about these, right? 2023-09-05 10:54:13 +00:00
Hiroku 0ff73d0c21 Merge branch 'auspicious_armor' into 'main'
adds auspicious and malicious armor, equipping functionality is in the earlier...

Closes #436

See merge request cable-mc/cobblemon!602
2023-09-05 09:56:57 +00:00
LilyandHiroku 77da1f8252 adds auspicious and malicious armor, equipping functionality is in the earlier... 2023-09-05 09:56:57 +00:00
Hiroku 18301300aa Merge branch 'implement_pokemon' into 'main'
So so so many Pokemon implemented and models, animations, and textures updated

See merge request cable-mc/cobblemon!600
2023-09-05 08:59:10 +00:00
TyzillionandHiroku ca044e8390 So so so many Pokemon implemented and models, animations, and textures updated 2023-09-05 08:59:10 +00:00
MoeBoy76 ea332515c4 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into sus-archaeology
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlockEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/resources/mixins.cobblemon-common.json
2023-09-05 12:45:53 +10:00
MoeBoy76 49965d6856 fossil structures from build team 2023-09-05 12:42:11 +10:00
miasmus a6b68b4076 Adds other crops to maintains_farmland tag 2023-09-04 19:50:26 -04:00
miasmus dbce3252ab Adds a #cobblemon:berry tag with all the berry blocks, adds them to the #maintains_farmland tag 2023-09-04 19:29:33 -04:00
Lily cc3b09f590 added missing particles for figy, micle, passho, starf, and wacan berries 2023-09-04 19:24:23 -04:00
Lily 8ed2b820f2 prevent player from interacting with pokemon when sneaking 2023-09-04 17:25:56 -04:00
apion 3b967933ca Licenses 2023-09-04 16:35:43 -04:00
apion 665aad40a8 Added logic to rerender blocks when necessary 2023-09-04 16:32:23 -04:00
apion 527f429c20 Use guava cache now, evict entries after a minute 2023-09-04 15:13:56 -04:00
Sterrezo 85803b11b4 Implemented cries for remaining starters 2023-09-04 21:01:03 +02:00
apion 6d3f3d1353 Fixed lighting issues (kinda) 2023-09-04 14:17:49 -04:00
apion b70748e1b8 BerryBlockRenderer now caches vertices, improves perf by about 4x (HOORAY) 2023-09-04 05:53:56 -04:00
tyzillion c6406ab0ea Small Fixes. 2023-09-04 05:08:57 -04:00
tyzillion 28c750caf9 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-04 05:08:32 -04:00
Paul ff2db8fa11 You saw nothing 2023-09-04 18:49:38 +10:00
Paul 42d330e1c0 Added berry world gen weights to data 2023-09-04 18:45:27 +10:00
Paul 062cee2b9a Merge remote-tracking branch 'origin/main' 2023-09-04 18:16:36 +10:00
Paul 5730d812a0 Randomize berry positions for most berry trees (except for berry swords) 2023-09-04 18:16:28 +10:00
tyzillion ab22780598 Modified walk speeds for Roggenrola line, Quilava, Typhlosion, and Feraligatr. 😅 2023-09-04 02:00:08 -04:00
tyzillion 1b2e0fb58e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-04 01:54:36 -04:00
tyzillion 6616234393 🥚 2023-09-04 01:52:57 -04:00
Hiroku cb4ad09a11 Merge branch 'heal-me-up-scotty' into 'main'
Potions are like healing berries

Closes #437

See merge request cable-mc/cobblemon!598
2023-09-04 05:52:07 +00:00
MoeBoy76andHiroku 1d81df91eb Potions are like healing berries 2023-09-04 05:52:06 +00:00
Hiroku d962d30074 Merge branch 'fix-starter-volume' into 'main'
Fixes starter selection sound effect playing twice when clicking the arrow keys to navigate

Closes #427

See merge request cable-mc/cobblemon!599
2023-09-04 05:47:31 +00:00
tyzillion e33420bab7 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-09-04 01:39:08 -04:00
tyzillion 17dcbb25c3 Implemented Teddiursa and Ursaring. Fixed Clodsire pivot, fixed Lickylicky crash. Added animated textures to Ponyta line, updated Tinkaton, Tevenant, Slowking, Boltund, Quaxwell, Delphox, Koffing, Weezing, Chikorita, Bayleef, Meganium, Mareep, Flaaffy, Ampharos, Oshawott, Dewott, Doduo, Dodrio, Abra, Kadabra, Alakazam, Emolga, Slowpoke, Slowbro, and Slowking. Updated animations for Bunnelby, Diggersby, Cetoddle, Cetitan, Sprigatito line, Snivy line, Hitmonchan, Lonoone, Beldum line, Chikorita line, Phantump line, Mareep line, Fennekin line, Yamper line, Doduo line, Slowpoke line, Hoothoot, Froakie, Komala, Galar Meowth, Quaxwell, and Granbull. 2023-09-04 01:38:50 -04:00
tyzillion 1b36c40959 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-04 01:36:08 -04:00
Hiroku 5096d9a15a Merge branch 'pokemonloot-fix' into 'main'
Fixes pokemon dropping XP when doPokemonLoot gamerule is set to false

See merge request cable-mc/cobblemon!597
2023-09-04 04:20:21 +00:00
Hiroku 24737cf606 Merge branch 'selected-pokemon-pvp-fix' into 'main'
Fix player battle always starting with first pokemon

Closes #389

See merge request cable-mc/cobblemon!579
2023-09-04 04:12:14 +00:00
MiaandHiroku 7bd1c24b57 Fix player battle always starting with first pokemon 2023-09-04 04:12:13 +00:00
DoctorWafflePhD db2cd8501e A handful of UI & hitbox fixes. 2023-09-03 22:32:48 -05:00
tyzillion fd6348adbe Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-03 22:41:34 -04:00
miasmus 36b1bec04b Fixes starter selection sound effect playing twice when clicking the arrow keys to navigate 2023-09-03 20:19:52 -04:00
Hiroku 7f14b60efb Merge branch 'neo-1.4-fixes' into 'main'
Various bug fixes

See merge request cable-mc/cobblemon!596
2023-09-03 22:27:52 +00:00
NeovitalismandHiroku 239559cfd3 Various bug fixes 2023-09-03 22:27:52 +00:00
miasmus c4b2a1546a Fixes pokemon dropping XP when doPokemonLoot gamerule is set to false 2023-09-03 13:39:51 -04:00
tyzillion e3c9c16add Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-03 12:26:58 -04:00
apion d17f8f90b8 Made berry atlases actually work (only on Fabric for now, this is prototyped af) 2023-09-03 05:56:08 -04:00
Paul 278b36234e Put the pre-render call back so pokeballs animate (oopsy) 2023-09-03 14:43:49 +10:00
Paul 1598c8209a Fixed ternary and boolean-not operators not working in Molang which broke berry friendship increase amounts 2023-09-03 14:38:44 +10:00
DoctorWafflePhD bc9182e37f Numerous scaling fixes. Hitboxes not fixed (yet). 2023-09-02 13:42:20 -05:00
tyzillion 68923dd95f Updated Sprigatito and Braixen, Made Wooper not just be Paldean, Fixes Ratatta texture. Fixes Grotle crash. 2023-09-02 12:03:35 -04:00
apion 1d353bdc5b Added hitboxes to the early stages of berry tree growth 2023-09-02 03:37:31 -04:00
apion df7109ba45 Added flower model/texture, fixed particles in all the tree models 2023-09-02 03:15:39 -04:00
tyzillion ab3449243f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-02 02:25:51 -04:00
Hiroku deb7ece946 Merge branch 'berry' into 'main'
Berries

See merge request cable-mc/cobblemon!595
2023-09-02 06:05:40 +00:00
ApionandHiroku d8f9f8926b Berries 2023-09-02 06:05:40 +00:00
apion 457e7b65c9 Merge remote-tracking branch 'origin/berry' into berry 2023-09-02 01:36:35 -04:00
apion 755d4ea612 Added early stage growth models to all block states 2023-09-02 01:36:27 -04:00
Hiroku ad6bcb1572 Licenses fix (apion banned) 2023-09-02 05:28:15 +00:00
apion 42235a35ee Final asset sync (hopefully) 2023-09-02 00:59:01 -04:00
tyzillion a8f6e66ab4 Updated models and textures for Gyarados, Hitmonchan, Hitmonlee, Serperior, Haunter, Chansey, Blissey, Happiny, Sneasel, Weavile, Spiritomb, Dratini, Dragonair, Dragonite, Pidgey, Pidgeotto, and Pidgeot.
Implemented Paldean Wooper and Clodsire.
2023-09-02 00:50:32 -04:00
apion d6e51b9c55 Merge remote-tracking branch 'origin/berry' into berry 2023-09-01 21:27:00 -04:00
apion d2970c10b3 Added texture atlases for berries, fixed issue in Forge where berry models werent being loaded 2023-09-01 21:26:45 -04:00
tyzillion f3cb2aab87 Implemented Crabrawler, Crabominable, Wimpod, Golisopod, Nincada, Ninjask, Shedinja, Ralts, Kirlia, Gardevoir, Gallade, Beldum, Metang, Metagross, Ursaluna, Lechonk, Oinkologne, Pidove, Tranquil, Unfezant, Timburr, Gurdurr, and Conkeldurr. 2023-09-01 20:56:09 -04:00
tyzillion d9c6522685 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-09-01 20:54:59 -04:00
Hiroku ca54a0abf0 Last one was stereo (THANKS STERR) 2023-09-01 09:18:13 +00:00
Hiroku 1ad743a126 Added berry eat sound effect 2023-09-01 09:16:52 +00:00
Paul cde5a5b408 Added berry juice, fixed Touga sprite/blockstates missing 2023-09-01 19:03:43 +10:00
Paul e6a45fd356 Removed dead code in berry interactions, added medicinal brew sprite, changelog updates 2023-09-01 16:57:00 +10:00
Paul a1897f69ca Improved generic bedrock entity initializing and evolution entity handling so it crashes fewer times 2023-09-01 16:39:48 +10:00
Paul a88700969d Fixed positioning of generic bedrock entities and particle locator matrices 2023-09-01 16:39:05 +10:00
Paul 91eb9e597e Improved scaling of evolution particles 2023-09-01 16:38:19 +10:00
apion c3eb05e5c6 More asset sync (again) (YAY!) Also disabled berry tinting 2023-08-31 19:54:26 -04:00
apion a82dee2beb More asset sync (again) (YAY!) Also disabled berry tinting 2023-08-31 19:54:05 -04:00
apion 8099bfe330 Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2023-08-31 19:11:18 -04:00
Paul e762542e49 Merge branch 'main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
2023-09-01 09:02:33 +10:00
Paul 9d8803caf2 Make entity accessible from poseable entity state 2023-09-01 09:01:12 +10:00
Veraxiel 7074a63f95 Updated existing spawn files. Added preset for Flowers and Gemstones. Removed preset for Underground. Updated Natural preset. 2023-08-31 04:35:04 -04:00
apion 95d6a1c183 More asset sync 2023-08-31 00:08:02 -04:00
apion 4fd433b072 Actually fixed berries rendering when off screen (you were right the first time Hiroku) 2023-08-28 21:10:29 -04:00
apion 6e7694d650 Move some multiblock stuff into api, add licenses 2023-08-28 19:28:12 -04:00
apion dc6804bba6 Moved mulch logic into the berry block entity 2023-08-28 18:50:55 -04:00
apion a301779a42 Hopefully finalized system for synchronizing multiblocks 2023-08-28 17:14:20 -04:00
apion 440a07d1de Fixed synchronization issue 2023-08-28 15:24:57 -04:00
Paul b3e5734f39 Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/particle/ParticleStorm.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/bedrock/animation/BedrockAnimation.kt
2023-08-28 18:35:09 +10:00
Paul 3e005e5032 Merge branch 'main' into implement_pokemon 2023-08-28 18:27:51 +10:00
Paul 08827a742f Fixes to particle effects in bedrock animations 2023-08-28 18:27:19 +10:00
Paul f93e8e221a Fixes to particle effects in bedrock animations 2023-08-28 18:27:03 +10:00
Paul cc7433025f Slow torterra down so we can watch him do the walk 2023-08-28 18:26:34 +10:00
Paul aa17482a6e Fixed Mamoswine crash 2023-08-28 18:00:58 +10:00
apion fc7951cbcd Changed multiblock formation logic to use VoxelShape instead of Box, fix some misc rendering issues with the fossil block 2023-08-27 23:29:02 -04:00
jmmcp 2d5296288f Cleaned up evolution code 2023-08-27 22:55:28 -04:00
tyzillion 7f0f6e7c4d Implemented Fletchling, Fletchinder, and Talonflame. Shulker Forretress. 2023-08-27 20:38:38 -04:00
apion 44b58ab9a0 Added the connecting bit to the fossil tube 2023-08-27 18:31:10 -04:00
jmmcp cab3f2bf38 Adjusted timing of evolution when outside poke ball 2023-08-27 17:47:54 -04:00
apion d24a6fa75c Added monitor animation 2023-08-27 16:40:16 -04:00
apion fca867a8b8 Asset organization stuff 2023-08-27 15:37:33 -04:00
apion 9514c48eaa Add staged filling to the fossil tube 2023-08-27 11:42:45 -04:00
Paul 16a0cd1fe7 Updated heaps of berry assets and placements 2023-08-27 21:50:38 +10:00
tyzillion 2fc9d587d9 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-27 07:38:44 -04:00
Paul a6a76052a6 Fixed various items not preventing off-hand interactions from playing 2023-08-27 15:58:57 +10:00
Paul 31efdc4254 Made evolution particle appropriately scale with entity size 2023-08-27 15:15:35 +10:00
Paul 34aace8a1b Fixed compile errors 2023-08-27 14:21:52 +10:00
Paul a877ad5a69 Merge branch 'berry' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/repository/VaryingModelRepository.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2023-08-27 14:11:55 +10:00
Paul 5a8c090055 Merge branch 'main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2023-08-27 14:10:10 +10:00
jmmcp 98ccf39728 Progress towards implementing evolution effects when evolved outside a poke ball 2023-08-27 00:04:46 -04:00
Paul abeb005bbb Improve error logging for bad MoLang expression parsing from String.asExpression 2023-08-27 13:05:03 +10:00
Paul 6835232aa6 Added support for effect looping in non-loop animations 2023-08-27 13:04:47 +10:00
Paul 78ebc9a9eb Added MoLang instructions: s.sound(effect, volume, pitch) and s.random(...) 2023-08-27 13:04:06 +10:00
Paul f5e85971f3 Made Pokémon appear red when hurt 2023-08-27 11:11:53 +10:00
apion d029b4380a Separate some textures/models 2023-08-26 19:58:55 -04:00
apion 4c29c9726b Fix some desync stuff 2023-08-26 16:33:35 -04:00
apion af9fff9793 Added a system for forcing models to be baked, more progress on rendering fossil tube 2023-08-26 14:25:08 -04:00
tyzillion 1d950d9640 Update when? When Update? Implemented Johto Starters.
Update when? Update? Update when? Update? When Update? Update?
2023-08-26 02:55:28 -04:00
tyzillion 3b63f88669 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-26 02:52:51 -04:00
Hiroku e85b2aa138 Merge branch 'battle_bugs_1' into 'main'
Fix Shedinja HP and Faint Softlock.

Closes #341 and #400

See merge request cable-mc/cobblemon!593
2023-08-26 02:33:53 +00:00
Segfault Guy 371e1426a3 Fix Shedinja HP and Faint Softlock. 2023-08-25 22:24:54 -04:00
Hiroku 256e09846d Merge branch 'main' into 'main'
Made Master Balls Fireproof (won't disappear when thrown in lava/fire)

See merge request cable-mc/cobblemon!591
2023-08-26 01:49:13 +00:00
RetroandHiroku dd2d441b0c Made Master Balls Fireproof (won't disappear when thrown in lava/fire) 2023-08-26 01:49:13 +00:00
apion a8d84c4a28 More messing with animations 2023-08-25 19:45:33 -04:00
apion 5215388e33 Start working on adding the animations to the fossil blocks 2023-08-25 15:51:19 -04:00
tyzillion 4f35e8348d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-25 12:43:12 -04:00
tyzillion 36c76b96b3 Implemented Komala,Phantump,and Trevenant all with wood variants. 2023-08-25 12:42:39 -04:00
apion 93c7685ef7 Added loading/saving of multiblock structures 2023-08-25 11:04:13 -04:00
apion 5c395a1987 Added fossil tube animations 2023-08-24 19:24:23 -04:00
apion 755d367760 Added break functionality to multiblocks, fixed a few issues 2023-08-24 16:18:46 -04:00
Nick ddc57ecd8d Merge branch 'fixed-tag-file' into 'main'
Fixed tag file

See merge request cable-mc/cobblemon!592
2023-08-24 19:50:57 +00:00
Deltric 202a6a0496 Fixed tag file 2023-08-24 14:26:32 -05:00
apion 3b26d24958 Add the actual functionality of the fossil machine multiblock. Can now insert organic material 2023-08-24 15:13:55 -04:00
apion 27afe40892 Add the fossil tube to the resurrection machine multiblock 2023-08-24 12:48:24 -04:00
apion fcd4dccdad Split resurrection machine into three blocks, add a system for multiblock structure formation (this is pretty freaking cool) 2023-08-24 12:19:08 -04:00
apion 35e206a5d6 Implemented the insertion of organic material into the resurrection machine and data-driven organic material values 2023-08-24 07:10:32 -04:00
Hiroku fbc639cbf3 Merge branch 'power-items' into 'main'
Added in Power Items

See merge request cable-mc/cobblemon!580
2023-08-24 09:38:51 +00:00
DeltricandHiroku 78faf30b32 Added in Power Items 2023-08-24 09:38:51 +00:00
apion b51d007341 Start working on resurrection machine 2023-08-23 19:59:19 -04:00
tyzillion 2fe98577b6 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-23 15:34:55 -04:00
Hiroku 39cbb448a6 Merge branch 'poke-select' into 'main'
Update Poke Select Interface

See merge request cable-mc/cobblemon!588
2023-08-22 09:21:51 +00:00
TestandHiroku fd10f8efd8 Update Poke Select Interface 2023-08-22 09:21:51 +00:00
Hiroku 9161f61017 Merge branch 'spawn-issue' into 'main'
Bug fixes

Closes #402 and #403

See merge request cable-mc/cobblemon!577
2023-08-22 09:08:40 +00:00
ApionandHiroku 4244680956 Bug fixes 2023-08-22 09:08:40 +00:00
Hiroku 92ad81f8d1 Merge branch 'sound' into 'main'
Various sound updates and volume tweaks

See merge request cable-mc/cobblemon!587
2023-08-22 09:06:17 +00:00
SterrezoandHiroku c1c7106bff Various sound updates and volume tweaks 2023-08-22 09:06:17 +00:00
Hiroku e36b1b22c4 Merge branch 'main' into 'main'
Persistent Data Fix

See merge request cable-mc/cobblemon!589
2023-08-22 09:05:39 +00:00
ItsJustChris85 e21d445e14 Persistent Data Fix 2023-08-22 00:51:00 -04:00
jmmcp a85fd79818 Experimenting with the proper function to add to pre-existing archaeology loot tables. 2023-08-21 17:19:09 -04:00
tyzillion dadeb2670b Made fixes to my last push and implemented Starly, Staravia,
and Staraptor.
2023-08-20 14:22:46 -04:00
tyzillion aedca9e969 Updated Roggenrola line, Misdreavus line, Exeggcute, Golduck, Elekid, Electabuzz, and Chesnaught models, textures, and animations, updated Spinda model, texture, and animation. Added 2 new spots too. Updated Slowking texture, Implemented Alolan Exeggcute. 2023-08-20 12:14:25 -04:00
tyzillion e1ca6bbc94 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-20 12:13:14 -04:00
apion 22d66103b6 Added missing berries, fix desert grove spawning, decrease chance of groves 2023-08-20 06:14:33 -04:00
apion 0e2a0af914 Asset sync 2023-08-20 05:07:49 -04:00
Paul 098ff1f96b Clamp set level within bounds instead of throwing exceptions (means we don't corrupt storages) 2023-08-20 17:21:25 +10:00
Paul f93445f081 JvmOverloads in battle builder, closes #410 2023-08-20 17:06:50 +10:00
Paul 85a962e924 Licenses 2023-08-20 15:13:23 +10:00
Paul f6d0f11c99 Implemented uncatchable, fixed some capture calculation issues, added PokeBallCaptureCalculatedEvent and PokemonCatchRateEvent 2023-08-20 13:51:08 +10:00
Paul e74b838fb2 Fixed lighting of pokemon model items 2023-08-20 10:35:29 +10:00
apion 7591345181 Fixed probability calculations 2023-08-18 06:53:35 -04:00
apion 8d157a5ad5 Added berry spawns to villages, add licenses 2023-08-18 05:50:06 -04:00
tyzillion d41ef023ff Implemented cries for Mudbray, Mudsdale, Fennekin, Braixen, Delphox, Buneary, Lopunny, Snivy, Servine, and Serperior. Updated models and textures for Snivy, Servine, Serperior, Buneary, and Lopunny. Updated animations for Mudbray and Mudsdale. 2023-08-17 20:59:30 -04:00
apion 8b857881a8 Merge branch 'implementing-naturally-generated-structures' into berry 2023-08-17 05:09:26 -04:00
apion 995a8c2dc0 Got structure processor + overrides working 2023-08-17 05:08:00 -04:00
tyzillion 30b769db13 Fixed issues with Galarian Meowth and Perrserker. Added proper cries to Farfectchd and its Galar counterpart. Updated Corviknight, Fenniken, Braixen, and Delphox model and animations. Updated Rookidee and Corvisquire's animations. Merged Braixen's textures and gave it animated textures. 2023-08-17 00:17:36 -04:00
tyzillion ac7bd33f08 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-17 00:13:54 -04:00
apion 4dc7accef9 Testing mixin 2023-08-16 19:07:53 -04:00
apion 90b8923b98 Merge branch 'main' into implementing-naturally-generated-structures
# Conflicts:
#	common/src/main/resources/cobblemon-common.accesswidener
#	common/src/main/resources/mixins.cobblemon-common.json
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/CobblemonFabric.kt
#	forge/src/main/kotlin/com/cobblemon/mod/forge/CobblemonForge.kt
2023-08-15 22:17:11 -04:00
apion 9a7e4d05f0 Added JEI integration for berry mutations 2023-08-15 21:35:35 -04:00
Paul 8d981d1b05 Added brewing recipes for all the medicine 2023-08-16 08:45:13 +10:00
apion f5bf60dd37 Added some caching to berry generation 2023-08-14 15:39:53 -04:00
apion 585eb2a946 Add missing license headers 2023-08-14 14:35:52 -04:00
apion ee38a90aad Berry data update 2023-08-14 14:33:10 -04:00
apion d9fc5f5c90 Added system for controlling where berries spawn 2023-08-14 14:32:51 -04:00
apion 5d9be82e8f Added random spawn of berries. (Need system to disable certain berries from spawning) 2023-08-14 04:18:39 -04:00
apion 808a238d2a Swapped to deserializing preferred biomes to actual tags 2023-08-14 03:54:18 -04:00
tyzillion 69908c1ab5 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-08-13 22:24:13 -04:00
tyzillion f8cdcde27c Implemented cry animations for Miltank and Treeko. Updated Pikachu and Raichu and implemented their alolan counterparts. same for Rattata and Raticate but updated theirs, also gave alolans their own poser. Gave Krabby and Kingler a placeholder walk. Added Cherry tree Torterra with petal particles. Gave shiny Gastly blue particles. Made Slugma and Magcargo's particles match their shinies. Updated Corviknight, Fennekin, Braixen, Delphox, Snivy, Servine, Serperior, Steelix, Meowth, and Persian models. Updated Meowth and Persian Models. Update Mudbray and Mudsdale textures. Implemented Alolan and Galarian, Meowth and Persian. Implemented Miltanks Mooshtank forms. 2023-08-13 22:23:14 -04:00
apion 0a505bec75 Got growth mulch working. Also added a block ticker to berry trees for more controlled growth times 2023-08-13 02:19:05 -04:00
tyzillion 948d599390 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-08-12 22:16:21 -04:00
apion f561141315 Got all mulches except growth working for berries 2023-08-12 21:04:50 -04:00
apion 8419b140a7 Berry data update 2023-08-12 20:13:06 -04:00
DoctorWafflePhD 4be1ab3cac Cry implementation for Chimchar line, and Cleffa poser tweaks, 2023-08-12 15:34:39 -05:00
apion 12824f6f4f Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/tags/CobblemonBlockTags.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/group/CobblemonItemGroups.kt
2023-08-12 14:37:47 -04:00
Paul 60df079794 Improve performance of berry tree rendering by only rendering berries when they are on-screen 2023-08-12 18:43:50 +10:00
apion 1924862fcb Fixed renderer again (please let this be the last time) and fixed pecha clipping 2023-08-12 00:45:00 -04:00
apion dba3de83fa Updated script to grab tint index values from asset repo, fixed renderer (Hiroku) and updated colors (again) 2023-08-11 19:48:09 -04:00
apion df30a209a5 Once again, synced the mature tree model, berry textures, and berry geographies for berries 1-24 from the asset repo 2023-08-10 21:30:01 -04:00
apion 0fea0966c0 Added berry geographies 2023-08-10 19:53:25 -04:00
apion 727fc969fa Hopefully fixed rendered? 2023-08-10 19:30:17 -04:00
apion c17ae13578 Fixed typo 2023-08-10 16:17:45 -04:00
apion 8e09051bf7 Synced some textures from the asset repo, BerryBlockRenderer changes. 2023-08-10 15:58:27 -04:00
apion 4f03643840 Synced models for berries 12-24 to asset repo 2023-08-09 19:43:42 -04:00
apion 6cdab8f296 Updated models for berries 1-12 to the ones from the asset repo, add tints for berries 1-12 2023-08-09 16:28:57 -04:00
apion fc1bade1d1 Fixed a few model typos, made berry foliage colors fall back to leaf colors 2023-08-09 14:31:39 -04:00
tyzillion fd5132b317 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-08 18:59:01 -04:00
apion 544efc80d5 Update all berry data to come from the GDrive spreadsheets 2023-08-08 12:19:30 -04:00
apion 43fe97a6fe Added a growth factor to berries affected by their current biome. Also added script to generate berry data from spreadsheet data 2023-08-08 12:02:25 -04:00
tyzillion f021faf0d3 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-07 18:14:00 -04:00
nlingebretson 965196da2e Added placement data for berry trees 1-14 2023-08-06 13:36:35 -05:00
Paul 72c4cc0992 Undid battle debug stuff because I forgot, again 2023-08-05 17:10:47 +10:00
Paul b0838e88fd Put berries in the agriculture tab instead 2023-08-05 17:09:52 +10:00
Paul 925d7ce2dc Added berry interaction + bag item effects, berry eat sound hook, berry eating lang, berries to creative tab 2023-08-05 17:08:00 +10:00
tyzillion 2b562ace12 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-08-04 19:29:12 -04:00
Paul a4000a6c0f Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
2023-08-04 11:19:50 +10:00
tyzillion a56d24b9dc Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-08-01 19:33:32 -04:00
Sterrezo 607b59a978 Implemented cries for Spearow, Fearow, Arbok, Ekans, Pichu, Pikachu, Raichu
Removed empty space from Espeon's model.kt file
2023-08-02 00:47:00 +02:00
tyzillion b8eb2c708e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-31 18:37:19 -04:00
tyzillion 7bffc44db0 Updated animations for Venusaur, Mankey, Tauros, Cleffa, Quagsire, Piplup, Prinplup, Empoleon, Primeape, Poppolio, Bionne, Prismarina, and Mimikyu. Tweaked some portraits. Fixed Aipom texture and Ambipom's crash. 2023-07-28 20:16:51 -04:00
tyzillion 1099ce055a Updated animations for Ponyta, Galarian Ponyta, Rapidash, Abra, Aipom, Ambipom, Chingling, Snubbull, Breloom, Gible, Gabite, Klank, Klinklang, Rookidee, Corvisquire, Quaxly, Quaquaval, Tinktaton, and Annihilape. Added cry sound to Ponyta, Galarian Ponyta, Rapidash, Quaxy, and Quaquaval cry animation. 2023-07-27 22:57:33 -04:00
tyzillion de5e958bf3 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-07-27 22:56:15 -04:00
Sterrezo ab6494a2f6 Implemented stuff properly this time. Added Fuecoco line cries.
My previous pushes were missing code in model.kt files. Everything's working now. Fuecoco line has final animations, I only added sound. I also corrected a typo in sounds.json
2023-07-26 18:56:16 +02:00
Sterrezo 967fbd2608 Placeholder cry animations for Espeon, Umbreon, Leafeon, Glaceon, Sylveon. Fixed Lucario's placeholder cry animation. 2023-07-26 17:03:54 +02:00
DoctorWafflePhD e6ffd2e16d Implemented cry animations for Turtwig, Grotle, and Torterra. 2023-07-25 04:47:07 -05:00
DoctorWafflePhD 8ff0835e4e Fixed Empoleon cry. 2023-07-25 03:29:43 -05:00
DoctorWafflePhD 301df2e1d1 Implemented cry animations for the Piplup line. 2023-07-25 00:39:20 -05:00
DoctorWafflePhD 4c4f79494b Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-07-24 21:59:40 -05:00
DoctorWafflePhD bcd998d690 Implemented cry animations for Cleffa, Wooper, Quagsire, Piplup, and Mimikyu. 2023-07-24 21:52:34 -05:00
Sterrezo 7ab3c18762 Added placeholder cry animations and 19 new cries
Placeholder cry animations for Riolu, Lucario, Wooloo, Dubwool. Added 19 new cries. Updated Tauros cry. I'll update the changelog once all cries are implemented.
2023-07-24 22:43:58 +02:00
tyzillion ddb426674f Added blank crys to all Pokemon that don't have a cry atm, added blank ambients to gen 9 Pokemon. Updated sound.json with new sound references. Edited or added cry animations with sounds for Bulbasaur line, Charmander line, Squirtle line, Caterpie line, Weedle line, Pidgey line, Rattata line, Clefairy line, Tauros, and Eevee gen one line. 2023-07-23 15:26:36 -04:00
tyzillion 6c93a6c1a8 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-23 15:20:42 -04:00
tyzillion 28d0ae9b75 Fixed Wishiwashi crash. Resized Turtwig. Added Paldea starters to starter select. Added blank crys to all Pokemon, added blank ambients to gen 9 Pokemon. Updated sound.json with new sound references. 2023-07-20 21:05:39 -04:00
tyzillion 742a6b244f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-07-20 19:18:44 -04:00
tyzillion 4c5fcf5310 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-07-20 15:34:43 -04:00
Paul 3222e2ebca Fixed crash with generic bedrock entities + updated evolve sound for timing 2023-07-18 19:20:52 +10:00
tyzillion aaf5f4d354 Multiple Pokemon resized. Changed walkspeed for Bergmite, Linoone, Wingull, Turtwig line and Piplup line. Added flying ai to Cottonee, Whimsicott, and Kricketune. Made Avalugg properly float. Fixed Tinktatink line not using battle idle. Fixed Numels texture issues. Fixed Braixens texture. Edited hitbox for Granbull, Skeledirge, Maschiff, and Mabosstiff. Added implemented to json for Surskit line and Phanpy line. Fixed Caterpie animation. 2023-07-17 20:19:52 -04:00
Lily f6cbadff61 mulch can now be used on berry trees and removed using a shovel 2023-07-17 20:05:10 -04:00
Paul ba89ed1574 Merge remote-tracking branch 'origin/main' into evolution-effect 2023-07-17 19:02:28 +10:00
Paul 68ab953644 Heaps of fixes for particle engine 2023-07-17 19:02:13 +10:00
tyzillion 5414cbcc14 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-07-16 22:10:53 -04:00
tyzillion 3104239a9f Implemented Wishiwashi, Galarian Zigzagoon, Galarian Linoone, and Obstagoon. Updated animations and models for Barboach, Wailord, Illumise, Volbeat, Scorbunny, Mimikyu, Turtwig, Grotle, Torterra, Kricketot, Kricketune, Bergmite, Avalugg , Shroomish, Bonsly, Mudsbray, Mudsdale, Arrokuda, and Barraskewda. Added emissive for Sharpedo. Tweaked walk speeds on Drowzee, Murkrow, Turtwig, Grotle, and Torterra. Added flying behavior to Honchkrow. Actually fixed Cacnea's size. 2023-07-16 22:10:41 -04:00
Lily e10e048e2c Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlockEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
2023-07-16 20:18:05 -04:00
DoctorWafflePhD 32a360ba0c Updated Stufful and Bewear's model and animation files. 2023-07-16 17:32:04 -05:00
DoctorWafflePhD 99d190abff Fixed Vivillon wings issue for Icy Snow and High Plains patterns. 2023-07-16 16:54:46 -05:00
tyzillion 33aa3043c6 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-16 15:55:33 -04:00
tyzillion 4577c36afb Implemented Phanpy, Donphan, Buizel, Floatzel, Zigzagoon, Linoone, Cottonee, and Whimsicott. 2023-07-16 00:43:37 -04:00
Paul 4d3030e20e Merge stuff 2023-07-15 18:37:47 +10:00
tyzillion 6d9d5d1533 Implemented Snubbull, Granbull, Maschiff, and Mabosstiff. 2023-07-15 02:03:18 -04:00
tyzillion a6cc7b77bb Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-14 18:19:33 -04:00
tyzillion 3ef2eca934 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-12 18:11:01 -04:00
tyzillion e81eaa5b57 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-11 18:25:59 -04:00
tyzillion edc5ce5fb4 Implemented Fuecoco, Crocalor, Skeledirge, Quaxly, Quaxwell, and Quaquaval. Added a way to disable x or y head movement on the look animation. 2023-07-10 23:11:05 -04:00
tyzillion b1b7d3fea2 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-07-10 18:26:03 -04:00
tyzillion 7ee88cefe5 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation1/pidgey.json
#	common/src/main/resources/data/cobblemon/species/generation1/pikachu.json
#	common/src/main/resources/data/cobblemon/species/generation1/zubat.json
#	common/src/main/resources/data/cobblemon/species/generation2/pichu.json
#	common/src/main/resources/data/cobblemon/species/generation2/wooper.json
#	common/src/main/resources/data/cobblemon/species/generation5/joltik.json
2023-07-10 18:23:45 -04:00
Soul Eternum 2cfa9f8985 Added a fallback locator for particle animations 2023-07-10 16:38:51 -05:00
tyzillion 5bab095036 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-09 21:56:38 -04:00
tyzillion c394f56548 Implemented Tinkatink, Tinkatuff, Tinkaton, Yamper, and
Boltund.
2023-07-09 21:55:54 -04:00
tyzillion dc270bb64e Implemented Volbeat, Illumise, Galarian Ponyta, and Galarian Rapidash. Fixed Wingull's animation typo. Implemented Wingull and Pelippers water surface animations. Made quirks play less frequently on Ponyta and Farfetched. Added "implemented": true, to Shroomish, Breloom, Hoothoot, Noctowl, Numel and Camerupt's species json. Fixed Serperior's crash. Exeggcute model and animations updated. Model updates for Chansey, Blissey. Texture update for Happiny. 2023-07-09 05:22:04 -04:00
tyzillion 8c6c3a6ca0 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-07-08 19:34:10 -04:00
JosephBedsole 2e324e65a1 Added a fallback locator for particle animations 2023-07-08 07:47:02 -05:00
tyzillion ac05f24646 Added Glimmora's battle idle. Fixed Riolu and Lucario models. Tweaked Riolu and Lucario's scale and hitbox. Updated Wingull and Pelipper's animations. 2023-07-06 23:27:09 -04:00
tyzillion 2b3045594b Deleted shoulder effects, learn to make potions, losers.
(You can always add them back via datapacks!)
2023-07-06 21:14:53 -04:00
tyzillion 86d8fb01ef Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-06 20:56:09 -04:00
tyzillion fe9a1c7e99 Implemented Annihilape, Squawkabilly, Shroodle, and Grafaiai. Updated Rapidash, Taillow, and Swellow's animation. Updated Mankey, Primeape, Haunter, Voltorb, Electrode, Riolu, Lucario, and Serperior with remodels/revamps. 2023-07-06 20:55:38 -04:00
tyzillion a9735c69cb Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-06 15:57:59 -04:00
tyzillion bf401d1ff0 Implemented Arrokuda, Barraskewda, Bunnelby, and Diggersby. Edited Wingull and Pelipper's scale and hitbox. 2023-07-05 23:13:16 -04:00
tyzillion fb6e65d868 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-05 14:17:04 -04:00
tyzillion aa04b27500 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-04 22:33:10 -04:00
tyzillion 954d6fa156 Added emissives to Yamask and Cofagrigus eyes. Made Yamask and Cofagrigus fly. Implemented Skrelp, Dragalge, Patrat, Watchog, Mareep, Flaaffy, and Ampharos. Made Wooloo and Dubwool smaller. Fixed Varoom and Revavroom's wheel spinning when changing from walk to idle. Updated model and texture of Mewtwo and Mew. 2023-07-04 22:32:47 -04:00
tyzillion dd2d22b793 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-07-04 13:36:14 -04:00
Xylopia 03bfce766d Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/repository/PokemonModelRepository.kt
2023-07-02 20:15:58 -04:00
Xylopia fab9eed4e1 Added Yamask and Cofagrigus 2023-07-02 20:13:42 -04:00
tyzillion 123ed403ae Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-07-02 20:08:19 -04:00
tyzillion 0c763e3715 Implemented Roggenrola, Boldore, Gigalith, Numel, Camerupt, Shinx, Luxio, Luxray, Aipom, Ambipom, Hoothoot, Noctowl, Wingull, and Pelipper. Added placeholder wing flying animations to Articuno, Zapdos, Moltres, Scyther, Scizor, Golbat, and Crobat. Updated Model of Mr.Mime, Cacnea, Prinplup, Empoleon, Hypno, Cacnea, and Farfetchd. Updated Animation of Cacnea, Cacturne, Scatterbug, Spewpa, Garganacl, Farfetchd, Ponyta, Drowzee, Piplup, Prinplup, and Empoleon. Mr_Mime texture updated. Tweaked UI frames of Exeggutor. Added particles to Spewpa. Gave Alolan Vulpix and Ninetales its own poser. 2023-07-02 19:23:49 -04:00
DoctorWafflePhD b52a0a0ebd Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-07-01 20:53:16 -05:00
tyzillion 9c1edea469 Updated Changelog. 2023-07-01 17:23:52 -04:00
tyzillion 87d8c17f4f Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ArcanineModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ElectabuzzModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/FearowModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/ScytherModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen2/ElekidModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/LotadModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen4/ElectivireModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen4/LickilickyModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen7/DecidueyeModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen7/RowletModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen9/WalkingwakeModel.kt
2023-07-01 17:22:13 -04:00
Paul 506aafbdf0 Merged from main and added berries to creative menu 2023-07-01 21:25:20 +10:00
Paul 814bba5273 Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/VaryingRenderableResolver.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/resources/cobblemon-common.accesswidener
2023-07-01 21:08:11 +10:00
Paul b5475b0e3e Multi-axis rotations on berries, cleaned rendering logic for pokeballs and berries, cleaned berry block entity logic 2023-07-01 21:05:32 +10:00
Paul 3ab5a4daf3 Use less inflation on torchic male form since it does every direction 2023-07-01 15:21:48 +10:00
Paul f7672e66ab Fixed Torchic gender difference not being visible due to pane with no inflation 2023-07-01 15:09:02 +10:00
Paul 61d926a23d Fixed Varoom and Revavroom crashing asset loading due to animation typos 2023-07-01 15:03:34 +10:00
Paul 5ab364f0ab Fixed Farfetch'd not having a Galarian form 2023-07-01 15:02:49 +10:00
tyzillion 734d2b2414 Added emissives to Lanturn and Relicanth. Made Corviknight 5 blocks big. Made Gorebyss and Huntail swim faster. 2023-06-30 14:16:26 -04:00
tyzillion 0763a96f34 Updated models for Garganacl and Magikarp Male. Updated animation for Mudbray, Mudsdale, Varoom, and Revavroom. 2023-06-30 13:18:05 -04:00
Paul a34b7481f5 Updated explanation of look_at_direction camera mode [skip-ci] 2023-06-30 09:46:53 +10:00
DoctorWafflePhD 2ae4ba68e4 Dugtrio also no longer floats in water. 2023-06-29 12:49:14 -05:00
DoctorWafflePhD 750adabba1 Diglett now sinks to the ocean floor instead of floating. Not that we intend to have Diglett in the water anyways, but...
Dodrio's legs move at a more appropriate pace when walking.
Slowpoke's placeholder leg movements are more noticable.
2023-06-29 12:48:42 -05:00
Paul d2a3905b03 Fixed look_at_direction camera mode for particles 2023-06-29 22:02:38 +10:00
DoctorWafflePhD a914a69051 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-28 00:41:47 -05:00
DoctorWafflePhD beacc319b9 Fixed model issues on Scolipede and Espathra. 2023-06-28 00:41:38 -05:00
tyzillion c48b7b980b Updated Elekid line model overhaul. Fixed Whirlpede and Scolipede sleep crash and implemented their battle idles. Fixed Floragato's t-pose issue. Gave Wooper his floating and swimming poses. Dusknoir doesn't move his eye while in battle but will still look at the player outside of it. Ceruledge now has his passive blades outside of battle and his big blades in battle. 2023-06-28 00:34:18 -04:00
nlingebretson c60a3939a4 We sent the berries to flavor town (not clickbait) - added flavor values to berries and pointed each berry tree to use correct models for flowering berries 2023-06-27 20:53:54 -05:00
tyzillion d553483dcb Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-06-27 20:14:11 -04:00
DoctorWafflePhD c9f1a61bf5 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-26 04:20:50 -05:00
DoctorWafflePhD 84d58bf2d9 Changed the sizes of many Pokémon.
Fixed missing texture with Poké Ball Vivillon.
Fixed AI on a handful of Pokémon.
2023-06-26 04:20:37 -05:00
nlingebretson c0c49cc951 Updated growth time and refresh rate in berry data files, replacing the previous lifecycle data 2023-06-25 12:39:26 -05:00
nlingebretson fe08a94540 Updated Base Yield and Bonus Yield (bonus is temporary stored in growthFactors - will move to preferred biomes) 2023-06-25 11:19:32 -05:00
tyzillion df35528a53 Updated Dusknoir animation and Model. Framed and modified sizes and hitboxes of multiple Pokemon. 2023-06-21 19:22:26 -04:00
tyzillion 405f6e91de Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-06-21 19:11:22 -04:00
DoctorWafflePhD ac072e5a88 Adjusted walk speeds of Charcadet line, Exeggcute line, Popplio line, and Lickitung line. 2023-06-17 02:35:45 -05:00
DoctorWafflePhD ca0b098866 Merge branch 'main' into implement_pokemon 2023-06-16 21:11:40 -05:00
DoctorWafflePhD 3fd13dd47c Chingling now shoulder-mountable (and doesn't sleep on your shoulder). Also fixed advancements background. 2023-06-16 21:10:28 -05:00
DoctorWafflePhD 38bc7e1bde Merge branch 'main' into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-06-16 17:55:00 -05:00
DoctorWafflePhD 6497d770dd Chingling now shoulder-mountable 2023-06-16 17:48:32 -05:00
DoctorWafflePhD 2410fa6578 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen7/CutieflyModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen7/RibombeeModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen9/GlimmetModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen9/GlimmoraModel.kt
2023-06-16 00:11:17 -05:00
DoctorWafflePhD 32e1623998 Implemented animations for Cutiefly line and Glimmet line. 2023-06-16 00:08:38 -05:00
tyzillion 31799ad144 Updated animations of Venipede, Whirlipede, Scolipede, Cutiefly, Ribombee, Falinks,Exeggcute, Exeggutor, Lickitung, Lickilicky, Breloom, Chimecho, Chingling, Golett, Glimmet, and Glimmora.
Updated Models of Cutiefly, Ribombee, Venipede, Whirlipede, Scolipede, and Breloom.
2023-06-15 21:10:09 -04:00
tyzillion b60f7ba22e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-06-15 21:09:28 -04:00
Paul 16b3d76504 Gotten closer to fixing look_at_direction camera mode 2023-06-16 10:55:00 +10:00
Paul 363fe76dd1 Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/DataKeys.kt
2023-06-11 21:58:45 +10:00
Paul 9a03c17a0c Berry stuff on 1.19.4 and fixed some missing data 2023-06-11 20:56:54 +10:00
Paul 1bc2295b70 Added pokeball entity to capture event 2023-06-11 19:16:56 +10:00
Paul 37cd4ff11b Merge remote-tracking branch 'origin/main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlockEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/interaction/PokemonEntityInteraction.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/item/Berries.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/item/Berry.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/tags/CobblemonBlockTags.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/ClientPacketRegistrar.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/CobblemonItemGroups.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/interactive/CandyItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/interactive/InteractiveItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/interactive/LinkCableItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/interactive/VitaminItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/NetExtensions.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/textures/block/berry_leaf.png
#	common/src/main/resources/assets/cobblemon/textures/block/coba_tree.png
#	common/src/main/resources/assets/cobblemon/textures/block/leaf.png
#	common/src/main/resources/assets/cobblemon/textures/block/rawst_tree.png
#	common/src/main/resources/assets/cobblemon/textures/block/vines.png
2023-06-11 14:30:03 +10:00
nlingebretson 5f9108400b Rework of berries to include a growth time and refresh rate 2023-06-10 21:04:57 -05:00
DoctorWafflePhD c80ef7a8c0 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-10 16:43:06 -05:00
DoctorWafflePhD 7bdc302583 Implemented Venipede, Whirlipede, and Scolipede. 2023-06-10 16:32:22 -05:00
DoctorWafflePhD 8de2a12323 Implemented sleeping bubbles onto the sleeping particle. 2023-06-10 07:07:43 -05:00
tyzillion 6004c153d3 Broke up with Validate Animations.
- ValidateAnimations.kt removed
Pipeline restored.
2023-06-09 23:58:13 -04:00
DoctorWafflePhD ac96ad3720 Implemented updated Falinks. 2023-06-09 01:03:38 -05:00
DoctorWafflePhD a06793616d Tweaked the sleeping particle a bit, and tweaked the position of the sleep locator on Vivillon and Bonsly. 2023-06-09 00:44:24 -05:00
DoctorWafflePhD 97f545bd4e Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-09 00:35:29 -05:00
Paul a267b63df2 Fixed Falinks torso name replacement insanity I wanna unalive 2023-06-09 15:35:05 +10:00
Paul ea9d961fd8 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-09 09:00:48 +10:00
Paul 51396f94b1 Merge remote-tracking branch 'origin/main' into implement_pokemon 2023-06-09 08:59:25 +10:00
tyzillion 412dc73d9d "Sir, know why I pulled you over? No? Let me see your license. No? Well then I am gonna have to fail your pipeline. Sit tight."
Cacnea crash fixed and license updated.
2023-06-08 17:57:48 -04:00
DoctorWafflePhD c605e2d030 Tweaked the sleeping particle & made it exist on a special "particles" animation file so that any model may use it without having to edit every sleeping animation to include particle data. 2023-06-08 10:51:37 -05:00
DoctorWafflePhD d5c93b60a9 Implemented a proof-of-concept sleeping particle. Currently it only applies to Vivillon. 2023-06-07 11:44:13 -05:00
DoctorWafflePhD 7d8c6aef8e Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-06 21:57:02 -05:00
DoctorWafflePhD 3c593ea3ed Implemented (not-yet-officially-approved) Bonsly animations and made it a tad larger. Fixed a small issue with Cetitan's model rendering both mouths at once. Fixed a pivot point issue on Charcadet. Fixed an incorrectly-registered quirk on Alolan Exeggutor. 2023-06-06 21:39:10 -05:00
DoctorWafflePhD 5a7732588d Implemented Cetoddle and Cetitan. Touched up Glimmora's size. 2023-06-06 13:03:27 -05:00
DoctorWafflePhD 25488ae972 Implemented Bouffalant, and Cinderace remodel. Added missing "implemented" keys to Bonsly and Sudowoodo's species files. 2023-06-05 20:22:14 -05:00
tyzillion 4bf9733fe6 Implemented Cacnea, Cacturne, Nickit, Theivul, Duskull, Dusclops, and Dusknoir. 2023-06-05 21:19:45 -04:00
tyzillion 0672aebd61 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-05 21:18:52 -04:00
Waffle 5db7d6380f Bonsly, Sudowoodoo, Glimmet, & Glimmora implemented. 2023-06-05 19:38:01 -05:00
Waffle 7f90a6ffec Huntail now uses the same "slithering" behavior as Ekans when on land. Doduo and Dodrio now walk significantly faster. 2023-06-05 19:36:52 -05:00
Waffle d45f0e382b Fixed incorrect hitbox and scaling of Kricketot and Kricketune. Kricketune is now shoulder-mountable. 2023-06-05 14:27:01 -05:00
tyzillion fab6d6e82d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-06-04 20:34:33 -04:00
Waffle a79c61c5a4 Touched up UI positioning for Popplio line & Aerodactyl. Fixed incorrect package lines in Popplio line posers. 2023-06-04 10:00:56 -05:00
Waffle 3dfe05dccd Implemented updated Bidoof/Bibarel shiny textures 2023-06-04 06:06:44 -05:00
tyzillion e485484051 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-03 13:07:35 -04:00
tyzillion 865ddcd59b Fixed Pidgeotto flapping during idle instead of while flying. 2023-06-03 13:07:16 -04:00
Waffle 999070b270 Touched up Tandemaus and Maushold and added/tweaked some of their anims. 2023-06-03 11:40:50 -05:00
Waffle 00d1590790 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-06-03 05:49:02 -05:00
tyzillion 6cc17a08dc Bird Pokemon are actually drones created by the government. Source: KFC
Added flying placeholder animations to Pidgey, Pidgeotto, Pidgeot, Chatot, Rookidee, Corvisquire, Corviknight, Taillow, Swellow, Rowlet, Dartrix, and Decidueye.
2023-06-03 01:23:58 -04:00
tyzillion 60911f3ec7 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-05-31 20:59:20 -04:00
tyzillion 7f1a35fffe funny license go brrrrrr
(Added "implemented": true, to the Pokemon I added so far, cuz oversight.)
2023-05-31 20:57:07 -04:00
tyzillion 10f5fd673e Implemented Alolan Exeggutor, Galarian Farfetchd, Rookidee, Corvisquire, Corviknight, and Sirfetchd. 2023-05-31 20:41:10 -04:00
Waffle 765921d219 Updated Bidoof's model to the pivot-fixed version. 2023-05-30 08:29:47 -05:00
tyzillion 2422e60aa1 Updated Popplio, Brionne, and Primarina's models. Updated animations for Popplio and Brionne. Fixed Exeggutor crash. Implemented Barboach, Whiscash, Combee, Vespiquen, Lillipup, Herdier, and Stoutland. 2023-05-29 18:37:16 -04:00
Paul e9265eb0a6 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-29 18:30:03 +10:00
Paul 07ad7db139 Improved test error clarity and removed unsafe operation in ValidateAnimations 2023-05-29 18:29:56 +10:00
Waffle 159ecf5ffa Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-05-29 00:33:16 -05:00
tyzillion 12be2c7b7b Removed Klevin, fixing pipeline fails. 2023-05-29 01:29:23 -04:00
Waffle 95590a2673 Fixed Maushold-Three's model not rendering. Pidgeot moves a little quicker. 2023-05-29 00:23:58 -05:00
tyzillion 869f6b1120 Added animations that just added sleep to Arcanine, Jigglypuff line and Vulpix Line. Updated animations to Greninja, Eiscue, Luvdisc, Chimchar, Monferno, Infernape, Flittle, Espathra, Sobble, Drizzile, and Inteleon. Updated Model for Chimchar, Espathra, Torchic, Combusken, Blaziken, Exeggcute, Exeggutor, Lickilicky, Pichu, and Drizzile. Fixed Flittle having float being used instead of hover. Updated model and animation for Raichu. updated conditions on multiple faints. 2023-05-29 00:54:33 -04:00
tyzillion 2cdfac02e6 Updated shiny Dwebble and Crustle texture. Updated Heatmor, Aerodactyl, Greninja, Charcadet, Armarouge, and Ceruledge animations. Added sleep behavior to Magnemite and Magneton. 2023-05-28 18:46:34 -04:00
tyzillion a9127c7021 Fixed Magnezone, Arcanine,and Mudsdale, fixed missing metal sparks particle. 2023-05-28 17:08:59 -04:00
tyzillion 3023de995a Updated Changelog with Pokemon to be added and remodels. Updated Arcanine, Magnemite, Magneton, Magnezone model and textures. 2023-05-28 14:34:23 -04:00
tyzillion 59c3df6a47 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-28 14:32:57 -04:00
Waffle 7391e3bc69 Merge branch 'main' into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-05-28 06:54:59 -05:00
Waffle 4ab72a6334 Implemented Lotad line's new animations. 2023-05-28 06:15:07 -05:00
Waffle af357aca51 fixup! Implemented Ditto, Shuckle, and Pumpkaboo line's new animations. Pumpkaboo and Gourgeist also now have size variance. 2023-05-28 06:00:08 -05:00
Waffle c7d060bb8d Yanma and Yanmega wings now flap much faster (this was making me irrationally angry) 2023-05-28 03:35:53 -05:00
Waffle c3db5c0525 Vivillon now defaults to Meadow pattern (likely temporary) 2023-05-28 03:35:36 -05:00
Waffle 04328d2b8a Implemented Ditto, Shuckle, and Pumpkaboo line's new animations. Pumpkaboo and Gourgeist also now have size variance. 2023-05-28 03:34:59 -05:00
Paul 040a29f66e Added generic bedrock entity system, updated molang for fix, added test evo effect, and fixed some particle issues 2023-05-28 06:39:55 +10:00
tyzillion fb03f426c6 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-26 16:15:52 -04:00
Waffle 00ed7bb0e8 Added missing implemented keys to Scatterbug line's species files 2023-05-25 22:18:02 -05:00
Waffle 38d81ced56 Implemented Garganacl, added missing baseScale and hitbox keys in Nacli and Naclstack species files and fixed their hitboxes, tweaked their walkSpeeds 2023-05-25 22:17:11 -05:00
Waffle 95ecf75a3a Added the fixed Yanma shiny texture. 2023-05-25 20:01:41 -05:00
Waffle 0afde170f4 Tweaked some movement speeds (breloom & naclstack). Also tweaked Naclstack's walk animation slightly. 2023-05-25 19:59:20 -05:00
Waffle 5a312ee6c6 Somehow, Masquerain's wing textures got reverted. Re-reverted them - they should have transparency again. 2023-05-25 08:41:24 -05:00
Waffle 6533da0ed6 Fixed Scatterbug's baseScale and hitbox size. Spewpa now evolves into different Vivillon patterns based on biome. Some patterns are currently awaiting confirmation on obtainment method and are thus unavailable without the use of commands. 2023-05-25 08:37:29 -05:00
Waffle 339ad676ca Implemented Scatterbug, Spewpa, and Vivillon. Vivillon's wing pattern currently defaults to Meadow, and no behavior to determine Vivillon wing pattern based off evolution location is currently implemented. 2023-05-25 05:51:54 -05:00
Waffle 0edc762ff8 Butterfree no longer T-poses while flying, and moves at a speed of 0.4 2023-05-25 05:51:22 -05:00
Waffle 320a3a11b8 Implemented Stufful and Bewear. Both need shiny textures, and use placeholder animations. 2023-05-25 04:20:25 -05:00
Waffle f4d177ce8c Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/resources/assets/cobblemon/bedrock/pokemon/animations/0870_falinks/falinks.animation.json
#	common/src/main/resources/data/cobblemon/species/generation8/falinks.json
2023-05-25 01:41:46 -05:00
Waffle f3598e915e Implemented Falinks & updated licenses (haven't run that command in a while teehee). 2023-05-24 23:31:20 -05:00
tyzillion 3314075f6e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-05-24 19:21:10 -04:00
tyzillion 141296a2d5 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-24 19:19:59 -04:00
Waffle 48147f460b Implemented Falinks & updated licenses (haven't run that command in a while teehee). 2023-05-24 05:46:41 -05:00
Waffle 2d72fbb82a Implemented Carnivine. Needs animations. 2023-05-24 01:06:03 -05:00
Waffle 98b72f07b6 Added missing implemented key to Cutiefly and Ribombee's species files. 2023-05-24 01:05:33 -05:00
Waffle 465fb2bef4 Implemented the Wooper remodel, as well as some animations ++(.‿.)++ 2023-05-24 00:12:07 -05:00
Waffle d1f96af65f Separated Masquerain's texture into a base and wing texture, and made the wings slightly translucent. 2023-05-24 00:11:42 -05:00
Waffle 990dad0c51 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/resources/data/cobblemon/species/generation7/cutiefly.json
#	common/src/main/resources/data/cobblemon/species/generation7/ribombee.json
2023-05-24 00:01:05 -05:00
Waffle 67a8230b91 Made Cutiefly & Ribombee's wings translucent, as well as fixed accidentally swapped names in their resolver files (oops) 2023-05-23 08:21:14 -05:00
Waffle 0d66e7bc1b Made Cutiefly & Ribombee's wings translucent, as well as fixed accidentally swapped names in their resolver files (oops) 2023-05-23 08:09:34 -05:00
tyzillion 56f0e0a1e2 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-22 20:42:23 -04:00
Waffle 1e5c48129c Implemented Cutiefly and Ribombee. 2023-05-22 06:58:28 -05:00
Waffle aed830b1ea Implemented Cutiefly and Ribombee. 2023-05-22 06:47:22 -05:00
tyzillion c30596c89b Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-05-20 12:19:43 -04:00
Waffle 851e0e56dd Parasect can no longer look around, moves at a speed of 0.45, and is always on the move. Sorry, zombie crab. 2023-05-20 05:13:06 -05:00
Waffle 0e92743da5 Implemented Cutiefly and Ribombee. Probably broken, I just needed to move to a new local copy of the IDE because intelliJ moment idk idk 2023-05-20 02:59:29 -05:00
nlingebretson 0245d82250 Updated item sprite to use the up-to-date sprites in the repo and added base json files for berry data (incomplete) 2023-05-17 20:28:06 -05:00
Waffle 9dc3b910f4 Touched up Surskit and implemented Masquerain. 2023-05-11 10:18:50 -05:00
Waffle 089d75cf57 Fixed Walking Wake not actually walking on wakes. 2023-05-10 20:10:38 -05:00
Waffle 9ef45d6324 Touched up Surskit and implemented Masquerain. 2023-05-10 16:10:21 -05:00
Waffle 881a957f59 Added Surskit 2023-05-10 12:22:01 -05:00
Waffle 0e0562c1a3 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-09 17:38:23 -05:00
tyzillion 40cc7d30b2 Hopefully pipeline fix. 2023-05-09 18:01:05 -04:00
tyzillion c2b1d336db Updated Models for Aerodactyl, Spearow, Fearow, Drowzee, Hypno, Lickitung, Pidgeotto, Pidgeot, Scyther, Scizor, and Kleavor. All still need frames and scaling adjusted. 2023-05-09 17:41:27 -04:00
Waffle eca69b4d96 Increased Pikachu's movement speed to better fit its animation 2023-05-09 15:12:32 -05:00
Waffle c607198de9 Fixed an incorrect identifier of bidoof_female.geo.json 2023-05-09 13:40:27 -05:00
Waffle 3ce9bd05a8 Positioned Flittle & Espathra's portraits and profiles. Hopefully fixed Espathra's eye jank. 2023-05-09 13:34:17 -05:00
tyzillion d209918dde Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-05-09 14:06:38 -04:00
tyzillion c5de65044d Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-09 14:05:37 -04:00
Waffle 96fbe3a685 Removed some unused imports in Flittle's model
TODO: position Flittle and Espathra's portrait and profile
2023-05-08 20:34:20 -05:00
Waffle d33defea6a Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-08 20:31:11 -05:00
Waffle d16d3eac34 Implemented Flittle & Espathra. Flittle can be shoulder-mounted. 2023-05-08 20:30:57 -05:00
Waffle 99b175f72a Positioned Comfey's portrait, played with its shoulder mount position, & gave it behavior for flight and sleep. 2023-05-08 19:17:37 -05:00
Waffle ae4d16bfcb Positioned Comfey's portrait, played with its shoulder mount position, & gave it behavior for flight and sleep. 2023-05-08 18:14:00 -05:00
Waffle ff039c0d24 Tweaked Tandemaus and Maushold's hitboxes as well as their portraits and profile scales. 2023-05-08 16:57:51 -05:00
SPG f4ef41c130 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/repository/PokemonModelRepository.kt
2023-05-08 14:06:36 -07:00
SPG e572d22819 Implmented Poochyena
Implmented Mightyena
Implmented Sprigatto
Implmented Floragato
Implmented Meowscarada

Floragato is stuck in T-pose, will need to have someone look at it
2023-05-08 14:02:46 -07:00
Waffle 9c448eca97 Adds Ceruledge's textures 2023-05-08 15:37:44 -05:00
Waffle 742caa227d Added transformTicks to Golurk's animations, and made them slower than the default 10 ticks. 2023-05-08 15:37:02 -05:00
Waffle b095e87ec9 Implemented Charcadet, Armarouge, and Ceruledge. All 3 use placeholder animations. 2023-05-08 15:36:38 -05:00
Waffle b2c66efa83 Added TransformTicks to Golurk's model. They're a bit slower than the default of 10. 2023-05-08 14:22:28 -05:00
Waffle 7274713e50 Implemented Breloom's animations by Berri
Synced Breloom's movement speed to its animation speed
Scaled Shroomish back up just a tad (0.6 -> 0.8)
Scaled Breloom back up just a tad (0.8 -> 0.9)
Fixed Shuckle's portrait and profile placement
Made Garchomp even faster to better sync with its run animation
2023-05-08 13:53:20 -05:00
Waffle 094f943ab5 Implemented Shroomish and Breloom
Added missing transformTicks properties in Bidoof's poses (should transition between poses better)
2023-05-07 16:58:57 -05:00
Waffle f55198249f Implemented Drowzee and Hypno remodels (no anims)
Implemented Gligar and Gliscor (no anims)
Igglybuff is now shoulder mountable
Updated licenses
2023-05-07 06:49:13 -05:00
Waffle 2fddfe12e6 Implemented Chatot 2023-05-06 03:23:54 -05:00
Waffle 88619f0512 Implemented Fidough & Dachsbun
Gave Chimecho flight
Updated Chingling & Chimecho scale & hitboxes
2023-05-06 01:56:57 -05:00
Waffle 695368932d Implemented Fidough & Dachsbun
Gave Chimecho flight
Updated Chingling & Chimecho scale & hitboxes
2023-05-06 01:54:30 -05:00
Waffle 84926f12eb Made Golurk move slightly slower to better sync with its walking animation. 2023-05-03 06:52:42 -05:00
Waffle 9048c00021 Added Chingling and Chimecho, and posed them for portrait and profile. Neither have animations implemented currently. Updated licenses as well. 2023-05-03 06:43:00 -05:00
tyzillion ed5cc49b6d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2023-05-02 13:31:07 -04:00
Waffle f348b4e8de Fixed Bidoof's sleep, tweaked its portrait, and added license to Chinchou's model file. 2023-05-02 01:21:28 -05:00
Waffle 6acd8167fb Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2023-05-01 22:15:54 -05:00
Waffle b131c2fe1f Gave Bidoof a sleeping animation & implemented sleeping behavior. 2023-04-29 15:08:10 -05:00
Waffle d848a2e78c Gave Bidoof a sleeping animation & implemented sleeping behavior. 2023-04-29 15:03:19 -05:00
Waffle 2447f61f8c Fixed Bidoof's movement. oops
Also, made its WATER_FLOAT animation a bit quicker.
2023-04-29 14:14:31 -05:00
Waffle 9839e48dee Reduced Bidoof's swim speed, and added water floating animation (also used as a placeholder for swimming ATM) 2023-04-29 00:35:15 -05:00
Waffle 95f4f96cda actually implemented blink whoops 2023-04-27 16:19:16 -05:00
Waffle 9ce697bf00 Bidoof
- Updated some model pivots
- walkSpeed 0.35 -> 0.3
- ground_idle and ground_walk animations made
- Implemented blink
2023-04-27 16:18:18 -05:00
Waffle 5424513e7e Changed the species files of several Pokemon, mostly to change their movement speeds, though Wailord did get a size bump.
Venusaur walkSpeed 0.35 -> 0.3
Charmander walkSpeed 0.35 -> 0.3
Charmeleon walkSpeed 0.35 -> 0.3
Squirtle walkSpeed 0.35 -> 0.29
Wartortle walkSpeed 0.35 -> 0.29
Blastoise walkSpeed 0.35 -> 0.3
Caterpie walkSpeed 0.35 -> 0.26
Weedle walkSpeed 0.35 -> 0.26
Beedrill walkSpeed 0.35 -> 0.4
Pidgeot walkSpeed 0.35 -> 0.38
Rattata walkSpeed 0.35 -> 0.41
Raticate walkSpeed 0.35 -> 0.33
Slowpoke walkSpeed 0.35 -> 0.125
Slowbro walkSpeed 0.35 -> 0.18
Slowking walkSpeed 0.35 -> 0.23
Wailord scaled up
  - baseScale 1.3 -> 2
  - width 3.5 -> 3.2
  - height 2.3 -> 2.1
Galvantula walkSpeed 0.35 -> 0.4
Naclstack walkSpeed 0.35 -> 0.23
Gargancl walkSpeed 0.35 -> 0.25
2023-04-27 07:06:07 -05:00
Waffle 4de268fcd8 Scaled Chinchou, Shuckle, Tandemaus, and Maushold. Additionally made Shuckle move slowly. 2023-04-27 02:12:35 -05:00
Waffle 86c415cc55 Fixed a couple stray palette-nonconforming pixels on Gorebyss's texture. 2023-04-27 02:11:49 -05:00
Waffle e08066a26c Added Chinchou, Clamperl, Huntail, and Gorebyss 2023-04-27 01:21:23 -05:00
Waffle eea985d56d Added canFly behavior 2023-04-27 00:42:16 -05:00
Nick 000d210b33 Adjust comment checker for even more fun formats that break the unit test :D 2023-04-24 21:14:55 -07:00
tyzillion 124d68a8fe Updated license 2023-04-24 23:22:25 -04:00
tyzillion 0c019b1c71 Updated Model and Texture of Pikachu. Updated weedle texture. 2023-04-24 22:28:06 -04:00
tyzillion fd5468ff6e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2023-04-24 12:50:57 -04:00
SPG 1d2c1413da Implmented Lanturn
- Fixed License Violation
2023-04-23 21:21:56 -07:00
SPG 005945447b Implmented Lanturn 2023-04-23 21:20:44 -07:00
SPG d69ddef3e3 Implmented Lanturn 2023-04-23 17:53:29 -07:00
tyzillion 4ac7060e4d Implemented Spinarak, Ariados, Shuckle, Taillow, Swellow, Relicanth, Mudbray, Mudsdale, Comfey, Tandemaus, Maushold, Varoom, and Revavroom.
Updated model and textures of Farfetchd and Gengar.
Updated model of Sceptile.
Updated animation for Murkrow and Farfetchd.
2023-04-20 22:17:09 -04:00
nlingebretson 4bd30be29f Added lang data for berries and tooltips (part 1) 2023-04-15 19:20:58 -05:00
nlingebretson 0b52918d8d Pointed textures on trees to updated files. 2023-04-15 14:42:54 -05:00
bcheevers123 9b73565e28 Added Texture, Young Declare, Mature Declare, Blockstate, Item Icon, Item Declare. Some berrry trees missing textures. Lang and Berry Data need added. 2023-04-15 19:36:41 +01:00
bcheevers123 a1e04e8df2 Added Texture, Young Declare, Mature Declare, Blockstate, Item Icon, Item Declare. Some berrry trees missing textures. Langf and Berry Data need added. 2023-04-15 19:35:48 +01:00
nlingebretson 51a542b6a9 Added Aguav and Cheri Berry implementation examples 2023-04-15 10:15:28 -05:00
nlingebretson f0e8d80da4 Added texture/item files and added items in the declaration portion 2023-04-10 20:21:58 -05:00
Yaseen 532bf008d3 shorter desert long path 2023-03-28 18:09:11 +01:00
Yaseen 701c727475 Shorter long_paths for snowy and desert 2023-03-28 18:08:55 +01:00
Yaseen 3df605c50f Fix desert and taiga pokecenter nbts 2023-03-28 17:33:27 +01:00
jmmcp ad97188902 Updated snowy pokecenter nbt 2023-03-28 00:59:52 -04:00
Yaseen 237edcc2fa a bunch of code clean up 2023-03-27 17:18:10 +01:00
Yaseen 51ab2c4fd8 Tidy up access wideners 2023-03-27 16:31:28 +01:00
Yaseen c0a482a92a better desert village nbt 2023-03-27 16:29:55 +01:00
Yaseen 829a063fe7 Add support for legacy pool elements (for paths) + use CobblemonStructureIDs 2023-03-27 15:47:37 +01:00
Yaseen f3f2fa11f7 Delete some temp files 2023-03-27 15:45:31 +01:00
Yaseen 298ba53ec2 taiga with stairs 2023-03-27 08:09:14 +01:00
jmmcp 28401e3c95 Updated taiga nbt and changed weights 2023-03-27 00:43:40 -04:00
Yaseen 3a0ed1a244 half fix for taiga pokecenter jigssaw (still need to make it turn to stairs) 2023-03-27 02:44:25 +01:00
Yaseen b27895a3c2 some refactoring 2023-03-27 02:27:05 +01:00
Yaseen e8647313b7 Streets + processors 2023-03-27 02:23:36 +01:00
Yaseen 7fdff93a25 add mossify processor for taiga pokecenter 2023-03-27 02:18:55 +01:00
Yaseen 06335ca854 better way of adding pokecenters to structure pool 2023-03-27 02:02:50 +01:00
Yaseen ba22800783 Some experiments 2023-03-19 23:45:14 +00:00
Yaseen 832f260472 Remove unused mixins 2023-03-19 22:51:17 +00:00
Yaseen df594f18d4 Some cleanup + small fix 2023-03-17 00:57:37 +00:00
Yaseen 5663d50a1c Better fix 2023-03-16 21:04:57 +00:00
Yaseen 373be37287 delete unused mixin 2023-03-16 15:06:51 +00:00
Yaseen 7071d74196 little bit of cleanup 2023-03-16 03:57:52 +00:00
Yaseen f5f3ad0d58 seems like its working 2023-03-16 03:39:05 +00:00
Yaseen 7e1b9b65f1 fix taiga pokecenter nbt 2023-03-14 21:14:10 +00:00
Yaseen 57839da643 Bunch of clean up 2023-03-14 01:48:30 +00:00
Yaseen 4a4dd66a65 A bunch of mixin stuff 2023-03-13 23:59:12 +00:00
jmmcp cfcf97bc88 Updated jsons and village plains pokecenter NBT jigsaw location. 2023-03-06 19:11:16 -05:00
jmmcp 1adf625044 Updated pokecenter NBT files to have proper structure void blocks and healers/pcs implemented.
Implemented natural generation of plains, desert, snowy, taiga, and savanna village pokecenters.
2023-03-05 21:55:47 -05:00
jmmcp a136ca106b Merge remote-tracking branch 'origin/implementing-naturally-generated-structures' into implementing-naturally-generated-structures
# Conflicts:
#	common/src/main/resources/data/cobblemon/structures/village_plains_pokecenter.nbt
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/plains/houses.json
2023-03-05 18:27:40 -05:00
Yaseen cbe1a79c2a increase the weights 2023-03-05 23:03:44 +00:00
Yaseen 093f953c7f more houses on long path 2023-03-05 18:22:46 +00:00
Yaseen dfd4fd252f Added long path and pokemon center plains 2023-03-05 18:15:39 +00:00
jmmcp e22befbc33 Working towards generation in villages 2023-03-04 23:40:19 -05:00
jmmcp 7bbb0eac56 Working towards generation in villages 2023-03-04 15:09:32 -05:00
jmmcp c42facec8a Added pokecenter nbt files and allowed village_plains_pokecenter to naturally generate. 2023-03-01 21:07:59 -05:00
Licious17 7d2663b082 Add a few more berry items 2023-02-03 20:41:51 +00:00
Licious17 43c6751039 Fix compile error 2023-02-03 15:24:39 +00:00
Licious17 f0fc94d25a Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlockEntities.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonBlocks.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/block/BerryBlock.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/block/entity/BerryBlockEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobbledDataProvider.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
2023-02-03 15:19:26 +00:00
Licious17 10ba9c5f87 Added various API events related to the berry farming process. 2023-01-20 09:28:34 +00:00
Licious17 dcca1ec71f Add remaining interactions required for berry functionality. 2023-01-19 18:50:38 +00:00
Licious17 7847227a57 Remove unused import 2023-01-16 12:21:19 +00:00
Licious17 3f1660295e Implement berry mutation 2023-01-16 12:20:39 +00:00
Licious17 87f1063d6f Fix imports and licenses 2023-01-15 17:14:11 +00:00
Licious17 0951a7d73e Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/tags/CobblemonBlockTags.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/ClientPacketRegistrar.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
2023-01-15 17:06:02 +00:00
Licious17 256fcf3a8b Fixed berry flower and fruit not rendering for the first life cycle 2022-12-20 14:15:11 +00:00
Licious17 7e082f27e0 Remove reference to client only class in Berry API 2022-12-19 19:20:21 +00:00
Licious17 e81b8ca4f2 Removed VoxelShape for berry fruit and flowers, added customizable rotation to berry flower and fruits growth points. 2022-12-19 18:43:33 +00:00
Licious17 351910a3ef Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobbledDataProvider.kt
2022-12-19 12:52:42 +00:00
Paul e700dcb142 Model rotation example in berry block renderer 2022-12-13 20:45:41 +10:00
Paul 2527b0e5d1 Corrected comment [skip-ci] 2022-12-13 20:34:32 +10:00
Paul 0fe36a98d7 Cleanup code [skip-ci] 2022-12-13 20:31:10 +10:00
Paul c9ef897a2e Fixed positioning of berry and flower rendering 2022-12-13 20:30:11 +10:00
Licious17 2cc46406de Updated pecha fruit texture, fixed berry rendering culling. 2022-12-10 13:43:04 +00:00
Licious17 1ef39bf1a3 Attempts at berry fruit and flower rendering 2022-12-09 10:09:19 +00:00
Licious17 e0bc16a232 Merge branch 'main' into berry 2022-12-08 16:17:01 +00:00
Paul f46109e080 Fixed berry trees not rendering 2022-12-08 19:30:58 +10:00
Licious17 21983061a6 Fix tint index of berry tree model being shared by the break particle 2022-12-06 16:05:45 +00:00
Licious17 87543095f1 Cleanup 2022-12-06 15:08:26 +00:00
Licious17 688b0836a5 Add missing doc 2022-12-06 15:04:53 +00:00
Licious17 42d2a5ce89 Added util extension for Box ByteBuf read/write 2022-12-06 15:03:20 +00:00
Licious17 307f5e2c8d Merge branch 'main' into berry 2022-12-06 12:12:51 +00:00
Licious17 b1a6b43414 Fix pecha berry Y voxelshape y positions 2022-12-05 14:57:30 +00:00
Licious17 8d90e2d190 Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobbledDataProvider.kt
2022-12-05 14:51:37 +00:00
Licious17 767446c804 Implemented berry data synchronization with client 2022-12-05 14:49:50 +00:00
Licious17 b6d5762ddd Make berry tree animate the breaking after last life cycle, added LiteralHexColorAdapter type adapter 2022-12-05 13:47:10 +00:00
Licious17 dc0ab2e810 Add foliage color as a customizable datapack property of berries. 2022-12-05 13:27:18 +00:00
Licious17 f50ec2ae5a Fix berry tree not re-rolling growth points between harvests 2022-12-04 13:20:35 +00:00
Licious17 a4d0ddf229 Prevent unnecessary chunk saving on berry tree life cycles value update if the value is the same 2022-12-04 13:15:54 +00:00
Licious17 b1d84fef55 Fix berry tree entity read/write nbt being the other way around 2022-12-04 13:14:36 +00:00
Licious17 e26f4c33ba Document util functions inside BerryBlock and BerryBlockEntity 2022-12-03 14:21:09 +00:00
Licious17 7b023ab34f License stuff. 2022-12-03 14:15:57 +00:00
Licious17 ded186890d Implemented berry harvesting and life cycles. 2022-12-03 14:14:36 +00:00
Licious17 4c5b16e502 Added util to get the berry item and block implementation from the berry API, added pickstack functionality for the berry block 2022-12-03 12:35:15 +00:00
Licious17 6b95f8b7bf Update berry yield API for better mod compat 2022-12-03 12:24:44 +00:00
Licious17 4a50293e04 Change usages of VoxelShapes#cuboid to Block#createCuboidShape 2022-12-02 23:51:54 +00:00
Licious17 9fa829b30a Enabled dynamicBounds setting for Berry blocks 2022-12-02 23:07:50 +00:00
Licious17 0dc6b8321e Expanded berry growth factors to have API, allow data driven berry tree voxelshapes 2022-12-02 22:25:27 +00:00
Licious17 4616e61825 Implement berry datapack loading 2022-12-01 22:52:51 +00:00
Licious17 63c0b7da37 More berry data 2022-12-01 15:04:43 +00:00
Licious17 aad041998c Added block rendering stuff for berries 2022-11-30 13:22:52 +00:00
Licious17 b0e58975f2 License stuff, fixed berry tooltip 2022-11-30 12:41:00 +00:00
Licious17 cf41dd6fb4 Implemented Pecha interaction, fixed bad refactor on Flavor package path 2022-11-30 12:33:07 +00:00
Licious17 a66eb04097 Move InteractiveItem to API 2022-11-29 10:45:00 +00:00
Licious17 960d20599e Refactor InteractiveItem to be an interface instead, progress on berry block n item 2022-11-28 18:07:25 +00:00
Licious17 8ea6f13d34 License stuff 2022-11-28 15:21:03 +00:00
Licious17 34d28c798d Progress on data backing berries 2022-11-28 15:10:32 +00:00
Licious17 cb0046f4cc Fix merge bad import 2022-11-28 12:56:09 +00:00
Licious17 b475ead059 Merge branch 'main' into berry
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonItems.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
2022-11-28 12:52:36 +00:00
Licious17 9557c48cab Merge remote-tracking branch 'origin/berry' into berry 2022-11-28 12:50:26 +00:00
Licious17 1062507ffb Added barebones berry block 2022-11-28 12:50:15 +00:00
dhi_holo b5aef1cccc Revert "Update first_evolution.json"
This reverts commit f9df1085ec.
2022-11-26 03:27:20 +10:00
dhi_holo 658e6a9da5 Revert "Advancements Fixed Maybe?"
This reverts commit ff6f18d575.
2022-11-26 03:27:12 +10:00
dhi_holo ff6f18d575 Advancements Fixed Maybe?
I went and rewrote parts of the advancements until they worked properly as far as I can tell.
I don't get why it was breaking, but it was, and hopefully it won't from now on
2022-11-26 02:32:38 +10:00
dhi_holo f9df1085ec Update first_evolution.json
Should fix the issue Hiro mentioned earlier
2022-11-26 01:07:02 +10:00
Licious17 997bacefe2 Merge branch 'main' into berry 2022-11-25 12:46:45 +00:00
Licious17 5f94707a9e Added pecha berry assets, added pecha berry item 2022-11-25 12:40:47 +00:00
11011 changed files with 677780 additions and 50965 deletions
+4
View File
@@ -33,3 +33,7 @@ common/src/main/resources/assets/cobblemon/showdown
# Generated files
*/generated/resources/*
/fabric/src/generated/resources/cobblemon-common.accesswidener
/.ignored/
# MacOS
.DS_Store
+30
View File
@@ -0,0 +1,30 @@
<!-- 1. START HERE: (Before filling all this out, please quickly go to the list of all issues: (https://gitlab.com/cable-mc/cobblemon/-/issues/?sort=created_date&state=all) and do a quick search to see if your issue has already been reported. If it has, please add a comment to the existing issue instead of creating a new one.)-->
<!-- 2. If the issue was not already reported, please fill out the following template. -->
<!-- 3. If you do not know something, don't worry! Just fill out as much as you can to make sure the issue can get fixed asap. -->
## Summary
(Please summarize the bug encountered concisely)
## Steps to reproduce
(How one can reproduce the issue - this is very important)
## What is the current bug behavior?
(What actually happens)
## What is the expected correct behavior?
(What you should see instead)
## Cobblemon Version and Mod Loader
(Are you using Forge or Fabric? And what version of Cobblemon are you using?)
## Mods used besides Cobblemon
(Did you have any other mods installed besides Cobblemon? If so, please list them here)
## Relevant logs, screenshots and/or videos
(Paste any relevant logs - use code blocks (```) at the start and end to format console output, logs, and code, as
it's very hard to read otherwise. Or just put a link here)
## Additional Information
(If you can, link to the line of code that might be responsible for the problem, or any other info that might be useful)
/label ~bug
@@ -0,0 +1,31 @@
<!-- 1. START HERE: (Before filling all this out, please quickly go to the list of all issues: (https://gitlab.com/cable-mc/cobblemon/-/issues/?sort=created_date&state=all) and do a quick search to see if your feature was already requested. If it is, please add a comment to the existing issue instead of creating a new one.)-->
<!-- 2. If the feature request was not already reported, please fill out the following template. -->
<!-- 3. If you do not know something, don't worry! Just fill out as much as you can. -->
<!-- 4. The more info you provide here, the greater the chance of it being considered by the Design team. -->
## Summary
(Please summarize your feature request concisely)
## What are the projected benefits of this feature?
- (List)
- (benefits)
- (here)
## What could speak against this feature?
- (List)
- (possible)
- (cons)
## Why do you think the benefits outweigh the cons?
(Explain why you think the benefits outweigh the cons)
## Mods involved besides Cobblemon
(Does your suggestion require any other mods besides Cobblemon? If so, please list them here)
## Sketches, screenshots and/or videos
(Feel free to add any sketches, screenshots or videos that might help the Design team understand your suggestion)
## Additional Information
(Is there anything else you would like to add?)
/label ~feature ~suggestion ~needs-design
+651 -89
View File
@@ -1,39 +1,425 @@
# Changelog
## [1.4.0](#1-4-0)
## [1.5.0](#1-5-0)
### Additions
- Added nicknaming.
- Added mints, found on mountains.
- Added revival herbs, with pep-up flowers if fully grown, growing in lush caves.
- Added medicinal leeks, growing on the surface of rivers and ponds. It is a potion ingredient!
- Added big roots, generating from cave ceiling dirt and sometimes spreading into energy roots.
- Added trading between players. Press R while looking at another player, you'll figure it out.
- Added pasture blocks, used to let your PC Pokémon roam around your base.
- Added support for scale in animations.
- Added support for jump keyframes (i.e. pre and post keyframes)
- Made Nosepass point towards world spawn while idle.
- Added structure spawn conditions
- Added Pokémon cry system for battles and sending out.
- Added cries for Gen 1-9 starters and their evolutions.
- Added cries for Chatot, Darmanitan, Darumaka, Lucario, Mimikyu, Quagsire, Riolu, Wooper, Caterpie, Metapod, Butterfree, Weedle, Kakuna, Beedrill, Pidgey, Pidgeotto, Pidgeot, Rattata, Raticate, Cleffa, Clefairy, Clefable, Tauros, Miltank, Buneary, Lopunny, Wooloo, Dubwool.
- Added recipes for Berry Juice, Heal Powder, Remedy, Fine Remedy, Superb Remedy, Revive, Max Revive, HP Up, Protein, Iron, Calcium, Zinc, Carbos, PP Up, PP Max, Pasture, Medicinal Leek to Magenta Dye, Roasted Leek, Leek and Potato Stew, Braised Vivichoke, Vivichoke Dip, Mulch Base, Growth Mulch, Surprise Mulch, Coarse Mulch, Humid Mulch, Rich Mulch, Loamy Mulch, Peat Mulch, Sandy Mulch, Health Feather, Muscle Feather, Resist Feather, Genius Feather, Clever Feather, Genius Feather
- Added a shoulder mount for Mimikyu
- Added Advancement trigger for defeating Pokémon and collecting varieties of Pokémon.
- Added sleep animations to Arcanine, Jigglypuff, Wigglytuff, Vulpix and Ninetales.
- Added over (number here) ruin structures, where you can find Pokémon-themed Armor Trims and Pottery Sherds, Tumblestones, and more.
- Added (number here) fossil structures, where you can brush Suspicious Sand/Gravel for Fossils.
- Added the Data Monitor, Fossil Compartment, and Restoration Tank. Placed in the correct formation, you can use these to create a Restoration Machine where you can bring fossils back to life.
- Added 3 variants of Tumblestones, which can be planted near Lava or Magma to grow harvestable Tumblestone Clusters.
- Added Tumblestone Blocks, a storage block crafted from 9 Tumblestones.
- Added Ancient Poké Balls, which are aesthetic variants crafted from Tumblestones.
- Added the Ancient Feather, Wing, and Jet Balls, which fly further than regular Poké Balls.
- Added the Ancient Heavy, Leaden, and Gigaton Balls, which are heavier and don't fly as far as regular Poké Balls. These will receive more functionality in a future update.
- Added Original Trainer functionality. To edit the OT through commands, you must specify originaltrainertype=<Player/NPC>, and originaltrainer=<Username or UUID/NPC Name>
- Added support for planting Apricorn trees, berries, and mints in [Botany Pots](https://modrinth.com/mod/botany-pots)
- Added the hidden "True Vivillionaire" advancement.
- The "Poké Ball" Vivillon variant is now obtainable by evolving a Spewpa after obtaining the "Aspiring Vivillionaire" advancement.
- Added dynamic lighting support for any Species or Forms when using [LambDynamicLights](https://modrinth.com/mod/lambdynamiclights) or [Dynamic Lights Reforged](https://www.curseforge.com/minecraft/mc-mods/dynamiclights-reforged), at this time we don't ship with any defaults for this feature but addon creators can make use of this feature.
- Added a Display Case block! Use it to display your archaeological findings, or other items.
- Added 6 Pokémon-themed Pottery Sherds, obtained from ruin structures.
- Added a Pokémon-themed armor trim, obtained from ruin structures.
- You can now find Nether Fire Stone Ore in, surprisingly, the Nether.
- You'll also find Terracotta Sun Stone Ore in Badlands biomes.
- Added effects for many Poké Balls when sending out Pokémon or capturing.
- Added a new send-out ball toss animation that showcases the ball used for the Pokémon.
- Added simple move animations for Pokémon in battle with a proof of concept for more complicated animations.
- Added the EV Boosting Feathers.
- Added Type Gems.
- Added various new tags for searchability and better compatibility.
- Added the [Ability Capsule](https://bulbapedia.bulbagarden.net/wiki/Ability_Capsule) and [Patch](https://bulbapedia.bulbagarden.net/wiki/Ability_Patch), these have no acquisition method for now and only work as intended with the traditional ability format of 1 to 2 common abilities and 1 hidden ability.
- Added Gilded Chests, available in all Apricorn colors.
- Added Relic Coins, Relic Coin Pouches, and Relic Coin Sacks.
- Added various new tags for searchability and better compatibility.
- Added Type Gems. These items hold no functionality for now. Start collecting though...
- Added 6 custom Pottery Sherds, obtained from ruin structures.
- Added cries to Meowth, Alolan Meowth, Galaraian Meowth,
- Completed the advancement for placing a Tumblestone near Lava or Magma to make it grow.
- Added new held items: Ability Shield, Absorb Bulb, Air Balloon, Binding Band, Blunder Policy, Cell Battery, Covert Cloak, Damp Rock, Eject Button, Eviolite, Expert Belt, Float Stone, Focus Sash, Heat Rock, Icy Rock, Iron Ball, Light Ball, Loaded Dice, Red Card, Shell Bell, Sticky Barb, Smooth Rock, Soothe Bell and Weakness Policy.
### Pokémon Added
#### Gen 2
- Sentret
- Furret
- Qwilfish
- Heracross
- Skarmory
- Ferroseed
- Ferrothorn
#### Gen 3
- Lileep
- Cradily
- Anorith
- Armaldo
- Tropius
- Roselia
#### Gen 4
- Shieldon
- Bastiodon
- Cranidos
- Rampardos
- Budew
- Roserade
#### Gen 5
- Tirtouga
- Carracosta
- Archen
- Archeops
- Zorua
- Zoroark
- Petilil
- Lilligant
- Darumaka
- Darmanitan
- Woobat
- Swoobat
- Sandile
- Krokorok
- Krookodile
- Frillish
- Jellicent
- Cubchoo
- Beartic
- Deino
- Zweilous
- Hydreigon
- Larvesta
- Volcarona
#### Gen 6
- Tyrunt
- Tyrantrum
- Amaura
- Aurorus
- Goomy
- Sliggoo
- Goodra
#### Gen 7
- Turtonator
- Fomantis
- Lurantis
- Salandit
- Salazzle
- Jangmo-o
- Hakamo-o
- Kommo-o
#### Gen 8
- Gossifleur
- Eldegoss
- Arctozolt
- Arctovish
- Dracozolt
- Dracovish
- Basculegion
- Hisuian Zorua
- Hisuian Zoroark
- Hisuian Voltorb
- Hisuian Electrode
- Hisuian Qwilfish
- Overqwil
- Hisuian Sneasel
- Sneasler
- Stonjourner
- Cufant
- Copperajah
- Dreepy
- Drakloak
- Dragapult
- Hisuian Sliggoo
- Hisuian Goodra
#### Gen 9
- Gimmighoul.
- Using Relic Coins, you can increase Gimmighoul's Coin Stash. Upon reaching 999, it can be evolved into Gholdengo.
- Additionally, if you give Gimmighoul a Netherite Scrap, you can increase its Netherite Stash. Who knows what might happen if it fills up?
### Changes
- Pokémon now transition more smoothly between different poses.
- Updated models for Mimikyu, Alcremie, Squirtle, Wartortle, Blastoise, Omanyte, Omastar, Growlithe, Swinub, Piloswine, Basculine, Rowlet, Dartrix, Decidueye, Kabuto, Kabutops, Piplup, Prinplup, Elekid, Electabuzz, Cubone, Marowak, Paras, Drifloon, Drifblim, Venonat, Venomoth, Yanma, Yanmega, and Raboot.
- Updated animations for Diglett, Dugtrio, Dragonite, Omanyte, Omastar, Pinsir, Falinks, Lechonk, Litwick, Lampent, Chandelure, Carnivine, Galarian Meowth, Galarian Rapidash, Venonat, Venomoth, Phanphy, Donphan, Dratini, Dragonair, Happiny, Chansey, Blissey, Volbeat, Illumise, Numel, Drifloon, and Drifblim.
- Added more held items to the held item tag, and Metal Coat to the held item tab.
- Added all ores to the modloader ore tags, and added tags for each ore type to the mod (both blocks and items).
- Changed the Destiny Knot to be crafted with a Ghast Tear, rather than a diamond.
- You can now punch grown apricorns to harvest them.
- Renamed the "Vivillionaire" advancement to "Aspiring Vivillionaire"
- Removed the Inferno, Forsaken, Poké Ball, and Void patterns from the Aspiring Vivillionaire advancement.
- Updated movesets to add Gen 9 DLC moves.
- Apricorn Sprouts can now be planted directly on Apricorn leaves to create a new Apricorn of the same color.
- Added tooltips to interaction GUIs to make it clearer what they do.
- 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.
- 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.
- Fixed battle lang for Poison Touch Ability
- Fixed Cubone not being able to evolve into Alolan Marowak.
- Fixed Squawkabilly forms not being recognized.
- Fixed the bounce animation for Poké Balls being delayed by like, a full second.
- Note blocks now play the correct sound on the Apricorn Plank based blocks.
- Fixed an issue with transformed parts in posers causing whacky positional issues.
- Fixed Poké Balls freezing in an open state if you look away when it's meant to close.
- Adds a translation string name to the Empty Pokeball entity.
- Fixed very many issues with Bedrock particle effects.
- Fixed Arbok patterns not being as specific in spawning as they were intended.
- Fixed Pokémon not avoiding danger at all when pathfinding.
- Fixed Sobble line not being able to swim or breathe underwater.
- Fixed incompatibility with [Just Enough Resources](https://modrinth.com/mod/just-enough-resources-jer).
- Fixed incompatibility with [Visual Overhaul](https://modrinth.com/mod/visual-overhaul).
- Fixed an issue that allowed Pokemon to spawn on rails.
- Fixed the data set on Pokémon when abilities are given via properties such as in ``/spawnpokemon``.
- Fixed sometimes Pokémon losing hidden abilities when evolving, this fix will only take effect to newly created Pokémon.
### Developer
- Significantly changed the way properties in PokemonEntity work. This could break some plugins (not in a big way, but changes will be needed).
- Rebuilt the scheduling API to more clearly force side choices and temporal frames of reference for tasks.
- Added dialogue API and data registry.
- Opened up the ItemDropEntry class to allow for it to be extended.
- Added a new "advancement" evolution variant that takes an advancement identifier and succeeds if the player has the advancement.
- Made spawning API capable of non-entity spawning
- 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.
- 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.
- Custom fossils can be defined using a list of items and the resulting Pokémon. An example of `aerodactyl.json`:
```JSON
{
"result": "aerodactyl",
"fossils": [
"cobblemon:old_amber_fossil"
]
}
```
- Fetus models can be defined in `bedrock/fossils`.
- Fetus textures can be defined in `textures/fossils`.
- Fuel for the Restoration Machine is registered inside the `natural_materials` folder. To register more fuels, create a JSON file containing an array of objects. Each object supports the following fields:
- `content`: Integer containing the amount of fuel to add.
- `item` OR `tag`: Identifier of the item or item tag to be inserted.
- `returnItem`: Identifier of an item to return to the player after consumption.
- Added 3 new item tags: `ancient_poke_balls`, `fossils`, and `tumblestones`.
- Added a spawn rules system to modify general spawning behaviour, see the [wiki](https://wiki.cobblemon.com/index.php/Spawn_Rules) for more information.
- Added dialogue datapack folder and /opendialogue command.
- Added the item tag ``cobblemon:held/leaves_leftovers`` this can be used to flag apple-like items that can create leftovers when eaten.
- You can now add support for dynamic lighting implementations, Cobblemon ships with a default implementation for [LambDynamicLights](https://modrinth.com/mod/lambdynamiclights) and the [Dynamic Lights Reforged](https://www.curseforge.com/minecraft/mc-mods/dynamiclights-reforged), add the following to any species or form:
```JSON
{
"lightingData": {
"lightLevel": 14,
"_lightLevelCommentRemoveMe": "Above supports 0 to 15",
"liquidGlowMode": "LAND",
"_liquidGlowModeCommentRemoveMe": "Above supports LAND, UNDERWATER or BOTH"
}
}
```
- Following up on this change ``light_source`` was removed as a possible shoulder effect due to becoming unnecessary and never having had a default implementation.
- Added the item tag ``cobblemon:ability_changers``, contains the ``cobblemon:ability_capsule`` & ``cobblemon:ability_patch`` by default.
- Added the item tag ``cobblemon:held/is_friendship_booster``, allows items to give the Soothe Bell effect of a boost of 1.5x Friendship gained, contains ``cobblemon:soothe_bell`` by default.
## [1.4.1 (December 23rd, 2023)](#1-4-1)
### Additions
- Added battle spectating. Press R on a player in a battle and you can spectate and bully them for their tactics.
- Added the Litwick and Drifloon lines.
- Cobblemon now has compatibility with [Adorn](https://modrinth.com/mod/adorn), allowing you to craft Apricorn wood furniture.
- Berries can now be used in recipes from [Farmer's Delight](https://modrinth.com/mod/farmers-delight) and [Farmer's Delight (Fabric)](https://modrinth.com/mod/farmers-delight-fabric), as well as any other mods using the same berry tags.
- Boats, signs and hanging signs are now craftable with Apricorn wood.
- Added the Fairy Feather, Iron Ball, Cleanse Tag, Flame Orb, Life Orb, Smoke Ball, and Toxic Orb held items.
- Added the Inferno, Void, and Forsaken patterns for Vivillon. These can be obtained by evolving a Spewpa in the Nether, End, or Deep Dark respectively.
- Bees can now be fed using Pep-Up Flowers.
- Mooshtank can now be milked with a bowl for Mushroom Stew.
- Updated Showdown version to use generation 9 battle data.
- Added cries to Beldum, Metang and Metagross.
- Added a /bedrockparticle command to run Snowstorm-format particle effects.
- Added data for Dipplin, Fezandipiti, Munkidori, Ogerpon, Okidogi, Poltchageist and Sinistcha.
- Added additional nickname trigger "Grumm" for Inkay's evolution.
### Changes
- Using Potions, Status Heals, Ethers, and Antidotes will now return a glass bottle
- Using a Remedy, Fine Remedy, or Superb Remedy will no longer lower friendship with a Pokémon.
- The Healing Machine now has a [much more difficult recipe](https://wiki.cobblemon.com/index.php/Healing_Machine), placing it later game.
- Made the EXP. Share recipe cheaper.
- Turtwig can now be put on your shoulder.
- Updated Zubat line model, texture, and animations.
- Updated Geodude line models and textures.
- Added animations for Hitmontop, Tyrogue, and Mightyena.
- Tweaked animations for Dusknoir, Ratatta, Bewear, Exeggutor, and Alolan Exeggutor.
- Sized Kantonian Exeggutor down. Still big, but not TOO big.
- Tweaked cries for Pikachu, Raichu and Alolan Raichu.
- Fixed Swimming behaviors for Wimpod line, Oshawott line, Quaxly line, and Clodsire
- Changed the way level scaling works in spawning. By default, anything with a spawn range of up to 5 either side of the party highest level and everything else will spawn per its specified ranges.
- The nature of Pokémon will now be displayed italicized when a mint has been applied. Hovering over the nature will display the mint that was applied.
- Slightly lowered the volume of all cries.
- Giving Pokémon items now plays a sound
- Updated the Poké Ball model and animations.
- Pasture blocks will now also connect their bottom left and right sides to walls, iron bars, glass panes, and any other modded block that follows the same connection rules.
- The config option `consumeHeldItems` has been removed, please see the Datapack & Resourcepack Creators section for instructions on the updated method.
- Heal Powder can now be composted with a 75% chance of adding a layer
- Mental, Power, White, and Mirror Herbs can now be composted with a 100% chance of adding a layer.
- Added glowing eyes to Hoothoot and Noctowl.
- Mining Evolution Stone Ores with a Fortune pickaxe will now increase the amount of items received.
- Black Augurite can now be used to craft stone axes and obsidian.
- Using Experience Candies brings up the Party Pokémon Select screen when not targeting a Pokémon.
- Added tab completion for statuses to commands.
- Remedies can now be cooked in a Smoker and on a Campfire.
- Vertically flipped the Destiny Knot recipe.
### Fixes
- Fixed Raticate, Onix, Unfezant, Bergmite, Avalugg, Boltund and Revavroom cries not playing.
- Fixed Alolan Ratticate animations causing a crash.
- Fixed Quaxwell not doing its cry.
- Fixed Shroomish not using its idle.
- Fixed how Weight and Height is calculated for Pokémon, fixing the damage from moves like Low Kick.
- Fixed a staggering number of battle messages.
- Fixed various stone related blocks not being valid for Big Roots to spread onto on the Fabric version.
- Updated the registration of compostable items to improve compatibility with Fabric forks such as Quilt. Please note this does not mean we officially support Quilt, this change was only done since it was possible by correcting the registration to use the new intended way in the Fabric API.
- Fixed Dispensers being unable to shear grown Apricorns.
- Fixed Bowl not being given back to player after using Berry Juice
- Fixed missing text for attempting to catch an uncatchable Pokémon
- Fixed Moonphases for Clefairy line
- Fixed issue where Potions, Super Potions, and Hyper Potions did not work during battle
- Fixed the compatibility patch with the Forge version of [Carry On](https://modrinth.com/mod/carry-on) due to a bug on the mod, the Fabric version was unchanged and is still compatible.
- Added the ability to place Berries on modded Farmland blocks.
- Shouldered Pokémon now hop off when selected in team and R is pressed. This also is in effect in battles leading to shouldered Pokémon jumping of the shoulder of the trainer when it is their turn.
- Made more items compostable and changed the process for making items compostable.
- Added the ability for Hoppers to fill Brewing Stands with Medicinal Brews and Potions.
- Apricorn blocks are now flammable. Probably should have started that way, but we got there.
- The default pose for Pokémon being passengers is now "standing".
- Fixed issue where some IVs were changing every time a player logged back in.
- Fixed advancement crash from bad datapack evolution data.
- Fixed global influences being applied to TickingSpawners twice.
- Reverted the default SpawningSelector back to FlatContextWeightedSelector. This fixes multiple weight related issues, including weights with SpawningInfluences.
- Apricorn Planting advancement should work again.
- Advancement "Vivillonaire" should now allow High Plains and Icy Snow Vivillon to register.
- Fixed the last battle critical hits evolution requirement not working.
- Fixed the damage taken evolution requirement not saving progress.
- Fixed the defeated Pokémon evolution requirement not saving progress.
- Fixed potion brewing recipes not showing up JEI and similar mods on the Forge version.
- Fixed an exploit that could convert a single piece of Blaze Powder into an extra Medicinal Brew on the Forge version.
- Fixed an issue where health percentages would show incorrectly after healing
- Fixed the move Revival Blessing not allowing you to select from fainted party members.
- Fixed villagers not being able to pick up and plant mint seeds, vivichoke seeds, and revival herbs.
- Fixed Exeggcute faint.
- Fixed various spawn configuration issues across the board.
- Fixed a possible visual duplication of sent out Pokémon.
- Fixed battle text for Trace, Receiver, and Power of Alchemy.
- Fixed tooltips being appended too late in items.
- Fixed battles ending background music when battle music is not present.
- Fixed battles ending background music, instead of pausing, when battle music is played.
- Fixed a bunch of regionals to actually be obtainable, namely the unmodelled ones
- Fixed battle text for moves that were missing.
- Fixed a formatting error that affected Pokémon nicknames when the storage type is JSON.
- Fixed a crash that could occur on some servers relating to chunk loading and teleporting.
- Fixed an issue with Inkay's evolution requirement.
- Fixed conflicting evolution requirements that would cause the Ocean, River, Sun, and Tundra variants of Vivillon to be unobtainable through evolution.
- Fixed the Modern variant of Vivillon not being obtainable through evolution.
- Fixed Pokémon pathing through berry bushes, harming themselves in the process.
### Developer
- Fixed the `SpawnEvent` not respecting usage of `Cancelable#cancel`.
- Added the `EvolutionTestedEvent`, this allows listening and overriding the final result of evolution requirement tests.
- Rebuilt the scheduling API to more clearly force side choices and allow more local temporal frames of reference for tasks.
- Added utility script that can be used to generate all Spawn JSONS for all pokemon from the spawning spreadsheet in 1 click ([cobblemon_spawn_csv_to_json.py](utilityscripts%2Fcobblemon_spawn_csv_to_json.py)).
- The `HeldItemManager` has a new method `shouldConsumeItem`, this will return false by default to prevent breaking changes, see the documentation and update your implementations as needed.
- Added and implemented minSkyLight and maxSkyLight as config options for SpawnConditions
- Player specific battle themes can now be assigned to `PlayerData#battleTheme`.
- Changed design of `BattleStartedPreEvent`. Will now expose the `PokemonBattle`.
### Datapack & Resourcepack Creators
- Added 3 new item tags: `cobblemon:held/consumed_in_npc_battle`, `cobblemon:held/consumed_in_pvp_battle` & `cobblemon:held/consumed_in_wild_battle` these will determine which items get consumed in the implied battle types by Cobblemon, keep in mind the controller for this behaviour can be overriden by 3rd party.
- Unique wild encounter themes can now be associated with a specific species (or form) by assigning a SoundEvent identifier to the `battleTheme` field in the species' data configuration.
- Added a `structure` evolution condition, used to check if a Pokémon is in a given structure.
### Localization
- Updated translations for:
- French and Canadian French
- Simplified and Traditional Chinese
- Spanish and Mexican Spanish
- Pirate English
- German
- Thai
- Portuguese and Brazilian Portuguese
- Polish
- Italian
- Dutch
- Ukrainian
- Russian
Thank you so much to all of our community translators that bring the mod to the rest of the world!
## [1.4.0 - The Friends and Farms Update (October 13th, 2023)](#1-4-0)
### Additions
- Added pasture blocks, used to let your PC Pokémon roam around an area.
- Added nicknaming from the summary menu of a Pokémon (click their name).
- Added trading between players. Press R while looking at another player and you'll figure the rest out.
- Added mints for changing Pokémon stats. These are most commonly found at high altitudes.
- Added [Revival Herbs](https://wiki.cobblemon.com/index.php/Revival_Herb), with pep-up flowers when fully grown, growing in lush caves.
- Added [Medicinal Leeks](https://wiki.cobblemon.com/index.php/Medicinal_Leek), growing on the surface of rivers and ponds. It is a potion ingredient and can be cooked as food!.
- Added [Big Roots](https://wiki.cobblemon.com/index.php/Big_Root), generating from cave ceiling dirt which sometimes spread as energy roots.
- Added [69 Berry Trees](https://wiki.cobblemon.com/index.php/Berry_Tree) and [Berries](https://wiki.cobblemon.com/index.php/Berry). Some are found in village farms, some from planting different berries close to each other.
- Added mulches: Mulch Base, Growth Mulch, Surprise Mulch, Coarse Mulch, Humid Mulch, Rich Mulch, Loamy Mulch, Peat Mulch, and Sandy Mulch
- Added [Vivichokes](https://wiki.cobblemon.com/index.php/Vivichoke), obtainable from wandering villager trades and some loot chests.
- Added medicine brewing using medicinal leeks and berries in brewing stands.
- Added Pokémon cries when in battles and being sent out.
- Added medicinal items: Berry Juice, Heal Powder, Remedy, Fine Remedy, Superb Remedy, Revive, Max Revive, Potion, Super Potion, Hyper Potion, Max Potion, Full Restore, Full Heal, Antidote, Awakening, Burn Heal, Ice Heal, and Paralyze Heal.
- Added battle items: X Attack, X Defence, X Sp.Atk, X Sp.Def, X Speed, Dire Hit, and Guard Spec.
- Added EV items: Power Anklet, Power Band, Power Belt, Power Bracelet, Power Lens, Power Weight.
- Added food items: Roasted Leek, Leek and Potato Stew, Braised Vivichoke, and Vivichoke Dip
- Added evolution items: Auspicious Armor and Malicious Armor, which can be used to evolve Charcadet into Armarouge or Ceruledge respectively.
- Added (mostly brewing) recipes for HP Up, Protein, Iron, Calcium, Zinc, Carbos, PP Up, PP Max, and Medicinal Leek to Magenta Dye.
- Added held items: Bright Powder, Destiny Knot
- Added AI for Nosepass to point towards world spawn when idle. We just think it's neat.
- Added shoulder mounting for Mimikyu.
- Added flying placeholder animations to Pidgey, Pidgeotto, Pidgeot, Golbat, Crobat, Scyther, Scizor, Zapdos, Moltres, Articuno, Dragonite, Rowlet, Dartrix, and Decidueye.
- Added loot to various vanilla chest loot tables (Link Cable in Ancient Cities, Woodland Mansions, End Cities, and Igloos, Vivichoke Seeds in Jungle Temples, Dungeons, and Plains, Savanna, Snowy, and Taiga Villages, and all 7 Apricorn Sprouts in Desert, Plains, Savanna, Snowy, and Taiga Villages, as well as the Bonus Chest)
- Added loot to various vanilla chest loot tables (Link Cable in Ancient Cities, Woodland Mansions, End Cities, and Igloos, Vivichoke Seeds in Jungle Temples, Dungeons, and Plains, Savanna, Snowy, and Taiga Villages, and all 7 Apricorn Sprouts in Desert, Plains, Savanna, Snowy, and Taiga Villages, as well as the Bonus Chest, which can also have 5 of the basic Poké Ball types)
- Added a `doShinyStarters` gamerule to make it quick and easy to be offered shiny starters.
- Added a `doPokemonLoot` gamerule to toggle Pokémon dropping items/exp on death.
- Added ability activation announcement when in battle.
- Added animations for Wailord and made it BIGGER.
- Added Cherry Torterra variant.
- Added 2 new face spots for Spinda. The number of unique Spindas increases...
- Added Forretress Shulker variant.
- Added the `/teststore <player> <store> <properties>` command allowing command block/mcfunction users to query a party, PC or both for Pokémon matching specific properties and returning the match count, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.teststore` if a permission mod is present.
- Added the `/querylearnset <player> <slot> <move>` command allowing command block/mcfunction users to query a party slot and check if the Pokémon can learn a specific move returning a 1 if yes otherwise 0, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.querylearnset` if a permission mod is present.
- Added the `/testpcslot <player> <slot> <properties>` command allowing command block/mcfunction users to query a pc slot and check if the Pokémon matches specific properties returning a 1 if yes otherwise 0, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.testpcslot` if a permission mod is present.
- Added the `/testpartyslot <player> <slot> <properties>` command allowing command block/mcfunction users to query a party slot and check if the Pokémon matches a specific properties returning a 1 if yes otherwise 0, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.testpartyslot` if a permission mod is present.
- Added the `/clearparty <player>` command for emptying a player's party.
- Added the `/clearpc <player>` command for emptying a player's PC.
- Added the `/pokemonrestart <reset_starters>` and the `/pokemonrestartother <player> <reset_starters>` command allowing command block/mcfunction users to reset a players Pokémon data.
- Added support for "isBattle" and "isTouchingWater" properties on resource pack Pokémon poses. This allows your custom Pokémon to be posed differently when in battle.
- Added support for "isVisible" on a transformed part on resource pack Pokémon poses. This allows your custom Pokémon to have bones disappear in specific poses, such as hiding Greninja's throwing star when not in a battle pose.
- Added the `doPokemonLoot` gamerule to toggle Pokémon dropping items/exp on death.
### Pokémon Added
#### Gen 2
- Chikorita
- Bayleef
- Meganium
- Totodile
- Croconaw
- Feraligatr
- Cyndaquil
- Quilava
- Typhlosion
- Spinarak
- Ariados
- Shuckle
@@ -47,6 +433,12 @@
- Flaaffy
- Ampharos
- Sudowoodo
- Snubbull
- Granbull
- Phanpy
- Donphan
- Teddiursa
- Ursaring
#### Gen 3
@@ -60,7 +452,7 @@
- Cacnea
- Cacturne
- Poochyena
- Mightyenna
- Mightyena
- Wingull
- Pelipper
- Numel
@@ -73,11 +465,22 @@
- Chimecho
- Barboach
- Whiscash
- Volbeat
- Illumise
- Zigzagoon
- Linoone
- Ralts
- Kirlia
- Gardevoir
- Nincada
- Ninjask
- Shedinja
- Beldum
- Metang
- Metagross
#### Gen 4
- Cherubi (Planned)
- Cherrim (Planned)
- Carnivine
- Shinx
- Luxio
@@ -90,48 +493,77 @@
- Chatot
- Combee
- Vespiquen
- Buizel
- Floatzel
- Starly
- Staravia
- Staraptor
- Gallade
#### Gen 5
- Bouffolant
- Bouffalant
- Roggenrola
- Boldore
- Gigalith
- Venepede
- Whirlpede
- Venipede
- Whirlipede
- Scolipede
- Yamask (Planned)
- Cofagrigus (Planned)
- Patrat (Planned)
- Watchog (Planned)
- Yamask
- Cofagrigus
- Patrat
- Watchog
- Lillipup
- Herdier
- Stoutland
- Cottonee
- Whimsicott
- Pidove
- Tranquill
- Unfezant
- Timburr
- Gurdurr
- Conkeldurr
#### Gen 6
- Scatterbug
- Spewpa
- Vivillion
- Skrelp (Planned)
- Dragalge (Planned)
- Bunnelby (Planned)
- Diggersby (Planned)
- Vivillon
- Skrelp
- Dragalge
- Bunnelby
- Diggersby
- Phantump
- Trevenant
- Fletchling
- Fletchinder
- Talonflame
#### Gen 7
- Wishiwashi (Planned)
- Wishiwashi
- Cutiefly
- Ribombee
- Stufful
- Bewear
- Comfey
- Alolan Exeggutor
- Alolan Raichu
- Alolan Meowth
- Alolan Persian
- Komala
- Wimpod
- Golisopod
- Crabrawler
- Crabominable
- Mudbray
- Mudsdale
#### Gen 8
- Arrokuda (Planned)
- Barraskewda (Planned)
- Arrokuda
- Barraskewda
- Nickit
- Thievul
- Falinks
@@ -140,12 +572,28 @@
- Rookidee
- Corvisquire
- Corviknight
- Galarian Ponyta
- Galarian Rapidash
- Yamper
- Boltund
- Galarian Zigzagoon
- Galarian Linoone
- Obstagoon
- Galarian Meowth
- Perrserker
- Ursaluna
#### Gen 9
- Sprigatitto
- Sprigatito
- Floragato
- Meowscarada
- Fuecoco
- Crocalor
- Skeledirge
- Quaxly
- Quaxwell
- Quaquaval
- Flittle
- Espathra
- Garganacl
@@ -155,88 +603,186 @@
- Ceruledge
- Cetoddle
- Cetitan
- Shroodle (Planned)
- Grafaiai (Planned)
- Shroodle
- Grafaiai
- Tandemaus
- Maushold
- Varoom
- Revavroom
- Squawkabilly (Planned)
- Squawkabilly
- Glimmet
- Glimmora
- Annihilape
- Tinkatink
- Tinkatuff
- Tinkaton
- Maschiff
- Mabosstiff
- Lechonk
- Oinkologne
- Paldean Wooper
- Clodsire
### Changes
- Updated model and textures of Arcanine, Magnemite, Magneton, Magnezone, Exeggcute, Exeggutor, Farfetchd, Elekid, Electabuzz, Electivire, Pichu, Pikachu, Raichu, Gengar, Wooper Drowzee, Hypno, Aerodactyl, Spearow, Fearow, Lickitung, Pidgeotto, Pidgeot, Scyther, Scizor, Kleavor, Popplio, Brionne, Primarina, Torchic, Combusken, Blaziken, Aerodacyl, Scyther, Scizor, Kleavor, Lickitung, Lickilicky, Happiny, Chansey, Pidgey, Pidgeotto, Pidgeot, Spearow, Fearow, Drowzee, Hypno, Arcanine, Magnemite, Magneton, Magnezone, Exeggcute, Exeggutor, Farfetchd, Elekid, Electabuzz, Electivire, Pichu, Pikachu, Raichu, and Gengar.
- Updated models of Sceptile and Shuckle.
- Removed the existing shoulder effects from Pokémon until we have more balanced versions of them (they're too powerful!)
- Updated models and textures of Weedle, Dwebble and Crustle, Spiritomb, Koffing and Weezing, Kadabra and Alakazam, Emolga, Oshawott, Doduo and Dodrio, Dratini and Dragonair and Dragonite, Sneasel and Weavile, Gyarados, Hitmonlee and Hitmonchan, Chesnaught, Spinda, Mamoswine, Steelix, Misdreavus and Mismagius, Buneary and Lopunny, Golduck, Meowth and Persian, Fennekin and Braixen and Delphox, Snivy and Servine and Serperior, Ratatta and Raticate, Nidorina and Nidoqueen, Nidoran Male and Nidoking, Riolu and Lucario, Haunter and Gengar, Mankey and Primeape, Mew and Mewtwo, Arcanine, Magnemite and Magneton and Magnezone, Exeggcute and Exeggutor, Elekid and Electabuzz and Electivire, Pichu and Pikachu and Raichu, Wooper, Drowzee and Hypno, Aerodactyl, Spearow and Fearow, Lickitung and Lickilicky, Pidgey and Pidgeotto and Pidgeot, Scyther and Scizor and Kleavor, Popplio and Brionne and Primarina, Torchic and Combusken and Blaziken, Happiny and Chansey and Blissey.
- Updated animations for Steelix, Turtwig and Grotle and Torterra, Ponyta and Rapidash, Piplup and Prinplup and Empoleon, Drowzee and Hypno, Farfetch'd, Exeggcute and Exeggutor, Bidoof, Chimecho, Lickitung and Lickilicky, Popplio and Brionne, Luvdisc, Chimchar and Monferno and Infernape, Sobble and Drizzile and Inteleon, Greninja, Heatmor, Aerodactyl, Ditto, Lotad and Lombre and Ludicolo, Pumpkaboo and Gourgeist.
- Updated sprites for EV medicines, the rare candy, and the apricorn door item.
- Updated textures for apricorn doors and all the evolution stone ores.
- Ponyta and Rapidash now have animated textures; they look insane.
- Updated Apricorn Leaves color.
- Wild Pokémon now heal if you are defeated by them or flee from them.
- Doubled the default time between ambient Pokémon cries (they have cries if you're using a resource pack to add them)
- Moved spawn attempts per tick to a config option (ticksBetweenSpawnAttempts)
- PCs can now be waterlogged
- Starter selection prompt now appears as a tutorial-esque toast instead of plain text
- Cobblemon items can now all have their own tooltips via resourcepacks, to add a tooltip simply add a lang entry like "item.cobblemon.{item_id}.tooltip", if you want to add multiple tooltip lines you can do so with "item.cobblemon.{item_id}.tooltip_1" and upwards.
- Updated texture of Weedle.
- Updated shiny texture of Dwebble and Crustle.
- Updated Animations for Piplup, Prinplup, Empoleon, Drowzee, Hypno, Farfetch'd, Exeggcute, Exeggutor, Bidoof, Chimecho, Lickytung, Lickilicky, Popplio, Brionne, Luvdisc, Chimchar, Monferno, Infernape, Sobble, Drizzile, Inteleon, Greninja, Heatmor, Aerodactyl, Ditto, Lotad, Lombre, Ludicolo, Pumpkaboo, Gourgeist.
- Reorganised the advancements recipes folder
- Pokeedit command now supports IVs and EVs.
- Pokéedit command now supports IVs and EVs.
- Reorganised creative categories
- Pokemon can now wander into non-solid blocks such as foliage
- Pokeballs now despawn after 30 seconds
- Pokémon can now wander into non-solid blocks such as foliage
- Thrown Poké Balls now despawn after 30 seconds so that they don't fly forever.
- Dive Balls will now have the same motion speed underwater as if they were thrown in the air.
- Hardcoded potion shoulder effects have been removed, you can now use any potion vanilla or otherwise with the parameters you'd like, for more information see the [Datapack & Resourcepack Creators](#datapack-&-resourcepack-creators) section.
- Clicking categories of the Stat sub-section or the party reorder button in the Summary screen will now produce a click sound.
- Hardcoded potion shoulder effects have been removed. You can now use any potion vanilla or otherwise with the parameters you'd like, for more information see the [Datapack & Resourcepack Creators](#datapack-&-resourcepack-creators) section.
- Clicking categories of the Stat subsection or the party reorder button in the Summary screen will now produce a click sound.
- Updated PC Recipe.
- Improved Pokémon AI and movement.
- Friendship will slowly increase when Pokémon are shoulder-mounted.
- Master Balls are now unable to be burned when dropped into fire/lava. They're made from stronger stuff.
- Pokémon will appear red when hurt, like regular entities, except when they're fainting.
- Pokémon's air meter no longer depletes while battling underwater.
- Sleeping partially restores PP of Pokémon
- Shoulder mounts now match the shoulder position a bit more accurately when sneaking.
- Poison Heal will now cause poisoned Pokémon to heal outside of battle.
- Updated Poké Ball, PC, UI, evolution and Healing Machine sounds.
### Added cries to the following Pokémon:
- All starters and their evolutions
- Caterpie, Metapod, Butterfree
- Weedle, Kakuna, Beedrill
- Pidgey, Pidgeotto, Pidgeot
- Rattata, Raticate
- Spearow, Fearow
- Ekans, Arbok
- Pichu, Pikachu, Raichu, Alolan Raichu
- Cleffa, Clefairy, Clefable
- Mankey, Primeape, Annihilape
- Ponyta, Rapidash, Galarian Ponyta, Galarian Rapidash
- Farfetch'd, Galarian Farfetch'd, Sirfetch'd
- Onix, Steelix
- Tauros
- Ditto
- Eevee, Vaporeon, Jolteon, Flareon, Espeon, Umbreon, Leafeon, Glaceon, Sylveon
- Hoothoot, Noctowl
- Mareep, Flaaffy, Ampharos
- Aipom, Ambipom
- Wooper, Quagsire, Clodsire
- Snubbull, Granbull
- Miltank
- Poochyena, Mightyena
- Taillow, Swellow
- Ralts, Kirlia, Gardevoir, Gallade
- Shroomish, Breloom
- Nincada, Ninjask, Shedinja
- Buneary, Lopunny
- Chingling
- Chatot
- Riolu, Lucario
- Pidove, Tranquill, Unfezant
- Roggenrola, Boldore, Gigalith
- Venipede, Whirlipede, Scolipede
- Maractus
- Dwebble, Crustle
- Yamask, Cofagrigus
- Bunnelby, Diggersby
- Fletchling, Fletchinder, Talonflame
- Scatterbug, Spewpa, Vivillon
- Honedge, Doublade, Aegislash
- Skrelp, Dragalge
- Phantump, Trevenant
- Pumpkaboo, Gourgeist
- Bergmite, Avalugg
- Mudbray, Mudsdale
- Stufful, Bewear
- Mimikyu
- Rookidee, Corvisquire, Corviknight
- Nickit, Thievul
- Wooloo, Dubwool
- Yamper, Boltund
- Tandemaus
- Fidough, Dachsbun
- Squawkabilly
- Nacli, Naclstack, Garganacl
- Charcadet, Armarouge, Ceruledge
- Maschiff, Mabosstiff
- Shroodle, Grafaiai
- Flittle, Espathra
- Tinkatink, Tinkatuff, Tinkaton
- Varoom, Revavroom
- Glimmet, Glimmora
- Cetoddle, Cetitan
- Tatsugiri
### Fixes
- Fixed spawning moon phase dependent Pokémon only when the moon phase is wrong
- Fixed spawning moon phase dependent Pokémon only when the moon phase is wrong (that's a funny woopsy)
- Fixed large Pokémon spawning partially inside walls where they suffocate.
- Fixed messages for entry hazards, screens, Tailwind, Perish Song, Destiny Bond, Shed Skin, Uproar, Forewarn, Disguise, Arena Trap, Yawn, Curse, Clamp, Whirlpool, Liquid Ooze, Miracle Eye and Safeguard.
- Fixed custom Pokémon in your party or PC not being removed when the addon is removed, causing major issues.
- Fixed messages for entry hazards, screens, weather, damage, healing, Tailwind, Perish Song, Destiny Bond, Shed Skin, Uproar, Forewarn, Disguise, Arena Trap, Yawn, Curse, Clamp, Whirlpool, Liquid Ooze, Miracle Eye, Safeguard, Magic Bounce, Lock On, Focus Energy, Confusion, and more.
- Fixed Porygon not evolving with an Upgrade.
- Fixed super sized Pumpkaboo not having any moves.
- Fixed Infernape look animation.
- Fixed Garchomp t-posing while swimming.
- Fixed a bug that caused sleeping Pokémon to stay asleep.
- Fixed a bug that would freeze a battle when a Pokémon gets trapped due to an ability.
- Fixed Garchomp T-posing while swimming which was very funny.
- Fixed a bug that caused sleeping Pokémon to stay asleep. Forever. The years passing them by as they dream of a world without hate...
- Fixed a bug that would freeze a battle when a Pokémon gets trapped by an ability, making the trap abilities even scarier and trap-like than they were before.
- Fixed the Poké Ball close animation canceling whenever colliding with a block.
- Fixed faint animations not working properly in add-ons.
- Fixed lighting and Pokémon label issues when a Pokémon item frame is nearby.
- Fixed Pokémon being able to spawn outside the world border as a tease.
- Fixed deepslate water stone ore items looking like deepslate fire stone ores.
- Fixed a bunch of client-side logging errors when Pokémon are shoulder mounted.
- Fixed deepslate water stone ore items looking like deepslate fire stone ores. Huh?
- Fixed a bunch of client-side logging errors when Pokémon are shoulder mounted. You didn't notice? Good.
- Fixed a crash when wild Pokémon have to struggle under specific circumstances.
- Fixed uncolored pixels on Yanma's shiny texture.
- Fixed apricorn tree leaves looking gross on Fast graphics mode.
- Fixed apricorn tree leaves looking gross on the Fast graphics mode.
- Fixed hoes not breaking apricorn tree leaves any faster.
- Fixed Shiftry's PC model position.
- Fixed the /pc command not playing the opening sound.
- Fixed Shedinja not being able to recover naturally.
- Fixed different forms of Pokémon not being able to appear as different sizes.
- Fixed the Healing Machine soft locking you from using others when removed by non-players.
- Fixed animations being sped up when using the Replay Mod.
- Fixed particle animations not running when a Pokémon is off-screen.
- Fixed Pokémon variants and layers not rendering correctly when shouldered and playing on a dedicated server, existing shoulders affected will need to be retrieved and shouldered again.
- Shoulder effects will now stay applied through situations that remove potion effects such as drinking milk.
- Fixed Shedninja evolving to use the consumed Pokeball and removed the held item.
- Fixed non-existent species in spawn pool file causing random species to spawn.
- Fixed shoulder effects not staying applied through situations that remove potion effects such as drinking milk.
- Fixed Shedinja not being able to recover naturally.
- Fixed Shedinja evolving to use the consumed Poké Ball and removed the held item to prevent dupes.
- Fixed Shedinja healing above 1 HP.
- Fixed Shedinja, basically.
- Fixed shearing Pokémon dropping 0-2 wool instead of 1-3.
- Fixed some alignment issues in the stat hexagon of the summary menu.
- Fixed some alignment issues in the stat hexagon of the summary menu. OCD people rejoice.
- Fixed capture calculations not applying ball bonuses entirely correctly.
- Fixed battles soft-locking when consecutive Pokémon faint on switch-in.
- Fixed timing and color of battle window messages.
- Fixed players being able to trade, battle and let out their Pokémon while in spectator mode.
- Fixed Galarian Yamask not being able to evolve and by proxy the ``damage_taken`` evolution requirement.
- Fixed Bisharp not being able to evolve and by proxy the ``defeat`` evolution requirement.
- Fixed White-Striped Basculin not being able to evolve because of a broken ``recoil`` evolution requirement.
- Fixed Primeape, Qwilfish and Stantler not being able to evolve because of a broken ``use_move`` evolution requirement.
- Fixed Bramblin, Pawmo, and Rellor not being able to evolve because of a broken ``blocks_traveled`` evolution requirement.
- Fixed displayName property in spawn files not doing what it's meant to do.
- Fixed Pokémon not sleeping in the wild like we wanted them to.
### Developer
- Added SpawnEvent
- Added persistent NBT property inside Pokemon to store quick and simple data.
- Added SpawnEvent, ThrownPokeballHitEvent, PokemonSentEvent, PokemonRecalledEvent.
- Added BattleFledEvent, BattleStartedEvent, BattleFaintedEvent.
- Added persistent NBT property inside Pokémon to store quick and simple data.
- Species and FormData have had their evolutions, pre-evolution and labels properties exposed. It is still recommended to work using a Pokémon instance when possible.
- Added capture check to BattleVictoryEvent
- Added ThownPokeballHitEvent
- Added capture check to BattleVictoryEvent.
- The various hardcoded potion shoulder effects have been removed, make use of PotionBaseEffect.
- Added ContextManager for tracking causes and contexts of conditions created during a battle. See BattleContext for types of conditions that are tracked.
- Added MongoDB support for storing Pokémon and Player data. Must be enabled in config, requires MongoDB core and sync drivers (4.10.0+).
- CobblemonShowdown updated to version 10.
- Generation of a battle can be set in BattleFormat.
- Pokémon now have ``teraType``, ``dmaxLevel``, and ``gmaxFactor`` properties. Gimmicks can be used during battle by adding the respective identifiers to ``keyItems`` in PlayerData: ``key_stone``, ``z_ring``, ``dynamax_band``, and ``tera_orb``. Dynamax is only supported in Gen 8 battles. Mega Evolution and Z-Power require custom held items to be added (e.g. an item with the path ``gengarite`` will allow Gengar to Mega Evolve). Currently custom Z-Crystals and Mega Stones are not supported.
### Datapack & Resourcepack Creators
- All potion related shoulder effects have had their IDs changed, they now all share the same type being `potion_effect` and use the vanilla Potion data [parameters](https://minecraft.fandom.com/wiki/Potion#Item_data), take for example the default Pidgey asset:
- All potion related shoulder effects have had their IDs changed. They now all share the same type being `potion_effect` and use the vanilla Potion data [parameters](https://minecraft.fandom.com/wiki/Potion#Item_data). For example, here is the converted Pidgey asset:
- ```json
{
"type": "potion_effect",
@@ -247,6 +793,23 @@
"showIcon": false
}
```
- Renamed the ``walked_steps`` evolution requirement to ``blocks_traveled``.
- Added support for scale in animations.
- Added support for jump keyframes (i.e. pre and post keyframes)
- Added structure spawning conditions
- Added Advancement trigger for defeating Pokémon and collecting varieties of Pokémon.
- Added support for "isBattle" and "isTouchingWater" properties on resource pack Pokémon poses. This allows your custom Pokémon to be posed differently when in battle.
- Added support for "isVisible" on a transformed part on resource pack Pokémon poses. This allows your custom Pokémon to have bones disappear in specific poses, such as hiding Greninja's throwing star when not in a battle pose.
- Added support for battle music. Sounds can be added to the ``battle.pvp.default`` and ``battle.pvw.default`` sound events.
- Added 'enabled' optional property on model layers, allowing later variations to disable previously-defined layers. See [this issue](https://gitlab.com/cable-mc/cobblemon/-/issues/335) for how this looks.
- Cobblemon items can now all have their own tooltips via resourcepacks. To add a tooltip, add a lang entry like "item.cobblemon.{item_id}.tooltip". If you want to add multiple tooltip lines you can do so with "item.cobblemon.{item_id}.tooltip_1" and upwards.
- Item interaction evolutions and held item requirements now support NBT by creating an object JSON containing the key ``item`` for what used to be the existing condition support and a ``nbt`` key for the NBT format, this is the string [format](https://minecraft.fandom.com/wiki/NBT_format) expected in commands. Existing data does not need to be updated.
- Fixed faint animations not working properly in add-ons.
- Fixed non-existent species in spawn pool files causing random species to spawn.
### Localization
- Added partial translations for Dutch, Polish, Swedish, Hungarian, Czech, Cyprus Greek, and even Esperanto.
- Updated translation for French and Canadian French, Simplified Chinese, Japanese, Korean, Spanish and Mexican Spanish, Pirate English, German, Thai, Turkish, Portuguese and Brazilian Portuguese, Ukrainian, and Russian.
## [1.3.1 (March 31st, 2023)](#1-3-1)
@@ -260,7 +823,7 @@
- Add lava surface spawn preset.
- Added an ``any`` evolution requirement allowing you to define ``possibilities`` of other evolution requirements, for example, this allows you to create an evolution that requires the Pokémon to be shiny or a female.
- Added the `/spawnpokemonfrompool [amount]` or `/forcespawn [amount]` command to spawn Pokémon(s) in the surrounding area using the natural spawn rates/pool of that area, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.spawnpokemon` if a permission mod is present. On a successful execution of the command, the amount of Pokémon spawned will be the output.
- Added the `/pokebox` and `/pokeboxall` commands to move Pokemon(s) to the PC from a Player's party, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.pokebox` if a permission mod is present. On a successful execution of the command the output will be the number of pokemon moved to the Player's PC.
- Added the `/pokebox` and `/pokeboxall` commands to move Pokémon(s) to the PC from a Player's party, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.pokebox` if a permission mod is present. On a successful execution of the command the output will be the number of pokemon moved to the Player's PC.
- Added the `/pc` command which opens up the PC UI the same way interacting with the block would, this will be a cheat command in the Minecraft permission system or use the permission `cobblemon.command.pc` if a permission mod is present.
### Changes
@@ -283,7 +846,6 @@
- Changed the recipes for Mystic Water, Miracle Seed, and Charcoal Stick to utilise the evolution stones, as well as Never-Melt Ice having an alternate recipe using the Ice Stone.
- Replaced the `Failed to handle` battle messages to `Missing interpretation` to make it more clear that mechanics do work just still pending dedicated messages.
- Healing Machine and PC are now mine-able with pickaxes and Apricorn leaves are mine-able using hoes.
- Updated Pokéball, UI and evolution sounds.
### Fixes
- Fixed killing a Dodrio killing your game. Dodrio will never look the same to us.
@@ -593,20 +1155,20 @@
- Fixed spawning in several biome tag categories.
- Fixed resource pack support for Pokémon models and textures.
- **Model Fixes**
- Fixed Paras and Nidoqueen looking very weird.
- Fixed Hitmonchan asserting dominance with a T-pose as well as Grimer and Muk pointing their hands to the sky.
- Fixed specific Pokémon suddenly pausing their animation after staying still for a long time.
- Fixed Mankey's feet being buried in the ground.
- Updated the Substitute model and updated its shiny texture to be better for the red-green colorblind.
- Improved Horsea, Seadra, and Kingdra animations, especially on land.
- Fixed Paras and Nidoqueen looking very weird.
- Fixed Hitmonchan asserting dominance with a T-pose as well as Grimer and Muk pointing their hands to the sky.
- Fixed specific Pokémon suddenly pausing their animation after staying still for a long time.
- Fixed Mankey's feet being buried in the ground.
- Updated the Substitute model and updated its shiny texture to be better for the red-green colorblind.
- Improved Horsea, Seadra, and Kingdra animations, especially on land.
- **Battle Fixes**
- Fixed an issue with battles where Pokémon had a different max HP causing some desync issues with the health bars.
- Fixed Magnitude battle messages.
- Moves that are disabled or out of PP now show transparently in the battle GUI instead of being hidden completely.
- Statuses like sleep and frozen no longer last forever if it was carried over from a previous battle.
- Fixed an issue with battles where Pokémon had a different max HP causing some desync issues with the health bars.
- Fixed Magnitude battle messages.
- Moves that are disabled or out of PP now show transparently in the battle GUI instead of being hidden completely.
- Statuses like sleep and frozen no longer last forever if it was carried over from a previous battle.
### Localization
- Added species, ability, and move translations for `ko_ko`, `jp_jp`, `fr_fr`, `es_es`, `it_it`, and `zh_cn`.
## [1.0.0 (November 12th, 2022)](#1-0-0)
- Initial release.
- Initial release.
+3
View File
@@ -15,4 +15,7 @@ dependencies {
implementation(libs.shadow)
implementation(libs.loom)
implementation(libs.architecturyPlugin)
implementation(libs.blossom)
implementation(libs.ideaExt)
}
@@ -1,3 +1,13 @@
/*
*
* * Copyright (C) 2023 Cobblemon Contributors
* *
* * This Source Code Form is subject to the terms of the Mozilla Public
* * License, v. 2.0. If a copy of the MPL was not distributed with this
* * file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
*/
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
val accessWidenerFile = "src/main/resources/cobblemon-common.accesswidener"
@@ -13,6 +23,9 @@ plugins {
repositories {
mavenCentral()
//JEI
maven("https://maven.blamejared.com/")
maven("https://maven.tterrag.com/")
}
license {
@@ -55,4 +68,4 @@ tasks {
withType<Jar> {
from(rootProject.file("LICENSE"))
}
}
}
@@ -1,3 +1,6 @@
import extensions.VersionType
import extensions.writeVersion
plugins {
java
`java-library`
@@ -31,7 +34,7 @@ publishing {
groupId = "com.cobblemon"
artifactId = project.findProperty("maven.artifactId")?.toString() ?: project.name
version = rootProject.version.toString()
version = project.writeVersion(VersionType.PUBLISHING)
}
}
}
@@ -0,0 +1,24 @@
package extensions
import org.gradle.api.Project
fun Project.version(): String {
return rootProject.property("mod_version").toString()
}
fun Project.isSnapshot(): Boolean {
return rootProject.property("snapshot") == "true"
}
fun Project.writeVersion(type: VersionType = VersionType.FULL): String {
val version = "${rootProject.property("mod_version")}+${rootProject.property("mc_version")}"
return when (type) {
VersionType.PUBLISHING -> if(this.isSnapshot()) "$version-SNAPSHOT" else version
VersionType.FULL -> if(this.isSnapshot()) rootProject.version.toString() else version
}
}
enum class VersionType {
PUBLISHING,
FULL
}
+3 -2
View File
@@ -1,6 +1,7 @@
plugins {
base
id("cobblemon.root-conventions")
id ("net.nemerosa.versioning") version "2.8.2"
}
group = "com.cobblemon.mod"
@@ -8,5 +9,5 @@ version = "${project.property("mod_version")}+${project.property("mc_version")}"
val isSnapshot = project.property("snapshot")?.equals("true") ?: false
if (isSnapshot) {
version = "$version-SNAPSHOT"
}
version = "$version-${versioning.info.branch}-${versioning.info.build}"
}
+61 -2
View File
@@ -1,6 +1,26 @@
import extensions.isSnapshot
import extensions.version
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
/*
*
* * Copyright (C) 2023 Cobblemon Contributors
* *
* * This Source Code Form is subject to the terms of the Mozilla Public
* * License, v. 2.0. If a copy of the MPL was not distributed with this
* * file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
*/
plugins {
id("cobblemon.base-conventions")
id("cobblemon.publish-conventions")
id("net.kyori.blossom")
id("org.jetbrains.gradle.plugin.idea-ext")
id ("net.nemerosa.versioning") version "2.8.2"
}
architectury {
@@ -9,6 +29,7 @@ architectury {
repositories {
maven(url = "${rootProject.projectDir}/deps")
maven(url = "https://api.modrinth.com/maven")
mavenLocal()
}
@@ -17,16 +38,23 @@ dependencies {
implementation(libs.reflect)
modImplementation(libs.fabricLoader)
//Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
modApi(libs.molang)
compileOnlyApi(libs.jeiApi)
modCompileOnly(libs.adornFabric)
modCompileOnly(libs.lambDynamicLights) { isTransitive = false }
// For Showdown
modCompileOnly(libs.graal)
//shadowCommon group: 'commons-io', name: 'commons-io', version: '2.6'
// For datastore
modCompileOnly(libs.mongoDriverCore)
modCompileOnly(libs.mongoDriverSync)
testRuntimeOnly(libs.junitEngine)
testImplementation(libs.junitApi)
testImplementation(libs.fabricJunit)
testImplementation(libs.junitParams)
testImplementation(libs.mockito)
testImplementation(libs.mockk)
@@ -40,3 +68,34 @@ tasks.withType<Test> {
setExceptionFormat("full")
}
}
sourceSets {
main {
blossom {
kotlinSources {
fun generateLicenseHeader() : String {
val builder = StringBuilder()
builder.append("/*\n")
rootProject.file("HEADER").forEachLine {
if(it.isEmpty()) {
builder.append(" *").append("\n")
} else {
builder.append(" * ").append(it).append("\n")
}
}
return builder.append(" */").append("\n").toString()
}
property("license", generateLicenseHeader())
property("modid", "cobblemon")
property("version", project.version())
property("isSnapshot", if(rootProject.isSnapshot()) "true" else "false")
property("gitCommit", versioning.info.commit)
property("branch", versioning.info.branch)
System.getProperty("buildNumber")?.let { property("buildNumber", it) }
property("timestamp", OffsetDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss")) + " UTC")
}
}
}
}
@@ -0,0 +1,16 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.bridges;
import net.minecraft.structure.processor.StructureProcessor;
public interface StructureProcessorListBridge {
void append(StructureProcessor processor);
void clear();
}
@@ -8,10 +8,9 @@
package com.cobblemon.mod.common.client.render.models.blockbench.pose;
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
@@ -38,7 +37,7 @@ public interface Bone {
/**
* Renders a particular bone in relation to a particular entity.
*
* @param entity The entity this bone is being drawn for. This parameter need not be available and can be null
* @param context The render context this bone is being drawn for.
* @param stack The current [MatrixStack] for the renderer
* @param buffer The vertex consumer deployed by the renderer
* @param packedLight The light level to be applied to the bone
@@ -50,8 +49,8 @@ public interface Bone {
*
* @since 1.4.0
*/
<T extends Entity> void render(
@Nullable T entity,
void render(
RenderContext context,
MatrixStack stack,
VertexConsumer buffer,
int packedLight,
@@ -0,0 +1,96 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.compat;
import com.cobblemon.mod.common.CobblemonEntities;
import com.cobblemon.mod.common.client.render.layer.PokemonOnShoulderRenderer;
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity;
import com.cobblemon.mod.common.pokemon.FormData;
import com.cobblemon.mod.common.pokemon.lighthing.LightingData;
import dev.lambdaurora.lambdynlights.api.DynamicLightHandler;
import dev.lambdaurora.lambdynlights.api.DynamicLightHandlers;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Pair;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
// Java class due to relying on entrypoint on Fabric side
public class LambDynamicLightsCompat {
// This is all called on client side
// These things are checked every tick so try to keep it as free as possible
// That being said it's unlikely school Toshiba person is running dynamic lighting and shaders to enjoy this
// Make sure not to call anything Fabric specific :)
public static void hookCompat() {
// Pokémon entities
DynamicLightHandlers.registerDynamicLightHandler(
CobblemonEntities.POKEMON,
DynamicLightHandler.makeHandler(
pokemon -> resolvedPokemonLightLevel(pokemon, false),
pokemon -> true
)
);
DynamicLightHandlers.registerDynamicLightHandler(
CobblemonEntities.POKEMON,
DynamicLightHandler.makeHandler(
pokemon -> resolvedPokemonLightLevel(pokemon, true),
pokemon -> false
)
);
// Shouldered Pokémon
DynamicLightHandlers.registerDynamicLightHandler(
EntityType.PLAYER,
DynamicLightHandler.makeHandler(
player -> resolvedShoulderLightLevel(player, false),
player -> true
)
);
DynamicLightHandlers.registerDynamicLightHandler(
EntityType.PLAYER,
DynamicLightHandler.makeHandler(
player -> resolvedShoulderLightLevel(player, true),
player -> false
)
);
}
private static int resolvedPokemonLightLevel(PokemonEntity pokemon, boolean underwater) {
return extractFormLightLevel(pokemon.getForm(), underwater).orElse(0);
}
private static int resolvedShoulderLightLevel(PlayerEntity player, boolean underwater) {
final Pair<PokemonOnShoulderRenderer.ShoulderData, PokemonOnShoulderRenderer.ShoulderData> shoulderDataPair = PokemonOnShoulderRenderer.shoulderDataOf(player);
final Optional<Integer> leftLightLevel = extractShoulderLightLevel(shoulderDataPair.getLeft(), underwater);
final Optional<Integer> rightLightLevel = extractShoulderLightLevel(shoulderDataPair.getRight(), underwater);
return Math.max(leftLightLevel.orElse(0), rightLightLevel.orElse(0));
}
private static Optional<Integer> extractFormLightLevel(@NotNull FormData form, boolean underwater) {
if (form.getLightingData() == null || !liquidGlowModeSupport(form.getLightingData().getLiquidGlowMode(), underwater)) {
return Optional.empty();
}
return Optional.of(form.getLightingData().getLightLevel());
}
private static Optional<Integer> extractShoulderLightLevel(@Nullable PokemonOnShoulderRenderer.ShoulderData shoulderData, boolean underwater) {
if (shoulderData == null) {
return Optional.empty();
}
return extractFormLightLevel(shoulderData.getForm(), underwater);
}
private static boolean liquidGlowModeSupport(@NotNull LightingData.LiquidGlowMode liquidGlowMode, boolean underwater) {
return underwater ? liquidGlowMode.getGlowsUnderwater() : liquidGlowMode.getGlowsInLand();
}
}
@@ -0,0 +1,20 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.duck;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
public interface SoundManagerDuck {
void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category);
void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category);
}
@@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.duck;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
public interface SoundSystemDuck {
void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category);
void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category);
Collection<SoundInstance> getSounds(@Nullable SoundCategory category);
}
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.CobblemonBuildDetails;
import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.crash.CrashReportSection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(CrashReport.class)
public final class CrashReportMixin {
@Inject(method = "addStackTrace", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/SystemDetails;writeTo(Ljava/lang/StringBuilder;)V"))
public void cobblemon$printCobblemonDetails(StringBuilder builder, CallbackInfo callback) {
CrashReportSection cobblemon = new CrashReportSection("Cobblemon");
cobblemon.add("Version", CobblemonBuildDetails.VERSION);
cobblemon.add("Is Snapshot", CobblemonBuildDetails.SNAPSHOT);
cobblemon.add("Git Commit", CobblemonBuildDetails.INSTANCE.smallCommitHash() + " (" + "https://gitlab.com/cable-mc/cobblemon/-/commit/" + CobblemonBuildDetails.GIT_COMMIT + ")");
cobblemon.add("Branch", CobblemonBuildDetails.BRANCH);
cobblemon.add("Timestamp", CobblemonBuildDetails.TIMESTAMP);
cobblemon.addStackTrace(builder);
builder.append("\n\n");
}
}
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.sherds.CobblemonSherds;
import net.minecraft.block.DecoratedPotPatterns;
import net.minecraft.item.Item;
import net.minecraft.registry.RegistryKey;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(DecoratedPotPatterns.class)
public abstract class DecoratedPotPatternsMixin {
@Inject(method = "fromSherd", at=@At("HEAD"), cancellable = true)
private static void cobblemon$getCobblemonSherdTexture(Item sherd,
CallbackInfoReturnable<RegistryKey<String>> cir) {
if (CobblemonSherds.INSTANCE.getSherdToPattern().containsKey(sherd)) {
cir.setReturnValue(CobblemonSherds.INSTANCE.getSherdToPattern().get(sherd));
return;
}
}
}
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import net.minecraft.entity.passive.VillagerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.village.VillagerProfession;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import com.cobblemon.mod.common.villager.VillagerGatherableItems;
import java.util.Objects;
@Mixin(VillagerEntity.class)
public abstract class EntityVillagerMixin {
@Inject(method = "canGather", at = @At(value = "RETURN"), cancellable = true)
private void cobblemon$canGather(ItemStack stack, CallbackInfoReturnable<Boolean> ci) {
final VillagerEntity villager = (VillagerEntity) (Object) this;
if(ci.getReturnValue() == false && Objects.equals(villager.getVillagerData().getProfession(), VillagerProfession.FARMER) && villager.getInventory().canInsert(stack)) {
if(VillagerGatherableItems.INSTANCE.getVillagerGatherableItems().contains(stack.getItem()))
ci.setReturnValue(true);
}
}
}
@@ -0,0 +1,38 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.block.PreEmptsExplosion;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.explosion.Explosion;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(value = Explosion.class)
public class ExplosionMixin {
@Redirect(
method = "affectWorld",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/World;getBlockState(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/block/BlockState;",
ordinal = 0
)
)
public BlockState cobblemon$whenExploded(World world, BlockPos pos) {
BlockState blockState = world.getBlockState(pos);
if(blockState.getBlock() instanceof PreEmptsExplosion preExplosionBlock) {
preExplosionBlock.whenExploded(world, blockState, pos);
}
return blockState;
}
}
@@ -1,47 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.CobblemonBlocks;
import com.cobblemon.mod.common.block.PastureBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.FenceBlock;
import net.minecraft.block.HorizontalFacingBlock;
import net.minecraft.util.math.Direction;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(value = FenceBlock.class)
public abstract class FenceBlockMixin {
// This could be done with a modify variable but it just doesn't seem to want to work, very crude unfinished explanation I had on Fabric discord was
// "boolean is a primitive, it isnt passed by reference but by value and you have your own object references anyway so assigning a new object to non-primitive references (variables) wont modify it after your mixin returns
//(you cant modify a random argument that mixin passes you that way, target the boolean not the FenceBlock)"
// However the issue is the only way to get all the params which we need is by passing in the entire method reference which enforces the return type.
@Redirect(method = "getStateForNeighborUpdate", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/FenceBlock;canConnect(Lnet/minecraft/block/BlockState;ZLnet/minecraft/util/math/Direction;)Z"))
private boolean cobblemon$getStateForNeighborUpdate(FenceBlock instance, BlockState state, boolean neighborIsFullSquare, Direction dir) {
return instance.canConnect(state, neighborIsFullSquare, dir) || this.cobblemon$canConnect(state, dir);
}
@Redirect(method = "getPlacementState", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/FenceBlock;canConnect(Lnet/minecraft/block/BlockState;ZLnet/minecraft/util/math/Direction;)Z"))
private boolean cobblemon$getPlacementState(FenceBlock instance, BlockState state, boolean neighborIsFullSquare, Direction dir) {
return instance.canConnect(state, neighborIsFullSquare, dir) || this.cobblemon$canConnect(state, dir);
}
private boolean cobblemon$canConnect(BlockState state, Direction dir) {
if (state.isOf(CobblemonBlocks.PASTURE) && state.get(PastureBlock.Companion.getPART()) == PastureBlock.PasturePart.BOTTOM) {
final Direction pastureFacing = state.get(HorizontalFacingBlock.FACING);
return dir == pastureFacing.rotateYClockwise() || dir == pastureFacing.rotateYCounterclockwise();
}
return false;
}
}
@@ -8,20 +8,37 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.api.scheduling.ScheduledTaskTracker;
import com.cobblemon.mod.common.api.scheduling.ClientTaskTracker;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.GameRenderer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(GameRenderer.class)
public class GameRendererMixin {
@Unique
long lastTime = -1;
@Inject(
method = "render",
at = @At(value = "TAIL")
)
public void render(float tickDelta, long startTime, boolean tick, CallbackInfo ci) {
ScheduledTaskTracker.INSTANCE.update();
MinecraftClient client = MinecraftClient.getInstance();
long newTime = System.currentTimeMillis();
// Don't play scheduled animations when the game is paused
if (client.isPaused()) {
lastTime = newTime;
return;
}
if (lastTime != -1) {
ClientTaskTracker.INSTANCE.update((newTime - lastTime) / 1000F);
}
lastTime = newTime;
}
}
@@ -0,0 +1,69 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.CobblemonBakingOverrides;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
import net.minecraft.client.color.block.BlockColors;
import net.minecraft.client.render.model.ModelLoader;
import net.minecraft.client.render.model.UnbakedModel;
import net.minecraft.client.render.model.json.JsonUnbakedModel;
import net.minecraft.client.util.ModelIdentifier;
import net.minecraft.util.Identifier;
import net.minecraft.util.profiler.Profiler;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.InjectionPoint;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.points.BeforeStringInvoke;
@Mixin(ModelLoader.class)
public abstract class ModelLoaderMixin {
@Shadow protected abstract void addModel(ModelIdentifier modelId);
@Final
@Shadow
private Map<Identifier, UnbakedModel> unbakedModels;
@Final
@Shadow
private static Logger LOGGER;
@Inject(
method = "<init>",
at = @At("TAIL")
)
public void init(BlockColors blockColors,
Profiler profiler,
Map jsonUnbakedModels,
Map blockStates,
CallbackInfo ci) {
CobblemonBakingOverrides.INSTANCE.getModels().forEach(bakingOverride -> {
try {
this.unbakedModels.put(bakingOverride.getModelIdentifier(), this.loadModelFromJson(bakingOverride.getModelLocation()));
this.addModel(bakingOverride.getModelIdentifier());
} catch (IOException e) {
LOGGER.error("Error loading a Cobblemon BakedModel:", e);
throw new RuntimeException(e);
}
});
}
@Shadow
private JsonUnbakedModel loadModelFromJson(Identifier id) throws IOException {
return null;
}
}
@@ -8,7 +8,9 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntityModel;
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Bone;
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext;
import net.minecraft.client.model.ModelPart;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;
@@ -36,7 +38,7 @@ public abstract class ModelPartMixin implements Bone {
}
@Override
public <T extends Entity> void render(T entity, MatrixStack stack, VertexConsumer buffer, int packedLight, int packedOverlay, float r, float g, float b, float a) {
public void render(RenderContext context, MatrixStack stack, VertexConsumer buffer, int packedLight, int packedOverlay, float r, float g, float b, float a) {
this.render(stack, buffer, packedLight, packedOverlay, r, g, b, a);
}
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.sound.MusicTracker;
import net.minecraft.client.sound.SoundInstance;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(MusicTracker.class)
public class MusicTrackerMixin {
@Shadow @Final
private MinecraftClient client;
@Shadow @Nullable
private SoundInstance current;
/** Freezes the tracker while a BattleMusicInstance is in progress. Current SoundInstance being tracked will be paused by BattleMusicHandler. */
@Inject(method = "tick()V", at = @At("HEAD"), cancellable = true)
public void tick(CallbackInfo cb) {
if (this.client.getSoundManager().isPlaying(BattleMusicController.INSTANCE.getMusic())) cb.cancel();
}
}
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.api.snowstorm.ParticleMaterials;
import com.google.common.collect.ImmutableList;
import net.minecraft.client.particle.ParticleManager;
import net.minecraft.client.particle.ParticleTextureSheet;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.List;
@Mixin(ParticleManager.class)
final class ParticleManagerMixin {
@Mutable
@Final
@Shadow
private static List<ParticleTextureSheet> PARTICLE_TEXTURE_SHEETS;
@Inject(at = @At("RETURN"), method = "<clinit>")
private static void lodestone$addTypes(CallbackInfo ci) {
PARTICLE_TEXTURE_SHEETS = ImmutableList.<ParticleTextureSheet>builder().addAll(PARTICLE_TEXTURE_SHEETS)
.add(ParticleMaterials.INSTANCE.getADD(), ParticleMaterials.INSTANCE.getALPHA(), ParticleMaterials.INSTANCE.getBLEND(), ParticleMaterials.INSTANCE.getOPAQUE()).build();
}
}
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.CobblemonItems;
import net.minecraft.entity.mob.PiglinBrain;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(PiglinBrain.class)
public class PiglinBarterMixin {
@Inject(method = "acceptsForBarter", at = @At(value = "RETURN"), cancellable = true)
private static void cobblemon$acceptsForBarter(ItemStack stack, CallbackInfoReturnable<Boolean> ci) {
if(!ci.getReturnValue()) {
//TODO: Make a tag?
if(stack.isOf(CobblemonItems.RELIC_COIN_POUCH))
ci.setReturnValue(true);
}
}
}
@@ -0,0 +1,31 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.CobblemonItems;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.mob.PiglinEntity;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(PiglinEntity.class)
public abstract class PiglinEntityMixin {
@Inject(method = "equipToOffHand", at = @At(value = "HEAD"), cancellable = true)
public void cobblemon$isValidBarteringItem(ItemStack stack, CallbackInfo ci) {
PiglinEntity entity = (PiglinEntity)(Object) this;
if (stack.isOf(CobblemonItems.RELIC_COIN_POUCH)) {
entity.equipStack(EquipmentSlot.OFFHAND, stack);
entity.updateDropChances(EquipmentSlot.OFFHAND);
ci.cancel();
}
}
}
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.api.events.CobblemonEvents;
import com.cobblemon.mod.common.api.events.item.LeftoversCreatedEvent;
import com.cobblemon.mod.common.api.storage.NoPokemonStoreException;
import com.cobblemon.mod.common.api.storage.party.PartyStore;
import com.cobblemon.mod.common.api.tags.CobblemonItemTags;
import com.cobblemon.mod.common.pokemon.Pokemon;
import com.cobblemon.mod.common.util.CompoundTagExtensionsKt;
import com.cobblemon.mod.common.util.DataKeys;
@@ -22,11 +23,8 @@ import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.sound.SoundEvent;
import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text;
import net.minecraft.world.World;
import org.objectweb.asm.Opcodes;
@@ -40,8 +38,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.Objects;
import java.util.UUID;
import static com.cobblemon.mod.common.util.LocalizationUtilsKt.lang;
@Mixin(PlayerEntity.class)
public abstract class PlayerMixin extends LivingEntity {
@@ -144,7 +140,7 @@ public abstract class PlayerMixin extends LivingEntity {
)
public void onEatFood(World world, ItemStack stack, CallbackInfoReturnable<ItemStack> cir) {
if (!getWorld().isClient) {
if (stack.getItem() == Items.APPLE && getWorld().random.nextDouble() < Cobblemon.config.getAppleLeftoversChance()) {
if (stack.isIn(CobblemonItemTags.LEAVES_LEFTOVERS) && getWorld().random.nextDouble() < Cobblemon.config.getAppleLeftoversChance()) {
ItemStack leftovers = new ItemStack(CobblemonItems.LEFTOVERS);
ServerPlayerEntity player = Objects.requireNonNull(getServer()).getPlayerManager().getPlayer(uuid);
assert player != null;
@@ -1,44 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.api.spawning.mixins.CachedOnlyChunkAccessor;
import com.mojang.datafixers.util.Either;
import net.minecraft.server.world.ChunkHolder;
import net.minecraft.server.world.ServerChunkManager;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.ChunkManager;
import net.minecraft.world.chunk.ChunkStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import java.util.concurrent.CompletableFuture;
@Mixin(ServerChunkManager.class)
public abstract class ServerChunkManagerMixin extends ChunkManager implements CachedOnlyChunkAccessor {
@Shadow @Nullable protected abstract ChunkHolder getChunkHolder(long pos);
@Override
public Chunk cobblemon$request(int x, int z, @NotNull ChunkStatus status) {
long l = ChunkPos.toLong(x, z);
ChunkHolder holder = getChunkHolder(l);
if (holder != null) {
CompletableFuture<Either<Chunk, ChunkHolder.Unloaded>> future = holder.getFutureFor(status);
if (future.isDone()) {
return future.join().left().orElse(null);
}
}
return null;
}
}
@@ -8,36 +8,77 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.access.SoundManagerDuck;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.client.sound.SoundManager;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundManagerDuck;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import net.minecraft.client.sound.*;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(SoundManager.class)
public class SoundManagerMixin implements SoundManagerDuck {
public abstract class SoundManagerMixin implements SoundManagerDuck {
private boolean[] blockedCategories = new boolean[SoundCategory.values().length];
@Shadow
public abstract boolean isPlaying(SoundInstance sound);
@Override
public void toggleCategories(SoundCategory... categories) {
for (SoundCategory category : categories) {
int index = category.ordinal();
boolean blocked = blockedCategories[index];
blockedCategories[index] = !blocked;
}
@Shadow @Final
private SoundSystem soundSystem;
// Never-ending ambient loops are a special exception (they are only initiated once) and should always be paused if filtered.
private boolean isAmbientLoop(SoundInstance sound) {
return sound instanceof BiomeEffectSoundPlayer.MusicLoop || sound instanceof AmbientSoundLoops.Underwater;
}
private boolean filterCondition(SoundInstance sound) {
return !isAmbientLoop(sound) &&
this.isPlaying(BattleMusicController.INSTANCE.getMusic()) &&
BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory());
}
private boolean ambientLoopCondition(SoundInstance sound) {
return isAmbientLoop(sound) &&
this.isPlaying(BattleMusicController.INSTANCE.getMusic()) &&
BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory());
}
/** Pauses the queried SoundInstance(s). If id is null, will pause all sounds belonging to the SoundCategory. */
@Override
public void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
((SoundSystemDuck)soundSystem).pauseSounds(id, category);
}
/** Resumes the queried SoundInstance(s). If id is null, will resume all sounds belonging to the SoundCategory. */
@Override
public void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
((SoundSystemDuck)soundSystem).resumeSounds(id, category);
}
/** Blocks filtered sounds from being played while a BattleMusicInstance is in progress. */
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("HEAD"), cancellable = true)
public void play(SoundInstance sound, CallbackInfo cb) {
if (blockedCategories[sound.getCategory().ordinal()]) cb.cancel();
public void playStart(SoundInstance sound, CallbackInfo cb) {
if (filterCondition(sound)) cb.cancel();
}
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;I)V", at = @At("HEAD"), cancellable = true)
public void play(SoundInstance sound, int delay, CallbackInfo cb) {
if (blockedCategories[sound.getCategory().ordinal()]) cb.cancel();
public void playStart(SoundInstance sound, int delay, CallbackInfo cb) {
if (filterCondition(sound)) cb.cancel();
}
/** Pauses ambient loops while a BattleMusicInstance is in progress. */
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("TAIL"))
public void playEnd(SoundInstance sound, CallbackInfo cb) {
if (ambientLoopCondition(sound)) this.pauseSounds(sound.getId(), SoundCategory.AMBIENT);
}
@Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;I)V", at = @At("TAIL"))
public void playEnd(SoundInstance sound, int delay, CallbackInfo cb) {
if (ambientLoopCondition(sound)) this.pauseSounds(sound.getId(), SoundCategory.AMBIENT);
}
}
@@ -8,31 +8,102 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import com.google.common.collect.Multimap;
import net.minecraft.client.sound.SoundInstance;
import net.minecraft.client.sound.SoundSystem;
import net.minecraft.client.sound.*;
import net.minecraft.sound.SoundCategory;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
@Mixin(SoundSystem.class)
public abstract class SoundSystemMixin {
public abstract class SoundSystemMixin implements SoundSystemDuck {
@Shadow
private boolean started;
@Shadow
private Multimap<SoundCategory, SoundInstance> sounds;
@Shadow @Final
private Map<SoundInstance, Channel.SourceManager> sources;
@Shadow
protected abstract void stop(SoundInstance sound);
@Shadow
public abstract boolean isPlaying(SoundInstance sound);
/** Resumes the Source belonging to the queried SoundInstance. */
private void resume(SoundInstance sound) {
Channel.SourceManager sourceManager = this.sources.get(sound);
if (this.started && sourceManager != null) sourceManager.run(Source::resume);
}
/** Pauses the Source belonging to the queried SoundInstance. */
private void pause(SoundInstance sound) {
Channel.SourceManager sourceManager = this.sources.get(sound);
if (this.started && sourceManager != null) sourceManager.run(Source::pause);
}
/** Resumes the SoundInstance(s) queried by id and/or category. */
@Override
public void resumeSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
if (category != null) {
this.sounds.get(category).forEach((sound) -> {
if (id == null || sound.getId().equals(id)) resume(sound);
});
} else if (id == null) {
this.sources.keySet().forEach(this::resume);
} else {
this.sources.keySet().forEach(sound -> {
if (sound.getId().equals(id)) resume(sound);
});
}
}
/** Pauses the SoundInstances queried by id and/or category. */
@Override
public void pauseSounds(@Nullable Identifier id, @Nullable SoundCategory category) {
if (category != null) {
this.sounds.get(category).forEach((sound) -> {
if (id == null || sound.getId().equals(id)) pause(sound);
});
} else if (id == null) {
this.sources.keySet().forEach(this::pause);
} else {
this.sources.keySet().forEach(sound -> {
if (sound.getId().equals(id)) pause(sound);
});
}
}
/** Allows stopping all SoundInstances that belong to a queried category. */
@Inject(method = "stopSounds(Lnet/minecraft/util/Identifier;Lnet/minecraft/sound/SoundCategory;)V", at = @At("HEAD"), cancellable = true)
public void stopSounds(@Nullable Identifier id, @Nullable SoundCategory category, CallbackInfo cb) {
if (id == null && category != null) {
sounds.get(category).forEach(this::stop);
this.sounds.get(category).forEach(this::stop);
cb.cancel();
}
}
/** Different behavior for resuming SoundInstances while a BattleMusicInstance is being played. We do not want to resume filtered sounds. */
@Inject(method = "resumeAll()V", at = @At("HEAD"), cancellable = true)
public void resumeAll(CallbackInfo cb) {
if (this.isPlaying(BattleMusicController.INSTANCE.getMusic())) {
this.sounds.values().forEach(sound -> {
if (sound == BattleMusicController.INSTANCE.getMusic() || !BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getCategory())) {
resume(sound);
}
});
cb.cancel();
}
}
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.mojang.datafixers.util.Pair;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.structure.pool.StructurePool;
import net.minecraft.structure.pool.StructurePoolElement;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.List;
@Mixin(StructurePool.class)
public interface StructurePoolAccessor {
@Accessor("elementCounts")
List<Pair<StructurePoolElement, Integer>> getElementCounts();
@Mutable
@Accessor("elementCounts")
void setElementCounts(List<Pair<StructurePoolElement, Integer>> elementCounts);
@Accessor("elements")
ObjectArrayList<StructurePoolElement> getElements();
}
@@ -0,0 +1,217 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.world.CobblemonStructureIDs;
import net.minecraft.registry.Registry;
import net.minecraft.structure.PoolStructurePiece;
import net.minecraft.structure.StructureTemplateManager;
import net.minecraft.structure.pool.*;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.HeightLimitView;
import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.noise.NoiseConfig;
import org.apache.commons.lang3.mutable.MutableObject;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.*;
@Mixin(StructurePoolBasedGenerator.StructurePoolGenerator.class)
public abstract class StructurePoolGeneratorMixin {
@Final
@Mutable
@Shadow Deque<StructurePoolBasedGenerator.ShapedPoolStructurePiece> structurePieces;
Map<String, Integer> generatedStructureGroupCounts;
private static final Map<String, Integer> structureMaxes;
private static final Map<Identifier, Set<String>> structureGroups = new HashMap<>();
static {
String pokecenter = "pokecenter";
String berry = "berry_farm";
structureGroups.put(CobblemonStructureIDs.PLAINS_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.DESERT_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.SAVANNA_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.SNOWY_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.TAIGA_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.SAVANNA_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.SAVANNA_BERRY_LARGE, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.PLAINS_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.PLAINS_BERRY_LARGE, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.SNOWY_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.SNOWY_BERRY_LARGE, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.DESERT_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.DESERT_BERRY_LARGE, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.TAIGA_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.TAIGA_BERRY_LARGE, Set.of(berry));
//Mapped using location string as key
Map<String, Integer> aMap = new HashMap<>();
aMap.put(pokecenter, 1);
aMap.put(berry, 2);
// aMap.put(CobblemonStructureIDs.PLAINS_LONG_PATH, 3);
// aMap.put(CobblemonStructureIDs.DESERT_LONG_PATH, 3);
// aMap.put(CobblemonStructureIDs.SAVANNA_LONG_PATH, 3);
// aMap.put(CobblemonStructureIDs.SNOWY_LONG_PATH, 3);
// aMap.put(CobblemonStructureIDs.TAIGA_LONG_PATH, 3);
structureMaxes = Collections.unmodifiableMap(aMap);
}
public Set<String> getGroups(Identifier structureIdentifier) {
return structureGroups.getOrDefault(structureIdentifier, Set.of());
}
public boolean hasReachedMaximum(Identifier structureIdentifier) {
Set<String> groups = getGroups(structureIdentifier);
for (String group : groups) {
int count = generatedStructureGroupCounts.getOrDefault(group, 0);
if (count >= structureMaxes.getOrDefault(group, Integer.MAX_VALUE)) {
return true;
}
}
return false;
}
public void incrementStructureCount(Identifier structureIdentifier) {
Set<String> groups = getGroups(structureIdentifier);
for (String group : groups) {
generatedStructureGroupCounts.put(group, generatedStructureGroupCounts.getOrDefault(group, 0) + 1);
}
}
@Inject(method = "<init>", at = @At("RETURN"))
private void onStructurePoolGeneratorCreation(Registry<StructurePool> registry, int maxSize, ChunkGenerator chunkGenerator, StructureTemplateManager structureTemplateManager, List<? super PoolStructurePiece> children, Random random, CallbackInfo ci) {
generatedStructureGroupCounts = new HashMap<>();
}
@ModifyVariable(method = "generatePiece", at = @At("STORE"), ordinal = 1)
private Iterator<StructurePoolElement> reduceStructurePoolElementIterator(Iterator<StructurePoolElement> iterator) {
List<StructurePoolElement> reducedList = new ArrayList<>();
while (iterator.hasNext()) {
StructurePoolElement structure = iterator.next();
Identifier structurePieceLocationKey = getCobblemonOnlyLocation(structure);
if (structurePieceLocationKey == null) {
reducedList.add(structure);
continue;
}
if (!hasReachedMaximum(structurePieceLocationKey)) {
reducedList.add(structure);
}
}
return reducedList.iterator();
}
@ModifyVariable(method = "generatePiece", at = @At("STORE"), ordinal = 1)
private PoolStructurePiece injected(PoolStructurePiece poolStructurePiece) {
Identifier structureLocationKey = getCobblemonOnlyLocation(poolStructurePiece.getPoolElement());
if (structureLocationKey != null) {
incrementStructureCount(structureLocationKey);
}
return poolStructurePiece;
}
// This doesn't SEEM necessary? It appears to work without.
@Inject(method = "generatePiece", at = @At("HEAD"))
private void beforeGeneratePiece(PoolStructurePiece piece, MutableObject<VoxelShape> pieceShape, int minY, boolean modifyBoundingBox, HeightLimitView world, NoiseConfig noiseConfig, CallbackInfo ci) {
// Identifier structureLocationKey = getCobblemonOnlyLocation(piece.getPoolElement());
//
// if (structureLocationKey != null) {
// Integer currentlyGenerated = generatedStructureCounts.get(structureLocationKey);
// if (currentlyGenerated == null) currentlyGenerated = 0;
// generatedStructureCounts.put(structureLocationKey, currentlyGenerated + 1);
// }
//
// List<StructurePoolBasedGenerator.ShapedPoolStructurePiece> reducedStructurePiecesList = structurePieces.stream().toList();
//
// for (Identifier maxStructureLocationKey : structureMaxes.keySet()) {
// Integer maxAllowed = structureMaxes.get(maxStructureLocationKey);
//
// Integer currentlyGenerated = generatedStructureCounts.get(maxStructureLocationKey);
// if (currentlyGenerated == null) currentlyGenerated = 0;
// if (currentlyGenerated < maxAllowed) {
// continue;
// }
//
// //Already have max so need to remove
// reducedStructurePiecesList = reducedStructurePiecesList.stream()
// .filter(shapedStructurePiece -> {
// Identifier locationKey = getCobblemonOnlyLocation(shapedStructurePiece.piece.getPoolElement());
// if (locationKey == null) {
// return true;
// }
//
// return !locationKey.equals(maxStructureLocationKey);
// })
// .collect(Collectors.toList());
// }
//
// structurePieces = new ArrayDeque<>(reducedStructurePiecesList);
}
private static Identifier getCobblemonOnlyLocation(StructurePoolElement structurePoolElement) {
Identifier location = getLocationIfAvailable(structurePoolElement);
if (location == null) return null;
if (!location.getNamespace().equals("cobblemon")) return null;
return location;
}
private static Identifier getLocationIfAvailable(StructurePoolElement structurePoolElement) {
if (structurePoolElement instanceof LegacySinglePoolElement legacySinglePoolElement) {
if (legacySinglePoolElement.location.left().isEmpty()) return null;
return legacySinglePoolElement.location.left().get();
} else if (structurePoolElement instanceof SinglePoolElement singlePoolElement) {
if (singlePoolElement.location.left().isEmpty()) return null;
return singlePoolElement.location.left().get();
} else {
return null;
}
}
// private List<StructurePoolElement> removeInstanceOfLocationKeyFrom(List<StructurePoolElement> structureList, Integer allowedNumberOfInstances, Identifier locationKey) {
// List<StructurePoolElement> reducedList = new ArrayList<>();
// int instancesFound = 0;
//
// for (StructurePoolElement structurePoolElement: structureList) {
// Identifier structureKey = getCobblemonOnlyLocation(structurePoolElement);
// if (structureKey == null || !structureKey.equals(locationKey)) {
// reducedList.add(structurePoolElement);
// continue;
// }
//
// if (instancesFound >= allowedNumberOfInstances) {
// continue;
// }
//
// reducedList.add(structurePoolElement);
// instancesFound++;
// }
//
// return reducedList;
// }
}
@@ -0,0 +1,43 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.bridges.StructureProcessorListBridge;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.structure.processor.StructureProcessor;
import net.minecraft.structure.processor.StructureProcessorList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(StructureProcessorList.class)
public class StructureProcessorListMixin implements StructureProcessorListBridge {
@Final
@Mutable
@Shadow
private List<StructureProcessor> list;
@Override
public void append(StructureProcessor processor) {
List<StructureProcessor> mutable = new ArrayList<>(this.list);
mutable.add(processor);
this.list = ImmutableList.copyOf(mutable);
}
@Override
public void clear() {
this.list = ImmutableList.of();
}
}
@@ -8,15 +8,16 @@
package com.cobblemon.mod.common.mixin.accessor;
import net.minecraft.client.sound.MusicTracker;
import net.minecraft.entity.vehicle.BoatEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(MusicTracker.class)
public interface MusicTrackerAccessor {
@Accessor("timeUntilNextSong")
int timeUntilNextSong();
@Mixin(BoatEntity.class)
public interface BoatEntityAccessor {
@Accessor("timeUntilNextSong")
void setTimeUntilNextSong(int timeUntilNextSong);
@Accessor
void setFallVelocity(double fallVelocity);
@Accessor
BoatEntity.Location getLocation();
}
@@ -0,0 +1,20 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.mixin.invoker;
import net.minecraft.block.Block;
import org.spongepowered.asm.mixin.Mixin;
import net.minecraft.block.FireBlock;
import net.minecraft.block.Blocks;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(FireBlock.class)
public interface FireBlockInvoker {
@Invoker("registerFlammableBlock") void registerNewFlammableBlock(Block block, int burnChance, int spreadChance);
}
@@ -0,0 +1,18 @@
{{ license }}
package com.cobblemon.mod.common
object CobblemonBuildDetails {
const val MOD_ID = "{{ modid }}"
const val VERSION = "{{ version }}"
const val SNAPSHOT = {{ isSnapshot }}
const val GIT_COMMIT = "{{ gitCommit | default("Not Specified") }}"
const val BRANCH = "{{ branch | default("Not Specified") }}"
const val TIMESTAMP = "{{ timestamp }}"
fun smallCommitHash(): String {
return this.GIT_COMMIT.substring(0, 7)
}
}
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common
import net.minecraft.client.MinecraftClient
import net.minecraft.client.render.model.BakedModel
import net.minecraft.client.util.ModelIdentifier
import net.minecraft.util.Identifier
/**
* Contains information for forcing a model to be baked
*
* @param modelLocation The location of the model
* @param modelIdentifier The identifier that the BakedModel will be registered to
*/
data class BakingOverride(
val modelLocation: Identifier,
val modelIdentifier: ModelIdentifier
) {
fun getModel(): BakedModel {
return MinecraftClient.getInstance().bakedModelManager.getModel(modelIdentifier)
}
}
@@ -8,17 +8,23 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.CobblemonBuildDetails.smallCommitHash
import com.cobblemon.mod.common.advancement.CobblemonCriteria
import com.cobblemon.mod.common.advancement.criterion.EvolvePokemonContext
import com.cobblemon.mod.common.api.Priority
import com.cobblemon.mod.common.api.SeasonResolver
import com.cobblemon.mod.common.api.data.DataProvider
import com.cobblemon.mod.common.api.drop.CommandDropEntry
import com.cobblemon.mod.common.api.drop.DropEntry
import com.cobblemon.mod.common.api.drop.ItemDropEntry
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.CobblemonEvents.BATTLE_VICTORY
import com.cobblemon.mod.common.api.events.CobblemonEvents.DATA_SYNCHRONIZED
import com.cobblemon.mod.common.api.events.CobblemonEvents.EVOLUTION_COMPLETE
import com.cobblemon.mod.common.api.events.CobblemonEvents.LEVEL_UP_EVENT
import com.cobblemon.mod.common.api.events.CobblemonEvents.POKEMON_CAPTURED
import com.cobblemon.mod.common.api.events.CobblemonEvents.TRADE_COMPLETED
import com.cobblemon.mod.common.api.net.serializers.IdentifierDataSerializer
import com.cobblemon.mod.common.api.net.serializers.PoseTypeDataSerializer
import com.cobblemon.mod.common.api.net.serializers.StringSetDataSerializer
import com.cobblemon.mod.common.api.net.serializers.Vec3DataSerializer
@@ -32,13 +38,15 @@ import com.cobblemon.mod.common.api.pokemon.experience.ExperienceGroups
import com.cobblemon.mod.common.api.pokemon.experience.StandardExperienceCalculator
import com.cobblemon.mod.common.api.pokemon.feature.ChoiceSpeciesFeatureProvider
import com.cobblemon.mod.common.api.pokemon.feature.FlagSpeciesFeatureProvider
import com.cobblemon.mod.common.api.pokemon.feature.IntSpeciesFeatureProvider
import com.cobblemon.mod.common.api.pokemon.feature.SpeciesFeatures
import com.cobblemon.mod.common.api.pokemon.helditem.HeldItemProvider
import com.cobblemon.mod.common.api.pokemon.stats.EvCalculator
import com.cobblemon.mod.common.api.pokemon.stats.Generation8EvCalculator
import com.cobblemon.mod.common.api.pokemon.stats.StatProvider
import com.cobblemon.mod.common.api.properties.CustomPokemonProperty
import com.cobblemon.mod.common.api.scheduling.ScheduledTaskTracker
import com.cobblemon.mod.common.api.scheduling.ServerRealTimeTaskTracker
import com.cobblemon.mod.common.api.scheduling.ServerTaskTracker
import com.cobblemon.mod.common.api.spawning.BestSpawner
import com.cobblemon.mod.common.api.spawning.CobblemonSpawningProspector
import com.cobblemon.mod.common.api.spawning.context.AreaContextResolver
@@ -46,31 +54,26 @@ import com.cobblemon.mod.common.api.spawning.prospecting.SpawningProspector
import com.cobblemon.mod.common.api.starter.StarterHandler
import com.cobblemon.mod.common.api.storage.PokemonStoreManager
import com.cobblemon.mod.common.api.storage.adapter.conversions.ReforgedConversion
import com.cobblemon.mod.common.api.storage.adapter.flatifle.FileStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.flatifle.JSONStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.flatifle.NBTStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.database.MongoDBStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.flatfile.FileStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.flatfile.JSONStoreAdapter
import com.cobblemon.mod.common.api.storage.adapter.flatfile.NBTStoreAdapter
import com.cobblemon.mod.common.api.storage.factory.FileBackedPokemonStoreFactory
import com.cobblemon.mod.common.api.storage.molang.NbtMoLangDataStoreFactory
import com.cobblemon.mod.common.api.storage.pc.PCStore
import com.cobblemon.mod.common.api.storage.pc.link.PCLinkManager
import com.cobblemon.mod.common.api.storage.player.PlayerDataStoreManager
import com.cobblemon.mod.common.api.storage.player.factory.JsonPlayerDataStoreFactory
import com.cobblemon.mod.common.api.storage.player.factory.MongoPlayerDataStoreFactory
import com.cobblemon.mod.common.api.tags.CobblemonEntityTypeTags
import com.cobblemon.mod.common.battles.BagItems
import com.cobblemon.mod.common.battles.BattleFormat
import com.cobblemon.mod.common.battles.BattleRegistry
import com.cobblemon.mod.common.battles.BattleSide
import com.cobblemon.mod.common.battles.ShowdownThread
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
import com.cobblemon.mod.common.battles.*
import com.cobblemon.mod.common.battles.actor.PokemonBattleActor
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.command.argument.MoveArgumentType
import com.cobblemon.mod.common.command.argument.PartySlotArgumentType
import com.cobblemon.mod.common.command.argument.PokemonArgumentType
import com.cobblemon.mod.common.command.argument.PokemonPropertiesArgumentType
import com.cobblemon.mod.common.command.argument.PokemonStoreArgumentType
import com.cobblemon.mod.common.command.argument.SpawnBucketArgumentType
import com.cobblemon.mod.common.command.argument.*
import com.cobblemon.mod.common.config.CobblemonConfig
import com.cobblemon.mod.common.config.LastChangedVersion
import com.cobblemon.mod.common.config.constraint.IntConstraint
import com.cobblemon.mod.common.config.starter.StarterConfig
import com.cobblemon.mod.common.data.CobblemonDataProvider
import com.cobblemon.mod.common.events.AdvancementHandler
import com.cobblemon.mod.common.events.ServerTickHandler
@@ -86,30 +89,19 @@ import com.cobblemon.mod.common.pokemon.feature.TagSeasonResolver
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
import com.cobblemon.mod.common.pokemon.properties.HiddenAbilityPropertyType
import com.cobblemon.mod.common.pokemon.properties.UncatchableProperty
import com.cobblemon.mod.common.pokemon.properties.UntradeableProperty
import com.cobblemon.mod.common.pokemon.properties.tags.PokemonFlagProperty
import com.cobblemon.mod.common.pokemon.stat.CobblemonStatProvider
import com.cobblemon.mod.common.sherds.CobblemonSherds
import com.cobblemon.mod.common.starter.CobblemonStarterHandler
import com.cobblemon.mod.common.trade.TradeManager
import com.cobblemon.mod.common.util.DataKeys
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.ifDedicatedServer
import com.cobblemon.mod.common.util.isLaterVersion
import com.cobblemon.mod.common.util.party
import com.cobblemon.mod.common.util.removeAmountIf
import com.cobblemon.mod.common.util.server
import com.cobblemon.mod.common.util.*
import com.cobblemon.mod.common.world.feature.CobblemonPlacedFeatures
import com.cobblemon.mod.common.world.feature.ore.CobblemonOrePlacedFeatures
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
import java.io.File
import java.io.FileReader
import java.io.FileWriter
import java.io.PrintWriter
import java.util.UUID
import kotlin.properties.Delegates
import kotlin.reflect.full.memberProperties
import kotlin.reflect.jvm.isAccessible
import kotlin.reflect.jvm.javaField
import com.mongodb.ConnectionString
import com.mongodb.MongoClientSettings
import com.mongodb.client.MongoClient
import com.mongodb.client.MongoClients
import net.minecraft.client.MinecraftClient
import net.minecraft.command.argument.serialize.ConstantArgumentSerializer
import net.minecraft.entity.data.TrackedDataHandlerRegistry
@@ -119,12 +111,26 @@ import net.minecraft.registry.RegistryKey
import net.minecraft.util.WorldSavePath
import net.minecraft.world.World
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import java.io.File
import java.io.FileReader
import java.io.FileWriter
import java.util.*
import kotlin.collections.filterIsInstance
import kotlin.collections.forEach
import kotlin.collections.listOf
import kotlin.collections.set
import kotlin.math.roundToInt
import kotlin.properties.Delegates
import kotlin.reflect.full.memberProperties
import kotlin.reflect.jvm.isAccessible
import kotlin.reflect.jvm.javaField
object Cobblemon {
const val MODID = "cobblemon"
const val VERSION = "1.4.0"
const val CONFIG_PATH = "config/$MODID/main.json"
val LOGGER = LogManager.getLogger()
val LOGGER: Logger = LogManager.getLogger()
lateinit var implementation: CobblemonImplementation
@Deprecated("This field is now a config value", ReplaceWith("Cobblemon.config.captureCalculator"))
@@ -144,8 +150,8 @@ object Cobblemon {
val bestSpawner = BestSpawner
val battleRegistry = BattleRegistry
var storage = PokemonStoreManager()
var molangData = NbtMoLangDataStoreFactory
lateinit var playerData: PlayerDataStoreManager
lateinit var starterConfig: StarterConfig
val dataProvider: DataProvider = CobblemonDataProvider
var permissionValidator: PermissionValidator by Delegates.observable(LaxPermissionValidator().also { it.initialize() }) { _, _, newValue -> newValue.initialize() }
var statProvider: StatProvider = CobblemonStatProvider
@@ -153,6 +159,14 @@ object Cobblemon {
fun preInitialize(implementation: CobblemonImplementation) {
this.implementation = implementation
this.LOGGER.info("Launching Cobblemon ${CobblemonBuildDetails.VERSION}${if(CobblemonBuildDetails.SNAPSHOT) "-SNAPSHOT" else ""} ")
if(CobblemonBuildDetails.SNAPSHOT) {
this.LOGGER.info(" - Git Commit: ${smallCommitHash()} (https://gitlab.com/cable-mc/cobblemon/-/commit/${CobblemonBuildDetails.GIT_COMMIT})")
this.LOGGER.info(" - Branch: ${CobblemonBuildDetails.BRANCH}")
this.LOGGER.info(" - Timestamp: ${CobblemonBuildDetails.TIMESTAMP}")
}
implementation.registerPermissionValidator()
implementation.registerSoundEvents()
implementation.registerBlocks()
@@ -215,6 +229,9 @@ object Cobblemon {
}
}
// Register the grow_tumblestone advancement
PlatformEvents.RIGHT_CLICK_BLOCK.subscribe { AdvancementHandler.onTumbleStonePlaced(it) }
PlatformEvents.CHANGE_DIMENSION.subscribe {
it.player.party().forEach { pokemon -> pokemon.entity?.recallWithAnimation() }
}
@@ -222,6 +239,17 @@ object Cobblemon {
TrackedDataHandlerRegistry.register(Vec3DataSerializer)
TrackedDataHandlerRegistry.register(StringSetDataSerializer)
TrackedDataHandlerRegistry.register(PoseTypeDataSerializer)
TrackedDataHandlerRegistry.register(IdentifierDataSerializer)
// Lowest priority because this applies after luxury ball bonus as of gen 4
CobblemonEvents.FRIENDSHIP_UPDATED.subscribe(Priority.LOWEST) { event ->
var increment = (event.newFriendship - event.pokemon.friendship).toFloat()
// Our Luxury ball spec is diff from official, but we will still assume these stack
if (event.pokemon.heldItemNoCopy().isIn(CobblemonItemTags.IS_FRIENDSHIP_BOOSTER)) {
increment += increment * 0.5F
}
event.newFriendship = event.pokemon.friendship + increment.roundToInt()
}
HeldItemProvider.register(CobblemonHeldItemManager, Priority.LOWEST)
}
@@ -237,6 +265,7 @@ object Cobblemon {
SpeciesFeatures.types["choice"] = ChoiceSpeciesFeatureProvider::class.java
SpeciesFeatures.types["flag"] = FlagSpeciesFeatureProvider::class.java
SpeciesFeatures.types["integer"] = IntSpeciesFeatureProvider::class.java
SpeciesFeatures.register(
DataKeys.CAN_BE_MILKED,
@@ -245,28 +274,70 @@ object Cobblemon {
DataKeys.HAS_BEEN_SHEARED,
FlagSpeciesFeatureProvider(keys = listOf(DataKeys.HAS_BEEN_SHEARED), default = false))
CustomPokemonProperty.register(UntradeableProperty)
CustomPokemonProperty.register(UncatchableProperty)
CustomPokemonProperty.register(PokemonFlagProperty)
CustomPokemonProperty.register(HiddenAbilityPropertyType)
ifDedicatedServer {
isDedicatedServer = true
PlatformEvents.SERVER_TICK_POST.subscribe { ScheduledTaskTracker.update() }
}
PlatformEvents.SERVER_TICK_POST.subscribe {
ServerTaskTracker.update(1/20F)
ServerRealTimeTaskTracker.update()
}
PlatformEvents.SERVER_TICK_PRE.subscribe {
ServerRealTimeTaskTracker.update()
}
PlatformEvents.SERVER_STARTING.subscribe { event ->
val server = event.server
playerData = PlayerDataStoreManager().also { it.setup(server) }
val mongoClient: MongoClient?
val pokemonStoreRoot = server.getSavePath(WorldSavePath.ROOT).resolve("pokemon").toFile()
val storeAdapter = when (config.storageFormat) {
"nbt", "json" -> {
val jsonFactory = JsonPlayerDataStoreFactory()
jsonFactory.setup(server)
playerData.setFactory(jsonFactory)
if (config.storageFormat == "nbt") {
NBTStoreAdapter(pokemonStoreRoot.absolutePath, useNestedFolders = true, folderPerClass = true)
} else {
JSONStoreAdapter(
pokemonStoreRoot.absolutePath,
useNestedFolders = true,
folderPerClass = true
)
}
}
"mongodb" -> {
try {
Class.forName("com.mongodb.client.MongoClient")
val mongoClientSettings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString(config.mongoDBConnectionString))
.build()
mongoClient = MongoClients.create(mongoClientSettings)
val mongoFactory = MongoPlayerDataStoreFactory(mongoClient, config.mongoDBDatabaseName)
playerData.setFactory(mongoFactory)
MongoDBStoreAdapter(mongoClient, config.mongoDBDatabaseName)
} catch (e: ClassNotFoundException) {
LOGGER.error("MongoDB driver not found.")
throw e
}
}
else -> throw IllegalArgumentException("Unsupported storageFormat: ${config.storageFormat}")
}
.with(ReforgedConversion(server.getSavePath(WorldSavePath.ROOT))) as FileStoreAdapter<*>
storage.registerFactory(
priority = Priority.LOWEST,
factory = FileBackedPokemonStoreFactory(
adapter = if (config.storageFormat == "nbt") {
NBTStoreAdapter(pokemonStoreRoot.absolutePath, useNestedFolders = true, folderPerClass = true)
} else {
JSONStoreAdapter(pokemonStoreRoot.absolutePath, useNestedFolders = true, folderPerClass = true)
}.with(ReforgedConversion(server.getSavePath(WorldSavePath.ROOT))) as FileStoreAdapter<*>,
adapter = storeAdapter,
createIfMissing = true,
pcConstructor = { uuid -> PCStore(uuid).also { it.resize(config.defaultBoxCount) } }
)
@@ -292,7 +363,7 @@ object Cobblemon {
// Ensure the config option is enabled and that the result was a ninjask and that shedinja exists
if (this.config.ninjaskCreatesShedinja && pokemon.species.resourceIdentifier == ninjaskIdentifier && PokemonSpecies.getByIdentifier(Pokemon.SHEDINJA) != null) {
val player = pokemon.getOwnerPlayer() ?: return@subscribe
if (player.inventory.containsAny { it.item is PokeBallItem }) {
if (player.isCreative || player.inventory.containsAny { it.item is PokeBallItem }) {
var pokeball = Items.AIR
player.inventory.combinedInventory.forEach {
it.forEach {
@@ -301,7 +372,12 @@ object Cobblemon {
}
}
}
player.inventory.removeAmountIf(1) { it.item is PokeBallItem }
if (!player.isCreative) {
player.inventory.removeAmountIf(1) { it.item is PokeBallItem }
}
if (pokeball == Items.AIR) {
pokeball = CobblemonItems.POKE_BALL
}
val properties = event.evolution.result.copy()
properties.species = Pokemon.SHEDINJA.toString()
val product = pokemon.clone()
@@ -309,18 +385,24 @@ object Cobblemon {
properties.apply(product)
product.caughtBall = (pokeball as PokeBallItem).pokeBall
pokemon.storeCoordinates.get()?.store?.add(product)
CobblemonCriteria.EVOLVE_POKEMON.trigger(player, EvolvePokemonContext(event.pokemon.preEvolution!!.species.resourceIdentifier, product.species.resourceIdentifier, playerData.get(player).advancementData.totalEvolvedCount))
}
}
}
LEVEL_UP_EVENT.subscribe { AdvancementHandler.onLevelUp(it) }
TRADE_COMPLETED.subscribe { AdvancementHandler.onTradeCompleted(it) }
BagItems.observable.subscribe {
LOGGER.info("Starting dummy Showdown battle to force it to pre-load data.")
battleRegistry.startBattle(
BattleFormat.GEN_9_SINGLES,
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F))
).apply { mute = true }
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
true
).ifSuccessful { it.mute = true }
}
CobblemonSherds.registerSherds()
}
fun getLevel(dimension: RegistryKey<World>): World? {
@@ -380,27 +462,6 @@ object Cobblemon {
this.saveConfig()
bestSpawner.loadConfig()
PokemonSpecies.observable.subscribe { starterConfig = this.loadStarterConfig() }
}
fun loadStarterConfig(): StarterConfig {
if (config.exportStarterConfig) {
val file = File("config/cobblemon/starters.json")
file.parentFile.mkdirs()
if (!file.exists()) {
val config = StarterConfig()
val pw = PrintWriter(file)
StarterConfig.GSON.toJson(config, pw)
pw.close()
return config
}
val reader = FileReader(file)
val config = StarterConfig.GSON.fromJson(reader, StarterConfig::class.java)
reader.close()
return config
} else {
return StarterConfig()
}
}
fun saveConfig() {
@@ -424,6 +485,7 @@ object Cobblemon {
this.implementation.registerCommandArgument(cobblemonResource("move"), MoveArgumentType::class, ConstantArgumentSerializer.of(MoveArgumentType::move))
this.implementation.registerCommandArgument(cobblemonResource("party_slot"), PartySlotArgumentType::class, ConstantArgumentSerializer.of(PartySlotArgumentType::partySlot))
this.implementation.registerCommandArgument(cobblemonResource("pokemon_store"), PokemonStoreArgumentType::class, ConstantArgumentSerializer.of(PokemonStoreArgumentType::pokemonStore))
this.implementation.registerCommandArgument(cobblemonResource("dialogue"), DialogueArgumentType::class, ConstantArgumentSerializer.of(DialogueArgumentType::dialogue))
}
}
@@ -0,0 +1,21 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common
import net.minecraft.entity.ai.brain.Activity
object CobblemonActivities {
val activities = mutableListOf<Activity>()
val BATTLING_ACTIVITY = Activity("pokemon_battling")
fun register(activity: Activity): Activity {
activities.add(activity)
return activity
}
}
@@ -8,9 +8,16 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.block.entity.BerryBlockEntity
import com.cobblemon.mod.common.block.entity.HealingMachineBlockEntity
import com.cobblemon.mod.common.block.entity.PCBlockEntity
import com.cobblemon.mod.common.block.entity.PokemonPastureBlockEntity
import com.cobblemon.mod.common.block.entity.FossilAnalyzerBlockEntity
import com.cobblemon.mod.common.block.entity.FossilMultiblockEntity
import com.cobblemon.mod.common.block.entity.RestorationTankBlockEntity
import com.cobblemon.mod.common.block.multiblock.FossilMultiblockBuilder
import com.cobblemon.mod.common.block.entity.*
import com.cobblemon.mod.common.block.entity.DisplayCaseBlockEntity
import com.cobblemon.mod.common.platform.PlatformRegistry
import net.minecraft.block.entity.BlockEntityType
import net.minecraft.registry.Registries
@@ -25,9 +32,55 @@ object CobblemonBlockEntities : PlatformRegistry<Registry<BlockEntityType<*>>, R
@JvmField
val HEALING_MACHINE: BlockEntityType<HealingMachineBlockEntity> = this.create("healing_machine", BlockEntityType.Builder.create(::HealingMachineBlockEntity, CobblemonBlocks.HEALING_MACHINE).build(null))
@JvmField
val PC: BlockEntityType<PCBlockEntity> = this.create("pc", BlockEntityType.Builder.create(::PCBlockEntity, CobblemonBlocks.PC).build(null))
@JvmField
val BERRY = this.create("berry", BlockEntityType.Builder.create(::BerryBlockEntity, *CobblemonBlocks.berries().values.toTypedArray()).build(null))
@JvmField
val PASTURE: BlockEntityType<PokemonPastureBlockEntity> = this.create("pasture", BlockEntityType.Builder.create(::PokemonPastureBlockEntity, CobblemonBlocks.PASTURE).build(null))
@JvmField
val SIGN: BlockEntityType<CobblemonSignBlockEntity> = this.create("sign", BlockEntityType.Builder.create(::CobblemonSignBlockEntity, CobblemonBlocks.APRICORN_SIGN, CobblemonBlocks.APRICORN_WALL_SIGN).build(null))
@JvmField
val HANGING_SIGN: BlockEntityType<CobblemonHangingSignBlockEntity> = this.create("hanging_sign", BlockEntityType.Builder.create(::CobblemonHangingSignBlockEntity, CobblemonBlocks.APRICORN_HANGING_SIGN, CobblemonBlocks.APRICORN_WALL_HANGING_SIGN).build(null))
}
@JvmField
val GILDED_CHEST: BlockEntityType<GildedChestBlockEntity> = this.create("chest", BlockEntityType.Builder.create(::GildedChestBlockEntity,
CobblemonBlocks.GILDED_CHEST,
CobblemonBlocks.BLUE_GILDED_CHEST,
CobblemonBlocks.YELLOW_GILDED_CHEST,
CobblemonBlocks.PINK_GILDED_CHEST,
CobblemonBlocks.BLACK_GILDED_CHEST,
CobblemonBlocks.WHITE_GILDED_CHEST,
CobblemonBlocks.GREEN_GILDED_CHEST,
CobblemonBlocks.GIMMIGHOUL_CHEST
).build(null))
@JvmField
val FOSSIL_MULTIBLOCK: BlockEntityType<FossilMultiblockEntity> = this.create("fossil_multiblock",
BlockEntityType.Builder.create({ pos, state -> FossilMultiblockEntity(pos, state, FossilMultiblockBuilder(pos)) },
CobblemonBlocks.MONITOR
).build(null)
)
@JvmField
val RESTORATION_TANK: BlockEntityType<RestorationTankBlockEntity> = this.create("restoration_tank",
BlockEntityType.Builder.create({ pos, state -> RestorationTankBlockEntity(pos, state, FossilMultiblockBuilder(pos)) },
CobblemonBlocks.RESTORATION_TANK
).build(null)
)
@JvmField
val FOSSIL_ANALYZER: BlockEntityType<FossilAnalyzerBlockEntity> = this.create("fossil_analyzer",
BlockEntityType.Builder.create({ pos, state -> FossilAnalyzerBlockEntity(pos, state, FossilMultiblockBuilder(pos)) },
CobblemonBlocks.FOSSIL_ANALYZER
).build(null)
)
@JvmField
val DISPLAY_CASE: BlockEntityType<DisplayCaseBlockEntity> = this.create("display_case",
BlockEntityType.Builder.create(::DisplayCaseBlockEntity, CobblemonBlocks.DISPLAY_CASE).build(null)
)
}
@@ -11,13 +11,24 @@ package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.apricorn.Apricorn
import com.cobblemon.mod.common.block.*
import com.cobblemon.mod.common.block.MintBlock.MintType
import com.cobblemon.mod.common.block.FossilAnalyzerBlock
import com.cobblemon.mod.common.block.MonitorBlock
import com.cobblemon.mod.common.block.RestorationTankBlock
import com.cobblemon.mod.common.mixin.invoker.DoorBlockInvoker
import com.cobblemon.mod.common.mixin.invoker.PressurePlateBlockInvoker
import com.cobblemon.mod.common.mixin.invoker.StairsBlockInvoker
import com.cobblemon.mod.common.mixin.invoker.TrapdoorBlockInvoker
import com.cobblemon.mod.common.mixin.invoker.*
import com.cobblemon.mod.common.platform.PlatformRegistry
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.block.chest.GildedChestBlock
import com.cobblemon.mod.common.block.sign.CobblemonHangingSignBlock
import com.cobblemon.mod.common.block.sign.CobblemonSignBlock
import com.cobblemon.mod.common.block.sign.CobblemonWallHangingSignBlock
import com.cobblemon.mod.common.block.sign.CobblemonWallSignBlock
import net.minecraft.block.*
import net.minecraft.block.enums.Instrument
import net.minecraft.block.piston.PistonBehavior
import net.minecraft.entity.effect.StatusEffects
import net.minecraft.registry.Registries
@@ -25,11 +36,14 @@ import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKey
import net.minecraft.registry.RegistryKeys
import net.minecraft.sound.BlockSoundGroup
import net.minecraft.util.Identifier
import net.minecraft.util.math.intprovider.UniformIntProvider
@Suppress("SameParameterValue", "HasPlatformType", "MemberVisibilityCanBePrivate", "unused")
object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<Block>>, Block>() {
override val registry: Registry<Block> = Registries.BLOCK
override val registryKey: RegistryKey<Registry<Block>> = RegistryKeys.BLOCK
@@ -44,6 +58,8 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
@JvmField
val FIRE_STONE_ORE = evolutionStoneOre("fire_stone_ore")
@JvmField
val NETHER_FIRE_STONE_ORE = evolutionStoneOre("nether_fire_stone_ore")
@JvmField
val ICE_STONE_ORE = evolutionStoneOre("ice_stone_ore")
@JvmField
val LEAF_STONE_ORE = evolutionStoneOre("leaf_stone_ore")
@@ -56,6 +72,8 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
@JvmField
val SUN_STONE_ORE = evolutionStoneOre("sun_stone_ore")
@JvmField
val TERRACOTTA_SUN_STONE_ORE = evolutionStoneOre("terracotta_sun_stone_ore")
@JvmField
val THUNDER_STONE_ORE = evolutionStoneOre("thunder_stone_ore")
@JvmField
val WATER_STONE_ORE = evolutionStoneOre("water_stone_ore")
@@ -91,28 +109,33 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
@JvmField
val STRIPPED_APRICORN_WOOD = log("stripped_apricorn_wood")
@JvmField
val APRICORN_PLANKS = this.create("apricorn_planks", Block(AbstractBlock.Settings.create().mapColor(MapColor.DIRT_BROWN).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
val APRICORN_PLANKS = this.create("apricorn_planks", Block(AbstractBlock.Settings.create().mapColor(MapColor.DIRT_BROWN).instrument(Instrument.BASS).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
@JvmField
val APRICORN_LEAVES = leaves("apricorn_leaves")
@JvmField
val APRICORN_FENCE = this.create("apricorn_fence", FenceBlock(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
val APRICORN_FENCE = this.create("apricorn_fence", FenceBlock(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).instrument(Instrument.BASS).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
@JvmField
val APRICORN_FENCE_GATE = this.create("apricorn_fence_gate", FenceGateBlock(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD), APRICORN_WOOD_TYPE))
val APRICORN_FENCE_GATE = this.create("apricorn_fence_gate", FenceGateBlock(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).instrument(Instrument.BASS).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD), APRICORN_WOOD_TYPE))
@JvmField // Note At the time of 1.20.0 we don't need our own BlockSetType for Apricorn wood
val APRICORN_BUTTON = this.create("apricorn_button", BlocksInvoker.createWoodenButtonBlock(BlockSetType.OAK))
@JvmField
val APRICORN_PRESSURE_PLATE = this.create("apricorn_pressure_plate", PressurePlateBlockInvoker.`cobblemon$create`(PressurePlateBlock.ActivationRule.EVERYTHING, AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).noCollision().strength(0.5f).sounds(BlockSoundGroup.WOOD), APRICORN_BLOCK_SET_TYPE))
// Tag was removed be sure to add it back when implemented
//val APRICORN_SIGN = queue("apricorn_sign") { StandingSignBlock(AbstractBlock.Settings.of(Material.WOOD).noCollission().strength(1.0f).sounds(BlockSoundGroup.WOOD), APRICORN_WOOD_TYPE) }
//val APRICORN_WALL_SIGN = queue("apricorn_wall_sign") { WallSignBlock(AbstractBlock.Settings.of(Material.WOOD).noCollission().strength(1.0f).sounds(BlockSoundGroup.WOOD).dropsLike(APRICORN_SIGN), APRICORN_WOOD_TYPE) }
val APRICORN_PRESSURE_PLATE = this.create("apricorn_pressure_plate", PressurePlateBlockInvoker.`cobblemon$create`(PressurePlateBlock.ActivationRule.EVERYTHING, AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).instrument(Instrument.BASS).noCollision().strength(0.5f).sounds(BlockSoundGroup.WOOD), APRICORN_BLOCK_SET_TYPE))
@JvmField
val APRICORN_SLAB = this.create("apricorn_slab", SlabBlock(AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
val APRICORN_SIGN = this.create("apricorn_sign", CobblemonSignBlock(AbstractBlock.Settings.copy(Blocks.OAK_SIGN), APRICORN_WOOD_TYPE))
@JvmField
val APRICORN_WALL_SIGN = this.create("apricorn_wall_sign", CobblemonWallSignBlock(AbstractBlock.Settings.copy(Blocks.OAK_WALL_SIGN), APRICORN_WOOD_TYPE))
@JvmField
val APRICORN_HANGING_SIGN = this.create("apricorn_hanging_sign", CobblemonHangingSignBlock(AbstractBlock.Settings.copy(Blocks.OAK_WALL_HANGING_SIGN), APRICORN_WOOD_TYPE))
@JvmField
val APRICORN_WALL_HANGING_SIGN = this.create("apricorn_wall_hanging_sign", CobblemonWallHangingSignBlock(AbstractBlock.Settings.copy(Blocks.OAK_HANGING_SIGN), APRICORN_WOOD_TYPE))
@JvmField
val APRICORN_SLAB = this.create("apricorn_slab", SlabBlock(AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN).instrument(Instrument.BASS).strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)))
@JvmField
val APRICORN_STAIRS = this.create("apricorn_stairs", StairsBlockInvoker.`cobblemon$create`(APRICORN_PLANKS.defaultState, AbstractBlock.Settings.copy(APRICORN_PLANKS)))
@JvmField
val APRICORN_DOOR = this.create("apricorn_door", DoorBlockInvoker.`cobblemon$create`(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).strength(3.0F).sounds(BlockSoundGroup.WOOD).nonOpaque(), APRICORN_BLOCK_SET_TYPE))
val APRICORN_DOOR = this.create("apricorn_door", DoorBlockInvoker.`cobblemon$create`(AbstractBlock.Settings.create().mapColor(APRICORN_PLANKS.defaultMapColor).instrument(Instrument.BASS).strength(3.0F).sounds(BlockSoundGroup.WOOD).nonOpaque(), APRICORN_BLOCK_SET_TYPE))
@JvmField
val APRICORN_TRAPDOOR = this.create("apricorn_trapdoor", TrapdoorBlockInvoker.`cobblemon$create`(AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN).strength(3.0F).sounds(BlockSoundGroup.WOOD).nonOpaque().allowsSpawning { _, _, _, _ -> false }, APRICORN_BLOCK_SET_TYPE))
val APRICORN_TRAPDOOR = this.create("apricorn_trapdoor", TrapdoorBlockInvoker.`cobblemon$create`(AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN).instrument(Instrument.BASS).strength(3.0F).sounds(BlockSoundGroup.WOOD).nonOpaque().allowsSpawning { _, _, _, _ -> false }, APRICORN_BLOCK_SET_TYPE))
private val PLANT_PROPERTIES = AbstractBlock.Settings.create().mapColor(MapColor.DARK_GREEN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.GRASS).pistonBehavior(PistonBehavior.DESTROY)
@JvmField
@@ -131,13 +154,65 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
val YELLOW_APRICORN_SAPLING = this.create("yellow_apricorn_sapling", ApricornSaplingBlock(PLANT_PROPERTIES, Apricorn.YELLOW))
@JvmField
val MEDICINAL_LEEK = this.create("medicinal_leek", MedicinalLeekBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DULL_RED).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val MEDICINAL_LEEK = this.create("medicinal_leek", MedicinalLeekBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DULL_RED).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MEDICINAL_LEEK_SOUNDS)))
@JvmField
val ENERGY_ROOT = this.create("energy_root", EnergyRootBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DIRT_BROWN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.ROOTS)))
val ENERGY_ROOT = this.create("energy_root", EnergyRootBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DIRT_BROWN).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.ENERGY_ROOT_SOUNDS)))
@JvmField
val BIG_ROOT = this.create("big_root", BigRootBlock(AbstractBlock.Settings.create().pistonBehavior(PistonBehavior.DESTROY).burnable().mapColor(MapColor.DARK_GREEN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.ROOTS)))
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)
@JvmField
val LARGE_BUDDING_TUMBLESTONE = tumblestoneBlock("large_budding_tumblestone", GrowableStoneBlock.STAGE_2, 5, 3, TUMBLESTONE_CLUSTER)
@JvmField
val MEDIUM_BUDDING_TUMBLESTONE = tumblestoneBlock("medium_budding_tumblestone", GrowableStoneBlock.STAGE_1, 4, 3, LARGE_BUDDING_TUMBLESTONE)
@JvmField
val SMALL_BUDDING_TUMBLESTONE = tumblestoneBlock("small_budding_tumblestone", GrowableStoneBlock.STAGE_0, 3, 4, MEDIUM_BUDDING_TUMBLESTONE)
@JvmField
val SKY_TUMBLESTONE_CLUSTER = tumblestoneBlock("sky_tumblestone_cluster", GrowableStoneBlock.STAGE_3, 7, 3, null)
@JvmField
val LARGE_BUDDING_SKY_TUMBLESTONE = tumblestoneBlock("large_budding_sky_tumblestone", GrowableStoneBlock.STAGE_2, 5, 3, SKY_TUMBLESTONE_CLUSTER)
@JvmField
val MEDIUM_BUDDING_SKY_TUMBLESTONE = tumblestoneBlock("medium_budding_sky_tumblestone", GrowableStoneBlock.STAGE_1, 4, 3, LARGE_BUDDING_SKY_TUMBLESTONE)
@JvmField
val SMALL_BUDDING_SKY_TUMBLESTONE = tumblestoneBlock("small_budding_sky_tumblestone", GrowableStoneBlock.STAGE_0, 3, 4, MEDIUM_BUDDING_SKY_TUMBLESTONE)
@JvmField
val BLACK_TUMBLESTONE_CLUSTER = tumblestoneBlock("black_tumblestone_cluster", GrowableStoneBlock.STAGE_3, 7, 3, null)
@JvmField
val LARGE_BUDDING_BLACK_TUMBLESTONE = tumblestoneBlock("large_budding_black_tumblestone", GrowableStoneBlock.STAGE_2, 5, 3, BLACK_TUMBLESTONE_CLUSTER)
@JvmField
val MEDIUM_BUDDING_BLACK_TUMBLESTONE = tumblestoneBlock("medium_budding_black_tumblestone", GrowableStoneBlock.STAGE_1, 4, 3, LARGE_BUDDING_BLACK_TUMBLESTONE)
@JvmField
val SMALL_BUDDING_BLACK_TUMBLESTONE = tumblestoneBlock("small_budding_black_tumblestone", GrowableStoneBlock.STAGE_0, 3, 4, MEDIUM_BUDDING_BLACK_TUMBLESTONE)
@JvmField
val TUMBLESTONE_BLOCK = this.create("tumblestone_block", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val SKY_TUMBLESTONE_BLOCK = this.create("sky_tumblestone_block", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_TUMBLESTONE_BLOCK = this.create("black_tumblestone_block", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_APRICORN = apricornBlock("black_apricorn", Apricorn.BLACK)
@@ -154,6 +229,138 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
@JvmField
val YELLOW_APRICORN = apricornBlock("yellow_apricorn", Apricorn.YELLOW)
@JvmField
val RELIC_COIN_POUCH = create(
"relic_coin_pouch",
CoinPouchBlock(
AbstractBlock.Settings.create()
.sounds(CobblemonSounds.COIN_POUCH_SOUNDS)
.pistonBehavior(PistonBehavior.DESTROY)
.strength(0.4f)
.nonOpaque(), true
)
)
@JvmField
val RELIC_COIN_SACK = create(
"relic_coin_sack",
CoinPouchBlock(
AbstractBlock.Settings.create()
.sounds(CobblemonSounds.COIN_POUCH_SOUNDS)
.pistonBehavior(PistonBehavior.DESTROY)
.strength(0.4f), false
))
@JvmField
val GILDED_CHEST = create(
"gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.RED
)
)
@JvmField
val BLUE_GILDED_CHEST = create(
"blue_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.BLUE
)
)
@JvmField
val BLACK_GILDED_CHEST = create(
"black_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.BLACK
)
)
@JvmField
val YELLOW_GILDED_CHEST = create(
"yellow_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.YELLOW
)
)
@JvmField
val WHITE_GILDED_CHEST = create(
"white_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.WHITE
)
)
@JvmField
val GREEN_GILDED_CHEST = create(
"green_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.GREEN
)
)
@JvmField
val PINK_GILDED_CHEST = create(
"pink_gilded_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.PINK
)
)
@JvmField
val GIMMIGHOUL_CHEST = create(
"gimmighoul_chest",
GildedChestBlock(
AbstractBlock.Settings.copy(Blocks.CHEST).nonOpaque().sounds(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.FAKE
)
)
@JvmField
val MONITOR = create(
"monitor",
MonitorBlock(
AbstractBlock.Settings.create()
.mapColor(MapColor.IRON_GRAY)
.sounds(BlockSoundGroup.METAL)
.pistonBehavior(PistonBehavior.BLOCK)
.requiresTool()
.strength(5.0F, 6.0F)
.luminance { if (it.get(MonitorBlock.SCREEN) != MonitorBlock.MonitorScreen.OFF) 15 else 0 }
)
)
@JvmField
val FOSSIL_ANALYZER = create(
"fossil_analyzer",
FossilAnalyzerBlock(
AbstractBlock.Settings.create()
.mapColor(MapColor.IRON_GRAY)
.sounds(BlockSoundGroup.METAL)
.pistonBehavior(PistonBehavior.BLOCK)
.requiresTool()
.strength(5.0F, 6.0F)
.nonOpaque()
)
)
@JvmField
val RESTORATION_TANK = create(
"restoration_tank",
RestorationTankBlock(
AbstractBlock.Settings.create()
.mapColor(MapColor.IRON_GRAY)
.sounds(BlockSoundGroup.GLASS)
.pistonBehavior(PistonBehavior.BLOCK)
.requiresTool()
.strength(5.0F, 6.0F)
.nonOpaque()
)
)
@JvmField
val HEALING_MACHINE = create(
"healing_machine",
@@ -182,17 +389,29 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
)
@JvmField
val RED_MINT = create("red_mint", MintBlock(MintType.RED, AbstractBlock.Settings.create().mapColor(MapColor.RED).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val DISPLAY_CASE = create(
"display_case",
DisplayCaseBlock(
AbstractBlock.Settings.create()
.sounds(CobblemonSounds.DISPLAY_CASE_SOUNDS)
.nonOpaque()
.pistonBehavior(PistonBehavior.BLOCK)
.mapColor(MapColor.STONE_GRAY)
.strength(0.3f)
)
)
val RED_MINT = create("red_mint", MintBlock(MintType.RED, AbstractBlock.Settings.create().mapColor(MapColor.RED).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val BLUE_MINT = create("blue_mint", MintBlock(MintType.BLUE, AbstractBlock.Settings.create().mapColor(MapColor.BLUE).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val BLUE_MINT = create("blue_mint", MintBlock(MintType.BLUE, AbstractBlock.Settings.create().mapColor(MapColor.BLUE).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val CYAN_MINT = create("cyan_mint", MintBlock(MintType.CYAN, AbstractBlock.Settings.create().mapColor(MapColor.CYAN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val CYAN_MINT = create("cyan_mint", MintBlock(MintType.CYAN, AbstractBlock.Settings.create().mapColor(MapColor.CYAN).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val PINK_MINT = create("pink_mint", MintBlock(MintType.PINK, AbstractBlock.Settings.create().mapColor(MapColor.PINK).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val PINK_MINT = create("pink_mint", MintBlock(MintType.PINK, AbstractBlock.Settings.create().mapColor(MapColor.PINK).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val GREEN_MINT = create("green_mint", MintBlock(MintType.GREEN, AbstractBlock.Settings.create().mapColor(MapColor.GREEN).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val GREEN_MINT = create("green_mint", MintBlock(MintType.GREEN, AbstractBlock.Settings.create().mapColor(MapColor.GREEN).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val WHITE_MINT = create("white_mint", MintBlock(MintType.WHITE, AbstractBlock.Settings.create().mapColor(MapColor.WHITE).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.CROP)))
val WHITE_MINT = create("white_mint", MintBlock(MintType.WHITE, AbstractBlock.Settings.create().mapColor(MapColor.WHITE).noCollision().ticksRandomly().breakInstantly().sounds(CobblemonSounds.MINT_SOUNDS)))
@JvmField
val PASTURE = create(
@@ -209,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
@@ -225,17 +444,142 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
APRICORN_LOG to STRIPPED_APRICORN_LOG
)
private fun apricornBlock(name: String, apricorn: Apricorn): ApricornBlock = this.create(name, ApricornBlock(AbstractBlock.Settings.create().mapColor(apricorn.mapColor()).ticksRandomly().strength(Blocks.OAK_LOG.hardness, Blocks.OAK_LOG.blastResistance).sounds(BlockSoundGroup.WOOD).nonOpaque(), apricorn))
private fun tumblestoneBlock(name: String, stage: Int, height: Int, xzOffset: Int, nextStage: Block?) : Block {
return this.create(name, TumblestoneBlock(AbstractBlock.Settings.create()
.pistonBehavior(PistonBehavior.DESTROY)
.nonOpaque()
.strength(1.5F)
.sounds(CobblemonSounds.TUMBLESTONE_SOUNDS),
stage, height, xzOffset, nextStage))
}
private val berries = mutableMapOf<Identifier, BerryBlock>()
val AGUAV_BERRY = this.berryBlock("aguav")
val APICOT_BERRY = this.berryBlock("apicot")
val ASPEAR_BERRY = this.berryBlock("aspear")
val BABIRI_BERRY = this.berryBlock("babiri")
val BELUE_BERRY = this.berryBlock("belue")
val BLUK_BERRY = this.berryBlock("bluk")
val CHARTI_BERRY = this.berryBlock("charti")
val CHERI_BERRY = this.berryBlock("cheri")
val CHESTO_BERRY = this.berryBlock("chesto")
val CHILAN_BERRY = this.berryBlock("chilan")
val CHOPLE_BERRY = this.berryBlock("chople")
val COBA_BERRY = this.berryBlock("coba")
val COLBUR_BERRY = this.berryBlock("colbur")
val CORNN_BERRY = this.berryBlock("cornn")
val CUSTAP_BERRY = this.berryBlock("custap")
val DURIN_BERRY = this.berryBlock("durin")
val ENIGMA_BERRY = this.berryBlock("enigma")
val FIGY_BERRY = this.berryBlock("figy")
val GANLON_BERRY = this.berryBlock("ganlon")
val GREPA_BERRY = this.berryBlock("grepa")
val HABAN_BERRY = this.berryBlock("haban")
val HONDEW_BERRY = this.berryBlock("hondew")
val HOPO_BERRY = this.berryBlock("hopo")
val IAPAPA_BERRY = this.berryBlock("iapapa")
val JABOCA_BERRY = this.berryBlock("jaboca")
val KASIB_BERRY = this.berryBlock("kasib")
val KEBIA_BERRY = this.berryBlock("kebia")
val KEE_BERRY = this.berryBlock("kee")
val KELPSY_BERRY = this.berryBlock("kelpsy")
val LANSAT_BERRY = this.berryBlock("lansat")
val LEPPA_BERRY = this.berryBlock("leppa")
val LIECHI_BERRY = this.berryBlock("liechi")
val LUM_BERRY = this.berryBlock("lum")
val MAGO_BERRY = this.berryBlock("mago")
val MAGOST_BERRY = this.berryBlock("magost")
val MARANGA_BERRY = this.berryBlock("maranga")
val MICLE_BERRY = this.berryBlock("micle")
val NANAB_BERRY = this.berryBlock("nanab")
val NOMEL_BERRY = this.berryBlock("nomel")
val OCCA_BERRY = this.berryBlock("occa")
val ORAN_BERRY = this.berryBlock("oran")
val PAMTRE_BERRY = this.berryBlock("pamtre")
val PASSHO_BERRY = this.berryBlock("passho")
val PAYAPA_BERRY = this.berryBlock("payapa")
val PECHA_BERRY = this.berryBlock("pecha")
val PERSIM_BERRY = this.berryBlock("persim")
val PETAYA_BERRY = this.berryBlock("petaya")
val PINAP_BERRY = this.berryBlock("pinap")
val POMEG_BERRY = this.berryBlock("pomeg")
val QUALOT_BERRY = this.berryBlock("qualot")
val RABUTA_BERRY = this.berryBlock("rabuta")
val RAWST_BERRY = this.berryBlock("rawst")
val RAZZ_BERRY = this.berryBlock("razz")
val RINDO_BERRY = this.berryBlock("rindo")
val ROSELI_BERRY = this.berryBlock("roseli")
val ROWAP_BERRY = this.berryBlock("rowap")
val SALAC_BERRY = this.berryBlock("salac")
val SHUCA_BERRY = this.berryBlock("shuca")
val SITRUS_BERRY = this.berryBlock("sitrus")
val SPELON_BERRY = this.berryBlock("spelon")
val STARF_BERRY = this.berryBlock("starf")
val TAMATO_BERRY = this.berryBlock("tamato")
val TANGA_BERRY = this.berryBlock("tanga")
val TOUGA_BERRY = this.berryBlock("touga")
val WACAN_BERRY = this.berryBlock("wacan")
val WATMEL_BERRY = this.berryBlock("watmel")
val WEPEAR_BERRY = this.berryBlock("wepear")
val WIKI_BERRY = this.berryBlock("wiki")
val YACHE_BERRY = this.berryBlock("yache")
init {
/**
* Makes all blocks in array flammable by adding them to FireBlock's flammableRegistry.
* second value is burn chance and third value is spread chance
*/
arrayOf(
Triple(APRICORN_LOG, 5, 5),
Triple(STRIPPED_APRICORN_LOG, 5, 5),
Triple(APRICORN_WOOD, 5, 5),
Triple(STRIPPED_APRICORN_WOOD, 5, 5),
Triple(APRICORN_PLANKS, 5, 20),
Triple(APRICORN_LEAVES, 30, 60),
Triple(APRICORN_FENCE, 5, 20),
Triple(APRICORN_FENCE_GATE, 5, 20),
Triple(APRICORN_SLAB, 5, 20),
Triple(APRICORN_STAIRS, 5, 20)
).onEach{ data -> setFlammable(data.first, data.second, data.third) }
}
fun berries() = this.berries.toMap()
private fun berryBlock(name: String): BerryBlock {
val identifier = cobblemonResource("${name}_berry")
val block = this.create(identifier.path, BerryBlock(identifier, AbstractBlock.Settings.copy(Blocks.WHEAT).dynamicBounds().sounds(CobblemonSounds.BERRY_BUSH_SOUNDS).strength(0.2F)))
this.berries[identifier] = block
return block
}
/**
* Helper method for creating logs
* copied over from Vanilla
* Calls helper method from Vanilla
*/
private fun log(name: String, arg: MapColor = MapColor.DIRT_BROWN, arg2: MapColor = MapColor.DIRT_BROWN): PillarBlock {
val block = BlocksInvoker.createLogBlock(arg, arg2)
return this.create(name, block)
}
/**
* Method uses generic E in order to keep the block as the same return type.
* If E is not a block then it will not be set as flammable.
* Calls Vanilla implementation of registering a flammable block.
* Mixins looks cursed but it is java's fault.
*/
private fun <E> setFlammable(block: E, burnChance: Int, spreadChance: Int): E {
if(block !is Block) return block
var fireBlock: FireBlock = Blocks.FIRE as FireBlock
//Cursed Mixin stuff
(fireBlock as FireBlockInvoker).registerNewFlammableBlock(block as Block, burnChance, spreadChance)
return block
}
private fun evolutionStoneOre(name: String) = this.create(name, ExperienceDroppingBlock(AbstractBlock.Settings.copy(Blocks.IRON_ORE), UniformIntProvider.create(1, 2)))
private fun deepslateEvolutionStoneOre(name: String) = this.create(name, ExperienceDroppingBlock(AbstractBlock.Settings.copy(Blocks.DEEPSLATE_IRON_ORE), UniformIntProvider.create(1, 2)))
@@ -248,4 +592,4 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
val block = BlocksInvoker.createLeavesBlock(BlockSoundGroup.GRASS)
return this.create(name, block)
}
}
}
@@ -8,7 +8,6 @@
package com.cobblemon.mod.common
import java.util.function.Supplier
import net.minecraft.block.Block
import net.minecraft.block.entity.BlockEntity
import net.minecraft.block.entity.BlockEntityType
@@ -19,11 +18,14 @@ import net.minecraft.client.particle.ParticleFactory
import net.minecraft.client.particle.SpriteProvider
import net.minecraft.client.render.RenderLayer
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory
import net.minecraft.client.render.entity.EntityRendererFactory
import net.minecraft.client.render.entity.model.EntityModelLayer
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityType
import net.minecraft.item.Item
import net.minecraft.particle.ParticleEffect
import net.minecraft.particle.ParticleType
import net.minecraft.resource.SynchronousResourceReloader
import java.util.function.Supplier
interface CobblemonClientImplementation {
fun registerLayer(modelLayer: EntityModelLayer, supplier: Supplier<TexturedModelData>)
@@ -38,5 +40,7 @@ interface CobblemonClientImplementation {
fun registerBlockColors(provider: BlockColorProvider, vararg blocks: Block)
fun <T : BlockEntity> registerBlockEntityRenderer(type: BlockEntityType<T>, factory: BlockEntityRendererFactory<T>)
fun <T : BlockEntity> registerBlockEntityRenderer(type: BlockEntityType<out T>, factory: BlockEntityRendererFactory<T>)
fun <T : Entity> registerEntityRenderer(type: EntityType<out T>, factory: EntityRendererFactory<T>)
}
@@ -44,6 +44,13 @@ object CobblemonCommands {
TestPcSlotCommand.register(dispatcher)
TestPartySlotCommand.register(dispatcher)
ClearPartyCommand.register(dispatcher)
ClearPCCommand.register(dispatcher)
PokemonRestartCommand.register(dispatcher)
BedrockParticleCommand.register(dispatcher)
OpenDialogueCommand.register(dispatcher)
// Possibly lock down registration if and only if under dev environment or running in an environment
// with a certain system environment variable set
CobblemonInfoCommand.register(dispatcher)
}
}
@@ -9,6 +9,9 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.pokeball.PokeBalls
import com.cobblemon.mod.common.entity.boat.CobblemonBoatEntity
import com.cobblemon.mod.common.entity.boat.CobblemonChestBoatEntity
import com.cobblemon.mod.common.entity.generic.GenericBedrockEntity
import com.cobblemon.mod.common.entity.pokeball.EmptyPokeBallEntity
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.platform.PlatformRegistry
@@ -45,6 +48,33 @@ object CobblemonEntities : PlatformRegistry<Registry<EntityType<*>>, RegistryKey
.build(EMPTY_POKEBALL_KEY.toString())
)
@JvmField
val BOAT_KEY = cobblemonResource("boat")
@JvmField
val BOAT: EntityType<CobblemonBoatEntity> = this.create(
BOAT_KEY.path,
EntityType.Builder.create(::CobblemonBoatEntity, SpawnGroup.MISC).setDimensions(1.375F, 0.5625F).maxTrackingRange(10)
.build(BOAT_KEY.toString())
)
@JvmField
val CHEST_BOAT_KEY = cobblemonResource("chest_boat")
@JvmField
val CHEST_BOAT: EntityType<CobblemonChestBoatEntity> = this.create(
CHEST_BOAT_KEY.path,
EntityType.Builder.create(::CobblemonChestBoatEntity, SpawnGroup.MISC).setDimensions(1.375F, 0.5625F).maxTrackingRange(10)
.build(CHEST_BOAT_KEY.toString())
)
@JvmField
val GENERIC_BEDROCK_ENTITY_KEY = cobblemonResource("generic_bedrock")
@JvmField
val GENERIC_BEDROCK_ENTITY: EntityType<GenericBedrockEntity> = this.create(
GENERIC_BEDROCK_ENTITY_KEY.path,
EntityType.Builder.create({ _, world -> GenericBedrockEntity(world) }, SpawnGroup.MISC)
.build(GENERIC_BEDROCK_ENTITY_KEY.toString())
)
fun registerAttributes(consumer: (EntityType<out LivingEntity>, DefaultAttributeContainer.Builder) -> Unit) {
consumer(POKEMON, PokemonEntity.createAttributes())
}
@@ -8,22 +8,27 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.data.JsonDataRegistry
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
import com.mojang.brigadier.arguments.ArgumentType
import kotlin.reflect.KClass
import net.minecraft.advancement.criterion.Criterion
import net.minecraft.block.ComposterBlock
import net.minecraft.command.argument.serialize.ArgumentSerializer
import net.minecraft.item.ItemConvertible
import net.minecraft.network.PacketByteBuf
import net.minecraft.network.listener.ClientPlayPacketListener
import net.minecraft.network.packet.Packet
import net.minecraft.registry.RegistryKey
import net.minecraft.registry.tag.TagKey
import net.minecraft.resource.ResourceManager
import net.minecraft.resource.ResourceReloader
import net.minecraft.resource.ResourceType
import net.minecraft.server.MinecraftServer
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.Text
import net.minecraft.util.Identifier
import net.minecraft.world.GameRules
import net.minecraft.world.biome.Biome
@@ -160,6 +165,51 @@ interface CobblemonImplementation {
*/
fun server(): MinecraftServer?
/**
* Handles platform independent reloading of a [JsonDataRegistry].
*
* @param registry The [JsonDataRegistry] to reload.
* @param manager The [ResourceManager] to reload from.
*/
fun <T> reloadJsonRegistry(registry: JsonDataRegistry<T>, manager: ResourceManager): HashMap<Identifier, T>
/**
* Registers an item to the [ComposterBlock].
*
* @param item The [ItemConvertible] being registered.
* @param chance The chance % of increasing the composter level, 0 to 1 expected.
*/
fun registerCompostable(item: ItemConvertible, chance: Float)
/**
* Registers a builtin resource pack.
*
* @param id The unique [Identifier] of this pack.
* @param title The title displayed in the resource pack GUI, the description is still a part of the pack metadata.
* @param activationBehaviour The [ResourcePackActivationBehaviour] for this pack.
*/
fun registerBuiltinResourcePack(id: Identifier, title: Text, activationBehaviour: ResourcePackActivationBehaviour)
}
enum class ResourcePackActivationBehaviour {
/**
* The resource pack will start disabled.
*/
NORMAL,
/**
* The resource pack will start enabled.
*/
DEFAULT_ENABLED,
/**
* The resource pack will always be enabled.
* The user can reorder it but cannot remove it.
*/
ALWAYS_ENABLED;
}
enum class ModAPI {
@@ -8,23 +8,36 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.item.ability.AbilityChanger
import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.api.pokeball.PokeBalls
import com.cobblemon.mod.common.api.pokemon.Natures
import com.cobblemon.mod.common.api.pokemon.stats.Stats
import com.cobblemon.mod.common.api.pokemon.status.Statuses
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.block.MintBlock
import com.cobblemon.mod.common.block.MintBlock.MintType
import com.cobblemon.mod.common.entity.boat.CobblemonBoatType
import com.cobblemon.mod.common.item.*
import com.cobblemon.mod.common.item.armor.CobblemonArmorTrims
import com.cobblemon.mod.common.item.battle.DireHitItem
import com.cobblemon.mod.common.item.battle.GuardSpecItem
import com.cobblemon.mod.common.item.battle.XStatItem
import com.cobblemon.mod.common.item.berry.FriendshipRaisingBerryItem
import com.cobblemon.mod.common.item.berry.HealingBerryItem
import com.cobblemon.mod.common.item.berry.PPRestoringBerryItem
import com.cobblemon.mod.common.item.berry.PortionHealingBerryItem
import com.cobblemon.mod.common.item.berry.StatusCuringBerryItem
import com.cobblemon.mod.common.item.berry.VolatileCuringBerryItem
import com.cobblemon.mod.common.item.interactive.*
import com.cobblemon.mod.common.item.interactive.PotionItem
import com.cobblemon.mod.common.item.interactive.ability.AbilityChangeItem
import com.cobblemon.mod.common.platform.PlatformRegistry
import com.cobblemon.mod.common.pokeball.PokeBall
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.block.Block
import net.minecraft.block.ComposterBlock
import net.minecraft.entity.LivingEntity
import net.minecraft.entity.effect.StatusEffectInstance
import net.minecraft.entity.effect.StatusEffects
import net.minecraft.item.*
@@ -32,6 +45,8 @@ import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKey
import net.minecraft.registry.RegistryKeys
import net.minecraft.util.Identifier
import net.minecraft.world.World
@Suppress("unused")
object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<Item>>, Item>() {
@@ -104,42 +119,74 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val MASTER_BALL = pokeBallItem(PokeBalls.MASTER_BALL)
@JvmField
val CHERISH_BALL = pokeBallItem(PokeBalls.CHERISH_BALL)
@JvmField
val ANCIENT_POKE_BALL = pokeBallItem(PokeBalls.ANCIENT_POKE_BALL)
@JvmField
val ANCIENT_CITRINE_BALL = pokeBallItem(PokeBalls.ANCIENT_CITRINE_BALL)
@JvmField
val ANCIENT_VERDANT_BALL = pokeBallItem(PokeBalls.ANCIENT_VERDANT_BALL)
@JvmField
val ANCIENT_AZURE_BALL = pokeBallItem(PokeBalls.ANCIENT_AZURE_BALL)
@JvmField
val ANCIENT_ROSEATE_BALL = pokeBallItem(PokeBalls.ANCIENT_ROSEATE_BALL)
@JvmField
val ANCIENT_SLATE_BALL = pokeBallItem(PokeBalls.ANCIENT_SLATE_BALL)
@JvmField
val ANCIENT_IVORY_BALL = pokeBallItem(PokeBalls.ANCIENT_IVORY_BALL)
@JvmField
val ANCIENT_GREAT_BALL = pokeBallItem(PokeBalls.ANCIENT_GREAT_BALL)
@JvmField
val ANCIENT_ULTRA_BALL = pokeBallItem(PokeBalls.ANCIENT_ULTRA_BALL)
@JvmField
val ANCIENT_FEATHER_BALL = pokeBallItem(PokeBalls.ANCIENT_FEATHER_BALL)
@JvmField
val ANCIENT_WING_BALL = pokeBallItem(PokeBalls.ANCIENT_WING_BALL)
@JvmField
val ANCIENT_JET_BALL = pokeBallItem(PokeBalls.ANCIENT_JET_BALL)
@JvmField
val ANCIENT_HEAVY_BALL = pokeBallItem(PokeBalls.ANCIENT_HEAVY_BALL)
@JvmField
val ANCIENT_LEADEN_BALL = pokeBallItem(PokeBalls.ANCIENT_LEADEN_BALL)
@JvmField
val ANCIENT_GIGATON_BALL = pokeBallItem(PokeBalls.ANCIENT_GIGATON_BALL)
@JvmField
val ANCIENT_ORIGIN_BALL = pokeBallItem(PokeBalls.ANCIENT_ORIGIN_BALL)
@JvmField
val VIVICHOKE = create("vivichoke", Item(Item.Settings()))
val VIVICHOKE = compostableItem("vivichoke")
@JvmField
val VIVICHOKE_SEEDS = create("vivichoke_seeds", VivichokeItem(CobblemonBlocks.VIVICHOKE_SEEDS))
val VIVICHOKE_SEEDS = compostableItem("vivichoke_seeds", VivichokeItem(CobblemonBlocks.VIVICHOKE_SEEDS))
@JvmField
val RED_APRICORN = create("red_apricorn", ApricornItem(CobblemonBlocks.RED_APRICORN))
val RED_APRICORN = apricornItem("red", ApricornItem(CobblemonBlocks.RED_APRICORN))
@JvmField
val YELLOW_APRICORN = create("yellow_apricorn", ApricornItem(CobblemonBlocks.YELLOW_APRICORN))
val YELLOW_APRICORN = apricornItem("yellow", ApricornItem(CobblemonBlocks.YELLOW_APRICORN))
@JvmField
val GREEN_APRICORN = create("green_apricorn", ApricornItem(CobblemonBlocks.GREEN_APRICORN))
val GREEN_APRICORN = apricornItem("green", ApricornItem(CobblemonBlocks.GREEN_APRICORN))
@JvmField
val BLUE_APRICORN = create("blue_apricorn", ApricornItem(CobblemonBlocks.BLUE_APRICORN))
val BLUE_APRICORN = apricornItem("blue", ApricornItem(CobblemonBlocks.BLUE_APRICORN))
@JvmField
val PINK_APRICORN = create("pink_apricorn", ApricornItem(CobblemonBlocks.PINK_APRICORN))
val PINK_APRICORN = apricornItem("pink", ApricornItem(CobblemonBlocks.PINK_APRICORN))
@JvmField
val BLACK_APRICORN = create("black_apricorn", ApricornItem(CobblemonBlocks.BLACK_APRICORN))
val BLACK_APRICORN = apricornItem("black", ApricornItem(CobblemonBlocks.BLACK_APRICORN))
@JvmField
val WHITE_APRICORN = create("white_apricorn", ApricornItem(CobblemonBlocks.WHITE_APRICORN))
val WHITE_APRICORN = apricornItem("white", ApricornItem(CobblemonBlocks.WHITE_APRICORN))
@JvmField
val RED_APRICORN_SEED = create("red_apricorn_seed", ApricornSeedItem(CobblemonBlocks.RED_APRICORN_SAPLING))
val RED_APRICORN_SEED = apricornSeedItem("red", ApricornSeedItem(CobblemonBlocks.RED_APRICORN_SAPLING, CobblemonBlocks.RED_APRICORN))
@JvmField
val YELLOW_APRICORN_SEED = create("yellow_apricorn_seed", ApricornSeedItem(CobblemonBlocks.YELLOW_APRICORN_SAPLING))
val YELLOW_APRICORN_SEED = apricornSeedItem("yellow", ApricornSeedItem(CobblemonBlocks.YELLOW_APRICORN_SAPLING, CobblemonBlocks.YELLOW_APRICORN))
@JvmField
val GREEN_APRICORN_SEED = create("green_apricorn_seed", ApricornSeedItem(CobblemonBlocks.GREEN_APRICORN_SAPLING))
val GREEN_APRICORN_SEED = apricornSeedItem("green", ApricornSeedItem(CobblemonBlocks.GREEN_APRICORN_SAPLING, CobblemonBlocks.GREEN_APRICORN))
@JvmField
val BLUE_APRICORN_SEED = create("blue_apricorn_seed", ApricornSeedItem(CobblemonBlocks.BLUE_APRICORN_SAPLING))
val BLUE_APRICORN_SEED = apricornSeedItem("blue", ApricornSeedItem(CobblemonBlocks.BLUE_APRICORN_SAPLING, CobblemonBlocks.BLUE_APRICORN))
@JvmField
val PINK_APRICORN_SEED = create("pink_apricorn_seed", ApricornSeedItem(CobblemonBlocks.PINK_APRICORN_SAPLING))
val PINK_APRICORN_SEED = apricornSeedItem("pink", ApricornSeedItem(CobblemonBlocks.PINK_APRICORN_SAPLING, CobblemonBlocks.PINK_APRICORN))
@JvmField
val BLACK_APRICORN_SEED = create("black_apricorn_seed", ApricornSeedItem(CobblemonBlocks.BLACK_APRICORN_SAPLING))
val BLACK_APRICORN_SEED = apricornSeedItem("black", ApricornSeedItem(CobblemonBlocks.BLACK_APRICORN_SAPLING, CobblemonBlocks.BLACK_APRICORN))
@JvmField
val WHITE_APRICORN_SEED = create("white_apricorn_seed", ApricornSeedItem(CobblemonBlocks.WHITE_APRICORN_SAPLING))
val WHITE_APRICORN_SEED = apricornSeedItem("white", ApricornSeedItem(CobblemonBlocks.WHITE_APRICORN_SAPLING, CobblemonBlocks.WHITE_APRICORN))
@JvmField
val APRICORN_LOG = blockItem("apricorn_log", CobblemonBlocks.APRICORN_LOG)
@@ -152,13 +199,11 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val APRICORN_PLANKS = blockItem("apricorn_planks", CobblemonBlocks.APRICORN_PLANKS)
@JvmField
val APRICORN_LEAVES = blockItem("apricorn_leaves", CobblemonBlocks.APRICORN_LEAVES).also {
val compostChance = ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.getFloat(Items.OAK_LEAVES)
// Should always pass unless Mojang reworks leaves to no longer work in the Composter, in that case we already updated w.o doing anything
if (compostChance != ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.defaultReturnValue()) {
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE[it] = compostChance
}
}
val APRICORN_LEAVES = compostableBlockItem("apricorn_leaves", CobblemonBlocks.APRICORN_LEAVES)
@JvmField
val APRICORN_BOAT = create("apricorn_boat", CobblemonBoatItem(CobblemonBoatType.APRICORN, false, Item.Settings().maxCount(1)))
@JvmField
val APRICORN_CHEST_BOAT = create("apricorn_chest_boat", CobblemonBoatItem(CobblemonBoatType.APRICORN, true, Item.Settings().maxCount(1)))
@JvmField
val APRICORN_DOOR = blockItem("apricorn_door", CobblemonBlocks.APRICORN_DOOR)
@@ -172,19 +217,45 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val APRICORN_BUTTON = blockItem("apricorn_button", CobblemonBlocks.APRICORN_BUTTON)
@JvmField
val APRICORN_PRESSURE_PLATE = blockItem("apricorn_pressure_plate", CobblemonBlocks.APRICORN_PRESSURE_PLATE)
//@JvmField
// val APRICORN_SIGN = create("apricorn_sign", SignItem(Item.Properties().stacksTo(16).tab(CreativeModeTab.TAB_DECORATIONS), CobblemonBlocks.APRICORN_SIGN, CobblemonBlocks.APRICORN_WALL_SIGN))
@JvmField
val APRICORN_SLAB = blockItem("apricorn_slab", CobblemonBlocks.APRICORN_SLAB)
@JvmField
val APRICORN_STAIRS = blockItem("apricorn_stairs", CobblemonBlocks.APRICORN_STAIRS)
@JvmField
val APRICORN_SIGN = this.create("apricorn_sign", SignItem(Item.Settings().maxCount(16), CobblemonBlocks.APRICORN_SIGN, CobblemonBlocks.APRICORN_WALL_SIGN))
@JvmField
val APRICORN_HANGING_SIGN = this.create("apricorn_hanging_sign", HangingSignItem(CobblemonBlocks.APRICORN_HANGING_SIGN, CobblemonBlocks.APRICORN_WALL_HANGING_SIGN, Item.Settings().maxCount(16)))
@JvmField
val GILDED_CHEST = this.create("gilded_chest", BlockItem(CobblemonBlocks.GILDED_CHEST, Item.Settings()))
@JvmField
val BLUE_GILDED_CHEST = this.create("blue_gilded_chest", BlockItem(CobblemonBlocks.BLUE_GILDED_CHEST, Item.Settings()))
@JvmField
val YELLOW_GILDED_CHEST = this.create("yellow_gilded_chest", BlockItem(CobblemonBlocks.YELLOW_GILDED_CHEST, Item.Settings()))
@JvmField
val PINK_GILDED_CHEST = this.create("pink_gilded_chest", BlockItem(CobblemonBlocks.PINK_GILDED_CHEST, Item.Settings()))
@JvmField
val BLACK_GILDED_CHEST = this.create("black_gilded_chest", BlockItem(CobblemonBlocks.BLACK_GILDED_CHEST, Item.Settings()))
@JvmField
val WHITE_GILDED_CHEST = this.create("white_gilded_chest", BlockItem(CobblemonBlocks.WHITE_GILDED_CHEST, Item.Settings()))
@JvmField
val GREEN_GILDED_CHEST = this.create("green_gilded_chest", BlockItem(CobblemonBlocks.GREEN_GILDED_CHEST, Item.Settings()))
@JvmField
val GIMMIGHOUL_CHEST = this.create("gimmighoul_chest", BlockItem(CobblemonBlocks.GIMMIGHOUL_CHEST, Item.Settings()))
@JvmField
val RESTORATION_TANK = blockItem("restoration_tank", CobblemonBlocks.RESTORATION_TANK)
@JvmField
val FOSSIL_ANALYZER = blockItem("fossil_analyzer", CobblemonBlocks.FOSSIL_ANALYZER)
@JvmField
val MONITOR = blockItem("monitor", CobblemonBlocks.MONITOR)
@JvmField
val HEALING_MACHINE = blockItem("healing_machine", CobblemonBlocks.HEALING_MACHINE)
@JvmField
val PC = blockItem("pc", CobblemonBlocks.PC)
@JvmField
val PASTURE = blockItem("pasture", CobblemonBlocks.PASTURE)
@JvmField
val DISPLAY_CASE = blockItem("display_case", CobblemonBlocks.DISPLAY_CASE)
// Evolution items
@JvmField val LINK_CABLE = create("link_cable", LinkCableItem())
@@ -212,6 +283,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField val RIBBON_SWEET = noSettingsItem("ribbon_sweet")
@JvmField val CHIPPED_POT = noSettingsItem("chipped_pot")
@JvmField val CRACKED_POT = noSettingsItem("cracked_pot")
@JvmField val MASTERPIECE_TEACUP = noSettingsItem("masterpiece_teacup")
@JvmField val UNREMARKABLE_TEACUP = noSettingsItem("unremarkable_teacup")
@JvmField val SWEET_APPLE = noSettingsItem("sweet_apple")
@JvmField val TART_APPLE = noSettingsItem("tart_apple")
@JvmField val GALARICA_CUFF = noSettingsItem("galarica_cuff")
@@ -220,8 +293,82 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField val PEAT_BLOCK = noSettingsItem("peat_block")
@JvmField val RAZOR_CLAW = noSettingsItem("razor_claw")
@JvmField val RAZOR_FANG = noSettingsItem("razor_fang")
// ToDo enable me when malicious armor goes in the game
//@JvmField val AUSPICIOUS_ARMOR = heldItem("auspicious_armor")
@JvmField val AUSPICIOUS_ARMOR = heldItem("auspicious_armor")
@JvmField val MALICIOUS_ARMOR = heldItem("malicious_armor")
private val berries = mutableMapOf<Identifier, BerryItem>()
// Plants
@JvmField val ORAN_BERRY = berryItem("oran", HealingBerryItem(CobblemonBlocks.ORAN_BERRY) { CobblemonMechanics.berries.oranRestoreAmount })
@JvmField val CHERI_BERRY = berryItem("cheri", StatusCuringBerryItem(CobblemonBlocks.CHERI_BERRY, Statuses.PARALYSIS))
@JvmField val CHESTO_BERRY = berryItem("chesto", StatusCuringBerryItem(CobblemonBlocks.CHESTO_BERRY, Statuses.SLEEP))
@JvmField val PECHA_BERRY = berryItem("pecha", StatusCuringBerryItem(CobblemonBlocks.PECHA_BERRY, Statuses.POISON, Statuses.POISON_BADLY))
@JvmField val RAWST_BERRY = berryItem("rawst", StatusCuringBerryItem(CobblemonBlocks.RAWST_BERRY, Statuses.BURN))
@JvmField val ASPEAR_BERRY = berryItem("aspear", StatusCuringBerryItem(CobblemonBlocks.ASPEAR_BERRY, Statuses.FROZEN))
@JvmField val PERSIM_BERRY = berryItem("persim", VolatileCuringBerryItem(CobblemonBlocks.PERSIM_BERRY, "confusion"))
@JvmField val RAZZ_BERRY = berryItem("razz", CobblemonBlocks.RAZZ_BERRY)
@JvmField val BLUK_BERRY = berryItem("bluk", CobblemonBlocks.BLUK_BERRY)
@JvmField val NANAB_BERRY = berryItem("nanab", CobblemonBlocks.NANAB_BERRY)
@JvmField val WEPEAR_BERRY = berryItem("wepear", CobblemonBlocks.WEPEAR_BERRY)
@JvmField val PINAP_BERRY = berryItem("pinap", CobblemonBlocks.PINAP_BERRY)
@JvmField val OCCA_BERRY = berryItem("occa", CobblemonBlocks.OCCA_BERRY)
@JvmField val PASSHO_BERRY = berryItem("passho", CobblemonBlocks.PASSHO_BERRY)
@JvmField val WACAN_BERRY = berryItem("wacan", CobblemonBlocks.WACAN_BERRY)
@JvmField val RINDO_BERRY = berryItem("rindo", CobblemonBlocks.RINDO_BERRY)
@JvmField val YACHE_BERRY = berryItem("yache", CobblemonBlocks.YACHE_BERRY)
@JvmField val CHOPLE_BERRY = berryItem("chople", CobblemonBlocks.CHOPLE_BERRY)
@JvmField val KEBIA_BERRY = berryItem("kebia", CobblemonBlocks.KEBIA_BERRY)
@JvmField val SHUCA_BERRY = berryItem("shuca", CobblemonBlocks.SHUCA_BERRY)
@JvmField val COBA_BERRY = berryItem("coba", CobblemonBlocks.COBA_BERRY)
@JvmField val PAYAPA_BERRY = berryItem("payapa", CobblemonBlocks.PAYAPA_BERRY)
@JvmField val TANGA_BERRY = berryItem("tanga", CobblemonBlocks.TANGA_BERRY)
@JvmField val CHARTI_BERRY = berryItem("charti", CobblemonBlocks.CHARTI_BERRY)
@JvmField val KASIB_BERRY = berryItem("kasib", CobblemonBlocks.KASIB_BERRY)
@JvmField val HABAN_BERRY = berryItem("haban", CobblemonBlocks.HABAN_BERRY)
@JvmField val COLBUR_BERRY = berryItem("colbur", CobblemonBlocks.COLBUR_BERRY)
@JvmField val BABIRI_BERRY = berryItem("babiri", CobblemonBlocks.BABIRI_BERRY)
@JvmField val CHILAN_BERRY = berryItem("chilan", CobblemonBlocks.CHILAN_BERRY)
@JvmField val ROSELI_BERRY = berryItem("roseli", CobblemonBlocks.ROSELI_BERRY)
@JvmField val LEPPA_BERRY = berryItem("leppa", PPRestoringBerryItem(CobblemonBlocks.LEPPA_BERRY) { CobblemonMechanics.berries.ppRestoreAmount })
@JvmField val LUM_BERRY = berryItem("lum", StatusCuringBerryItem(CobblemonBlocks.LUM_BERRY))
@JvmField val FIGY_BERRY = berryItem("figy", PortionHealingBerryItem(CobblemonBlocks.FIGY_BERRY, true) { CobblemonMechanics.berries.portionHealRatio })
@JvmField val WIKI_BERRY = berryItem("wiki", PortionHealingBerryItem(CobblemonBlocks.WIKI_BERRY, true) { CobblemonMechanics.berries.portionHealRatio })
@JvmField val MAGO_BERRY = berryItem("mago", PortionHealingBerryItem(CobblemonBlocks.MAGO_BERRY, true) { CobblemonMechanics.berries.portionHealRatio })
@JvmField val AGUAV_BERRY = berryItem("aguav", PortionHealingBerryItem(CobblemonBlocks.AGUAV_BERRY, true) { CobblemonMechanics.berries.portionHealRatio })
@JvmField val IAPAPA_BERRY = berryItem("iapapa", PortionHealingBerryItem(CobblemonBlocks.IAPAPA_BERRY, true) { CobblemonMechanics.berries.portionHealRatio })
@JvmField val SITRUS_BERRY = berryItem("sitrus", HealingBerryItem(CobblemonBlocks.SITRUS_BERRY) { CobblemonMechanics.berries.sitrusHealAmount })
@JvmField val TOUGA_BERRY = berryItem("touga", CobblemonBlocks.TOUGA_BERRY)
@JvmField val CORNN_BERRY = berryItem("cornn", CobblemonBlocks.CORNN_BERRY)
@JvmField val MAGOST_BERRY = berryItem("magost", CobblemonBlocks.MAGOST_BERRY)
@JvmField val RABUTA_BERRY = berryItem("rabuta", CobblemonBlocks.RABUTA_BERRY)
@JvmField val NOMEL_BERRY = berryItem("nomel", CobblemonBlocks.NOMEL_BERRY)
@JvmField val ENIGMA_BERRY = berryItem("enigma", CobblemonBlocks.ENIGMA_BERRY)
@JvmField val POMEG_BERRY = berryItem("pomeg", FriendshipRaisingBerryItem(CobblemonBlocks.POMEG_BERRY, Stats.HP))
@JvmField val KELPSY_BERRY = berryItem("kelpsy", FriendshipRaisingBerryItem(CobblemonBlocks.KELPSY_BERRY, Stats.ATTACK))
@JvmField val QUALOT_BERRY = berryItem("qualot", FriendshipRaisingBerryItem(CobblemonBlocks.QUALOT_BERRY, Stats.DEFENCE))
@JvmField val HONDEW_BERRY = berryItem("hondew", FriendshipRaisingBerryItem(CobblemonBlocks.HONDEW_BERRY, Stats.SPECIAL_ATTACK))
@JvmField val GREPA_BERRY = berryItem("grepa", FriendshipRaisingBerryItem(CobblemonBlocks.GREPA_BERRY, Stats.SPECIAL_DEFENCE))
@JvmField val TAMATO_BERRY = berryItem("tamato", FriendshipRaisingBerryItem(CobblemonBlocks.TAMATO_BERRY, Stats.SPEED))
@JvmField val SPELON_BERRY = berryItem("spelon", CobblemonBlocks.SPELON_BERRY)
@JvmField val PAMTRE_BERRY = berryItem("pamtre", CobblemonBlocks.PAMTRE_BERRY)
@JvmField val WATMEL_BERRY = berryItem("watmel", CobblemonBlocks.WATMEL_BERRY)
@JvmField val DURIN_BERRY = berryItem("durin", CobblemonBlocks.DURIN_BERRY)
@JvmField val BELUE_BERRY = berryItem("belue", CobblemonBlocks.BELUE_BERRY)
@JvmField val KEE_BERRY = berryItem("kee", CobblemonBlocks.KEE_BERRY)
@JvmField val MARANGA_BERRY = berryItem("maranga", CobblemonBlocks.MARANGA_BERRY)
@JvmField val HOPO_BERRY = berryItem("hopo", PPRestoringBerryItem(CobblemonBlocks.HOPO_BERRY) { CobblemonMechanics.berries.ppRestoreAmount })
@JvmField val LIECHI_BERRY = berryItem("liechi", CobblemonBlocks.LIECHI_BERRY)
@JvmField val GANLON_BERRY = berryItem("ganlon", CobblemonBlocks.GANLON_BERRY)
@JvmField val SALAC_BERRY = berryItem("salac", CobblemonBlocks.SALAC_BERRY)
@JvmField val PETAYA_BERRY = berryItem("petaya", CobblemonBlocks.PETAYA_BERRY)
@JvmField val APICOT_BERRY = berryItem("apicot", CobblemonBlocks.APICOT_BERRY)
@JvmField val LANSAT_BERRY = berryItem("lansat", CobblemonBlocks.LANSAT_BERRY)
@JvmField val STARF_BERRY = berryItem("starf", CobblemonBlocks.STARF_BERRY)
@JvmField val MICLE_BERRY = berryItem("micle", CobblemonBlocks.MICLE_BERRY)
@JvmField val CUSTAP_BERRY = berryItem("custap", CobblemonBlocks.CUSTAP_BERRY)
@JvmField val JABOCA_BERRY = berryItem("jaboca", CobblemonBlocks.JABOCA_BERRY)
@JvmField val ROWAP_BERRY = berryItem("rowap", CobblemonBlocks.ROWAP_BERRY)
@JvmField val BERRY_JUICE = this.create("berry_juice", BerryJuiceItem())
// Medicine
@JvmField
@@ -249,26 +396,42 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val ZINC = create("zinc", VitaminItem(Stats.SPECIAL_DEFENCE))
@JvmField
val MEDICINAL_LEEK = create("medicinal_leek", MedicinalLeekItem(CobblemonBlocks.MEDICINAL_LEEK, Item.Settings().food(FoodComponent.Builder().snack().hunger(1).saturationModifier(0.2f).build())))
val GENIUS_FEATHER = create("genius_feather", FeatherItem(Stats.SPECIAL_ATTACK))
@JvmField
val SWIFT_FEATHER = create("swift_feather", FeatherItem(Stats.SPEED))
@JvmField
val HEALTH_FEATHER = create("health_feather", FeatherItem(Stats.HP))
@JvmField
val RESIST_FEATHER = create("resist_feather", FeatherItem(Stats.DEFENCE))
@JvmField
val MUSCLE_FEATHER = create("muscle_feather", FeatherItem(Stats.ATTACK))
@JvmField
val CLEVER_FEATHER = create("clever_feather", FeatherItem(Stats.SPECIAL_DEFENCE))
@JvmField
val MEDICINAL_LEEK = heldItem("medicinal_leek", MedicinalLeekItem(CobblemonBlocks.MEDICINAL_LEEK, Item.Settings().food(FoodComponent.Builder().snack().hunger(1).saturationModifier(0.2f).build())), "leek")
@JvmField
val ROASTED_LEEK = create("roasted_leek", Item(Item.Settings().food(FoodComponent.Builder().snack().hunger(3).saturationModifier(0.3f).build())))
@JvmField
val BRAISED_VIVICHOKE = create("braised_vivichoke", Item(Item.Settings().maxCount(1).food(FoodComponent.Builder().hunger(6).saturationModifier(0.6f).build())))
val BRAISED_VIVICHOKE = create("braised_vivichoke", Item(Item.Settings().food(FoodComponent.Builder().hunger(6).saturationModifier(0.6f).build())))
@JvmField
val VIVICHOKE_DIP = create("vivichoke_dip", StewItem(Item.Settings().maxCount(1)
val VIVICHOKE_DIP = create("vivichoke_dip", object : StewItem(Settings().maxCount(1)
.food(FoodComponent.Builder()
.hunger(10)
.saturationModifier(1.2F)
.statusEffect(StatusEffectInstance(StatusEffects.ABSORPTION, 600, 0), 1F)
.build()
)
))
.statusEffect(StatusEffectInstance(StatusEffects.ABSORPTION, 900, 0), 1F)
.alwaysEdible()
.build())) {
override fun finishUsing(stack: ItemStack?, world: World?, user: LivingEntity?): ItemStack {
user?.clearStatusEffects()
return super.finishUsing(stack, world, user)
}
})
@JvmField
val ENERGY_ROOT = create("energy_root", EnergyRootItem(CobblemonBlocks.ENERGY_ROOT, Item.Settings().food(FoodComponent.Builder().hunger(1).snack().saturationModifier(0.2f).build())))
val ENERGY_ROOT = compostableItem("energy_root", EnergyRootItem(CobblemonBlocks.ENERGY_ROOT, Item.Settings().food(FoodComponent.Builder().hunger(1).snack().saturationModifier(0.2f).build())))
@JvmField
val REVIVAL_HERB = create("revival_herb", RevivalHerbItem(CobblemonBlocks.REVIVAL_HERB))
val REVIVAL_HERB = compostableItem("revival_herb", RevivalHerbItem(CobblemonBlocks.REVIVAL_HERB))
@JvmField
val PEP_UP_FLOWER = blockItem("pep_up_flower", CobblemonBlocks.PEP_UP_FLOWER)
val PEP_UP_FLOWER = compostableBlockItem("pep_up_flower", CobblemonBlocks.PEP_UP_FLOWER)
@JvmField
val MEDICINAL_BREW = create("medicinal_brew", Item(Item.Settings()))
@JvmField
@@ -303,72 +466,74 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val PP_MAX = create("pp_max", PPUpItem(3))
@JvmField
val RED_MINT_SEEDS = blockItem("red_mint_seeds", MintType.RED.getCropBlock())
val RED_MINT_SEEDS = mintSeed("red", MintType.RED.getCropBlock())
@JvmField
val RED_MINT_LEAF = create("red_mint_leaf", MintLeafItem(MintType.RED))
val RED_MINT_LEAF = mintLeaf("red", MintLeafItem(MintType.RED))
@JvmField
val BLUE_MINT_SEEDS = blockItem("blue_mint_seeds", MintType.BLUE.getCropBlock())
val BLUE_MINT_SEEDS = mintSeed("blue", MintType.BLUE.getCropBlock())
@JvmField
val BLUE_MINT_LEAF = create("blue_mint_leaf", MintLeafItem(MintType.BLUE))
val BLUE_MINT_LEAF = mintLeaf("blue", MintLeafItem(MintType.BLUE))
@JvmField
val CYAN_MINT_SEEDS = blockItem("cyan_mint_seeds", MintType.CYAN.getCropBlock())
val CYAN_MINT_SEEDS = mintSeed("cyan", MintType.CYAN.getCropBlock())
@JvmField
val CYAN_MINT_LEAF = create("cyan_mint_leaf", MintLeafItem(MintType.CYAN))
val CYAN_MINT_LEAF = mintLeaf("cyan", MintLeafItem(MintType.CYAN))
@JvmField
val PINK_MINT_SEEDS = blockItem("pink_mint_seeds", MintType.PINK.getCropBlock())
val PINK_MINT_SEEDS = mintSeed("pink", MintType.PINK.getCropBlock())
@JvmField
val PINK_MINT_LEAF = create("pink_mint_leaf", MintLeafItem(MintType.PINK))
val PINK_MINT_LEAF = mintLeaf("pink", MintLeafItem(MintType.PINK))
@JvmField
val GREEN_MINT_SEEDS = blockItem("green_mint_seeds", MintType.GREEN.getCropBlock())
val GREEN_MINT_SEEDS = mintSeed("green", MintType.GREEN.getCropBlock())
@JvmField
val GREEN_MINT_LEAF = create("green_mint_leaf", MintLeafItem(MintType.GREEN))
val GREEN_MINT_LEAF = mintLeaf("green", MintLeafItem(MintType.GREEN))
@JvmField
val WHITE_MINT_SEEDS = blockItem("white_mint_seeds", MintType.WHITE.getCropBlock())
val WHITE_MINT_SEEDS = mintSeed("white", MintType.WHITE.getCropBlock())
@JvmField
val WHITE_MINT_LEAF = create("white_mint_leaf", MintLeafItem(MintType.WHITE))
val WHITE_MINT_LEAF = mintLeaf("white", MintLeafItem(MintType.WHITE))
val mints = mutableMapOf<String, MintItem>()
@JvmField
val LONELY_MINT = create("lonely_mint", MintItem(Natures.LONELY))
val LONELY_MINT = mintItem("lonely_mint", MintItem(Natures.LONELY))
@JvmField
val ADAMANT_MINT = create("adamant_mint", MintItem(Natures.ADAMANT))
val ADAMANT_MINT = mintItem("adamant_mint", MintItem(Natures.ADAMANT))
@JvmField
val NAUGHTY_MINT = create("naughty_mint", MintItem(Natures.NAUGHTY))
val NAUGHTY_MINT = mintItem("naughty_mint", MintItem(Natures.NAUGHTY))
@JvmField
val BRAVE_MINT = create("brave_mint", MintItem(Natures.BRAVE))
val BRAVE_MINT = mintItem("brave_mint", MintItem(Natures.BRAVE))
@JvmField
val BOLD_MINT = create("bold_mint", MintItem(Natures.BOLD))
val BOLD_MINT = mintItem("bold_mint", MintItem(Natures.BOLD))
@JvmField
val IMPISH_MINT = create("impish_mint", MintItem(Natures.IMPISH))
val IMPISH_MINT = mintItem("impish_mint", MintItem(Natures.IMPISH))
@JvmField
val LAX_MINT = create("lax_mint", MintItem(Natures.LAX))
val LAX_MINT = mintItem("lax_mint", MintItem(Natures.LAX))
@JvmField
val RELAXED_MINT = create("relaxed_mint", MintItem(Natures.RELAXED))
val RELAXED_MINT = mintItem("relaxed_mint", MintItem(Natures.RELAXED))
@JvmField
val MODEST_MINT = create("modest_mint", MintItem(Natures.MODEST))
val MODEST_MINT = mintItem("modest_mint", MintItem(Natures.MODEST))
@JvmField
val MILD_MINT = create("mild_mint", MintItem(Natures.MILD))
val MILD_MINT = mintItem("mild_mint", MintItem(Natures.MILD))
@JvmField
val RASH_MINT = create("rash_mint", MintItem(Natures.RASH))
val RASH_MINT = mintItem("rash_mint", MintItem(Natures.RASH))
@JvmField
val QUIET_MINT = create("quiet_mint", MintItem(Natures.QUIET))
val QUIET_MINT = mintItem("quiet_mint", MintItem(Natures.QUIET))
@JvmField
val CALM_MINT = create("calm_mint", MintItem(Natures.CALM))
val CALM_MINT = mintItem("calm_mint", MintItem(Natures.CALM))
@JvmField
val GENTLE_MINT = create("gentle_mint", MintItem(Natures.GENTLE))
val GENTLE_MINT = mintItem("gentle_mint", MintItem(Natures.GENTLE))
@JvmField
val CAREFUL_MINT = create("careful_mint", MintItem(Natures.CAREFUL))
val CAREFUL_MINT = mintItem("careful_mint", MintItem(Natures.CAREFUL))
@JvmField
val SASSY_MINT = create("sassy_mint", MintItem(Natures.SASSY))
val SASSY_MINT = mintItem("sassy_mint", MintItem(Natures.SASSY))
@JvmField
val TIMID_MINT = create("timid_mint", MintItem(Natures.TIMID))
val TIMID_MINT = mintItem("timid_mint", MintItem(Natures.TIMID))
@JvmField
val HASTY_MINT = create("hasty_mint", MintItem(Natures.HASTY))
val HASTY_MINT = mintItem("hasty_mint", MintItem(Natures.HASTY))
@JvmField
val JOLLY_MINT = create("jolly_mint", MintItem(Natures.JOLLY))
val JOLLY_MINT = mintItem("jolly_mint", MintItem(Natures.JOLLY))
@JvmField
val NAIVE_MINT = create("naive_mint", MintItem(Natures.NAIVE))
val NAIVE_MINT = mintItem("naive_mint", MintItem(Natures.NAIVE))
@JvmField
val SERIOUS_MINT = create("serious_mint", MintItem(Natures.SERIOUS))
val SERIOUS_MINT = mintItem("serious_mint", MintItem(Natures.SERIOUS))
@JvmField val X_ACCURACY = create("x_${Stats.ACCURACY.identifier.path}", XStatItem(Stats.ACCURACY))
@JvmField val X_ATTACK = create("x_${Stats.ATTACK.identifier.path}", XStatItem(Stats.ATTACK))
@@ -393,6 +558,11 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField val ELIXIR = create("elixir", ElixirItem(max = false))
@JvmField val MAX_ELIXIR = create("max_elixir", ElixirItem(max = true))
@JvmField
val ABILITY_CAPSULE = this.create("ability_capsule", AbilityChangeItem(AbilityChanger.COMMON_ABILITY))
@JvmField
val ABILITY_PATCH = this.create("ability_patch", AbilityChangeItem(AbilityChanger.HIDDEN_ABILITY))
/**
* Evolution Ores and Stones
*/
@@ -413,6 +583,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val SUN_STONE_ORE = blockItem("sun_stone_ore", CobblemonBlocks.SUN_STONE_ORE)
@JvmField
val TERRACOTTA_SUN_STONE_ORE = blockItem("terracotta_sun_stone_ore", CobblemonBlocks.TERRACOTTA_SUN_STONE_ORE)
@JvmField
val THUNDER_STONE_ORE = blockItem("thunder_stone_ore", CobblemonBlocks.THUNDER_STONE_ORE)
@JvmField
val WATER_STONE_ORE = blockItem("water_stone_ore", CobblemonBlocks.WATER_STONE_ORE)
@@ -438,6 +610,9 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val DEEPSLATE_WATER_STONE_ORE = blockItem("deepslate_water_stone_ore", CobblemonBlocks.DEEPSLATE_WATER_STONE_ORE)
@JvmField
val DRIPSTONE_MOON_STONE_ORE = blockItem("dripstone_moon_stone_ore", CobblemonBlocks.DRIPSTONE_MOON_STONE_ORE)
@JvmField
val NETHER_FIRE_STONE_ORE = blockItem("nether_fire_stone_ore", CobblemonBlocks.NETHER_FIRE_STONE_ORE)
@JvmField
val DAWN_STONE = noSettingsItem("dawn_stone")
@JvmField
@@ -461,16 +636,28 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
// Held Items
@JvmField
val ABILITY_SHIELD = heldItem("ability_shield")
@JvmField
val ABSORB_BULB = heldItem("absorb_bulb")
@JvmField
val AIR_BALLOON = heldItem("air_balloon")
@JvmField
val ASSAULT_VEST = heldItem("assault_vest")
@JvmField
val BIG_ROOT = blockItem("big_root", CobblemonBlocks.BIG_ROOT)
@JvmField
val BINDING_BAND = heldItem("binding_band")
@JvmField
val BLACK_BELT = heldItem("black_belt")
@JvmField
val BLACK_GLASSES = heldItem("black_glasses")
@JvmField
val BLACK_SLUDGE = heldItem("black_sludge")
@JvmField
val BLUNDER_POLICY = heldItem("blunder_policy")
@JvmField
val CELL_BATTERY = heldItem("cell_battery")
@JvmField
val CHARCOAL = heldItem("charcoal_stick", remappedName = "charcoal")
@JvmField
val CHOICE_BAND = heldItem("choice_band")
@@ -479,24 +666,66 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val CHOICE_SPECS = heldItem("choice_specs")
@JvmField
val CLEANSE_TAG = heldItem("cleanse_tag")
@JvmField
val CLEAR_AMULET = heldItem("clear_amulet")
@JvmField
val COVERT_CLOAK = heldItem("covert_cloak")
@JvmField
val DESTINY_KNOT = heldItem("destiny_knot")
@JvmField
val DRAGON_FANG = heldItem("dragon_fang")
@JvmField
val EJECT_BUTTON = heldItem("eject_button")
@JvmField
val EJECT_PACK = heldItem("eject_pack")
@JvmField
val EVERSTONE = heldItem("everstone")
@JvmField
val EVIOLITE = heldItem("eviolite")
@JvmField
val EXP_SHARE = heldItem("exp_share")
@JvmField
val EXPERT_BELT = heldItem("expert_belt")
@JvmField
val FAIRY_FEATHER = heldItem("fairy_feather")
@JvmField
val FLAME_ORB = heldItem("flame_orb")
@JvmField
val FLOAT_STONE = heldItem("float_stone")
@JvmField
val FOCUS_BAND = heldItem("focus_band")
@JvmField
val FOCUS_SASH = heldItem("focus_sash")
@JvmField
val GRIP_CLAW = heldItem("grip_claw")
@JvmField
val HARD_STONE = heldItem("hard_stone")
@JvmField
val HEAVY_DUTY_BOOTS = heldItem("heavy_duty_boots")
@JvmField
val IRON_BALL = heldItem("iron_ball")
@JvmField
val LAGGING_TAIL = heldItem("lagging_tail")
@JvmField
val LEFTOVERS = heldItem("leftovers")
@JvmField
val LIFE_ORB = heldItem("life_orb")
@JvmField
val LIGHT_BALL = heldItem("light_ball")
@JvmField
val LIGHT_CLAY = heldItem("light_clay")
@JvmField
val LOADED_DICE = heldItem("loaded_dice")
@JvmField
val LUCKY_EGG = heldItem("lucky_egg")
@JvmField
val LUMINOUS_MOSS = heldItem("luminous_moss")
@JvmField
val MAGNET = heldItem("magnet")
@JvmField
val METRONOME = heldItem("metronome")
@JvmField
val MIRACLE_SEED = heldItem("miracle_seed")
@JvmField
val MUSCLE_BAND = heldItem("muscle_band")
@@ -507,14 +736,42 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val POISON_BARB = heldItem("poison_barb")
@JvmField
val POWER_ANKLET = heldItem("power_anklet")
@JvmField
val POWER_BAND = heldItem("power_band")
@JvmField
val POWER_BELT = heldItem("power_belt")
@JvmField
val POWER_BRACER = heldItem("power_bracer")
@JvmField
val POWER_LENS = heldItem("power_lens")
@JvmField
val POWER_WEIGHT = heldItem("power_weight")
@JvmField
val PROTECTIVE_PADS = heldItem("protective_pads")
@JvmField
val PUNCHING_GLOVE = heldItem("punching_glove")
@JvmField
val QUICK_CLAW = heldItem("quick_claw")
@JvmField
val RED_CARD = heldItem("red_card")
@JvmField
val RING_TARGET = heldItem("ring_target")
@JvmField
val ROCKY_HELMET = heldItem("rocky_helmet")
@JvmField
val ROOM_SERVICE = heldItem("room_service")
@JvmField
val SAFETY_GOGGLES = heldItem("safety_goggles")
@JvmField
val SCOPE_LENS = heldItem("scope_lens")
@JvmField
val SHARP_BEAK = heldItem("sharp_beak")
@JvmField
val SHED_SHELL = heldItem("shed_shell")
@JvmField
val SHELL_BELL = heldItem("shell_bell")
@JvmField
val SILK_SCARF = heldItem("silk_scarf")
@JvmField
val SILVER_POWDER = heldItem("silver_powder")
@@ -523,17 +780,37 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val SPELL_TAG = heldItem("spell_tag")
@JvmField
val SMOKE_BALL = heldItem("smoke_ball")
@JvmField
val SOOTHE_BELL = heldItem("soothe_bell")
@JvmField
val STICKY_BARB = heldItem("sticky_barb")
@JvmField
val TERRAIN_EXTENDER = heldItem("terrain_extender")
@JvmField
val THROAT_SPRAY = heldItem("throat_spray")
@JvmField
val TOXIC_ORB = heldItem("toxic_orb")
@JvmField
val TWISTED_SPOON = heldItem("twisted_spoon")
@JvmField
val UTILITY_UMBRELLA = heldItem("utility_umbrella")
@JvmField
val WEAKNESS_POLICY = heldItem("weakness_policy")
@JvmField
val WIDE_LENS = heldItem("wide_lens")
@JvmField
val WISE_GLASSES = heldItem("wise_glasses")
@JvmField
val MENTAL_HERB = heldItem("mental_herb")
val ZOOM_LENS = heldItem("zoom_lens")
@JvmField
val MIRROR_HERB = heldItem("mirror_herb")
val MENTAL_HERB = compostableHeldItem("mental_herb", null, 1F)
@JvmField
val POWER_HERB = heldItem("power_herb")
val MIRROR_HERB = compostableHeldItem("mirror_herb", null, 1F)
@JvmField
val WHITE_HERB = heldItem("white_herb")
val POWER_HERB = compostableHeldItem("power_herb", null, 1F)
@JvmField
val WHITE_HERB = compostableHeldItem("white_herb", null, 1F)
@JvmField
val BRIGHT_POWDER = heldItem("bright_powder")
@JvmField
@@ -541,9 +818,13 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val QUICK_POWDER = heldItem("quick_powder")
@JvmField
val DESTINY_KNOT = heldItem("destiny_knot")
val DAMP_ROCK = heldItem("damp_rock")
@JvmField
val EVERSTONE = heldItem("everstone")
val HEAT_ROCK = heldItem("heat_rock")
@JvmField
val SMOOTH_ROCK = heldItem("smooth_rock")
@JvmField
val ICY_ROCK = heldItem("icy_rock")
// Mulch
@JvmField
@@ -565,14 +846,152 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val SURPRISE_MULCH = mulchItem("surprise_mulch", MulchVariant.SURPRISE)
// Archaeology
@JvmField
val ARMOR_FOSSIL = noSettingsItem("armor_fossil")
@JvmField
val FOSSILIZED_BIRD = noSettingsItem("fossilized_bird")
@JvmField
val CLAW_FOSSIL = noSettingsItem("claw_fossil")
@JvmField
val COVER_FOSSIL = noSettingsItem("cover_fossil")
@JvmField
val FOSSILIZED_DINO = noSettingsItem("fossilized_dino")
@JvmField
val DOME_FOSSIL = noSettingsItem("dome_fossil")
@JvmField
val FOSSILIZED_DRAKE = noSettingsItem("fossilized_drake")
@JvmField
val FOSSILIZED_FISH = noSettingsItem("fossilized_fish")
@JvmField
val HELIX_FOSSIL = noSettingsItem("helix_fossil")
@JvmField
val JAW_FOSSIL = noSettingsItem("jaw_fossil")
@JvmField
val OLD_AMBER_FOSSIL = noSettingsItem("old_amber_fossil")
@JvmField
val PLUME_FOSSIL = noSettingsItem("plume_fossil")
@JvmField
val ROOT_FOSSIL = noSettingsItem("root_fossil")
@JvmField
val SAIL_FOSSIL = noSettingsItem("sail_fossil")
@JvmField
val SKULL_FOSSIL = noSettingsItem("skull_fossil")
@JvmField
val BYGONE_SHERD = noSettingsItem("bygone_sherd")
@JvmField
val CAPTURE_SHERD = noSettingsItem("capture_sherd")
@JvmField
val DOME_SHERD = noSettingsItem("dome_sherd")
@JvmField
val HELIX_SHERD = noSettingsItem("helix_sherd")
@JvmField
val NOSTALGIC_SHERD = noSettingsItem("nostalgic_sherd")
@JvmField
val SUSPICIOUS_SHERD = noSettingsItem("suspicious_sherd")
@JvmField
val TUMBLESTONE = this.create("tumblestone", TumblestoneItem(Item.Settings(), CobblemonBlocks.SMALL_BUDDING_TUMBLESTONE))
@JvmField
val BLACK_TUMBLESTONE = this.create("black_tumblestone", TumblestoneItem(Item.Settings(), CobblemonBlocks.SMALL_BUDDING_BLACK_TUMBLESTONE))
@JvmField
val SKY_TUMBLESTONE = this.create("sky_tumblestone", TumblestoneItem(Item.Settings(), CobblemonBlocks.SMALL_BUDDING_SKY_TUMBLESTONE))
@JvmField
val SMALL_BUDDING_TUMBLESTONE = blockItem("small_budding_tumblestone", CobblemonBlocks.SMALL_BUDDING_TUMBLESTONE)
@JvmField
val MEDIUM_BUDDING_TUMBLESTONE = blockItem("medium_budding_tumblestone", CobblemonBlocks.MEDIUM_BUDDING_TUMBLESTONE)
@JvmField
val LARGE_BUDDING_TUMBLESTONE = blockItem("large_budding_tumblestone", CobblemonBlocks.LARGE_BUDDING_TUMBLESTONE)
@JvmField
val TUMBLESTONE_CLUSTER = blockItem("tumblestone_cluster", CobblemonBlocks.TUMBLESTONE_CLUSTER)
@JvmField
val SMALL_BUDDING_SKY_TUMBLESTONE = blockItem("small_budding_sky_tumblestone", CobblemonBlocks.SMALL_BUDDING_SKY_TUMBLESTONE)
@JvmField
val MEDIUM_BUDDING_SKY_TUMBLESTONE = blockItem("medium_budding_sky_tumblestone", CobblemonBlocks.MEDIUM_BUDDING_SKY_TUMBLESTONE)
@JvmField
val LARGE_BUDDING_SKY_TUMBLESTONE = blockItem("large_budding_sky_tumblestone", CobblemonBlocks.LARGE_BUDDING_SKY_TUMBLESTONE)
@JvmField
val SKY_TUMBLESTONE_CLUSTER = blockItem("sky_tumblestone_cluster", CobblemonBlocks.SKY_TUMBLESTONE_CLUSTER)
@JvmField
val SMALL_BUDDING_BLACK_TUMBLESTONE = blockItem("small_budding_black_tumblestone", CobblemonBlocks.SMALL_BUDDING_BLACK_TUMBLESTONE)
@JvmField
val MEDIUM_BUDDING_BLACK_TUMBLESTONE = blockItem("medium_budding_black_tumblestone", CobblemonBlocks.MEDIUM_BUDDING_BLACK_TUMBLESTONE)
@JvmField
val LARGE_BUDDING_BLACK_TUMBLESTONE = blockItem("large_budding_black_tumblestone", CobblemonBlocks.LARGE_BUDDING_BLACK_TUMBLESTONE)
@JvmField
val BLACK_TUMBLESTONE_CLUSTER = blockItem("black_tumblestone_cluster", CobblemonBlocks.BLACK_TUMBLESTONE_CLUSTER)
@JvmField
val TUMBLESTONE_BLOCK = blockItem("tumblestone_block", CobblemonBlocks.TUMBLESTONE_BLOCK)
@JvmField
val SKY_TUMBLESTONE_BLOCK = blockItem("sky_tumblestone_block", CobblemonBlocks.SKY_TUMBLESTONE_BLOCK)
@JvmField
val BLACK_TUMBLESTONE_BLOCK = blockItem("black_tumblestone_block", CobblemonBlocks.BLACK_TUMBLESTONE_BLOCK)
@JvmField
val AUTOMATON_ARMOR_TRIM_SMITHING_TEMPLATE: SmithingTemplateItem = this.create(
"automaton_armor_trim_smithing_template",
SmithingTemplateItem.of(CobblemonArmorTrims.AUTOMATON)
)
// Misc
@JvmField
val POKEMON_MODEL = this.create("pokemon_model", PokemonItem())
@JvmField
val RELIC_COIN = noSettingsItem("relic_coin")
@JvmField
val RELIC_COIN_POUCH = blockItem("relic_coin_pouch", CobblemonBlocks.RELIC_COIN_POUCH)
@JvmField
val RELIC_COIN_SACK = blockItem("relic_coin_sack", CobblemonBlocks.RELIC_COIN_SACK)
// Type Gems
@JvmField
val NORMAL_GEM = noSettingsItem("normal_gem")
@JvmField
val FIRE_GEM = noSettingsItem("fire_gem")
@JvmField
val WATER_GEM = noSettingsItem("water_gem")
@JvmField
val GRASS_GEM = noSettingsItem("grass_gem")
@JvmField
val ELECTRIC_GEM = noSettingsItem("electric_gem")
@JvmField
val ICE_GEM = noSettingsItem("ice_gem")
@JvmField
val FIGHTING_GEM = noSettingsItem("fighting_gem")
@JvmField
val POISON_GEM = noSettingsItem("poison_gem")
@JvmField
val GROUND_GEM = noSettingsItem("ground_gem")
@JvmField
val FLYING_GEM = noSettingsItem("flying_gem")
@JvmField
val PSYCHIC_GEM = noSettingsItem("psychic_gem")
@JvmField
val BUG_GEM = noSettingsItem("bug_gem")
@JvmField
val ROCK_GEM = noSettingsItem("rock_gem")
@JvmField
val GHOST_GEM = noSettingsItem("ghost_gem")
@JvmField
val DRAGON_GEM = noSettingsItem("dragon_gem")
@JvmField
val DARK_GEM = noSettingsItem("dark_gem")
@JvmField
val STEEL_GEM = noSettingsItem("steel_gem")
@JvmField
val FAIRY_GEM = noSettingsItem("fairy_gem")
private fun blockItem(name: String, block: Block): BlockItem = this.create(name, BlockItem(block, Item.Settings()))
private fun noSettingsItem(name: String): CobblemonItem = this.create(name, CobblemonItem(Item.Settings()))
fun berries() = this.berries.toMap()
private fun mulchItem(name: String, mulchVariant: MulchVariant): MulchItem = this.create(name, MulchItem(mulchVariant))
private fun pokeBallItem(pokeBall: PokeBall): PokeBallItem {
@@ -592,5 +1011,86 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
}
}
)
private fun heldItem(name: String, item: Item, remappedName: String? = null) = create(
name = name,
entry = item.also {
if (remappedName != null) {
CobblemonHeldItemManager.registerRemap(it, remappedName)
CobblemonHeldItemManager.registerRemap(Items.BONE, "thickclub")
CobblemonHeldItemManager.registerRemap(Items.SNOWBALL, "snowball")
}
}
)
}
private fun compostable(item: Item, increaseLevelChance: Float) = Cobblemon.implementation.registerCompostable(item, increaseLevelChance)
private fun berryItem(name: String, berryBlock: BerryBlock): BerryItem {
val finalName = "${name}_berry"
val item = this.create(finalName, BerryItem(berryBlock))
compostable(item, .65f)
this.berries[cobblemonResource(finalName)] = item
return item
}
private fun berryItem(name: String, berryItem: BerryItem): BerryItem {
val finalName = "${name}_berry"
val item = this.create(finalName, berryItem)
compostable(item, .65f)
this.berries[cobblemonResource(finalName)] = item
return item
}
private fun mintItem(name: String, mintItem: MintItem): MintItem {
val item = this.create(name, mintItem)
mints[item.nature.displayName] = item
compostable(item, .65f)
return item
}
private fun apricornItem(name: String, apricornItem: ApricornItem): ApricornItem {
val finalName = "${name}_apricorn"
val item = this.create(finalName, apricornItem)
compostable(item, .65f)
return item
}
private fun apricornSeedItem(name: String, apricornSeedItem: ApricornSeedItem): ApricornSeedItem {
val finalName = "${name}_apricorn_seed"
val item = this.create(finalName, apricornSeedItem)
compostable(item, .65f)
return item
}
private fun mintSeed(name: String, mintBlock: MintBlock): Item {
val finalName = "${name}_mint_seeds"
val item = this.blockItem(finalName, mintBlock)
compostable(item, .65f)
return item
}
private fun mintLeaf(name: String, mintLeafItem: MintLeafItem): MintLeafItem {
val finalName = "${name}_mint_leaf"
val item = this.create(finalName, mintLeafItem)
compostable(item, .65f)
return item
}
private fun compostableItem(name: String, item: Item? = null, increaseLevelChance: Float = .65f): Item {
val createdItem = this.create(name, item ?: Item(Item.Settings()))
compostable(createdItem, increaseLevelChance)
return createdItem
}
private fun compostableHeldItem(name: String, remappedName: String? = null, increaseLevelChance: Float = .65f): CobblemonItem {
val createdItem = heldItem(name, remappedName)
compostable(createdItem, increaseLevelChance)
return createdItem
}
private fun compostableBlockItem(name: String, block: Block, increaseLevelChance: Float = .65f): Item {
val createdItem = this.blockItem(name, block)
compostable(createdItem, increaseLevelChance)
return createdItem
}
}
@@ -11,6 +11,8 @@ package com.cobblemon.mod.common
import com.bedrockk.molang.Expression
import com.cobblemon.mod.common.api.data.DataRegistry
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.mechanics.BerriesMechanic
import com.cobblemon.mod.common.mechanics.PotionsMechanic
import com.cobblemon.mod.common.mechanics.RemediesMechanic
import com.cobblemon.mod.common.util.adapters.ExpressionAdapter
import com.cobblemon.mod.common.util.cobblemonResource
@@ -30,11 +32,19 @@ object CobblemonMechanics : DataRegistry {
.create()
var remedies = RemediesMechanic()
var berries = BerriesMechanic()
var potions = PotionsMechanic()
override fun sync(player: ServerPlayerEntity) {}
override fun reload(manager: ResourceManager) {
manager.getResourceOrThrow(cobblemonResource("mechanics/remedies.json")).inputStream.use {
remedies = gson.fromJson(it.reader(), RemediesMechanic::class.java)
remedies = loadMechanic(manager, "remedies", RemediesMechanic::class.java)
berries = loadMechanic(manager, "berries", BerriesMechanic::class.java)
potions = loadMechanic(manager, "potions", PotionsMechanic::class.java)
}
private fun <T> loadMechanic(manager: ResourceManager, name: String, clazz: Class<T>): T {
manager.getResourceOrThrow(cobblemonResource("mechanics/$name.json")).inputStream.use {
return gson.fromJson(it.reader(), clazz)
}
}
}
@@ -11,23 +11,46 @@ package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.net.ClientNetworkPacketHandler
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.net.ServerNetworkPacketHandler
import com.cobblemon.mod.common.client.net.PlayerInteractOptionsHandler
import com.cobblemon.mod.common.client.net.SetClientPlayerDataHandler
import com.cobblemon.mod.common.client.net.battle.*
import com.cobblemon.mod.common.client.net.data.DataRegistrySyncPacketHandler
import com.cobblemon.mod.common.client.net.data.UnlockReloadPacketHandler
import com.cobblemon.mod.common.client.net.effect.SpawnSnowstormParticleHandler
import com.cobblemon.mod.common.client.net.gui.InteractPokemonUIPacketHandler
import com.cobblemon.mod.common.client.net.gui.SummaryUIPacketHandler
import com.cobblemon.mod.common.client.net.animation.PlayPoseableAnimationHandler
import com.cobblemon.mod.common.client.net.battle.BattleApplyPassResponseHandler
import com.cobblemon.mod.common.client.net.battle.BattleCaptureEndHandler
import com.cobblemon.mod.common.client.net.battle.BattleCaptureShakeHandler
import com.cobblemon.mod.common.client.net.battle.BattleCaptureStartHandler
import com.cobblemon.mod.common.client.net.battle.BattleChallengeExpiredHandler
import com.cobblemon.mod.common.client.net.battle.BattleChallengeNotificationHandler
import com.cobblemon.mod.common.client.net.battle.BattleEndHandler
import com.cobblemon.mod.common.client.net.battle.BattleFaintHandler
import com.cobblemon.mod.common.client.net.battle.BattleHealthChangeHandler
import com.cobblemon.mod.common.client.net.battle.BattleInitializeHandler
import com.cobblemon.mod.common.client.net.battle.BattleMadeInvalidChoiceHandler
import com.cobblemon.mod.common.client.net.battle.BattleMakeChoiceHandler
import com.cobblemon.mod.common.client.net.battle.BattleMessageHandler
import com.cobblemon.mod.common.client.net.battle.BattleMusicHandler
import com.cobblemon.mod.common.client.net.battle.BattlePersistentStatusHandler
import com.cobblemon.mod.common.client.net.battle.BattleQueueRequestHandler
import com.cobblemon.mod.common.client.net.battle.BattleSetTeamPokemonHandler
import com.cobblemon.mod.common.client.net.battle.BattleSwitchPokemonHandler
import com.cobblemon.mod.common.client.net.battle.BattleUpdateTeamPokemonHandler
import com.cobblemon.mod.common.client.net.callback.move.OpenMoveCallbackHandler
import com.cobblemon.mod.common.client.net.callback.party.OpenPartyCallbackHandler
import com.cobblemon.mod.common.client.net.callback.partymove.OpenPartyMoveCallbackHandler
import com.cobblemon.mod.common.client.net.data.DataRegistrySyncPacketHandler
import com.cobblemon.mod.common.client.net.data.UnlockReloadPacketHandler
import com.cobblemon.mod.common.client.net.effect.RunPosableMoLangHandler
import com.cobblemon.mod.common.client.net.dialogue.DialogueClosedHandler
import com.cobblemon.mod.common.client.net.dialogue.DialogueOpenedHandler
import com.cobblemon.mod.common.client.net.effect.SpawnSnowstormEntityParticleHandler
import com.cobblemon.mod.common.client.net.effect.SpawnSnowstormParticleHandler
import com.cobblemon.mod.common.client.net.gui.InteractPokemonUIPacketHandler
import com.cobblemon.mod.common.client.net.gui.SummaryUIPacketHandler
import com.cobblemon.mod.common.client.net.pasture.ClosePastureHandler
import com.cobblemon.mod.common.client.net.pasture.OpenPastureHandler
import com.cobblemon.mod.common.client.net.pasture.PokemonPasturedHandler
import com.cobblemon.mod.common.client.net.pasture.PokemonUnpasturedHandler
import com.cobblemon.mod.common.client.net.pokemon.update.PokemonUpdatePacketHandler
import com.cobblemon.mod.common.client.net.settings.ServerSettingsPacketHandler
import com.cobblemon.mod.common.client.net.sound.PokemonCryHandler
import com.cobblemon.mod.common.client.net.sound.UnvalidatedPlaySoundS2CPacketHandler
import com.cobblemon.mod.common.client.net.spawn.SpawnExtraDataEntityHandler
import com.cobblemon.mod.common.client.net.starter.StarterUIPacketHandler
@@ -51,16 +74,28 @@ import com.cobblemon.mod.common.client.net.trade.TradeOfferExpiredHandler
import com.cobblemon.mod.common.client.net.trade.TradeOfferNotificationHandler
import com.cobblemon.mod.common.client.net.trade.TradeStartedHandler
import com.cobblemon.mod.common.client.net.trade.TradeUpdatedHandler
import com.cobblemon.mod.common.net.messages.client.PlayerInteractOptionsPacket
import com.cobblemon.mod.common.net.messages.client.animation.PlayPoseableAnimationPacket
import com.cobblemon.mod.common.net.messages.client.battle.*
import com.cobblemon.mod.common.net.messages.client.callback.OpenMoveCallbackPacket
import com.cobblemon.mod.common.net.messages.client.callback.OpenPartyCallbackPacket
import com.cobblemon.mod.common.net.messages.client.callback.OpenPartyMoveCallbackPacket
import com.cobblemon.mod.common.net.messages.client.data.AbilityRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.data.BerryRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.data.GlobalSpeciesFeatureSyncPacket
import com.cobblemon.mod.common.net.messages.client.data.MovesRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.data.PropertiesCompletionRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.data.SpeciesFeatureAssignmentSyncPacket
import com.cobblemon.mod.common.net.messages.client.data.SpeciesRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.data.StandardSpeciesFeatureSyncPacket
import com.cobblemon.mod.common.net.messages.client.data.UnlockReloadPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueClosedPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueOpenedPacket
import com.cobblemon.mod.common.net.messages.client.effect.RunPosableMoLangPacket
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormEntityParticlePacket
import com.cobblemon.mod.common.net.messages.client.effect.SpawnSnowstormParticlePacket
import com.cobblemon.mod.common.net.messages.client.fossil.FossilRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.fossil.NaturalMaterialRegistrySyncPacket
import com.cobblemon.mod.common.net.messages.client.pasture.ClosePasturePacket
import com.cobblemon.mod.common.net.messages.client.pasture.OpenPasturePacket
import com.cobblemon.mod.common.net.messages.client.pasture.PokemonPasturedPacket
@@ -70,8 +105,8 @@ import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.Add
import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.ClearEvolutionsPacket
import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.RemoveEvolutionPacket
import com.cobblemon.mod.common.net.messages.client.settings.ServerSettingsPacket
import com.cobblemon.mod.common.net.messages.client.sound.PokemonCryPacket
import com.cobblemon.mod.common.net.messages.client.sound.UnvalidatedPlaySoundS2CPacket
import com.cobblemon.mod.common.net.messages.client.spawn.SpawnGenericBedrockPacket
import com.cobblemon.mod.common.net.messages.client.spawn.SpawnPokeballPacket
import com.cobblemon.mod.common.net.messages.client.spawn.SpawnPokemonPacket
import com.cobblemon.mod.common.net.messages.client.starter.OpenStarterUIPacket
@@ -98,18 +133,18 @@ import com.cobblemon.mod.common.net.messages.client.trade.TradeStartedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeUpdatedPacket
import com.cobblemon.mod.common.net.messages.client.ui.InteractPokemonUIPacket
import com.cobblemon.mod.common.net.messages.client.ui.SummaryUIPacket
import com.cobblemon.mod.common.net.messages.server.BattleChallengePacket
import com.cobblemon.mod.common.net.messages.server.BenchMovePacket
import com.cobblemon.mod.common.net.messages.server.RequestMoveSwapPacket
import com.cobblemon.mod.common.net.messages.server.SelectStarterPacket
import com.cobblemon.mod.common.net.messages.server.SendOutPokemonPacket
import com.cobblemon.mod.common.net.messages.server.*
import com.cobblemon.mod.common.net.messages.server.battle.BattleSelectActionsPacket
import com.cobblemon.mod.common.net.messages.server.battle.RemoveSpectatorPacket
import com.cobblemon.mod.common.net.messages.server.battle.SpectateBattlePacket
import com.cobblemon.mod.common.net.messages.server.callback.move.MoveSelectCancelledPacket
import com.cobblemon.mod.common.net.messages.server.callback.move.MoveSelectedPacket
import com.cobblemon.mod.common.net.messages.server.callback.party.PartyPokemonSelectedPacket
import com.cobblemon.mod.common.net.messages.server.callback.party.PartySelectCancelledPacket
import com.cobblemon.mod.common.net.messages.server.callback.partymove.PartyMoveSelectCancelledPacket
import com.cobblemon.mod.common.net.messages.server.callback.partymove.PartyPokemonMoveSelectedPacket
import com.cobblemon.mod.common.net.messages.server.dialogue.EscapeDialoguePacket
import com.cobblemon.mod.common.net.messages.server.dialogue.InputToDialoguePacket
import com.cobblemon.mod.common.net.messages.server.pasture.PasturePokemonPacket
import com.cobblemon.mod.common.net.messages.server.pasture.UnpastureAllPokemonPacket
import com.cobblemon.mod.common.net.messages.server.pasture.UnpasturePokemonPacket
@@ -133,13 +168,18 @@ import com.cobblemon.mod.common.net.messages.server.trade.ChangeTradeAcceptanceP
import com.cobblemon.mod.common.net.messages.server.trade.OfferTradePacket
import com.cobblemon.mod.common.net.messages.server.trade.UpdateTradeOfferPacket
import com.cobblemon.mod.common.net.serverhandling.ChallengeHandler
import com.cobblemon.mod.common.net.serverhandling.RequestInteractionsHandler
import com.cobblemon.mod.common.net.serverhandling.battle.BattleSelectActionsHandler
import com.cobblemon.mod.common.net.serverhandling.battle.RemoveSpectatorHandler
import com.cobblemon.mod.common.net.serverhandling.battle.SpectateBattleHandler
import com.cobblemon.mod.common.net.serverhandling.callback.move.MoveSelectCancelledHandler
import com.cobblemon.mod.common.net.serverhandling.callback.move.MoveSelectedHandler
import com.cobblemon.mod.common.net.serverhandling.callback.party.PartyPokemonSelectedHandler
import com.cobblemon.mod.common.net.serverhandling.callback.party.PartySelectCancelledHandler
import com.cobblemon.mod.common.net.serverhandling.callback.partymove.PartyMoveSelectCancelledHandler
import com.cobblemon.mod.common.net.serverhandling.callback.partymove.PartyPokemonMoveSelectedHandler
import com.cobblemon.mod.common.net.serverhandling.dialogue.EscapeDialogueHandler
import com.cobblemon.mod.common.net.serverhandling.dialogue.InputToDialogueHandler
import com.cobblemon.mod.common.net.serverhandling.evolution.AcceptEvolutionHandler
import com.cobblemon.mod.common.net.serverhandling.pasture.PasturePokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pasture.UnpastureAllPokemonHandler
@@ -167,12 +207,12 @@ import com.cobblemon.mod.common.net.serverhandling.trade.ChangeTradeAcceptanceHa
import com.cobblemon.mod.common.net.serverhandling.trade.OfferTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.UpdateTradeOfferHandler
import com.cobblemon.mod.common.util.server
import kotlin.reflect.KClass
import net.minecraft.network.PacketByteBuf
import net.minecraft.network.listener.ClientPlayPacketListener
import net.minecraft.network.packet.Packet
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
import kotlin.reflect.KClass
/**
* Registers Cobblemon network packets.
@@ -210,6 +250,9 @@ object CobblemonNetwork : NetworkManager {
this.createClientBound(HeldItemUpdatePacket.ID, HeldItemUpdatePacket::decode, PokemonUpdatePacketHandler())
this.createClientBound(PokemonStateUpdatePacket.ID, PokemonStateUpdatePacket::decode, PokemonUpdatePacketHandler())
this.createClientBound(TetheringUpdatePacket.ID, TetheringUpdatePacket::decode, PokemonUpdatePacketHandler())
this.createClientBound(TradeableUpdatePacket.ID, TradeableUpdatePacket::decode, PokemonUpdatePacketHandler())
this.createClientBound(SpeciesFeatureUpdatePacket.ID, SpeciesFeatureUpdatePacket::decode, PokemonUpdatePacketHandler())
this.createClientBound(OriginalTrainerUpdatePacket.ID, OriginalTrainerUpdatePacket::decode, PokemonUpdatePacketHandler())
// Evolution start
this.createClientBound(AddEvolutionPacket.ID, AddEvolutionPacket::decode, PokemonUpdatePacketHandler())
@@ -236,6 +279,7 @@ object CobblemonNetwork : NetworkManager {
// UI Packets
this.createClientBound(SummaryUIPacket.ID, SummaryUIPacket::decode, SummaryUIPacketHandler)
this.createClientBound(InteractPokemonUIPacket.ID, InteractPokemonUIPacket::decode, InteractPokemonUIPacketHandler)
this.createClientBound(PlayerInteractOptionsPacket.ID, PlayerInteractOptionsPacket::decode, PlayerInteractOptionsHandler)
// Starter packets
this.createClientBound(OpenStarterUIPacket.ID, OpenStarterUIPacket::decode, StarterUIPacketHandler)
@@ -273,15 +317,24 @@ object CobblemonNetwork : NetworkManager {
this.createClientBound(SpeciesRegistrySyncPacket.ID, SpeciesRegistrySyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(PropertiesCompletionRegistrySyncPacket.ID, PropertiesCompletionRegistrySyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(UnlockReloadPacket.ID, UnlockReloadPacket::decode, UnlockReloadPacketHandler)
this.createClientBound(BerryRegistrySyncPacket.ID, BerryRegistrySyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(StandardSpeciesFeatureSyncPacket.ID, StandardSpeciesFeatureSyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(GlobalSpeciesFeatureSyncPacket.ID, GlobalSpeciesFeatureSyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(SpeciesFeatureAssignmentSyncPacket.ID, SpeciesFeatureAssignmentSyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(NaturalMaterialRegistrySyncPacket.ID, NaturalMaterialRegistrySyncPacket::decode, DataRegistrySyncPacketHandler())
this.createClientBound(FossilRegistrySyncPacket.ID, FossilRegistrySyncPacket::decode, DataRegistrySyncPacketHandler())
// Effects
this.createClientBound(SpawnSnowstormParticlePacket.ID, SpawnSnowstormParticlePacket::decode, SpawnSnowstormParticleHandler)
this.createClientBound(SpawnSnowstormEntityParticlePacket.ID, SpawnSnowstormEntityParticlePacket::decode, SpawnSnowstormEntityParticleHandler)
this.createClientBound(RunPosableMoLangPacket.ID, RunPosableMoLangPacket::decode, RunPosableMoLangHandler)
// Hax
this.createClientBound(UnvalidatedPlaySoundS2CPacket.ID, UnvalidatedPlaySoundS2CPacket::decode, UnvalidatedPlaySoundS2CPacketHandler)
this.createClientBound(SpawnPokemonPacket.ID, SpawnPokemonPacket::decode, SpawnExtraDataEntityHandler())
this.createClientBound(SpawnPokeballPacket.ID, SpawnPokeballPacket::decode, SpawnExtraDataEntityHandler())
this.createClientBound(ToastPacket.ID, ToastPacket::decode, ToastPacketHandler)
this.createClientBound(SpawnGenericBedrockPacket.ID, SpawnGenericBedrockPacket::decode, SpawnExtraDataEntityHandler())
// Trade packets
this.createClientBound(TradeAcceptanceChangedPacket.ID, TradeAcceptanceChangedPacket::decode, TradeAcceptanceChangedHandler)
@@ -299,7 +352,7 @@ object CobblemonNetwork : NetworkManager {
this.createClientBound(PokemonUnpasturedPacket.ID, PokemonUnpasturedPacket::decode, PokemonUnpasturedHandler)
// Behaviours
this.createClientBound(PokemonCryPacket.ID, PokemonCryPacket::decode, PokemonCryHandler)
this.createClientBound(PlayPoseableAnimationPacket.ID, PlayPoseableAnimationPacket::decode, PlayPoseableAnimationHandler)
// Move select packets
this.createClientBound(OpenMoveCallbackPacket.ID, OpenMoveCallbackPacket::decode, OpenMoveCallbackHandler)
@@ -309,6 +362,10 @@ object CobblemonNetwork : NetworkManager {
// Party move select packets
this.createClientBound(OpenPartyMoveCallbackPacket.ID, OpenPartyMoveCallbackPacket::decode, OpenPartyMoveCallbackHandler)
// Dialogue packets
this.createClientBound(DialogueClosedPacket.ID, DialogueClosedPacket::decode, DialogueClosedHandler)
this.createClientBound(DialogueOpenedPacket.ID, DialogueOpenedPacket::decode, DialogueOpenedHandler)
}
override fun registerServerBound() {
@@ -320,6 +377,7 @@ object CobblemonNetwork : NetworkManager {
// Interaction Packets
this.createServerBound(InteractPokemonPacket.ID, InteractPokemonPacket::decode, InteractPokemonHandler)
this.createServerBound(RequestPlayerInteractionsPacket.ID, RequestPlayerInteractionsPacket::decode, RequestInteractionsHandler)
// Storage Packets
this.createServerBound(SendOutPokemonPacket.ID, SendOutPokemonPacket::decode, SendOutPokemonHandler)
@@ -347,6 +405,8 @@ object CobblemonNetwork : NetworkManager {
// Battle packets
this.createServerBound(BattleSelectActionsPacket.ID, BattleSelectActionsPacket::decode, BattleSelectActionsHandler)
this.createServerBound(SpectateBattlePacket.ID, SpectateBattlePacket::decode, SpectateBattleHandler)
this.createServerBound(RemoveSpectatorPacket.ID, RemoveSpectatorPacket::decode, RemoveSpectatorHandler)
// Trade
this.createServerBound(AcceptTradeRequestPacket.ID, AcceptTradeRequestPacket::decode, AcceptTradeRequestHandler)
@@ -371,6 +431,10 @@ object CobblemonNetwork : NetworkManager {
// Party move select packets
this.createServerBound(PartyPokemonMoveSelectedPacket.ID, PartyPokemonMoveSelectedPacket::decode, PartyPokemonMoveSelectedHandler)
this.createServerBound(PartyMoveSelectCancelledPacket.ID, PartyMoveSelectCancelledPacket::decode, PartyMoveSelectCancelledHandler)
// Dialogue packets
this.createServerBound(EscapeDialoguePacket.ID, EscapeDialoguePacket::decode, EscapeDialogueHandler)
this.createServerBound(InputToDialoguePacket.ID, InputToDialoguePacket::decode, InputToDialogueHandler)
}
private inline fun <reified T : NetworkPacket<T>> createClientBound(identifier: Identifier, noinline decoder: (PacketByteBuf) -> T, handler: ClientNetworkPacketHandler<T>) {
@@ -14,7 +14,9 @@ import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKey
import net.minecraft.registry.RegistryKeys
import net.minecraft.sound.BlockSoundGroup
import net.minecraft.sound.SoundEvent
import net.minecraft.sound.SoundEvents
object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Registry<SoundEvent>>, SoundEvent>() {
@@ -54,6 +56,10 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
val POKE_BALL_SEND_OUT = this.create("poke_ball.send_out")
@JvmField
val POKE_BALL_RECALL = this.create("poke_ball.recall")
@JvmField
val POKE_BALL_THROW = this.create("poke_ball.throw")
@JvmField
val POKE_BALL_TRAIL = this.create("poke_ball.trail")
@JvmField
val ITEM_USE = this.create("item.use")
@@ -61,6 +67,8 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
val CAN_EVOLVE = this.create("pokemon.can_evolve")
@JvmField
val EVOLVING = this.create("pokemon.evolving")
@JvmField
val EVOLVE = this.create("evolution.evolve")
@JvmField
val PVN_BATTLE = this.create("battle.pvn.default")
@@ -77,7 +85,265 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, RegistryKey<Regi
val MEDICINE_PILLS_USE = this.create("medicine_pills.use")
@JvmField
val MEDICINE_SPRAY_USE = this.create("medicine_spray.use")
@JvmField
val MEDICINE_FEATHER_USE = this.create("medicine_feather.use")
@JvmField
val BERRY_HARVEST = this.create("berry.harvest")
@JvmField
val BERRY_EAT = this.create("berry.eat")
@JvmField
val MULCH_PLACE = this.create("mulch.place")
@JvmField
val MULCH_REMOVE = this.create("mulch.remove")
@JvmField
val FOSSIL_MACHINE_ACTIVATE = this.create("fossil_machine.activate")
@JvmField
val FOSSIL_MACHINE_ACTIVE_LOOP = this.create("fossil_machine.active_loop")
@JvmField
val FOSSIL_MACHINE_ASSEMBLE = this.create("fossil_machine.assemble")
@JvmField
val FOSSIL_MACHINE_DNA_FULL = this.create("fossil_machine.dna_full")
@JvmField
val FOSSIL_MACHINE_FINISHED = this.create("fossil_machine.finished")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA = this.create("fossil_machine.insert_dna")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA_SMALL = this.create("fossil_machine.insert_dna_small")
@JvmField
val FOSSIL_MACHINE_INSERT_FOSSIL = this.create("fossil_machine.insert_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_FOSSIL = this.create("fossil_machine.retrieve_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_POKEMON = this.create("fossil_machine.retrieve_pokemon")
@JvmField
val FOSSIL_MACHINE_UNPROTECTED = this.create("fossil_machine.unprotected")
@JvmField
val COIN_POUCH_BREAK = this.create("coin_pouch.break")
@JvmField
val COIN_POUCH_HIT = this.create("coin_pouch.hit")
@JvmField
val COIN_POUCH_STEP = this.create("coin_pouch.step")
@JvmField
val COIN_POUCH_PLACE = this.create("coin_pouch.place")
@JvmField
val TUMBLESTONE_BREAK = this.create("tumblestone.break")
@JvmField
val TUMBLESTONE_BLOCK_BREAK = this.create("tumblestone.block_break")
@JvmField
val TUMBLESTONE_HIT = this.create("tumblestone.hit")
@JvmField
val TUMBLESTONE_PLACE = this.create("tumblestone.place")
@JvmField
val TUMBLESTONE_STEP = this.create("tumblestone.step")
@JvmField
val GIMMIGHOUL_GIVE_ITEM_SMALL = this.create("gimmighoul.give_item_small")
@JvmField
val GIMMIGHOUL_REVEAL = this.create("gimmighoul.reveal")
@JvmField
val BERRY_BUSH_BREAK = this.create("berry_bush.break")
@JvmField
val BERRY_BUSH_PLACE = this.create("berry_bush.place")
@JvmField
val BIG_ROOT_BREAK = this.create("big_root.break")
@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
val MEDICINAL_LEEK_PLACE = this.create("medicinal_leek.plant")
@JvmField
val GILDED_CHEST_OPEN = this.create("gilded_chest.open")
@JvmField
val GILDED_CHEST_CLOSE = this.create("gilded_chest.close")
@JvmField
val GILDED_CHEST_STEP = this.create("gilded_chest.step")
@JvmField
val GILDED_CHEST_HIT = this.create("gilded_chest.hit")
@JvmField
val GILDED_CHEST_BREAK = this.create("gilded_chest.break")
@JvmField
val GILDED_CHEST_PLACE = this.create("gilded_chest.place")
@JvmField
val COIN_POUCH_SOUNDS = BlockSoundGroup(1f, 1f,
COIN_POUCH_BREAK,
COIN_POUCH_STEP,
COIN_POUCH_PLACE,
COIN_POUCH_HIT,
COIN_POUCH_STEP
)
@JvmField
val IMPACT_NORMAL = this.create("impact.normal")
@JvmField
val IMPACT_BUG = this.create("impact.bug")
@JvmField
val IMPACT_DARK = this.create("impact.dark")
@JvmField
val IMPACT_DRAGON = this.create("impact.dragon")
@JvmField
val IMPACT_ELECTRIC = this.create("impact.electric")
@JvmField
val IMPACT_FAIRY = this.create("impact.fairy")
@JvmField
val IMPACT_FIGHTING = this.create("impact.fighting")
@JvmField
val IMPACT_FIRE = this.create("impact.fire")
@JvmField
val IMPACT_FLYING = this.create("impact.flying")
@JvmField
val IMPACT_GHOST = this.create("impact.ghost")
@JvmField
val IMPACT_GRASS = this.create("impact.grass")
@JvmField
val IMPACT_GROUND = this.create("impact.ground")
@JvmField
val IMPACT_ICE = this.create("impact.ice")
@JvmField
val IMPACT_POISON = this.create("impact.poison")
@JvmField
val IMPACT_PSYCHIC = this.create("impact.psychic")
@JvmField
val IMPACT_ROCK = this.create("impact.rock")
@JvmField
val IMPACT_STEEL = this.create("impact.steel")
@JvmField
val IMPACT_WATER = this.create("impact.water")
@JvmField
val TUMBLESTONE_SOUNDS = BlockSoundGroup(1f, 1f,
TUMBLESTONE_BREAK,
TUMBLESTONE_STEP,
TUMBLESTONE_PLACE,
TUMBLESTONE_HIT,
TUMBLESTONE_STEP
)
@JvmField
val TUMBLESTONE_BLOCK_SOUNDS = BlockSoundGroup(1f, 1f,
TUMBLESTONE_BLOCK_BREAK,
TUMBLESTONE_STEP,
TUMBLESTONE_PLACE,
TUMBLESTONE_HIT,
TUMBLESTONE_STEP
)
@JvmField
val BERRY_BUSH_SOUNDS = BlockSoundGroup(1f, 1f,
BERRY_BUSH_BREAK,
SoundEvents.BLOCK_GRASS_STEP,
BERRY_BUSH_PLACE,
SoundEvents.BLOCK_GRASS_HIT,
SoundEvents.BLOCK_GRASS_STEP
)
@JvmField
val BIG_ROOT_SOUNDS = BlockSoundGroup(1f, 1f,
BIG_ROOT_BREAK,
SoundEvents.BLOCK_ROOTS_STEP,
SoundEvents.BLOCK_ROOTS_PLACE,
SoundEvents.BLOCK_ROOTS_HIT,
SoundEvents.BLOCK_ROOTS_FALL
)
@JvmField
val ENERGY_ROOT_SOUNDS = BlockSoundGroup(1f, 1f,
SoundEvents.BLOCK_ROOTS_BREAK,
SoundEvents.BLOCK_ROOTS_STEP,
ENERGY_ROOT_PLACE,
SoundEvents.BLOCK_ROOTS_HIT,
SoundEvents.BLOCK_ROOTS_FALL
)
@JvmField
val MEDICINAL_LEEK_SOUNDS = BlockSoundGroup(1f, 1f,
MEDICINAL_LEEK_BREAK,
SoundEvents.BLOCK_GRASS_STEP,
MEDICINAL_LEEK_PLACE,
SoundEvents.BLOCK_GRASS_HIT,
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,
SoundEvents.BLOCK_GRASS_STEP,
MINT_PLACE,
SoundEvents.BLOCK_GRASS_HIT,
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,
GILDED_CHEST_STEP,
GILDED_CHEST_PLACE,
GILDED_CHEST_HIT,
GILDED_CHEST_STEP
)
@JvmField
val DISPLAY_CASE_ADD_ITEM = this.create("display_case.add_item")
@JvmField
val DISPLAY_CASE_REMOVE_ITEM = this.create("display_case.remove_item")
@JvmField
val DISPLAY_CASE_BREAK = this.create("display_case.break")
@JvmField
val DISPLAY_CASE_HIT = this.create("display_case.hit")
@JvmField
val DISPLAY_CASE_PLACE = this.create("display_case.place")
@JvmField
val DISPLAY_CASE_STEP = this.create("display_case.step")
@JvmField
val DISPLAY_CASE_SOUNDS = BlockSoundGroup(1f, 1f,
DISPLAY_CASE_BREAK,
DISPLAY_CASE_STEP,
DISPLAY_CASE_PLACE,
DISPLAY_CASE_HIT,
DISPLAY_CASE_STEP
)
private fun create(name: String): SoundEvent = this.create(name, SoundEvent.of(cobblemonResource(name)))
}
@@ -32,7 +32,7 @@ object CobblemonTradeOffers {
* @return The resulting list.
*/
fun tradeOffersFor(profession: VillagerProfession): List<VillagerTradeOffer> = when (profession) {
VillagerProfession.FARMER -> listOf(VillagerTradeOffer(VillagerProfession.FARMER, 3, listOf(TradeOffers.SellItemFactory(CobblemonItems.VIVICHOKE_SEEDS, 32, 1, 1, 6))))
VillagerProfession.FARMER -> listOf(VillagerTradeOffer(VillagerProfession.FARMER, 3, listOf(TradeOffers.SellItemFactory(CobblemonItems.VIVICHOKE_SEEDS, 24, 1, 1, 6))))
else -> emptyList()
}
@@ -42,7 +42,7 @@ object CobblemonTradeOffers {
* @return The resulting list.
*/
fun resolveWanderingTradeOffers(): List<WandererTradeOffer> = listOf(
WandererTradeOffer(false, listOf(TradeOffers.SellItemFactory(CobblemonItems.VIVICHOKE_SEEDS, 32, 1, 1, 6)))
WandererTradeOffer(false, listOf(TradeOffers.SellItemFactory(CobblemonItems.VIVICHOKE_SEEDS, 24, 1, 1, 6)))
)
/**
@@ -47,13 +47,13 @@ object CobblemonCriteria {
val EVOLVE_POKEMON = this.create(
SimpleCriterionTrigger(
cobblemonResource("pokemon_evolved"),
SimpleCountableCriterionCondition::class.java
EvolvePokemonCriterionCondition::class.java
)
)
val WIN_BATTLE = this.create(
SimpleCriterionTrigger(
BattleCountableCriterionTrigger(
cobblemonResource("battles_won"),
SimpleCountableCriterionCondition::class.java
BattleCountableCriterionCondition::class.java
)
)
@@ -71,6 +71,56 @@ object CobblemonCriteria {
)
)
val POKEMON_INTERACT = this.create(
SimpleCriterionTrigger(
cobblemonResource("pokemon_interact"),
PokemonInteractCriterion::class.java
)
)
val PARTY_CHECK = this.create(
SimpleCriterionTrigger(
cobblemonResource("party"),
PartyCheckCriterion::class.java
)
)
val LEVEL_UP = this.create(
SimpleCriterionTrigger(
cobblemonResource("level_up"),
LevelUpCriterionCondition::class.java
)
)
val PASTURE_USE = this.create(
SimpleCriterionTrigger(
cobblemonResource("pasture_use"),
PickStarterCriterionCondition::class.java
)
)
val RESURRECT_POKEMON = this.create(
SimpleCriterionTrigger(
cobblemonResource("resurrect_pokemon"),
PickStarterCriterionCondition::class.java
)
)
val TRADE_POKEMON = this.create(
SimpleCriterionTrigger(
cobblemonResource("trade_pokemon"),
TradePokemonCriterionCondition::class.java
)
)
// Advancement criteria for [grow_tumblestone.json]
val PLANT_TUMBLESTONE = this.create(
SimpleCriterionTrigger(
cobblemonResource("plant_tumblestone"),
PlantTumblestoneCriterionCondition::class.java
)
)
private fun <T : Criterion<*>> create(criteria: T): T = Cobblemon.implementation.registerCriteria(criteria)
}
@@ -0,0 +1,67 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.util.toJsonArray
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
open class BattleCountableCriterionTrigger(identifier: Identifier, criterionClass: Class<BattleCountableCriterionCondition>) : SimpleCriterionTrigger<BattleCountableContext, BattleCountableCriterionCondition>(identifier, criterionClass) {
}
class BattleCountableCriterionCondition(id: Identifier, predicate: LootContextPredicate) : CountableCriterionCondition<BattleCountableContext>(id, predicate) {
private var battleTypes = mutableListOf("any")
override fun fromJson(json: JsonObject) {
super.fromJson(json)
if(!json.get("battle_types").isJsonNull) {
battleTypes.clear()
json.get("battle_types").asJsonArray.asList().forEach() {
battleTypes.add(it.asString)
}
}
}
override fun toJson(json: JsonObject) {
super.toJson(json)
json.add("battle_types", battleTypes.toJsonArray())
}
override fun matches(player: ServerPlayerEntity, context: BattleCountableContext): Boolean {
var typeCheck = false
val advancementData = Cobblemon.playerData.get(player).advancementData
if (battleTypes.isEmpty() || battleTypes.contains("any")) {
typeCheck = true
}
if (battleTypes.contains("pvp")) {
typeCheck = context.battle.isPvP
context.times = advancementData.totalPvPBattleVictoryCount
}
if (battleTypes.contains("pvw")) {
typeCheck = context.battle.isPvW
context.times = advancementData.totalPvWBattleVictoryCount
}
if (battleTypes.contains("pvn")) {
typeCheck = context.battle.isPvN
context.times = advancementData.totalPvWBattleVictoryCount
}
if (battleTypes.size > 1) {
context.times = advancementData.totalBattleVictoryCount
}
return context.times >= count && typeCheck
}
}
open class BattleCountableContext(times : Int, var battle : PokemonBattle) : CountableContext(times)
@@ -34,6 +34,6 @@ class CaughtPokemonCriterionCondition(id: Identifier, predicate: LootContextPred
}
override fun matches(player: ServerPlayerEntity, context: CountablePokemonTypeContext): Boolean {
return super.matches(player, context) && context.type == type
return super.matches(player, context) && (context.type == type || type == "any")
}
}
@@ -0,0 +1,38 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
class EvolvePokemonCriterionCondition(id: Identifier, entity: LootContextPredicate) : CountableCriterionCondition<EvolvePokemonContext>(id, entity) {
var species = "any"
var evolution = "any"
override fun toJson(json: JsonObject) {
super.toJson(json)
json.addProperty("species", species)
json.addProperty("evolution", evolution)
}
override fun fromJson(json: JsonObject) {
super.fromJson(json)
species = json.get("species")?.asString ?: "any"
evolution = json.get("evolution")?.asString ?: "any"
}
override fun matches(player: ServerPlayerEntity, context: EvolvePokemonContext): Boolean {
return context.times >= count && (context.species == species.asIdentifierDefaultingNamespace() || species == "any") &&
(context.evolution == evolution.asIdentifierDefaultingNamespace() || evolution == "any")
}
}
open class EvolvePokemonContext(val species : Identifier, val evolution : Identifier, times: Int) : CountableContext(times)
@@ -0,0 +1,41 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.pokemon.Pokemon
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
class LevelUpCriterionCondition(id: Identifier, entity: LootContextPredicate) : SimpleCriterionCondition<LevelUpContext>(id, entity) {
var level = 0
var evolved = true
override fun toJson(json: JsonObject) {
json.addProperty("level", level)
json.addProperty("has_evolved", evolved)
}
override fun fromJson(json: JsonObject) {
level = json.get("level")?.asInt ?: 0
evolved = json.get("has_evolved")?.asBoolean ?: true
}
override fun matches(player: ServerPlayerEntity, context: LevelUpContext): Boolean {
val preEvo = context.pokemon.preEvolution == null
val hasEvolution = !context.pokemon.evolutions.none()
var evolutionCheck = true
if (preEvo || hasEvolution) {
evolutionCheck = !(preEvo == hasEvolution)
}
return level == context.level && evolutionCheck == evolved
}
}
open class LevelUpContext(var level : Int, var pokemon : Pokemon)
@@ -0,0 +1,54 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.api.storage.party.PlayerPartyStore
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.cobblemon.mod.common.util.party
import com.google.gson.JsonArray
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
class PartyCheckCriterion(id: Identifier, entity: LootContextPredicate) : SimpleCriterionCondition<PartyCheckContext>(id, entity){
val party = mutableListOf<Identifier>()
override fun toJson(json: JsonObject) {
json.add("party", JsonArray(party.size).also {
party.forEach { pokemon -> it.add(pokemon.toString()) }
})
}
override fun fromJson(json: JsonObject) {
party.clear()
json.getAsJsonArray("party").forEach { element ->
party.add(element.asString.asIdentifierDefaultingNamespace())
}
}
override fun matches(player: ServerPlayerEntity, context: PartyCheckContext): Boolean {
val playerParty = player.party()
val matches = mutableListOf<Identifier>()
party.forEach {
if (it == "any".asIdentifierDefaultingNamespace()) {
matches.add(it)
}
}
val partyCount = playerParty.count()
if (matches.containsAll(party) && party.size == partyCount && matches.size == partyCount) return true
playerParty.iterator().forEach {
if (party.contains(it.species.resourceIdentifier)) {
matches.add(it.species.resourceIdentifier)
}
}
return matches.containsAll(party) && matches.size == partyCount
}
}
open class PartyCheckContext(val party : PlayerPartyStore)
@@ -0,0 +1,52 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.block.TumblestoneBlock
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
import net.minecraft.util.math.BlockPos
/**
* A criterion condition for when a tumblestone block is planted
* @param id The identifier of the criterion
* @param predicate The predicate for the criterion
*
* @author Aethen
* @since 02/28/2024
*/
class PlantTumblestoneCriterionCondition(id: Identifier, predicate: LootContextPredicate) :
SimpleCriterionCondition<PlantTumblestoneContext>(id, predicate) {
override fun toJson(json: JsonObject) {
// Add properties to json if needed. None needed for this criterion
}
override fun fromJson(json: JsonObject) {
// Parse properties from json if needed. None needed for this criterion
}
/**
* Checks if the tumblestone block can grow at the given position
* @param player The player that planted the tumblestone block
* @param context The context of the criterion
* @return True if the tumblestone block can grow at the given position, false otherwise
*/
override fun matches(player: ServerPlayerEntity, context: PlantTumblestoneContext): Boolean {
return context.tumbleStoneBlock.canGrow(context.pos, player.world)
}
}
/**
* The context of the [PlantTumblestoneCriterionCondition]
* @param pos The position of the tumblestone block
* @param tumbleStoneBlock The tumblestone block
*/
open class PlantTumblestoneContext(var pos: BlockPos, var tumbleStoneBlock: TumblestoneBlock)
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
open class PokemonInteractContext(var type: Identifier, var item : Identifier)
class PokemonInteractCriterion(id: Identifier, entity: LootContextPredicate) : SimpleCriterionCondition<PokemonInteractContext>(id, entity) {
var type = "any"
var item = "any"
override fun toJson(json: JsonObject) {
json.addProperty("type", type)
json.addProperty("item", item)
}
override fun fromJson(json: JsonObject) {
type = json.get("type")?.asString ?: "any"
item = json.get("item")?.asString ?: "any"
}
override fun matches(player: ServerPlayerEntity, context: PokemonInteractContext): Boolean {
return (context.type == type.asIdentifierDefaultingNamespace() || type == "any") && (context.item == item.asIdentifierDefaultingNamespace() || item == "any")
}
}
@@ -0,0 +1,47 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.google.gson.JsonObject
import net.minecraft.predicate.entity.LootContextPredicate
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
class TradePokemonCriterionCondition(id: Identifier, entity: LootContextPredicate) : SimpleCriterionCondition<TradePokemonContext>(id, entity) {
var traded = "any"
var received = "any"
var tradedHeldItem = "any"
var receivedHeldItem = "any"
override fun toJson(json: JsonObject) {
json.addProperty("traded", traded)
json.addProperty("received", received)
json.addProperty("traded_held_item", tradedHeldItem)
json.addProperty("received_held_item", receivedHeldItem)
}
override fun fromJson(json: JsonObject) {
traded = json.get("traded")?.asString ?: "any"
received = json.get("received")?.asString ?: "any"
tradedHeldItem = json.get("traded_held_item")?.asString ?: "minecraft:air"
receivedHeldItem = json.get("received_held_item")?.asString ?: "minecraft:air"
}
override fun matches(player: ServerPlayerEntity, context: TradePokemonContext): Boolean {
val heldItem1 = context.traded.heldItem().item.registryEntry.registryKey().value
val heldItem2 = context.received.heldItem().item.registryEntry.registryKey().value
return (context.traded.species.resourceIdentifier == traded.asIdentifierDefaultingNamespace() || traded == "any") &&
(context.received.species.resourceIdentifier == received.asIdentifierDefaultingNamespace() || received == "any") &&
(heldItem1 == tradedHeldItem.asIdentifierDefaultingNamespace() || heldItem1 == "minecraft:air".asIdentifierDefaultingNamespace()) &&
(heldItem2 == receivedHeldItem.asIdentifierDefaultingNamespace() || heldItem2 == "minecraft:air".asIdentifierDefaultingNamespace())
}
}
open class TradePokemonContext(val traded: Pokemon, val received: Pokemon)
@@ -9,6 +9,7 @@
package com.cobblemon.mod.common.api.abilities
import com.cobblemon.mod.common.api.Priority
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.DataKeys
import com.google.gson.JsonObject
import net.minecraft.nbt.NbtCompound
@@ -21,7 +22,7 @@ import net.minecraft.nbt.NbtCompound
* @author Qu
* @since January 9th, 2022
*/
open class Ability internal constructor(var template: AbilityTemplate, var forced: Boolean) {
open class Ability internal constructor(var template: AbilityTemplate, forced: Boolean) {
val name: String
get() = template.name
@@ -34,16 +35,26 @@ open class Ability internal constructor(var template: AbilityTemplate, var force
/**
* This represents the last known index of this backing ability in the species data.
* If -1 the ability will attempt to find the correct index or reroll itself, this is done in order to be compatible with existing data
* The value can be mutated however this is not recommended by API users.
* @see [Pokemon.updateAbility].
*/
var forced: Boolean = forced
internal set
/**
* This represents the last known index of this backing ability in the species data.
*
* @see [Pokemon.updateAbility].
*/
var index: Int = -1
internal set
/**
* The last known priority of this ability in the species data.
* The value can be mutated however this is not recommended by API users.
*
* @see [Pokemon.updateAbility].
*/
var priority = Priority.LOWEST
internal set
open fun saveToNBT(nbt: NbtCompound): NbtCompound {
nbt.putString(DataKeys.POKEMON_ABILITY_NAME, name)
@@ -62,19 +73,23 @@ open class Ability internal constructor(var template: AbilityTemplate, var force
}
open fun loadFromNBT(nbt: NbtCompound): Ability {
forced = nbt.getBoolean(DataKeys.POKEMON_ABILITY_FORCED)
this.template = Abilities.getOrException(nbt.getString(DataKeys.POKEMON_ABILITY_NAME))
this.forced = nbt.getBoolean(DataKeys.POKEMON_ABILITY_FORCED)
if (nbt.contains(DataKeys.POKEMON_ABILITY_INDEX) && nbt.contains(DataKeys.POKEMON_ABILITY_PRIORITY)) {
this.index = nbt.getInt(DataKeys.POKEMON_ABILITY_INDEX)
this.priority = Priority.valueOf(nbt.getString(DataKeys.POKEMON_ABILITY_PRIORITY))
}
return this
}
open fun loadFromJSON(json: JsonObject): Ability {
forced = json.get(DataKeys.POKEMON_ABILITY_FORCED)?.asBoolean ?: false
this.template = Abilities.getOrException(json.get(DataKeys.POKEMON_ABILITY_NAME).asString)
this.forced = json.get(DataKeys.POKEMON_ABILITY_FORCED)?.asBoolean ?: false
if (json.has(DataKeys.POKEMON_ABILITY_INDEX) && json.has(DataKeys.POKEMON_ABILITY_PRIORITY)) {
this.index = json.get(DataKeys.POKEMON_ABILITY_INDEX).asInt
this.priority = Priority.valueOf(json.get(DataKeys.POKEMON_ABILITY_PRIORITY).asString)
}
return this
}
}
@@ -28,7 +28,6 @@ class AbilityTemplate(
*/
fun create(forced: Boolean = false) = builder(this, forced)
/**
* Returns the Ability and loads the given NBT Tag into it.
*
@@ -42,4 +41,5 @@ class AbilityTemplate(
* Ability extensions need to write and read their needed data from here.
*/
fun create(json: JsonObject) = create().loadFromJSON(json)
}
@@ -35,7 +35,7 @@ interface SleepDepth {
override fun shouldWake(pokemonEntity: PokemonEntity): Boolean {
val nearbyPlayers = pokemonEntity.world.getPlayers(TargetPredicate.createNonAttackable(), pokemonEntity, Box.of(pokemonEntity.pos, 16.0, 16.0, 16.0))
return nearbyPlayers.none { !it.isSneaking }
return nearbyPlayers.any { !it.isSneaking }
}
}
@@ -10,6 +10,8 @@ package com.cobblemon.mod.common.api.battles.interpreter
import com.cobblemon.mod.common.api.battles.model.PokemonBattle
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.moves.MoveTemplate
import com.cobblemon.mod.common.api.moves.Moves
import com.cobblemon.mod.common.battles.ActiveBattlePokemon
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import java.util.UUID
@@ -194,6 +196,11 @@ class BattleMessage(rawMessage: String) {
return Effect.parse(data)
}
fun moveAt(index: Int): MoveTemplate? {
val argument = argumentAt(index)?.lowercase()?.replace("[^a-z0-9]".toRegex(), "") ?: return null
return Moves.getByName(argument)
}
/**
* Queries an optional argument with given [argumentName] for a 'pnx' that will be parsed into a [BattleActor] and [ActiveBattlePokemon].
*
@@ -8,9 +8,13 @@
package com.cobblemon.mod.common.api.battles.model
import com.bedrockk.molang.runtime.MoLangEnvironment
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.bedrockk.molang.runtime.value.DoubleValue
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.Cobblemon.LOGGER
import com.cobblemon.mod.common.CobblemonNetwork
import com.cobblemon.mod.common.Environment
import com.cobblemon.mod.common.api.battles.interpreter.BattleMessage
import com.cobblemon.mod.common.api.battles.model.actor.ActorType
import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
@@ -18,6 +22,8 @@ import com.cobblemon.mod.common.api.battles.model.actor.EntityBackedBattleActor
import com.cobblemon.mod.common.api.battles.model.actor.FleeableBattleActor
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.battles.BattleFledEvent
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addFunction
import com.cobblemon.mod.common.api.molang.MoLangFunctions.getQueryStruct
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
import com.cobblemon.mod.common.api.text.red
@@ -34,22 +40,21 @@ import com.cobblemon.mod.common.battles.dispatch.GO
import com.cobblemon.mod.common.battles.dispatch.WaitDispatch
import com.cobblemon.mod.common.battles.interpreter.ContextManager
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.battles.runner.ShowdownService
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import com.cobblemon.mod.common.net.messages.client.battle.BattleEndPacket
import com.cobblemon.mod.common.net.messages.client.battle.BattleMessagePacket
import com.cobblemon.mod.common.net.messages.client.battle.BattleMusicPacket
import com.cobblemon.mod.common.pokemon.evolution.progress.DefeatEvolutionProgress
import com.cobblemon.mod.common.pokemon.evolution.progress.LastBattleCriticalHitsEvolutionProgress
import com.cobblemon.mod.common.pokemon.evolution.requirements.DefeatRequirement
import com.cobblemon.mod.common.util.battleLang
import com.cobblemon.mod.common.util.getPlayer
import net.minecraft.entity.Entity
import java.util.UUID
import java.util.concurrent.ConcurrentLinkedQueue
import net.minecraft.text.Text
import java.io.File
import kotlin.io.path.Path
import kotlin.io.path.writeLines
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.Text
import java.util.concurrent.ConcurrentLinkedDeque
/**
* Individual battle instance
@@ -57,20 +62,24 @@ import net.minecraft.server.network.ServerPlayerEntity
* @since January 16th, 2022
* @author Deltric, Hiroku
*/
@Suppress("unused", "MemberVisibilityCanBePrivate")
open class PokemonBattle(
val format: BattleFormat,
val side1: BattleSide,
val side2: BattleSide
) {
/** Whether or not logging will be silenced for this battle. */
/** Whether logging will be silenced for this battle. */
var mute = true
init {
side1.battle = this
side2.battle = this
this.actors.forEach { actor ->
actor.battle = this
actor.pokemonList.forEach { battlePokemon ->
battlePokemon.criticalHits = 0
battlePokemon.effectedPokemon.evolutionProxy.current().progress()
.filterIsInstance<LastBattleCriticalHitsEvolutionProgress>()
.forEach { it.reset() }
}
}
}
@@ -84,12 +93,13 @@ open class PokemonBattle(
val playerUUIDs: Iterable<UUID>
get() = actors.flatMap { it.getPlayerUUIDs() }
val players = playerUUIDs.mapNotNull { it.getPlayer() }
val spectators = mutableListOf<UUID>()
val spectators = mutableSetOf<UUID>()
val battleId = UUID.randomUUID()
val showdownMessages = mutableListOf<String>()
val battleLog = mutableListOf<String>()
val chatLog = mutableListOf<Text>()
var started = false
var ended = false
// TEMP battle showcase stuff
@@ -99,7 +109,7 @@ open class PokemonBattle(
var dispatchResult = GO
val dispatches = ConcurrentLinkedQueue<BattleDispatch>()
val dispatches = ConcurrentLinkedDeque<BattleDispatch>()
val afterDispatches = mutableListOf<() -> Unit>()
val captureActions = mutableListOf<BattleCaptureAction>()
@@ -177,11 +187,8 @@ open class PokemonBattle(
}
fun broadcastChatMessage(component: Text) {
spectators.forEach { spectatorId ->
spectatorId.getPlayer()?.let {
CobblemonNetwork.sendPacketToPlayer(it, BattleMessagePacket(component))
}
}
chatLog.add(component)
sendSpectatorUpdate(BattleMessagePacket(component))
return actors.forEach { it.sendMessage(component) }
}
@@ -211,11 +218,16 @@ open class PokemonBattle(
faintedPokemons.forEach { faintedPokemon ->
for (opponentPokemon in opponentNonFaintedPokemons) {
val facedFainted = opponentPokemon.facedOpponents.contains(faintedPokemon)
val defeatProgress = DefeatEvolutionProgress()
val pokemon = opponentPokemon.effectedPokemon
if (facedFainted && defeatProgress.shouldKeep(pokemon)) {
val progress = pokemon.evolutionProxy.current().progressFirstOrCreate({ it is DefeatEvolutionProgress && it.currentProgress().target.matches(faintedPokemon.effectedPokemon) }) { defeatProgress }
progress.updateProgress(DefeatEvolutionProgress.Progress(progress.currentProgress().target, progress.currentProgress().amount + 1))
if (facedFainted) {
pokemon.evolutions.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() }
progress.updateProgress(DefeatEvolutionProgress.Progress(defeatRequirement.target, progress.currentProgress().amount + 1))
}
}
}
}
val multiplier = when {
// ToDo when Exp. All is implement if enabled && !facedFainted return 2.0, probably should be a configurable value too, this will have priority over the Exp. Share
@@ -247,7 +259,6 @@ open class PokemonBattle(
}
}
sendUpdate(BattleEndPacket())
sendUpdate(BattleMusicPacket(null))
BattleRegistry.closeBattle(this)
}
@@ -314,6 +325,12 @@ open class PokemonBattle(
fun dispatch(dispatcher: () -> DispatchResult) {
dispatches.add(BattleDispatch { dispatcher() })
}
fun dispatchToFront(dispatcher: () -> DispatchResult) {
dispatches.addFirst(BattleDispatch { dispatcher() })
}
fun dispatchGo(dispatcher: () -> Unit) {
@@ -345,6 +362,10 @@ open class PokemonBattle(
dispatches.add(dispatcher)
}
fun dispatchToFront(dispatcher: BattleDispatch) {
dispatches.addFirst(dispatcher)
}
fun doWhenClear(action: () -> Unit) {
afterDispatches.add(action)
}
@@ -449,4 +470,13 @@ open class PokemonBattle(
LOGGER.error("Missing interpretation on '{}' action: \nPublic » {}\nPrivate » {}", publicMessage.id, publicMessage.rawMessage, privateMessage.rawMessage)
return Text.literal("Missing interpretation on '${publicMessage.id}' action please report to the developers").red()
}
fun addQueryFunctions(queryStruct: QueryStruct): QueryStruct {
queryStruct.addFunction("pvp") { DoubleValue(isPvP) }
queryStruct.addFunction("pvn") { DoubleValue(isPvN) }
queryStruct.addFunction("pvw") { DoubleValue(isPvW) }
queryStruct.addFunction("has_rule") { params -> DoubleValue(params.getString(0) in format.ruleSet) }
return queryStruct
}
}
@@ -26,13 +26,20 @@ abstract class AIBattleActor(
super.sendUpdate(packet)
if (packet is BattleMakeChoicePacket) {
try {
setActionResponses(request!!.iterate(this.activePokemon, battleAI::choose))
} catch (exception: IllegalActionChoiceException) {
LOGGER.error("AI was unable to choose a move, we're going to need to pass!")
exception.printStackTrace()
setActionResponses(request!!.iterate(this.activePokemon) { _, _, _ -> PassActionResponse })
}
this.onChoiceRequested()
}
}
/**
* Called when the AI is requested to make a choice.
*/
open fun onChoiceRequested() {
try {
setActionResponses(request!!.iterate(this.activePokemon, battleAI::choose))
} catch (exception: IllegalActionChoiceException) {
LOGGER.error("AI was unable to choose a move, we're going to need to pass!")
exception.printStackTrace()
setActionResponses(request!!.iterate(this.activePokemon) { _, _, _ -> PassActionResponse })
}
}
}
@@ -0,0 +1,106 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.berry.spawncondition.BerrySpawnCondition
import com.cobblemon.mod.common.api.data.JsonDataRegistry
import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.api.pokemon.stats.Stat
import com.cobblemon.mod.common.api.pokemon.status.Status
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.net.messages.client.data.BerryRegistrySyncPacket
import com.cobblemon.mod.common.pokemon.adapters.CobblemonStatTypeAdapter
import com.cobblemon.mod.common.util.adapters.*
import com.cobblemon.mod.common.util.cobblemonResource
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import java.awt.Color
import net.minecraft.predicate.NumberRange
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.tag.TagKey
import net.minecraft.resource.ResourceType
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.util.Identifier
import net.minecraft.util.math.Box
import net.minecraft.util.math.Vec3d
import net.minecraft.world.biome.Biome
/**
* The data registry for [Berry].
*
* @author Licious
* @since November 28th, 2022
*/
object Berries : JsonDataRegistry<Berry> {
override val id: Identifier = cobblemonResource("berries")
override val type: ResourceType = ResourceType.SERVER_DATA
override val observable = SimpleObservable<Berries>()
override val gson = GsonBuilder()
.disableHtmlEscaping()
.setPrettyPrinting()
.registerTypeAdapter(MulchVariant::class.java, MulchVariantAdapter)
.registerTypeAdapter(NumberRange.FloatRange::class.java, FloatNumberRangeAdapter)
.registerTypeAdapter(Status::class.java, StatusAdapter)
.registerTypeAdapter(TypeToken.getParameterized(Collection::class.java, Box::class.java).type, BoxCollectionAdapter)
.registerTypeAdapter(Box::class.java, BoxAdapter)
.registerTypeAdapter(Vec3d::class.java, VerboseVec3dAdapter)
.registerTypeAdapter(Identifier::class.java, IdentifierAdapter)
.registerTypeAdapter(GrowthFactor::class.java, CobblemonGrowthFactorAdapter)
.registerTypeAdapter(IntRange::class.java, VerboseIntRangeAdapter)
.registerTypeAdapter(Color::class.java, LiteralHexColorAdapter)
.registerTypeAdapter(Stat::class.java, CobblemonStatTypeAdapter)
.registerTypeAdapter(TypeToken.getParameterized(TagKey::class.java, Biome::class.java).type, TagKeyAdapter(RegistryKeys.BIOME))
.registerTypeAdapter(BerrySpawnCondition::class.java, CobblemonBerrySpawnConditionAdapter)
.create()
override val typeToken: TypeToken<Berry> = TypeToken.get(Berry::class.java)
override val resourcePath = "berries"
private val berries = hashMapOf<Identifier, Berry>()
override fun reload(data: Map<Identifier, Berry>) {
this.berries.clear()
data.forEach { (identifier, berry) ->
try {
berry.identifier = identifier
berry.validate()
this.berries[identifier] = berry
} catch (e: Exception) {
Cobblemon.LOGGER.error("Skipped loading the {} berry", identifier, e)
}
}
Cobblemon.LOGGER.info("Loaded {} berries", this.berries.size)
this.observable.emit(this)
}
override fun sync(player: ServerPlayerEntity) {
BerryRegistrySyncPacket(this.all()).sendToPlayer(player)
}
fun all() = this.berries.values.toList()
/**
* Gets a berry if loaded.
*
* @param identifier The identifier of the berry.
* @return The [Berry] if loaded otherwise null.
*/
fun getByIdentifier(identifier: Identifier): Berry? = this.berries[identifier]
/**
* Gets a berry if loaded.
*
* @param name The path of the identifier of the berry under the [Cobblemon.MODID] namespace.
* @return The [Berry] if loaded otherwise null.
*/
fun getByName(name: String): Berry? = this.getByIdentifier(cobblemonResource(name))
}
@@ -0,0 +1,347 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
import com.cobblemon.mod.common.CobblemonBlocks
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.api.berry.spawncondition.BerrySpawnCondition
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.berry.BerryYieldCalculationEvent
import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.block.entity.BerryBlockEntity
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.pokemon.Nature
import com.cobblemon.mod.common.util.readBox
import com.cobblemon.mod.common.util.writeBox
import com.google.gson.annotations.SerializedName
import java.awt.Color
import java.util.EnumSet
import kotlin.math.min
import net.minecraft.block.Block
import net.minecraft.block.BlockState
import net.minecraft.client.model.ModelPart
import net.minecraft.entity.LivingEntity
import net.minecraft.network.PacketByteBuf
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Box
import net.minecraft.util.math.Vec3d
import net.minecraft.util.shape.VoxelShape
import net.minecraft.util.shape.VoxelShapes
import net.minecraft.world.World
import net.minecraft.world.biome.Biome
/**
* Represents the data behind a berry.
*
* @property identifier The [Identifier] of this berry.
* @property baseYield The [IntRange] possible for the berry tree before [bonusYield] is calculated.
* @property preferredBiomeTags The [TagKey]s of the berries preffered biomes. Determines spawning and yield
* @property growthTime The [IntRange] possible in minutes for how long the berry tree takes to grow.
* @property refreshRate The [IntRange] possible in minutes for how long the berry tree takes to regrow its berries once it has been harvested.
* @depreciated @property lifeCycles The [IntRange] possible for the berry to live for between harvests.
* @property favoriteMulches The types of mulches that benefit this berries yield
* @property growthFactors An array of [GrowthFactor]s that will affect this berry. The client is not aware of these.
* @property mutations A map of the partner berry as the key and the value as the resulting mutation with this berry.
* @property growthPoints A collection of [GrowthPoint]s for the berry flowers and fruit.
* @property sproutShapeBoxes A collection of [Box]es that make up the tree [VoxelShape] during the sprouting stages.
* @property matureShapeBoxes A collection of [Box]es that make up the tree [VoxelShape] during the mature stages.
* @property flavors The [Flavor] values.
* @property tintIndexes Determines tints at specific indexes if any.
* @property flowerModelIdentifier The [Identifier] for the model of the berry in flower form.
* @property flowerTexture The [Identifier] for the texture of the berry in flower form. This is resolved into a [ModelPart] on the client.
* @property fruitModelIdentifier The [Identifier] for the model of the berry in flower form. This is resolved into a [ModelPart] on the client.
* @property fruitTexture The [Identifier] for the texture of the berry in flower form.
*
* @throws IllegalArgumentException if the any yield range argument is not a positive range.
*/
class Berry(
identifier: Identifier,
val baseYield: IntRange,
val preferredBiomeTags: List<TagKey<Biome>>,
val growthTime: IntRange,
val refreshRate: IntRange,
//val lifeCycles: IntRange,
val favoriteMulches: EnumSet<MulchVariant>,
val growthFactors: Collection<GrowthFactor>,
val spawnConditions: List<BerrySpawnCondition>,
var growthPoints: Array<GrowthPoint>,
val randomizedGrowthPoints: Boolean = true,
val mutations: Map<Identifier, Identifier>,
@SerializedName("sproutShape")
private val sproutShapeBoxes: Collection<Box>,
@SerializedName("matureShape")
private val matureShapeBoxes: Collection<Box>,
private val flavors: Map<Flavor, Int>,
val tintIndexes: Map<Int, Color>,
@SerializedName("flowerModel")
val flowerModelIdentifier: Identifier,
val flowerTexture: Identifier,
@SerializedName("fruitModel")
val fruitModelIdentifier: Identifier,
val fruitTexture: Identifier,
val weight: Float
) {
@Transient
var identifier: Identifier = identifier
internal set
@Transient
private lateinit var shapedFlower: HashMap<Int, VoxelShape>
@Transient
private lateinit var shapedFruit: HashMap<Int, VoxelShape>
/**
* The [VoxelShape] of the tree during the sprouting stages.
*/
@Transient
lateinit var sproutShape: VoxelShape
private set
/**
* The [VoxelShape] of the tree during the mature stages.
*/
@Transient
lateinit var matureShape: VoxelShape
private set
init {
this.validate()
}
/**
* Finds the [BerryItem] that uses this berry for data.
*
* @return The [BerryItem] if existing.
*/
fun item(): BerryItem? = CobblemonItems.berries()[this.identifier]
/**
* Finds the [BerryBlock] that uses this berry for data.
*
* @return The [BerryBlock] if existing.
*/
fun block(): BerryBlock? = CobblemonBlocks.berries()[this.identifier]
/**
* Query the value of a certain flavor.
*
* @param flavor The [Flavor] being queried.
* @return The value if any or 0.
*/
fun flavor(flavor: Flavor): Int = this.flavors[flavor] ?: 0
fun dislikedBy(nature: Nature): Boolean {
val dislikedFlavor = nature.dislikedFlavor ?: return false
return flavor(dislikedFlavor) > 0
}
/**
* Calculates the yield for a berry tree being planted or replanted after a life cycle.
* Triggers [BerryYieldCalculationEvent].
*
* @param world The [World] the tree is present in.
* @param state The [BlockState] of the tree.
* @param pos The [BlockPos] of the tree.
* @param placer The [LivingEntity] tending to the tree, if any.
* @return The total berry stack count.
*/
fun calculateYield(world: World, state: BlockState, pos: BlockPos, placer: LivingEntity? = null): Int {
val base = this.baseYield.random()
val bonus = this.bonusYield(world, state, pos)
var yield = base + bonus.first
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
if (BerryBlock.getMulch(state) == MulchVariant.RICH) {
yield = min(yield + 1, maxYield())
treeEntity.decrementMulchDuration(world, pos, state)
}
val event = BerryYieldCalculationEvent(this, world, state, pos, placer, yield, bonus.second)
CobblemonEvents.BERRY_YIELD.post(event) { yield = it.yield }
return yield
}
/**
* Calculates and returns the minimum possible yield by summing [baseYield] and [growthFactors] minimum values.
*
* @return The minimum possible yield.
*/
fun minYield() = this.baseYield.first + this.growthFactors.sumOf { it.minYield() }
/**
* Calculates and returns the maximum possible yield by summing [baseYield] and [growthFactors] max values.
*
* @return The maximum possible yield.
*/
fun maxYield() = this.baseYield.last + this.growthFactors.sumOf { it.maxYield() }
/**
* Checks if this berry can mutate with the given [partner].
* For the berry the mutations may produce use [mutationWith].
*
* @param partner The [Berry] being checked as a possible mutation partner.
* @return If a mutation is possible.
*/
fun canMutateWith(partner: Berry) = this.mutationWith(partner) != null
/**
* Query for the possible mutation with the given [partner].
*
* @param partner The [Berry] being mutated with.
* @return The resulting [Berry] if the mutation is possible.
*/
fun mutationWith(partner: Berry): Berry? {
val berryIdentifier = this.mutations[partner.identifier] ?: return null
return Berries.getByIdentifier(berryIdentifier)
}
/**
* Query for a possible partner to mutate into the given [resulting].
*
* @param resulting The [Berry] the mutation should result in.
* @return The [Berry] that mutates with this berry into the given [resulting] if possible.
*/
fun partnerForMutation(resulting: Berry): Berry? {
return this.mutations.firstNotNullOfOrNull { (partner, result) ->
if (result == resulting.identifier)
Berries.getByIdentifier(partner)
else
null
}
}
// A cheat since gson doesn't invoke init block
internal fun validate() {
if (this.baseYield.first < 0 || this.baseYield.last < 0) {
throw IllegalArgumentException("A berry base yield must be a positive range")
}
if (this.growthTime.first < 0 || this.growthTime.last < 0) {
throw IllegalArgumentException("The growth time must be a positive range")
}
if (this.refreshRate.first < 0 || this.refreshRate.last < 0) {
throw IllegalArgumentException("The refresh rate must be a positive range")
}
/*
if (this.lifeCycles.first < 0 || this.lifeCycles.last < 0) {
throw IllegalArgumentException("A berry life cycle must be a positive range")
}
*/
this.growthFactors.forEach { it.validateArguments() }
val maxYield = this.maxYield()
if (this.growthPoints.size < maxYield) {
throw IllegalArgumentException("Anchor points must have enough elements for the max possible yield of $maxYield you've provided ${this.growthPoints.size} points")
}
this.shapedFlower = hashMapOf()
this.shapedFruit = hashMapOf()
this.sproutShape = this.createAndUniteShapes(this.sproutShapeBoxes)
this.matureShape = this.createAndUniteShapes(this.matureShapeBoxes)
}
internal fun encode(buffer: PacketByteBuf) {
buffer.writeIdentifier(this.identifier)
buffer.writeInt(this.baseYield.first)
buffer.writeInt(this.baseYield.last)
buffer.writeEnumSet(favoriteMulches, MulchVariant::class.java)
//buffer.writeInt(this.lifeCycles.first)
//buffer.writeInt(this.lifeCycles.last)
buffer.writeInt(this.growthTime.first)
buffer.writeInt(this.growthTime.last)
buffer.writeInt(this.refreshRate.first)
buffer.writeInt(this.refreshRate.last)
buffer.writeCollection(this.growthPoints.toList()) { writer, value ->
writer.writeDouble(value.position.x)
writer.writeDouble(value.position.y)
writer.writeDouble(value.position.z)
writer.writeDouble(value.rotation.x)
writer.writeDouble(value.rotation.y)
writer.writeDouble(value.rotation.z)
}
buffer.writeBoolean(this.randomizedGrowthPoints)
buffer.writeMap(this.mutations, { writer, key -> writer.writeIdentifier(key) }, { writer, value -> writer.writeIdentifier(value) })
buffer.writeCollection(this.sproutShapeBoxes) { writer, value ->
writer.writeBox(value)
}
buffer.writeCollection(this.matureShapeBoxes) { writer, value ->
writer.writeBox(value)
}
buffer.writeMap(this.flavors, { writer, key -> writer.writeEnumConstant(key) }, { writer, value -> writer.writeInt(value) })
buffer.writeMap(this.tintIndexes, { writer, key -> writer.writeInt(key) }, { writer, value -> writer.writeInt(value.rgb) })
buffer.writeIdentifier(this.flowerModelIdentifier)
buffer.writeIdentifier(this.flowerTexture)
buffer.writeIdentifier(this.fruitModelIdentifier)
buffer.writeIdentifier(this.fruitTexture)
}
/**
* Calculates the bonus yield for the berry tree.
*
* @param world The [World] the tree is present in.
* @param state The [BlockState] of the tree.
* @param pos The [BlockPos] of the tree.
* @return The bonus yield, the growth factors that passed.
*/
private fun bonusYield(world: World, state: BlockState, pos: BlockPos): Pair<Int, Collection<GrowthFactor>> {
var bonus = 0
val passed = arrayListOf<GrowthFactor>()
val mulchVariant = BerryBlock.getMulch(state)
val hasBiomeMulch = mulchVariant in favoriteMulches
this.growthFactors.forEach { factor ->
if (factor.isValid(world, state, pos)) {
bonus += factor.yield()
passed += factor
} else if (hasBiomeMulch) {
bonus += factor.yield()
}
}
return bonus to passed
}
private fun createAndUniteShapes(boxes: Collection<Box>): VoxelShape {
var shape: VoxelShape? = null
boxes.forEach { box ->
shape = if (shape == null) {
Block.createCuboidShape(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ)
} else {
VoxelShapes.union(shape, Block.createCuboidShape(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ))
}
}
return shape ?: VoxelShapes.fullCube()
}
companion object {
internal fun decode(buffer: PacketByteBuf): Berry {
val identifier = buffer.readIdentifier()
val baseYield = IntRange(buffer.readInt(), buffer.readInt())
val favMulchs = buffer.readEnumSet(MulchVariant::class.java)
//val lifeCycles = IntRange(buffer.readInt(), buffer.readInt())
val growthTime = IntRange(buffer.readInt(), buffer.readInt())
val refreshRate = IntRange(buffer.readInt(), buffer.readInt())
val growthPoints = buffer.readList { reader ->
GrowthPoint(Vec3d(reader.readDouble(), reader.readDouble(), reader.readDouble()), Vec3d(reader.readDouble(), reader.readDouble(), reader.readDouble()))
}.toTypedArray()
val randomizedGrowthPoints = buffer.readBoolean()
val mutations = buffer.readMap({ reader -> reader.readIdentifier() }, { reader -> reader.readIdentifier() })
val sproutShapeBoxes = buffer.readList { it.readBox() }
val matureShapeBoxes = buffer.readList { it.readBox() }
val flavors = buffer.readMap({ reader -> reader.readEnumConstant(Flavor::class.java) }, { reader -> reader.readInt() })
val tintIndexes = buffer.readMap({ reader -> reader.readInt() }, { reader -> Color(reader.readInt()) })
val flowerModelIdentifier = buffer.readIdentifier()
val flowerTexture = buffer.readIdentifier()
val fruitModelIdentifier = buffer.readIdentifier()
val fruitTexture = buffer.readIdentifier()
return Berry(identifier, baseYield, emptyList(), growthTime, refreshRate, favMulchs, emptySet(), emptyList(), growthPoints, randomizedGrowthPoints, mutations, sproutShapeBoxes, matureShapeBoxes, flavors, tintIndexes, flowerModelIdentifier, flowerTexture, fruitModelIdentifier, fruitTexture, 0F)
}
}
}
@@ -0,0 +1,47 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
import com.cobblemon.mod.common.CobblemonBlocks
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.world.feature.BerryGroveFeature
import com.google.common.cache.CacheBuilder
import com.google.common.cache.CacheLoader
import com.google.common.cache.LoadingCache
import net.minecraft.registry.entry.RegistryEntry
import net.minecraft.world.biome.Biome
object BerryHelper {
private val CACHE_LOADER = object : CacheLoader<RegistryEntry<Biome>, List<BerryBlock>>() {
override fun load(key: RegistryEntry<Biome>): List<BerryBlock> {
return naturalBerries.filter { berryBlock ->
val berry = berryBlock.berry()
berry?.spawnConditions?.any { it.canSpawn(berry, key) } ?: false
}
}
}
private val naturalBerries = CobblemonBlocks.berries().values.filter {
(it.berry()?.spawnConditions?.size ?: 0) > 0
}
private val validBerryCache: LoadingCache<RegistryEntry<Biome>, List<BerryBlock>> = CacheBuilder.newBuilder()
.maximumSize(4)
.build(CACHE_LOADER)
fun getBerriesForBiome(biome: RegistryEntry<Biome>): List<BerryBlock> {
return validBerryCache.get(biome)
}
fun getNaturallyGeneratingBerries(): List<BerryBlock> {
return naturalBerries
}
}
@@ -0,0 +1,26 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
/**
* Represents the different flavors associated with berries and other Pokémon consumables.
* See the [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Flavor) article for more information.
*
* @author Licious
* @since November 28th, 2022
*/
enum class Flavor {
SPICY,
DRY,
SWEET,
BITTER,
SOUR
}
@@ -0,0 +1,61 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
import net.minecraft.block.BlockState
import net.minecraft.util.math.BlockPos
import net.minecraft.world.WorldView
/**
* Represents a condition that impacts extra berry yield.
*
* @author Licious
* @since December 2nd, 2022
*/
interface GrowthFactor {
/**
* Validates the arguments contained in this factor, this is invoked during loading.
*
* @throws IllegalArgumentException If an argument isn't valid.
*/
fun validateArguments()
/**
* Checks if this factor should yield a bonus.
*
* @param world The [WorldView] the berry tree is in.
* @param state The [BlockState] of the berry tree.
* @param pos The [BlockPos] of the berry tree.
* @return If the bonus should activate.
*/
fun isValid(world: WorldView, state: BlockState, pos: BlockPos): Boolean
/**
* Resolves the amount of bonus berries to grow if [isValid] was true.
*
* @return The amount of extra berries to grow.
*/
fun yield(): Int
/**
* Returns the minimum possible yield for this factor.
*
* @return The minimum possible yield for this factor.
*/
fun minYield(): Int
/**
* Returns the maximum possible yield for this factor.
*
* @return The maximum possible yield for this factor.
*/
fun maxYield(): Int
}
@@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry
import net.minecraft.util.math.Vec3d
/**
* Represents a position in a berry tree where a berry will flower then fruit.
*
* @property position The coordinates of the berry in the tree block.
* @property rotation The degree value for the rotation each axis.
*
* @author Licious
* @since December 19th, 2022
*/
data class GrowthPoint(
val position: Vec3d,
val rotation: Vec3d
)
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry.adapter
import com.cobblemon.mod.common.api.berry.GrowthFactor
import com.cobblemon.mod.common.util.adapters.CobblemonGrowthFactorAdapter
import com.google.gson.JsonDeserializer
import com.google.gson.JsonSerializer
import net.minecraft.util.Identifier
import kotlin.reflect.KClass
/**
* A type adapter for [GrowthFactor]s.
* For the default implementation see [CobblemonGrowthFactorAdapter].
*
* @author Licious
* @since December 2nd, 2022
*/
interface GrowthFactorAdapter : JsonDeserializer<GrowthFactor>, JsonSerializer<GrowthFactor> {
/**
* Register a [GrowthFactor] to be used by this adapter.
*
* @param type The [KClass] of the [GrowthFactor].
* @param identifier The expected [Identifier] in the parsed JSON.
*/
fun register(type: KClass<out GrowthFactor>, identifier: Identifier)
}
@@ -0,0 +1,34 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry.adapter
import com.cobblemon.mod.common.api.berry.GrowthFactor
import com.cobblemon.mod.common.api.berry.spawncondition.BerrySpawnCondition
import com.cobblemon.mod.common.util.adapters.CobblemonBerrySpawnConditionAdapter
import com.google.gson.JsonDeserializer
import com.google.gson.JsonSerializer
import net.minecraft.util.Identifier
import kotlin.reflect.KClass
/**
* A type adapter for [GrowthFactor]s.
* For the default implementation see [CobblemonBerrySpawnConditionAdapter].
*
* @author Apion
* @since August 14, 2023
*/
interface SpawnConditionAdapter : JsonDeserializer<BerrySpawnCondition>, JsonSerializer<BerrySpawnCondition> {
/**
* Register a [BerrySpawnCondition] to be used by this adapter.
*
* @param type The [KClass] of the [BerrySpawnCondition].
* @param identifier The expected [Identifier] in the parsed JSON.
*/
fun register(type: KClass<out BerrySpawnCondition>, identifier: Identifier)
}
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry.spawncondition
import com.cobblemon.mod.common.api.berry.Berry
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.registry.entry.RegistryEntry
import net.minecraft.util.math.random.Random
import net.minecraft.world.biome.Biome
class AllBiomeCondition(val minGroveSize: Int, val maxGroveSize: Int) : BerrySpawnCondition{
override fun canSpawn(berry: Berry, biome: RegistryEntry<Biome>): Boolean {
return true
}
override fun getGroveSize(random: Random): Int {
return random.nextBetween(minGroveSize, maxGroveSize)
}
companion object {
val ID = cobblemonResource("all_biome")
}
}
@@ -0,0 +1,20 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry.spawncondition
import com.cobblemon.mod.common.api.berry.Berry
import net.minecraft.registry.entry.RegistryEntry
import net.minecraft.util.math.random.Random
import net.minecraft.world.biome.Biome
interface BerrySpawnCondition {
fun getGroveSize(random: Random): Int
fun canSpawn(berry: Berry, biome: RegistryEntry<Biome>): Boolean
}
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.berry.spawncondition
import com.cobblemon.mod.common.api.berry.Berry
import com.cobblemon.mod.common.util.cobblemonResource
import net.minecraft.registry.entry.RegistryEntry
import net.minecraft.util.math.random.Random
import net.minecraft.world.biome.Biome
import kotlin.math.min
class PreferredBiomeCondition(val minGroveSize: Int, val maxGroveSize: Int) : BerrySpawnCondition{
override fun getGroveSize(random: Random): Int {
return random.nextBetween(minGroveSize, maxGroveSize)
}
override fun canSpawn(berry: Berry, biome: RegistryEntry<Biome>): Boolean {
val preferredBiomeTags = berry.preferredBiomeTags
return preferredBiomeTags.any {biome.isIn(it)}
}
companion object {
val ID = cobblemonResource("preferred_biome")
}
}
@@ -13,8 +13,10 @@ import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.moves.Move
import com.cobblemon.mod.common.net.messages.client.callback.OpenPartyMoveCallbackPacket
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.lang
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.MutableText
/**
* Used for opening a party select screen for players which routes to move selection when they choose a Pokémon.
@@ -30,6 +32,7 @@ object PartyMoveSelectCallbacks {
@JvmOverloads
fun create(
player: ServerPlayerEntity,
partyTitle: MutableText = lang("ui.party"),
pokemon: List<Pair<PartySelectPokemonDTO, List<MoveSelectDTO>>>,
cancel: (ServerPlayerEntity) -> Unit = {},
handler: (ServerPlayerEntity, pokemonIndex: Int, PartySelectPokemonDTO, moveIndex: Int, MoveSelectDTO) -> Unit
@@ -40,12 +43,13 @@ object PartyMoveSelectCallbacks {
handler = handler
)
callbacks[player.uuid] = callback
player.sendPacket(OpenPartyMoveCallbackPacket(callback.uuid, callback.pokemon))
player.sendPacket(OpenPartyMoveCallbackPacket(callback.uuid, partyTitle, callback.pokemon))
}
@JvmOverloads
fun createFromPokemon(
player: ServerPlayerEntity,
partyTitle: MutableText = lang("ui.party"),
pokemon: List<Pokemon>,
moves: (Pokemon) -> List<Move> = { it.moveSet.getMoves() },
canSelectPokemon: (Pokemon) -> Boolean = { true },
@@ -62,6 +66,7 @@ object PartyMoveSelectCallbacks {
create(
player = player,
partyTitle = partyTitle,
pokemon = pokemonList,
cancel = cancel,
handler = { _, pkIndex, _, moveIndex, _ ->
@@ -12,10 +12,10 @@ import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
import com.cobblemon.mod.common.api.pokemon.PokemonPropertyExtractor
import com.cobblemon.mod.common.api.text.text
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.net.messages.client.callback.OpenPartyCallbackPacket
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.lang
import java.util.UUID
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NbtCompound
@@ -36,7 +36,7 @@ object PartySelectCallbacks {
@JvmOverloads
fun create(
player: ServerPlayerEntity,
title: Text = "".text(),
title: Text = lang("ui.party"),
pokemon: List<PartySelectPokemonDTO>,
cancel: (ServerPlayerEntity) -> Unit = {},
handler: (ServerPlayerEntity, index: Int) -> Unit
@@ -61,12 +61,14 @@ object PartySelectCallbacks {
@JvmOverloads
fun createBattleSelect(
player: ServerPlayerEntity,
title: Text = lang("ui.party"),
pokemon: List<BattlePokemon>,
canSelect: (BattlePokemon) -> Boolean,
cancel: (ServerPlayerEntity) -> Unit = {},
handler: (BattlePokemon) -> Unit
) = create(
player = player,
title = title,
cancel = cancel,
pokemon = pokemon.map { pk -> PartySelectPokemonDTO(pk.effectedPokemon).also { it.enabled = canSelect(pk) } }
) { _, index -> handler(pokemon[index]) }
@@ -74,12 +76,14 @@ object PartySelectCallbacks {
@JvmOverloads
fun createFromPokemon(
player: ServerPlayerEntity,
title: Text = lang("ui.party"),
pokemon: List<Pokemon>,
canSelect: (Pokemon) -> Boolean,
cancel: (ServerPlayerEntity) -> Unit = {},
handler: (Pokemon) -> Unit
) = create(
player = player,
title = title,
cancel = cancel,
pokemon = pokemon.map { pk -> PartySelectPokemonDTO(pk).also { it.enabled = canSelect(pk) } }
) { _, index -> handler(pokemon[index]) }
@@ -117,36 +121,43 @@ class PartySelectCallback(
open class PartySelectPokemonDTO(
val pokemonProperties: PokemonProperties,
val aspects: Set<String>,
val heldItem: ItemStack = ItemStack.EMPTY,
var hpRatio: Float = 1F,
var currentHealth: Int,
var maxHealth: Int,
var enabled: Boolean
) {
@JvmOverloads
constructor(pokemon: Pokemon, enabled: Boolean = true): this(
pokemonProperties = pokemon.createPokemonProperties(
PokemonPropertyExtractor.ASPECTS,
PokemonPropertyExtractor.SPECIES,
PokemonPropertyExtractor.LEVEL,
PokemonPropertyExtractor.NICKNAME,
PokemonPropertyExtractor.POKEBALL,
PokemonPropertyExtractor.STATUS
PokemonPropertyExtractor.STATUS,
),
aspects = pokemon.aspects,
heldItem = pokemon.heldItemNoCopy(),
hpRatio = pokemon.currentHealth / pokemon.hp.toFloat(),
currentHealth = pokemon.currentHealth,
maxHealth = pokemon.hp,
enabled = enabled
)
constructor(buffer: PacketByteBuf): this(
pokemonProperties = PokemonProperties().loadFromNBT(buffer.readNbt() as NbtCompound),
aspects = buffer.readList { it.readString() }.toSet(),
heldItem = buffer.readItemStack(),
hpRatio = buffer.readFloat(),
currentHealth = buffer.readInt(),
maxHealth = buffer.readInt(),
enabled = buffer.readBoolean()
)
fun writeToBuffer(buffer: PacketByteBuf) {
buffer.writeNbt(pokemonProperties.saveToNBT())
buffer.writeCollection(aspects) { _, aspect -> buffer.writeString(aspect) }
buffer.writeItemStack(heldItem)
buffer.writeFloat(hpRatio)
buffer.writeInt(currentHealth)
buffer.writeInt(maxHealth)
buffer.writeBoolean(enabled)
}
}
@@ -8,11 +8,9 @@
package com.cobblemon.mod.common.api.data
import com.cobblemon.mod.common.util.endsWith
import com.cobblemon.mod.common.Cobblemon
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import java.io.File
import java.util.concurrent.ExecutionException
import net.minecraft.resource.ResourceManager
import net.minecraft.util.Identifier
@@ -44,20 +42,7 @@ interface JsonDataRegistry<T> : DataRegistry {
val resourcePath: String
override fun reload(manager: ResourceManager) {
val data = hashMapOf<Identifier, T>()
manager.findResources(this.resourcePath) { path -> path.endsWith(JSON_EXTENSION) }.forEach { (identifier, resource) ->
resource.inputStream.use { stream ->
stream.bufferedReader().use { reader ->
val resolvedIdentifier = Identifier(identifier.namespace, File(identifier.path).nameWithoutExtension)
try {
data[resolvedIdentifier] = this.gson.fromJson(reader, this.typeToken.type)
} catch (exception: Exception) {
throw ExecutionException("Error loading JSON for data: $identifier", exception)
}
}
}
}
this.reload(data)
this.reload(Cobblemon.implementation.reloadJsonRegistry(this, manager))
}
/**
@@ -68,6 +53,6 @@ interface JsonDataRegistry<T> : DataRegistry {
fun reload(data: Map<Identifier, T>)
companion object {
private const val JSON_EXTENSION = ".json"
const val JSON_EXTENSION = ".json"
}
}
@@ -0,0 +1,125 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.bedrockk.molang.runtime.MoLangRuntime
import com.bedrockk.molang.runtime.struct.MoStruct
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.bedrockk.molang.runtime.value.DoubleValue
import com.bedrockk.molang.runtime.value.MoValue
import com.bedrockk.molang.runtime.value.StringValue
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.dialogue.input.ActiveInput
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.addStandardFunctions
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMoLangValue
import com.cobblemon.mod.common.api.molang.MoLangFunctions.getQueryStruct
import com.cobblemon.mod.common.api.molang.MoLangFunctions.setup
import com.cobblemon.mod.common.api.scheduling.ServerRealTimeTaskTracker
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueOpenedPacket
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
/**
* An active instance of [Dialogue]. Bound to a player. These all need to be created through DialogueManager
* or things will go to shit.
*
* @author Hiroku
* @since December 27th, 2023
*/
class ActiveDialogue(var playerEntity: ServerPlayerEntity, var dialogueReference: Dialogue) {
val dialogueId = UUID.randomUUID()
val runtime = MoLangRuntime().setup()
var currentPage = dialogueReference.pages[0]
val playerStruct = playerEntity.asMoLangValue()
var activeInput = ActiveInput(this, currentPage.input)
init {
runtime.environment.getQueryStruct().addFunctions(
mapOf(
"dialogue" to java.util.function.Function { _ -> toMoLangStruct() },
"player" to java.util.function.Function { _ -> playerStruct }
)
)
}
val currentPageIndex
get() = dialogueReference.pages.indexOf(currentPage)
fun setPage(value: MoValue) {
val page = if (value is StringValue) {
dialogueReference.pages.find { it.id == value.value }
?: return Cobblemon.LOGGER.error("Dialogue requested page ${value.value} but it doesn't exist")
} else {
val pageNum = value.asDouble().toInt()
if (pageNum < 0 || pageNum >= dialogueReference.pages.size) {
return Cobblemon.LOGGER.error("Dialogue requested page $pageNum but it doesn't exist")
} else {
dialogueReference.pages[pageNum]
}
}
setPage(page)
}
fun isActive() = DialogueManager.activeDialogues[playerEntity.uuid] == this
fun incrementPage() {
setPage(currentPageIndex + 1)
}
fun setPage(page: DialoguePage) {
currentPage = page
activeInput = ActiveInput(this, currentPage.input)
val deadline = currentPage.input.timeout?.duration
val inputId = activeInput.inputId
if (deadline != null && deadline > 0) {
ServerRealTimeTaskTracker.after(seconds = deadline) {
if (inputId == activeInput.inputId && isActive()) {
activeInput.dialogueInput.timeout?.action?.invoke(this, null)
}
}
}
playerEntity.sendPacket(DialogueOpenedPacket(this, false))
}
fun setPage(index: Int) {
if (index == dialogueReference.pages.size) {
return close()
}
if (index < 0 || index > dialogueReference.pages.size) {
return Cobblemon.LOGGER.error("Dialogue requested page $index but it doesn't exist")
}
setPage(dialogueReference.pages[index])
}
fun toMoLangStruct(): MoStruct {
return QueryStruct(
hashMapOf(
"current_page" to java.util.function.Function { _ -> currentPage.toMoLangStruct(this) },
"current_page_number" to java.util.function.Function { _ -> DoubleValue(currentPageIndex) },
"next_page" to java.util.function.Function { _ -> incrementPage() },
"set_page" to java.util.function.Function { args -> setPage(args[0]) },
"close" to java.util.function.Function { _ -> close() },
"input" to java.util.function.Function { params -> activeInput.handle(if (params.params.size > 0) params.get<MoValue>(0).asString() else "") },
)
).addStandardFunctions()
}
fun close() {
DialogueManager.stopDialogue(playerEntity)
}
fun escape() {
val action = currentPage.escapeAction ?: dialogueReference.escapeAction
action(this, null)
}
}
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.api.molang.ExpressionLike
/**
* A dialogue that could be sent to players.
*
* @author Hiroku
* @since December 27th, 2023
*/
class Dialogue(
val pages: List<DialoguePage> = mutableListOf(),
val escapeAction: DialogueAction = FunctionDialogueAction { dialogue, _ -> dialogue.close() },
val speakers: Map<String, DialogueSpeaker> = emptyMap()
) {
companion object {
fun of(
pages: Iterable<DialoguePage>,
escapeAction: ExpressionLike,
speakers: Map<String, DialogueSpeaker>
): Dialogue {
return Dialogue(
pages = pages.toList(),
escapeAction = ExpressionLikeDialogueAction(escapeAction),
speakers = speakers
)
}
fun of(
pages: Iterable<DialoguePage>,
escapeAction: (ActiveDialogue) -> Unit,
speakers: Map<String, DialogueSpeaker>
): Dialogue {
val dialogue = Dialogue(
pages = pages.toList(),
escapeAction = FunctionDialogueAction { activeDialogue, _ -> escapeAction(activeDialogue) },
speakers = speakers
)
return dialogue
}
}
}
@@ -0,0 +1,44 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.bedrockk.molang.runtime.value.StringValue
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.util.resolve
/**
* Something that can happen in the context of an [ActiveDialogue]. The input field is nullable because I'm reusing
* this for dialogue input timeouts which don't have an input. It'll be fine.
*
* @author Hiroku
* @since December 29th, 2023
*/
interface DialogueAction {
companion object {
@JvmStatic
val types = mutableMapOf<String, Class<out DialogueAction>>()
}
operator fun invoke(dialogue: ActiveDialogue, input: String? = null)
}
class FunctionDialogueAction(val consumer: (ActiveDialogue, String?) -> Unit) : DialogueAction {
override fun invoke(dialogue: ActiveDialogue, input: String?) {
consumer(dialogue, input)
}
}
class ExpressionLikeDialogueAction(val expression: ExpressionLike) : DialogueAction {
override fun invoke(dialogue: ActiveDialogue, input: String?) {
if (input != null) {
dialogue.runtime.environment.setSimpleVariable("selected_option", StringValue(input))
}
dialogue.runtime.resolve(expression)
}
}
@@ -0,0 +1,46 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.util.cobblemonResource
import java.util.UUID
import net.minecraft.util.Identifier
/**
* Something that produces a dialogue's renderable face. This is sealed because the client has very particular handling for this.
*
* @author Hiroku
* @since January 1st, 2024
*/
sealed interface DialogueFaceProvider {
companion object {
val types = mutableMapOf(
"player" to PlayerDialogueFaceProvider::class.java,
"standard" to ArtificialDialogueFaceProvider::class.java,
"expression" to ExpressionLikeDialogueFaceProvider::class.java
)
}
}
class ArtificialDialogueFaceProvider(
val modelType: String = "",
val identifier: Identifier = cobblemonResource("bulbasaur"),
val aspects: Set<String> = setOf()
) : DialogueFaceProvider
class ReferenceDialogueFaceProvider(
val entityId: Int
): DialogueFaceProvider
class PlayerDialogueFaceProvider(val playerId: UUID) : DialogueFaceProvider
class ExpressionLikeDialogueFaceProvider(
val providerExpression: ExpressionLike
): DialogueFaceProvider
@@ -0,0 +1,41 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueClosedPacket
import com.cobblemon.mod.common.net.messages.client.dialogue.DialogueOpenedPacket
import com.cobblemon.mod.common.util.activeDialogue
import java.util.UUID
import net.minecraft.server.network.ServerPlayerEntity
/**
* Manages the active dialogues for players. Map is indexed by player UUID.
* You really need to make sure any dialogues you start with a player go through this otherwise
* the player won't be able to close the dialogue.
*
* @author Hiroku
* @since December 27th, 2023
*/
object DialogueManager {
val activeDialogues = mutableMapOf<UUID, ActiveDialogue>()
fun startDialogue(playerEntity: ServerPlayerEntity, dialogue: Dialogue) {
val activeDialogue = ActiveDialogue(playerEntity, dialogue)
activeDialogues[playerEntity.uuid] = activeDialogue
val packet = DialogueOpenedPacket(activeDialogue, includeFaces = true)
playerEntity.sendPacket(packet)
}
fun stopDialogue(playerEntity: ServerPlayerEntity) {
val activeDialogue = playerEntity.activeDialogue ?: return
DialogueClosedPacket(activeDialogue.dialogueId).sendToPlayer(playerEntity)
activeDialogues.remove(activeDialogue.dialogueId)
}
}
@@ -0,0 +1,71 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.bedrockk.molang.Expression
import com.bedrockk.molang.runtime.struct.MoStruct
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.bedrockk.molang.runtime.value.MoValue
import com.bedrockk.molang.runtime.value.StringValue
import com.cobblemon.mod.common.api.dialogue.input.DialogueInput
import com.cobblemon.mod.common.api.dialogue.input.DialogueNoInput
import com.google.gson.JsonArray
import net.minecraft.text.MutableText
/**
* A page of a dialogue. This has lines of text and also some kind of input expected from the player.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialoguePage(
var id: String = "",
var speaker: String? = null,
var lines: MutableList<DialogueText> = mutableListOf(),
var input: DialogueInput = DialogueNoInput(),
var clientActions: MutableList<Expression> = mutableListOf(),
var escapeAction: DialogueAction? = null,
) {
companion object {
@JvmOverloads
fun of(
/** The ID is optional, but if you want to be able to jump to this page from other pages then you probably want to set this. */
id: String = "",
speaker: String? = null,
lines: Iterable<MutableText>,
input: DialogueInput = DialogueNoInput(),
clientActions: Iterable<Expression> = emptyList(),
/** The thing to do when the player presses ESC while on this page. If null, falls back to the same property on [Dialogue]. */
escapeAction: ((ActiveDialogue) -> Unit)? = null,
): DialoguePage {
return DialoguePage(
id = id,
speaker = speaker,
lines = lines.map { WrappedDialogueText(it) }.toMutableList(),
input = input,
clientActions = clientActions.toMutableList(),
escapeAction = escapeAction?.let { func -> FunctionDialogueAction { activeDialogue, _ -> func(activeDialogue) } }
)
}
}
fun toMoLangStruct(activeDialogue: ActiveDialogue): MoStruct {
return QueryStruct(
hashMapOf(
"id" to java.util.function.Function { _ -> StringValue(id) },
"input" to java.util.function.Function { _ -> activeDialogue.activeInput.struct },
"lines" to java.util.function.Function { _ ->
val array = JsonArray()
lines.forEach { array.add(it(activeDialogue).string) }
MoValue.of(array)
}
)
)
}
}
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.resolveBoolean
/**
* A predicate loaded for a particular dialogue. Tests arbitrary conditions about the dialogue context.
*
* @author Hiroku
* @since December 29th, 2023
*/
interface DialoguePredicate {
companion object {
val types = mutableMapOf<String, Class<out DialoguePredicate>>()
}
operator fun invoke(dialogue: ActiveDialogue): Boolean
}
class ExpressionLikeDialoguePredicate(val expression: ExpressionLike = "true".asExpressionLike()) : DialoguePredicate {
override fun invoke(dialogue: ActiveDialogue) = dialogue.runtime.resolveBoolean(expression)
}
class FunctionDialoguePredicate(val predicate: (ActiveDialogue) -> Boolean = { true }) : DialoguePredicate {
override fun invoke(dialogue: ActiveDialogue) = predicate(dialogue)
}
@@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.api.text.text
import net.minecraft.text.MutableText
/**
* A kind of speaker in a dialogue. They include a name and a face, each optional.
*
* @author Hiroku
* @since January 1st, 2024
*/
class DialogueSpeaker(
val name: DialogueText? = null,
val face: DialogueFaceProvider? = null
) {
fun of(name: MutableText = "".text(), face: DialogueFaceProvider? = null) = DialogueSpeaker(WrappedDialogueText(name), face)
}
@@ -0,0 +1,47 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.api.text.text
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.resolveString
import net.minecraft.text.MutableText
/**
* Some kind of text-resolving property. This is to hide where sometimes we want literals,
* sometimes we want the text to come from a function, and sometimes we want it to be the
* product of a MoLang script.
*
* @author Hiroku
* @since December 29th, 2023
*/
interface DialogueText {
companion object {
val types = mutableMapOf<String, Class<out DialogueText>>(
"expression" to ExpressionLikeDialogueText::class.java,
)
}
operator fun invoke(activeDialogue: ActiveDialogue): MutableText
}
class FunctionDialogueText(val function: (ActiveDialogue) -> MutableText = { "".text() }) : DialogueText {
override fun invoke(activeDialogue: ActiveDialogue) = function(activeDialogue)
}
class WrappedDialogueText(val text: MutableText = "".text()) : DialogueText {
override fun invoke(activeDialogue: ActiveDialogue) = text.copy()
}
class ExpressionLikeDialogueText(val expression: ExpressionLike = "''".asExpressionLike()) : DialogueText {
override fun invoke(activeDialogue: ActiveDialogue): MutableText {
return activeDialogue.runtime.resolveString(expression).text()
}
}
@@ -0,0 +1,72 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue
import com.bedrockk.molang.Expression
import com.cobblemon.mod.common.api.data.JsonDataRegistry
import com.cobblemon.mod.common.api.dialogue.input.DialogueInput
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.util.adapters.DialogueActionAdapter
import com.cobblemon.mod.common.util.adapters.DialogueFaceProviderAdapter
import com.cobblemon.mod.common.util.adapters.DialogueInputAdapter
import com.cobblemon.mod.common.util.adapters.DialoguePredicateAdapter
import com.cobblemon.mod.common.util.adapters.DialogueTextAdapter
import com.cobblemon.mod.common.util.adapters.ExpressionAdapter
import com.cobblemon.mod.common.util.adapters.ExpressionLikeAdapter
import com.cobblemon.mod.common.util.adapters.IdentifierAdapter
import com.cobblemon.mod.common.util.adapters.TextAdapter
import com.cobblemon.mod.common.util.cobblemonResource
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import net.minecraft.resource.ResourceType
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.MutableText
import net.minecraft.text.Text
import net.minecraft.util.Identifier
/**
* Registry for dialogue data.
*
* @see Dialogue
* @since December 29th, 2023
* @author Hiroku
*/
object Dialogues : JsonDataRegistry<Dialogue> {
override val id = cobblemonResource("dialogues")
override val type = ResourceType.SERVER_DATA
override val observable = SimpleObservable<Dialogues>()
val dialogues = mutableMapOf<Identifier, Dialogue>()
/** If you need custom adapters registered, subscribe to this and register them. */
val gsonObservable: SimpleObservable<GsonBuilder> = SimpleObservable()
override fun sync(player: ServerPlayerEntity) {}
override val gson = GsonBuilder()
.registerTypeAdapter(DialogueAction::class.java, DialogueActionAdapter)
.registerTypeAdapter(DialoguePredicate::class.java, DialoguePredicateAdapter)
.registerTypeAdapter(DialogueInput::class.java, DialogueInputAdapter)
.registerTypeAdapter(DialogueFaceProvider::class.java, DialogueFaceProviderAdapter)
.registerTypeAdapter(DialogueText::class.java, DialogueTextAdapter)
.registerTypeAdapter(Expression::class.java, ExpressionAdapter)
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
.registerTypeAdapter(MutableText::class.java, TextAdapter)
.registerTypeAdapter(Identifier::class.java, IdentifierAdapter)
.also { gsonObservable.emit(it) }
.create()
override val typeToken = TypeToken.get(Dialogue::class.java)
override val resourcePath = "dialogues"
override fun reload(data: Map<Identifier, Dialogue>) {
dialogues.putAll(data)
observable.emit(this)
}
}
@@ -0,0 +1,42 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.value.DoubleValue
import com.bedrockk.molang.runtime.value.MoValue
import com.cobblemon.mod.common.api.dialogue.ActiveDialogue
import com.cobblemon.mod.common.util.server
import java.util.UUID
/**
* An active input waiting for the player as part of an [ActiveDialogue]. The purpose of this is to
* maintain some data integrity and track how long it's taken to choose an action.
*
* @author Hiroku
* @since December 27th, 2023
*/
class ActiveInput(
val activeDialogue: ActiveDialogue,
val dialogueInput: DialogueInput
) {
val inputId = UUID.randomUUID()
val startTime = server()!!.overworld.time
val struct = toMoLangStruct()
fun handle(input: String) {
val secondsToChoose = (server()!!.overworld.time - startTime) / 20F
activeDialogue.runtime.environment.setSimpleVariable("seconds_taken_to_input", DoubleValue(secondsToChoose))
dialogueInput.handle(this, input)
}
fun toMoLangStruct(): MoValue {
return dialogueInput.toMoLangStruct(this)
}
}
@@ -0,0 +1,43 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.dialogue.DialogueAction
import com.cobblemon.mod.common.api.dialogue.FunctionDialogueAction
/**
* Input that has no input but has an action that will run after a delay.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueAutoContinueInput : DialogueInput {
val delay = 5F
/** Whether the player can click to move on in a hurry or if they must wait. */
var allowSkip = true
var showTimer = false
val action: DialogueAction = FunctionDialogueAction { dialogue, _ -> dialogue.incrementPage() }
override var timeout: DialogueTimeout?
get() = DialogueTimeout(duration = delay, showTimer = showTimer, action)
set(_) {}
override fun toMoLangStruct(activeInput: ActiveInput) = QueryStruct(hashMapOf())
override fun handle(activeInput: ActiveInput, value: String) {
if (!allowSkip) {
return Cobblemon.LOGGER.warn("A no-skip dialogue received input from ${activeInput.activeDialogue.playerEntity.gameProfile.name}, is this person a hacker or something")
}
action.invoke(activeInput.activeDialogue)
}
}
@@ -0,0 +1,24 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.struct.MoStruct
import com.cobblemon.mod.common.api.dialogue.DialoguePage
/**
* A type of input to [DialoguePage]s. This is sealed because the client needs to know about it. Sorry.
*
* @author Hiroku
* @since December 27th, 2023
*/
sealed interface DialogueInput {
var timeout: DialogueTimeout?
fun toMoLangStruct(activeInput: ActiveInput): MoStruct
fun handle(activeInput: ActiveInput, value: String)
}
@@ -0,0 +1,33 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.struct.VariableStruct
import com.cobblemon.mod.common.api.dialogue.DialogueAction
import com.cobblemon.mod.common.api.dialogue.FunctionDialogueAction
/**
* An input type that's really just waiting for the player to click or something.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueNoInput(
var action: DialogueAction = FunctionDialogueAction { dialogue, _ -> dialogue.incrementPage() }
) : DialogueInput {
override var timeout: DialogueTimeout?
get() = null
set(_) {}
override fun toMoLangStruct(activeInput: ActiveInput) = VariableStruct()
override fun handle(activeInput: ActiveInput, value: String) {
action(activeInput.activeDialogue)
}
}
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.cobblemon.mod.common.api.dialogue.DialogueAction
import com.cobblemon.mod.common.api.dialogue.DialoguePredicate
import com.cobblemon.mod.common.api.dialogue.DialogueText
import com.cobblemon.mod.common.api.dialogue.FunctionDialogueAction
import com.cobblemon.mod.common.api.dialogue.FunctionDialoguePredicate
import com.cobblemon.mod.common.api.dialogue.WrappedDialogueText
/**
* A choosable option as part of a [DialogueOptionSetInput].
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueOption(
var text: DialogueText = WrappedDialogueText(),
/** The value is a unique identifier so the client can tell the server what they selected. Don't forget this. */
var value: String = "",
/** The action to run when they click it. */
var action: DialogueAction = FunctionDialogueAction { _, _ -> },
val isVisible: DialoguePredicate = FunctionDialoguePredicate(),
val isSelectable: DialoguePredicate = FunctionDialoguePredicate()
)
@@ -0,0 +1,49 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.api.dialogue.ActiveDialogue
/**
* A type of [DialogueInput] that has the player choose from a list of options.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueOptionSetInput(
var options: MutableList<DialogueOption>,
override var timeout: DialogueTimeout? = null,
/** Whether the buttons should be stacked vertically. */
var vertical: Boolean = false,
) : DialogueInput {
// JSON uses this. Basically so that the main constructor can force people to specify options
constructor() : this(mutableListOf(), null, false)
fun getVisibleOptions(activeDialogue: ActiveDialogue) = options.filter { it.isVisible(activeDialogue) }
override fun toMoLangStruct(activeInput: ActiveInput) = QueryStruct(hashMapOf())
override fun handle(activeInput: ActiveInput, value: String) {
val option = options.firstOrNull { it.value == value }
if (option != null) {
if (!option.isSelectable(activeInput.activeDialogue)) {
Cobblemon.LOGGER.warn("Dialogue option $value is not selectable but ${activeInput.activeDialogue.playerEntity.gameProfile.name} selected it anyway")
activeInput.activeDialogue.close()
} else if (!option.isVisible(activeInput.activeDialogue)) {
Cobblemon.LOGGER.warn("Dialogue option $value is not visible but ${activeInput.activeDialogue.playerEntity.gameProfile.name} selected it anyway")
activeInput.activeDialogue.close()
}
option.action(activeInput.activeDialogue, value)
} else {
Cobblemon.LOGGER.warn("No option with value $value found in dialogue option set")
}
}
}
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.cobblemon.mod.common.api.dialogue.DialogueAction
import com.cobblemon.mod.common.api.dialogue.FunctionDialogueAction
/**
* A text input for dialogues where the player can enter free text.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueTextInput : DialogueInput {
override var timeout: DialogueTimeout? = null
val action: DialogueAction = FunctionDialogueAction { dialogue, _ -> dialogue.setPage(dialogue.currentPageIndex + 1) }
override fun toMoLangStruct(activeInput: ActiveInput) = QueryStruct(hashMapOf())
override fun handle(activeInput: ActiveInput, value: String) {
action.invoke(activeInput.activeDialogue, value)
}
}
@@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.api.dialogue.input
import com.cobblemon.mod.common.api.dialogue.DialogueAction
import com.cobblemon.mod.common.api.dialogue.FunctionDialogueAction
/**
* A deadline for dialogue input. This is used to have something occur if the player spends
* too long on one page of dialogue.
*
* @author Hiroku
* @since December 27th, 2023
*/
class DialogueTimeout(
var duration: Float = 10F,
var showTimer: Boolean = true,
var action: DialogueAction = FunctionDialogueAction { dialogue, _ -> dialogue.close() }
)
@@ -10,11 +10,12 @@ package com.cobblemon.mod.common.api.drop
import com.cobblemon.mod.common.api.events.CobblemonEvents.LOOT_DROPPED
import com.cobblemon.mod.common.api.events.drops.LootDroppedEvent
import kotlin.random.Random
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
import net.minecraft.entity.LivingEntity
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.server.world.ServerWorld
import net.minecraft.util.math.Vec3d
import kotlin.random.Random
/**
* A table of drops that can produce a list of [DropEntry]. You can produce a drop list from [getDrops] to
@@ -88,6 +89,8 @@ class DropTable {
amount: IntRange = this.amount
) {
val drops = getDrops(amount).toMutableList()
val heldItem = (entity as PokemonEntity).pokemon.heldItemNoCopy()
if (!heldItem.isEmpty) entity.dropItem(heldItem.item)
LOOT_DROPPED.postThen(
event = LootDroppedEvent(this, player, entity, drops),
ifSucceeded = { it.drops.forEach { it.drop(entity, world, pos, player) } }
@@ -31,14 +31,14 @@ import net.minecraft.util.math.Vec3d
* @author Hiroku
* @since July 24th, 2022
*/
class ItemDropEntry : DropEntry {
open class ItemDropEntry : DropEntry {
override val percentage = 100F
override val quantity = 1
val quantityRange: IntRange? = null
open val quantityRange: IntRange? = null
override val maxSelectableTimes = 1
val dropMethod: ItemDropMethod? = null
val item = Identifier("minecraft:fish")
val nbt: NbtCompound? = null
open val dropMethod: ItemDropMethod? = null
open val item = Identifier("minecraft:fish")
open val nbt: NbtCompound? = null
override fun drop(entity: LivingEntity?, world: ServerWorld, pos: Vec3d, player: ServerPlayerEntity?) {
val item = world.registryManager.get(RegistryKeys.ITEM).get(item) ?: return LOGGER.error("Unable to load drop item: $item")

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