Compare commits

...
Author SHA1 Message Date
apion 263bccca4b idk whats up here but I wanna swap off this branch so 2025-02-07 17:49:10 -05:00
apion 1d94adface Fabric now boots 2025-01-26 03:02:57 -05:00
apion c741ddbc2e Comments 2025-01-25 04:23:40 -05:00
apion 8cad44ffb1 NEOFORGE IS BOOTING INTO A WORLD!!! 2025-01-25 04:05:34 -05:00
apion dec0376d11 More MDG testing 2025-01-18 15:46:50 -05:00
apion 007b2a49f4 More ModDevGradle porting 2025-01-18 01:19:26 -05:00
apion 082683723d Initial moddevgradle port 2025-01-17 21:31:25 -05:00
Paul bbd2b3aeed Updated sprites for galarica nuts, cuff, wreath 2025-01-13 08:37:39 +10:00
Hiroku 33951c868b Merge branch 'main' into 'main'
Fix Potions from applying more health than intended

See merge request cable-mc/cobblemon!1461
2025-01-12 00:23:35 +00:00
Chase 02f0e62bf8 Edit CHANGELOG.md 2025-01-12 00:01:08 +00:00
Hiroku 977b39e65c Merge branch '1.6.1-molang-expansion' into 'main'
[1.6.1] Add flows and expand some structs, also add FormeChangeEvent

See merge request cable-mc/cobblemon!1444
2025-01-11 22:55:33 +00:00
Chase 25a02e0b27 Small tweak to logic 2025-01-11 15:55:12 +00:00
Chase 4950297daa Remove unused variable 2025-01-11 15:52:26 +00:00
Chase 1c09cf6f30 Fix potion items from calling heal function twice 2025-01-11 15:50:56 +00:00
Paul 00d72902af Added recipes for galarica cuff and wreath 2025-01-11 17:41:29 +10:00
Paul eb986087cf Pipeline fixo (as if by magic!!!) 2025-01-11 16:31:39 +10:00
Paul 294e439f5e Moved the repurposed structures stuff to an inbuilt pack 2025-01-11 15:56:55 +10:00
Paul 6e7e870a1f Added galarica nut item 2025-01-11 12:09:29 +10:00
Hiroku ab78185689 Merge branch 'main' into 'main'
Add Built-in 1.21.1+ Compat With Repurposed Structures

See merge request cable-mc/cobblemon!1457
2025-01-10 20:40:00 +00:00
amo 7403556fa2 fixes for threads 2025-01-10 13:22:50 +00:00
Paul 7f451f1989 Cleaned up duplicates in changelog 2025-01-10 20:36:26 +10:00
Hiroku 3b2bfd5548 Merge branch 'display-cases' into 'main'
Fixed display cases not dropping items if destroyed via explosions

See merge request cable-mc/cobblemon!1460
2025-01-10 09:27:10 +00:00
Hiroku 3d1ee5ee0f Merge branch 'lion-eats-bugs' into 'main'
Small Fixes

Closes #1329, #1324, #1318, and #1325

See merge request cable-mc/cobblemon!1455
2025-01-10 09:13:36 +00:00
Guilherme Pereira 0584276189 emit pokemon aspects changed event only when pokemon is owned 2025-01-10 06:01:59 -03:00
Hiroku a16b17582d Merge branch 'feat/dynamic-pokemon-name-render' into 'main'
Better Pokédex discovery system

See merge request cable-mc/cobblemon!1442
2025-01-10 04:20:53 +00:00
Hiroku 71c1ae5540 Merge branch 'palafin-hero' into 'main'
Add features to several mons

See merge request cable-mc/cobblemon!1439
2025-01-10 04:10:42 +00:00
Hiroku 0233d2b0be Merge branch 'feature/migration-post-mortem' into 'main'
fix moves having raised stages that are beyond what new codecs expect when migrating from 1.5.2

See merge request cable-mc/cobblemon!1453
2025-01-10 03:55:28 +00:00
PolymetaandHiroku b67d474386 fix moves having raised stages that are beyond what new codecs expect when migrating from 1.5.2 2025-01-10 03:55:28 +00:00
Test 3239362e1a fix incorrect texture size for interact interface 2025-01-08 23:41:52 -05:00
Conan 0d240f01b6 Fixed display cases not dropping items if destroyed via explosions. 2025-01-09 02:55:27 +01:00
Test 99a71dc2e1 restore pokedex close transition 2025-01-06 20:20:52 -05:00
Paul fd99573a46 Fixed NPC editing GUI not immediately applying aspect changes on save 2025-01-05 18:16:52 +10:00
Guilherme Pereira fbcae404c0 update CHANGELOG.md 2025-01-05 03:11:27 -03:00
Guilherme Pereira 68cfd16fed emit pokemon aspects changed event only when aspects really changed 2025-01-05 03:10:13 -03:00
Guilherme Pereira 818038c715 fix hay bales not going into restoration machines 2025-01-05 03:09:47 -03:00
TelepathicGrunt 7c4b31db25 Add Built-in Compat With Repurposed Structures 2025-01-04 19:22:10 -05:00
Guilherme Pereira da6a88292e fix berry shear sound 2025-01-04 16:54:17 -03:00
Guilherme Pereira dee9a268d7 update CHANGELOG.md 2025-01-04 14:38:32 -03:00
Guilherme Pereira 5fd37438fc add player to pokerod reel event 2025-01-04 14:35:00 -03:00
Guilherme Pereira 51b30ab468 close pokedex and dialogues on inventory keybind press 2025-01-04 14:27:08 -03:00
Guilherme Pereira 36a3549b3e fix petilil typo 2025-01-04 13:03:31 -03:00
Guilherme Pereira 9e0ea63db6 fix vivichoke dip and leek and potato stew not returning bowls 2025-01-04 12:56:18 -03:00
Guilherme Pereira 739459c061 fix wooloo dex registration 2025-01-04 12:51:13 -03:00
Polymeta a6e06c80fe flipping more signs for particles
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2025-01-03 13:18:45 +00:00
Polymeta fc1cc54107 Merge branch 'BanInBattleRocketry' into 'main'
Ban in battle rocketry

See merge request cable-mc/cobblemon!1451
2025-01-03 12:07:49 +00:00
JazzMcNade 210bf9f5fb Updated Changelog 2025-01-02 21:13:01 -06:00
JazzMcNade 9454f2046a Addition comments 2025-01-02 20:58:24 -06:00
JazzMcNade 5621e69d58 Merge branch 'main' into BanInBattleRocketry 2025-01-02 20:51:11 -06:00
Polymeta 0c0f022e34 Merge branch 'fix-pokedex-command' into 'main'
Pokédex command and GUI fixes

Closes #1320 and #1321

See merge request cable-mc/cobblemon!1450
2025-01-02 16:58:35 +00:00
lionandPolymeta 220b363864 Pokédex command and GUI fixes 2025-01-02 16:58:35 +00:00
Polymeta 26d97f2043 Merge branch 'add-base-scale-npc-property' into 'main'
Add 'baseScale' NPC property

Closes #1268

See merge request cable-mc/cobblemon!1448
2024-12-31 14:54:38 +00:00
lionandPolymeta c4f5416bb3 Add 'baseScale' NPC property 2024-12-31 14:54:38 +00:00
Polymeta 8066a92ab5 Merge branch 'lion-eats-bugs' into 'main'
Small Fixes

Closes #1311, #889, and #1197

See merge request cable-mc/cobblemon!1449
2024-12-31 14:42:00 +00:00
lionandPolymeta f149439da8 Small Fixes 2024-12-31 14:41:59 +00:00
JazzMcNade 978064d2d0 Update PokemonMoveControl.kt 2024-12-31 02:54:49 -06:00
Polymeta 95dd6cbfcb Merge branch 'test/adorn_compat' into 'main'
Fixing up Adorn compatibility

See merge request cable-mc/cobblemon!1441
2024-12-30 16:17:17 +00:00
aeroeng15andPolymeta 551b3ebe87 Fixing up Adorn compatibility 2024-12-30 16:17:17 +00:00
Polymeta 89914813a1 Merge branch 'fix-pokemon-forgetting-moves-when-evolving' into 'main'
Fix Pokémon forgetting moves when evolving on specific cases

Closes #1252

See merge request cable-mc/cobblemon!1437
2024-12-30 15:54:09 +00:00
lionandPolymeta 742ec131d5 Fix Pokémon forgetting moves when evolving on specific cases 2024-12-30 15:54:09 +00:00
Polymeta 4175c36388 Merge branch 'fix/no-next-level-at-cap' into 'main'
Align the "To next level" display with official games logic, it will now show 0 when at cap.

See merge request cable-mc/cobblemon!1445
2024-12-30 15:32:33 +00:00
Hiroku f6ed1b38f8 Merge branch 'make-berries-shearable' into 'main'
Made berry trees be shearable by dispenser blocks

Closes #1071

See merge request cable-mc/cobblemon!1419
2024-12-30 11:39:21 +00:00
Faintful c299967cce Updated changelog 2024-12-30 12:35:44 +01:00
Polymeta b79f569def Merge branch 'fix-pokemon-riding-two-boats' into 'main'
Fix Pokémon riding two boats

Closes #1281

See merge request cable-mc/cobblemon!1447
2024-12-30 10:54:31 +00:00
lionandPolymeta 944144a671 Fix Pokémon riding two boats 2024-12-30 10:54:31 +00:00
Polymeta 586b5a860f Merge branch 'fix-npc-player-lose-command' into 'main'
Fix npc player lose command

Closes #1306 and #1282

See merge request cable-mc/cobblemon!1443
2024-12-30 01:33:47 +00:00
lionandPolymeta 29d91fb191 Fix npc player lose command 2024-12-30 01:33:46 +00:00
Polymeta 183d85a3b6 Merge branch 'overlay-invisible-man-collab' into 'main'
fix: Party overlay not respecting hidden UI (F1)

See merge request cable-mc/cobblemon!1440
2024-12-30 00:48:56 +00:00
Polymeta 0795b06ca0 use 1.4.1 instead 1.4.0 for tags history [skip-ci]
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-12-30 00:15:21 +00:00
Polymeta 6fdd87f5cf update tags directory to keep history [skip-ci]
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-12-29 23:59:02 +00:00
Ina 3b364a4590 fix: Align the "To next level" display with official games logic, it will now show 0 when at cap. 2024-12-29 17:20:01 +00:00
Ina baca93c9b2 feat: Support for Illusion in the dex reveal process. 2024-12-29 16:54:17 +00:00
amo b6d13b8861 Merge branch 'refs/heads/main' into 1.6.1-molang-expansion
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/pokemon/BattlePokemon.kt
2024-12-29 16:42:55 +00:00
amo b271223f6a lots o' stuff 2024-12-29 16:31:25 +00:00
Ina 004f2de623 chore: Changelog 2024-12-29 15:11:45 +00:00
Ina 570629bff2 feat: Improve Pokemon reveal logic 2024-12-29 15:08:16 +00:00
Ina 7e5b8260de refactor: Simplify base label resolving logic. 2024-12-29 13:45:23 +00:00
Ina 3e5e851dba fix: Don't instance new texts for static elements every tick. 2024-12-29 11:25:50 +00:00
Ina 9f866aa292 chore: Hiro bullies the work-challenged. 2024-12-29 11:18:54 +00:00
Ina 4e4417d4df Merge branch 'main' into overlay-invisible-man-collab 2024-12-29 11:17:39 +00:00
Hiroku 900ca0cd8d Merge branch 'feature/small-fixes' into 'main'
fixes and minor cleanup

Closes #1277, #1302, and #1310

See merge request cable-mc/cobblemon!1432
2024-12-29 01:04:53 +00:00
PolymetaandHiroku 5448031cae fixes and minor cleanup 2024-12-29 01:04:53 +00:00
Ina abd92c2325 fix: Party overlay not respecting hidden UI (F1) 2024-12-28 22:07:37 +00:00
Vaniron c4948a6611 Add three_segment feature to Dudunsparce 2024-12-28 18:24:52 +00:00
Vaniron cc459c99aa Add hero features to Palafin 2024-12-28 18:15:28 +00:00
Polymeta a3ac3c36e6 Merge branch 'fix-bait-consumption' into 'main'
Fixed bait being consumed when not reeling in any Pokémon.

Closes #1308 and #1307

See merge request cable-mc/cobblemon!1438
2024-12-28 12:22:19 +00:00
lionandPolymeta 36ce262755 Fixed bait being consumed when not reeling in any Pokémon. 2024-12-28 12:22:19 +00:00
Apion 9246523853 Merge branch 'particle-stuff' into 'main'
A bunch of particle changes

See merge request cable-mc/cobblemon!1295
2024-12-28 03:03:56 +00:00
Apion db2c2f0089 A bunch of particle changes 2024-12-28 03:03:56 +00:00
Polymeta 3a090ba01c Merge branch 'RestorePokemonSpawnYaw' into 'main'
Restore pokemon spawn yaw

See merge request cable-mc/cobblemon!1436
2024-12-28 02:11:17 +00:00
JazzMcNadeandPolymeta 3c4481c9cc Restore pokemon spawn yaw 2024-12-28 02:11:17 +00:00
Polymeta 4e73a19ade Merge branch 'configurable-dex-scanning-range' into 'main'
Add config to max Pokédex scanning range

Closes #1247

See merge request cable-mc/cobblemon!1387
2024-12-28 00:33:24 +00:00
lionandPolymeta c58ba08a65 Add config to max Pokédex scanning range 2024-12-28 00:33:24 +00:00
Polymeta 18940956a8 Merge branch 'fix-pasture-pokemon-list-padding' into 'main'
Fix pasture Pokémon list padding

Closes #1273

See merge request cable-mc/cobblemon!1421
2024-12-27 23:52:04 +00:00
lionandPolymeta 68520307b4 Fix pasture Pokémon list padding 2024-12-27 23:52:04 +00:00
Hiroku 84825dbd69 Add vietnamese 2024-12-27 22:45:16 +00:00
Polymeta b231a80b68 Merge branch 'moe-eats-bugs' into 'main'
Advancement fixes

Closes #1262

See merge request cable-mc/cobblemon!1417
2024-12-27 13:04:27 +00:00
MoeBoy76andPolymeta d2796b8755 Advancement fixes 2024-12-27 13:04:27 +00:00
Polymeta 1ab3ca8628 Merge branch 'fix-collidable-invisible-pokemon' into 'main'
Fix Pokémon being collidable when trying to capture them

Closes #401

See merge request cable-mc/cobblemon!1382
2024-12-27 12:55:22 +00:00
lionandPolymeta f4da1436a5 Fix Pokémon being collidable when trying to capture them 2024-12-27 12:55:22 +00:00
Faintful 9a0b779ca3 Merge remote-tracking branch 'upstream/main' into make-berries-shearable 2024-12-27 13:40:11 +01:00
Polymeta 2bcb42270a Merge branch 'hide-unimplemented-pokemon-from-the-dex' into 'main'
Add config to hide unimplemented Pokémon from the Pokédex

Closes #1274

See merge request cable-mc/cobblemon!1422
2024-12-27 12:37:32 +00:00
lionandPolymeta 51472d2369 Add config to hide unimplemented Pokémon from the Pokédex 2024-12-27 12:37:32 +00:00
Polymeta 2cb430d927 Merge branch 'is-standing-on-blocks-molang-function' into 'main'
Add 'is_standing_on_blocks' MoLang function

See merge request cable-mc/cobblemon!1393
2024-12-27 12:36:04 +00:00
lionandPolymeta 7bbfbf5852 Add 'is_standing_on_blocks' MoLang function 2024-12-27 12:36:04 +00:00
Polymeta 93a368a844 Merge branch 'fix_fishing_condition' into 'main'
Internal change, move condition variables related to fishing into...

See merge request cable-mc/cobblemon!1430
2024-12-27 01:46:23 +00:00
Polymeta 5c934a0b66 Merge branch 'FossilMachineReturnFossilFix' into 'main'
FossilMachineReturnFossilFix

See merge request cable-mc/cobblemon!1426
2024-12-27 01:36:24 +00:00
JazzMcNadeandPolymeta 1a4034ded4 FossilMachineReturnFossilFix 2024-12-27 01:36:23 +00:00
JPAK dbd73c53ea Internal change, move condition variables related to fishing into FishingSpawningCondition.kt instead of SpawningCondition.kt 2024-12-26 11:28:11 -06:00
Polymeta 25d17a271b Merge branch 'toms-fixed' into 'main'
Fix crash when placing a restoration tank next to Tom's Storage block.

See merge request cable-mc/cobblemon!1427
2024-12-26 11:39:22 +00:00
JordanandPolymeta e9b3940eb6 Fix crash when placing a restoration tank next to Tom's Storage block. 2024-12-26 11:39:22 +00:00
Hiroku e442ca2732 Merge branch 'yamask-patch' into 'main'
Add galarian yamask as feature

See merge request cable-mc/cobblemon!1428
2024-12-26 07:40:17 +00:00
Vaniron b34e1f30d1 Add galarian yamask as feature 2024-12-26 07:33:40 +00:00
Polymeta 8747d3cd6f changelog 1.6.1 prep [skip-ci]
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-12-26 00:06:13 +00:00
Hiroku ca7a4e12be Merge branch 'change-modmenu-links' into 'main'
Update mod menu links

See merge request cable-mc/cobblemon!1424
2024-12-25 09:08:44 +00:00
lionandHiroku 9c3b713c4a Update mod menu links 2024-12-25 09:08:44 +00:00
Hiroku 6c0c352001 Merge branch 'fix-dex-crash-when-switching-forms' into 'main'
Fix Pokédex crash when switching forms

See merge request cable-mc/cobblemon!1423
2024-12-25 06:29:12 +00:00
lionandHiroku 51c1706a9a Fix Pokédex crash when switching forms 2024-12-25 06:29:11 +00:00
Hiroku 5320704702 Edit gradle.properties 2024-12-25 06:27:07 +00:00
Paul 91e28616a9 Lil changelog amendment [skip-ci] 2024-12-25 11:39:29 +10:00
Paul 8df06a4836 The grinch stole the jar!! [skip-ci] 2024-12-25 09:25:42 +10:00
Hiroku f2c9886ae0 Merge branch 'feature/updated-tag-scripts' into 'main'
update and run tag scripts

See merge request cable-mc/cobblemon!1420
2024-12-24 23:25:12 +00:00
PolymetaandHiroku d74ca7b70d update and run tag scripts 2024-12-24 23:25:12 +00:00
Paul 2e3302bdec not snap 2024-12-25 08:40:38 +10:00
Paul f77af7c954 Merge remote-tracking branch 'origin/lang-updates' 2024-12-25 07:56:12 +10:00
Hiroku 63ed488b03 Merge branch 'quic-molang-additions' into 'main'
[1.6] Add entity type id molang function

See merge request cable-mc/cobblemon!1415
2024-12-24 21:50:53 +00:00
Hiroku fcce15e210 Edit MoLangFunctions.kt 2024-12-24 21:50:15 +00:00
Test d816710566 Changelog shenanigans 3 [skip-ci] 2024-12-24 21:48:16 +00:00
Hiroku c8a8e689cc Merge branch 'actually-on-hit' into 'main'
[1.6] make THROWN_POKEBALL_HIT actually do what it says on the tin

See merge request cable-mc/cobblemon!1418
2024-12-24 21:47:49 +00:00
Paul 222f6dd955 Changelog shenanigans 2 [skip-ci] 2024-12-25 07:46:03 +10:00
Faintful ba7a3ab3c2 Made berry trees be shearable by dispenser blocks 2024-12-24 17:27:33 +01:00
amo f61efb11b1 fix silly 2024-12-24 14:58:03 +00:00
Briar 19b4d841f4 im a FOOL 2024-12-24 14:31:31 +00:00
Briar 704320f1bc oops 2024-12-24 14:22:42 +00:00
Briar e5480bd05b make THROWN_POKEBALL_HIT actually do what it says on the tin 2024-12-24 14:17:57 +00:00
Briar 8d504d23e1 Update file MoLangFunctions.kt 2024-12-24 13:58:51 +00:00
Paul 2912ffdad9 Changelog shenanigans [skip-ci] 2024-12-24 23:38:25 +10:00
Paul 986f22c5a5 Added clamping for pokemon angles in the hopes of killing the watchdog killer 2024-12-24 18:58:10 +10:00
Hiroku 880f6de77a Merge branch 'fix-no-ai-property' into 'main'
Fix no_ai property not working when set to false

Closes #1270

See merge request cable-mc/cobblemon!1413
2024-12-24 08:01:50 +00:00
lionandHiroku 7f87b0f184 Fix no_ai property not working when set to false 2024-12-24 08:01:50 +00:00
Hiroku a811a823e6 Merge branch 'fix-shiny-magikarp-jump-variations' into 'main'
Fix shiny Magikarp jump variations

See merge request cable-mc/cobblemon!1416
2024-12-24 08:01:20 +00:00
lionandHiroku a45999894b Fix shiny Magikarp jump variations 2024-12-24 08:01:19 +00:00
Hiroku eeba80e7e7 Merge branch 'patch-1' into 'main'
Galarian Mr.Mime typo

See merge request cable-mc/cobblemon!1414
2024-12-24 08:00:17 +00:00
Briar 97b20158e9 Update file MoLangFunctions.kt 2024-12-24 02:28:33 +00:00
VanironCZ 586eaa9135 Fix typo, make form work 2024-12-24 00:58:06 +00:00
Polymeta dc7925ab3e Merge branch 'ci-fixes' into 'main'
Fix CI

See merge request cable-mc/cobblemon!1412
2024-12-23 22:46:40 +00:00
complacentdevandPolymeta 8986159a25 Fix CI 2024-12-23 22:46:39 +00:00
Test b864f715ea update item sprites 2024-12-23 17:24:19 -05:00
Nick 02b7d5eeae Merge branch 'fix/neoforge-payload-logging' into 'main'
No longer log all packets by state, just register

See merge request cable-mc/cobblemon!1411
2024-12-23 21:05:03 +00:00
Nick 614be610d4 No longer log all packets by state, just register 2024-12-23 13:02:40 -08:00
Polymeta 1084c7a289 Merge branch 'ci' into 'main'
Make Cobblemon 20% Smaller

See merge request cable-mc/cobblemon!1224
2024-12-23 17:55:16 +00:00
complacentdevandPolymeta 110d6dc828 Make Cobblemon 20% Smaller 2024-12-23 17:55:16 +00:00
Paul d98d68c7d4 Added cancellation and handler ordering support to flows, more cleanup for Pokedex event, changelog for flows, removed old junk 2024-12-23 21:50:44 +10:00
Hiroku 6369d876e3 Merge branch 'HorizontalTeamAlignmentForMoveTargeting' into 'main'
Horizontal team alignment for move targeting

See merge request cable-mc/cobblemon!1410
2024-12-23 10:31:06 +00:00
Hiroku 8388a53017 Merge branch 'date-and-timolang' into 'main'
[1.6] system time and date molang

See merge request cable-mc/cobblemon!1405
2024-12-23 10:17:04 +00:00
Hiroku 3a59d7d7c9 Edit MoLangFunctions.kt 2024-12-23 10:08:03 +00:00
Hiroku 3d9d3318b1 Merge branch 'cancelable-dex-knowledge' into 'main'
[1.6] Cancelable dex data event, split into pre & post

See merge request cable-mc/cobblemon!1403
2024-12-23 09:26:26 +00:00
Paul d032e0449b Tweaks for inbuilt region bias pack and changelog 2024-12-23 19:25:05 +10:00
Hiroku bcdbb19a75 Merge branch 'fix-pasture-shiny-effect' into 'main'
Fix shiny pasture Pokémon playing the shiny effect incorrectly

Closes #1257

See merge request cable-mc/cobblemon!1409
2024-12-23 09:24:36 +00:00
lionandHiroku 2181cdb4ef Fix shiny pasture Pokémon playing the shiny effect incorrectly 2024-12-23 09:24:36 +00:00
JazzMcNade 24257a4c6e Swapped team alignment from vertical to horizontal 2024-12-23 02:12:19 -06:00
Test 2a293def4f Merge branch 'inbuilt-packs' into 'main'
Setup inbuilt resource packs for various things

See merge request cable-mc/cobblemon!1408
2024-12-23 07:28:33 +00:00
Hiroku a3d77dd2a0 Merge branch 'CounterMovesUITargetingFix' into 'main'
Fix UI targeting for MetalBurst, Counter, MIrrorCoat, etc

See merge request cable-mc/cobblemon!1407
2024-12-23 06:51:43 +00:00
Paul 311f0e3192 Setup inbuilt resource packs for various things 2024-12-23 16:30:20 +10:00
JazzMcNade be2099130b Fix UI targeting for MetalBurst, Counter, MIrrorCoat, etc 2024-12-23 00:18:35 -06:00
Hiroku 6ebe0b9c7e Merge branch 'fix-spectators-obscuring-line-of-sight' into 'main'
Fix spectators obscuring line of sight when interacting with other players

Closes #1261

See merge request cable-mc/cobblemon!1406
2024-12-23 04:11:58 +00:00
lionandHiroku dde5c00789 Fix spectators obscuring line of sight when interacting with other players 2024-12-23 04:11:57 +00:00
amo d980faed64 resolve threads 2024-12-23 03:22:39 +00:00
Hiroku 7a80bc54ea Merge branch 'disable-entity-labels-when-crouching-only' into 'main'
Set 'displayEntityLabelsWhenCrouchingOnly' config default to false

See merge request cable-mc/cobblemon!1390
2024-12-23 02:53:53 +00:00
lionandHiroku f207206b13 Set 'displayEntityLabelsWhenCrouchingOnly' config default to false 2024-12-23 02:53:52 +00:00
amo edf510d8e8 split dex data changed event into pre and post, make pre cancelable 2024-12-23 02:30:38 +00:00
Hiroku 721384547f Merge branch 'feature/small-fixes' into 'main'
(1.6) Small fixes

Closes #1188 and #1264

See merge request cable-mc/cobblemon!1404
2024-12-23 01:36:36 +00:00
PolymetaandHiroku ce5189e83a (1.6) Small fixes 2024-12-23 01:36:36 +00:00
amo d7fc09b967 split dex data changed event into pre and post, make pre cancelable 2024-12-22 22:47:45 +00:00
Gustavo PuerariandWeblate 703eb7645c Translated using Weblate (Portuguese (Brazil))
Currently translated at 34.8% (2228 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-22 21:41:42 +00:00
Polymeta 604c184029 Merge branch 'This-time-I-wont-mess-up' into 'main'
Let's try this again

See merge request cable-mc/cobblemon!1402
2024-12-22 19:00:29 +00:00
Slippy 727ada3e00 Let's try this again 2024-12-22 12:51:58 -06:00
Hiroku d29e471ab4 Merge branch 'ok-fine-heres-a-journey-molang-mr' into 'main'
[1.6 pls] Journey Molang Migration

See merge request cable-mc/cobblemon!1385
2024-12-22 08:10:23 +00:00
Paul 6c1e6677b3 More molang cleanup 2024-12-22 18:03:31 +10:00
Paul aaa7fcee47 Cleaned up particle molang functions, moved reusable particle spawning logic from netcode to ParticleStorm 2024-12-22 18:01:05 +10:00
Hiroku 37b050f2e5 Merge branch 'ihatebugtypes' into 'main'
Ihatebugtypes

Closes #1167, #1201, and #1225

See merge request cable-mc/cobblemon!1369
2024-12-22 06:24:19 +00:00
Hiroku 16ccd6bcc3 Merge branch 'upstream/npcs' into 'main'
Allow for programmatic persistence of npcs

See merge request cable-mc/cobblemon!1388
2024-12-22 06:23:00 +00:00
Paul 8b0d228339 Merge remote-tracking branch 'origin/main' 2024-12-22 12:07:59 +10:00
Paul 5019026472 Further reworked brewing, JEI/EMI compat might exist on Neo now (fabric is impossibru (for now)) 2024-12-22 12:07:48 +10:00
amo ace38ad6be Merge branch 'main' into ok-fine-heres-a-journey-molang-mr 2024-12-21 17:03:47 +00:00
Polymeta 5c885112ef Merge branch '1.6-additional-additions' into 'main'
1.6 additional additions

See merge request cable-mc/cobblemon!1398
2024-12-21 14:23:06 +00:00
Plastered_CrabandPolymeta a37532579e 1.6 additional additions 2024-12-21 14:23:05 +00:00
Segfault Guy 0f751eb732 cleanup 2024-12-21 07:18:41 -05:00
Paul 9840a2758a Fixed everything being medicinal brew. Drink it!!! (fixes #1249) 2024-12-21 22:07:30 +10:00
Paul ad52d1ed5f Fixed busted flowers tag, fixed party check criterion 2024-12-21 21:48:09 +10:00
Paul 74464dc13a Fixed PC block waterlog property not being the right one, causing export issues, closes #1253 2024-12-21 21:33:24 +10:00
Hiroku f280ec8979 Merge branch 'half-slabs' into 'main'
Stonecutter Fixes

Closes #1260

See merge request cable-mc/cobblemon!1399
2024-12-21 05:57:42 +00:00
dhi_holo 25ca0fbd13 Recreate flowers.json
Moved the working flowers.json from being just in items to being a block tag too
2024-12-21 15:25:33 +10:00
dhi_holo 2c8d544088 Tag Fix
Cleans up a tag, removes a recursive tag error, and tweaks a spawn to be valid again.
2024-12-21 15:16:12 +10:00
Segfault Guy 7dbe31d084 Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-12-20 23:47:30 -05:00
Segfault Guy de05133b31 update licenses 2024-12-20 23:45:45 -05:00
Segfault Guy 3b70b8351a Block battles on evolution. 2024-12-20 23:44:36 -05:00
dhi_holo 784439475a Stonecutter Fixes
Moved the count value from outside the result to inside of it. No idea why it ended up outside, but hey, easy fix. Resolves #1260
2024-12-21 14:22:44 +10:00
Paul 2024ddb4f0 Wrap spawn direction angle within acceptable entity rotation values 2024-12-21 12:37:32 +10:00
Paul ad35be7ddb Added player level range influence to fishing 2024-12-21 10:51:27 +10:00
Paul dbf688fade Merge remote-tracking branch 'origin/lang-updates'
# Conflicts:
#	common/src/main/resources/assets/cobblemon/lang/de_de.json
#	common/src/main/resources/assets/cobblemon/lang/es_mx.json
#	common/src/main/resources/assets/cobblemon/lang/th_th.json
2024-12-21 09:30:37 +10:00
Polymeta 17d3d5f829 Merge branch 'implement_pokemon' into 'main'
This weeks pokemon implementation

Closes #1230 and #1137

See merge request cable-mc/cobblemon!1397
2024-12-20 13:30:37 +00:00
Frank The FarmerandPolymeta fba00c23b4 This weeks pokemon implementation 2024-12-20 13:30:35 +00:00
Hiroku cfe516e086 Merge branch 'RaftClientSyncFix' into 'main'
Fixed client sync issue with platforms. (Clients do not possess accurate behavior data.)

See merge request cable-mc/cobblemon!1394
2024-12-20 10:29:40 +00:00
Polymeta 63d921cb12 Merge branch 'fix-drop-message' into 'main'
Fix 'air dropped to the ground' message when Pokémon are killed in lava and drop no loot

See merge request cable-mc/cobblemon!1395
2024-12-20 09:23:07 +00:00
lionandPolymeta 6acde8c90f Fix 'air dropped to the ground' message when Pokémon are killed in lava and drop no loot 2024-12-20 09:23:07 +00:00
Hiroku 196ce2ab6d Merge branch 'fix-evolution-animation' into 'main'
Fix evolution animation not playing back to back

Closes #1229

See merge request cable-mc/cobblemon!1396
2024-12-20 09:09:12 +00:00
lionandHiroku 6fb6ea2927 Fix evolution animation not playing back to back 2024-12-20 09:09:12 +00:00
JazzMcNade 538027cb1b Fixed client sync issue with platforms. (Clients do not possess accurate behavior data.) 2024-12-19 17:47:17 -06:00
Paul 51fcc91d88 Fixed blinks not running 2024-12-19 21:24:00 +10:00
Gustavo Felippi PuerariandWeblate 63c603cc01 Translated using Weblate (Portuguese (Brazil))
Currently translated at 33.9% (2169 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-18 23:02:36 +00:00
TeggyandWeblate a7406dd321 Translated using Weblate (Spanish)
Currently translated at 98.0% (6267 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-12-18 23:02:36 +00:00
Paul 0e1611fd8e Merge remote-tracking branch 'origin/main' 2024-12-18 19:15:35 +10:00
Paul 51e575c6a6 Fixed action effects not playing animations, particles, or sounds in many circumstances. Tweaked spawn direction handling 2024-12-18 19:15:17 +10:00
Test 8789d16a53 replace hardcoded values with attribute for item interaction range 2024-12-17 22:09:12 -05:00
Gustavo Felippi PuerariandWeblate f7986d5ccf Translated using Weblate (Portuguese (Brazil))
Currently translated at 33.7% (2160 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-18 02:41:45 +00:00
Felipe Bermudes OrmeñoandWeblate c7423408a9 Translated using Weblate (Spanish (Mexico))
Currently translated at 30.6% (1960 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-12-18 02:41:44 +00:00
TeggyandWeblate 52b0c63751 Translated using Weblate (Spanish)
Currently translated at 96.8% (6189 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-12-18 02:41:44 +00:00
Polymeta 7ae20ccd60 Merge branch 'scrappy-lang-fix' into 'main'
Updated Scrappy's ability description

See merge request cable-mc/cobblemon!1389
2024-12-17 23:53:29 +00:00
Conan 621b867d14 Updated Scrappy's ability description 2024-12-17 21:46:24 +01:00
chasem-dev b0ea22d220 Allow for programmatic persistence of npcs 2024-12-17 15:19:56 -05:00
amo dfb54b3bc3 brainfart 2024-12-17 01:17:01 +00:00
Polymeta 2928667500 Merge branch '1.6-spawns' into 'main'
Updated recipes for Scope Lens, Wide Lens, and Zoom Lens. Updated spawns....

See merge request cable-mc/cobblemon!1384
2024-12-16 23:50:04 +00:00
VeraxielandPolymeta 1c528a909c Updated recipes for Scope Lens, Wide Lens, and Zoom Lens. Updated spawns.... 2024-12-16 23:50:04 +00:00
amo 1083e770d0 add player-specific packet molang methods for snowstorm particles & animations 2024-12-16 12:43:15 +00:00
Paul 920f3f114b Merge remote-tracking branch 'origin/main' 2024-12-16 21:08:27 +10:00
Hiroku 9ca5d12f84 Merge branch 'FixInBattleFlightFidgeting' into 'main'
FixInBattleFlightFidgeting

See merge request cable-mc/cobblemon!1383
2024-12-16 09:41:22 +00:00
Hiroku cc9bb528a8 Merge branch 'npc-hitbox' into 'main'
Fixed npcs not being able to take custom hitbox properties

See merge request cable-mc/cobblemon!1381
2024-12-16 09:40:46 +00:00
Paul 1cbd00691f Merge remote-tracking branch 'origin/main' 2024-12-16 19:05:10 +10:00
JazzMcNade f4c847fdd5 Replaced isGrounded with the more reliable isAirborne. Prevented pokemon from currently flying from receiving a raft. 2024-12-16 01:04:46 -06:00
Conan ec6e1403e7 Fixed npcs not being able to take custom hitbox properties 2024-12-16 05:24:26 +01:00
Hiroku 10a4a03a8b Merge branch 'close-battle-gui-with-mouse' into 'main'
Fix battle GUI not closing with mouse keybind

Closes #1093

See merge request cable-mc/cobblemon!1380
2024-12-16 03:06:46 +00:00
lionandHiroku e0a86f8794 Fix battle GUI not closing with mouse keybind 2024-12-16 03:06:45 +00:00
Paul 767e024ec4 Debug logging of pokemon entity ticking 2024-12-16 09:55:45 +10:00
Polymeta c8b0f36049 Merge branch 'bugfixes-apion' into 'main'
Fixes #1182

Closes #1182

See merge request cable-mc/cobblemon!1373
2024-12-15 18:25:02 +00:00
ApionandPolymeta be2a0be806 Fixes #1182 2024-12-15 18:25:02 +00:00
Paul ba4d42ccf6 Try tweaking spawn direction handling 2024-12-15 23:04:08 +10:00
Paul 5545d3498f Include 2 more variables in clamping of rotations 2024-12-15 20:53:50 +10:00
Hiroku 641bd7ebaa Merge branch 'advancing' into 'main'
1.6 Advancement Reworks

See merge request cable-mc/cobblemon!1374
2024-12-15 09:16:28 +00:00
dhi_holoandHiroku 234c4fa0d4 1.6 Advancement Reworks 2024-12-15 09:16:28 +00:00
Hiroku 3dfda71ed5 Merge branch 'AbilityPatchCapsuleRefactor' into 'main'
AbilityPatchCapsuleRefactor

See merge request cable-mc/cobblemon!1377
2024-12-15 09:08:05 +00:00
Hiroku 65ee6de93f Merge branch 'chest-boat-interact' into 'main'
moved changes to chest boat (i'm dumb)

Closes #1214

See merge request cable-mc/cobblemon!1379
2024-12-15 09:07:48 +00:00
Paul be88b727bc Added useFixedRandom to pool party provider, added randomizePartyOrder to NPC classes and presets for randomly choosing lead battle pokemon 2024-12-15 18:04:04 +10:00
luke a69fc462ee moved changes to chest boat (i'm dumb) 2024-12-15 00:38:08 -07:00
Hiroku 7d5c30d27c Merge branch 'shift-click-interact' into 'main'
Changed distance to use player attribute

Closes #1232

See merge request cable-mc/cobblemon!1378
2024-12-15 07:32:39 +00:00
Hiroku f7c9c9d4f4 Update AbilityTypeChanger.kt 2024-12-15 07:30:12 +00:00
luke 41bc14168a Changed distance to use player attribute 2024-12-15 00:24:38 -07:00
Paul 9540c38a72 Updated readme example for NPC 2024-12-15 16:58:31 +10:00
JazzMcNade 7a96ed7cd1 Refactored queryPossible() as to not to require explicit Priority values 2024-12-15 00:45:51 -06:00
Hiroku 677adc8d2f Merge branch 'starter-selection-cry' into 'main'
Play cry when Pokémon is clicked on the starter selection screen

See merge request cable-mc/cobblemon!1362
2024-12-15 06:25:29 +00:00
lionandHiroku a99b1dfc6c Play cry when Pokémon is clicked on the starter selection screen 2024-12-15 06:25:29 +00:00
Hiroku 4a718ad0f6 Merge branch 'dex-update-event' into 'main'
Dex Data Updated Event

See merge request cable-mc/cobblemon!1353
2024-12-15 05:27:08 +00:00
Paul ddd417d458 Added player to PokedexDataChangedEvent's flow context 2024-12-15 15:19:43 +10:00
Paul 10a12a897e Merge remote-tracking branch 'origin/main' into dex-update-event 2024-12-15 15:15:48 +10:00
Paul 9fce99ed73 Improved dex event, added dex update flow, expanded dex molang and added q.player.pokedex 2024-12-15 15:15:13 +10:00
Hiroku c35f60dd5d Merge branch 'AbilitiesFixesRedux' into 'main'
AbilitiesFixesRedux

Closes #1245

See merge request cable-mc/cobblemon!1376
2024-12-15 03:11:07 +00:00
JazzMcNade 54e5a5e819 Fixed single abilities mons always evolving into the hidden ability. Fixed ability capsule / patch not being able to revert abilities. 2024-12-14 20:35:23 -06:00
Test 79ae35ea9e Merge branch 'n-p-c' into 'main'
fix npc scaling + eye height, update edit interface

See merge request cable-mc/cobblemon!1375
2024-12-15 02:17:45 +00:00
Test 58f85e6d0d fix npc scaling + eye height, update edit interface 2024-12-15 02:17:45 +00:00
Polymeta 71bfdf41f4 Merge branch 'the-else-strikes-back' into 'main'
Fix Feebas spawning

Closes #1187

See merge request cable-mc/cobblemon!1365
2024-12-15 01:13:26 +00:00
JordanandPolymeta 9976965673 Fix Feebas spawning 2024-12-15 01:13:26 +00:00
Hiroku 098df1a5a6 Merge branch 'dex-travelling-dimensions' into 'main'
Fix Pokédex screen getting stuck when changing dimensions or opening the battle GUI

See merge request cable-mc/cobblemon!1370
2024-12-15 01:09:47 +00:00
Guilherme PereiraandHiroku f49f34efa3 Fix Pokédex screen getting stuck when changing dimensions or opening the battle GUI 2024-12-15 01:09:47 +00:00
Hiroku eac19929c4 Merge branch 'fix-dex-animations-not-playing' into 'main'
Fix animations not playing on Pokédex

See merge request cable-mc/cobblemon!1355
2024-12-15 00:43:09 +00:00
Guilherme PereiraandHiroku 59cced5b2c Fix animations not playing on Pokédex 2024-12-15 00:43:08 +00:00
Apion f07707221f Merge branch 'implement_pokemon' into 'main'
Pokémon fixes and tweaks

Closes #1230 and #1137

See merge request cable-mc/cobblemon!1371
2024-12-14 23:57:34 +00:00
PolymetaandApion 89b89592ab Pokémon fixes and tweaks 2024-12-14 23:57:33 +00:00
Hiroku cdeb977769 Update DexInformationChangedEvent.kt 2024-12-14 23:55:43 +00:00
Gustavo Felippi PuerariandWeblate 78192c43a7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 33.6% (2148 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-14 18:41:41 +00:00
Paul a3987b433c Merge remote-tracking branch 'origin/main' 2024-12-14 22:19:51 +10:00
Paul 99de91bd7e Added optional level property to pool party providers for using molang to force a level value, closes #1244 2024-12-14 22:19:39 +10:00
Paul 4b292b1241 Less zealous on the warning logging 2024-12-14 22:16:07 +10:00
Hiroku 1e6e4d8c5f Merge branch 'moe-eats-bugs' into 'main'
Added ignore checks to prevent passive healing/revival when config values are 0

Closes #875

See merge request cable-mc/cobblemon!1372
2024-12-14 11:41:35 +00:00
MoeBoy76 9a61c3471b Added ignore checks to prevent passive healing/revival when config values are 0 2024-12-14 22:12:08 +11:00
Paul 77f7439853 Fixed brewing on neoforged 2024-12-14 14:51:01 +10:00
Segfault Guy 439161c180 Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-12-13 23:39:22 -05:00
Paul e9718b7e8b Merge remote-tracking branch 'origin/main' 2024-12-14 14:29:28 +10:00
Hiroku 4cadd4e20f Merge branch 'fix/watchdog' into 'main'
Watchdog: Possible fix for watchdog crashing

See merge request cable-mc/cobblemon!1368
2024-12-14 04:26:24 +00:00
Hiroku 17a3d86324 Update PokemonEntity.kt 2024-12-14 04:25:19 +00:00
Hiroku 48653073f5 if ( 2024-12-14 04:21:49 +00:00
Nick 82c7c03e28 Initial tests for watchdog fix 2024-12-13 20:18:13 -08:00
Nick 2d7f3257d1 Merge branch 'hiro-fix' into 'main'
I fix bugs too

Closes #1212, #1222, and #1228

See merge request cable-mc/cobblemon!1367
2024-12-14 04:16:35 +00:00
HirokuandNick bc7b4f94c2 I fix bugs too 2024-12-14 04:16:35 +00:00
Paul 7a9e9d7ced Fixed battles being startable while pokemon are busy, closes #1212 2024-12-14 13:52:19 +10:00
Paul 0f85ece16f Fixed cry sound effects playing twice for specific cases, closes #1222 2024-12-14 13:36:53 +10:00
Paul c4656e1a4e Fixed cubone alola bias not being visible, closes #1228 2024-12-14 12:57:17 +10:00
Paul 0c48a318c5 Added /runmolangscript, updated molang version 2024-12-14 12:22:25 +10:00
Paul dab89a9f8c Merge remote-tracking branch 'origin/main' 2024-12-14 11:05:55 +10:00
Paul 53fd2dba2d Fixed flows double-registering then triple-registering then quadruple-registering then- 2024-12-14 11:05:48 +10:00
Polymeta a5b15c6127 Merge branch 'more-items-tooltips' into 'main'
Add tooltips to many items

See merge request cable-mc/cobblemon!1346
2024-12-14 00:48:11 +00:00
Guilherme PereiraandPolymeta 174fb59bbb Add tooltips to many items 2024-12-14 00:48:11 +00:00
Paul 2f8bd44938 Added q.set_query for assigning new query function values, closes #1240 2024-12-14 10:36:53 +10:00
Paul 9d58c7126e Fixed set_npc_variable not initializing NPC data properly 2024-12-14 10:12:50 +10:00
Hiroku 2afd722125 Incl default return for get_npc_variable when no data exists for the NPC yet 2024-12-14 00:03:25 +00:00
Polymeta c9cfe489d6 Merge branch 'EV-Berry-Lang-fixes' into 'main'
Fixed lang files for EV lowering berries to actually be correct

See merge request cable-mc/cobblemon!1364
2024-12-13 11:23:29 +00:00
Plastered_Crab 4ee029fa54 Fixed lang files for EV lowering berries to actually be correct 2024-12-12 09:41:17 -08:00
TeggyandWeblate e2ebb32708 Translated using Weblate (Spanish)
Currently translated at 87.6% (5601 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-12-11 15:53:06 +00:00
Polymeta 5b0a221ade Merge branch 'RaftFixes' into 'main'
Fixed reading speciesdata instead of formdata. Fixed rafts deploying on...

See merge request cable-mc/cobblemon!1359
2024-12-11 08:14:41 +00:00
JazzMcNadeandPolymeta af23b82ce5 Fixed reading speciesdata instead of formdata. Fixed rafts deploying on... 2024-12-11 08:14:41 +00:00
Segfault Guy b0466447cc Temp fix for missing form langs. 2024-12-10 21:59:39 -05:00
Zack the GhastandWeblate 727ff96ff8 Translated using Weblate (Portuguese (Portugal))
Currently translated at 28.9% (1851 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-12-10 12:41:43 +00:00
Gustavo Felippi PuerariandWeblate 9307f957b7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 32.6% (2089 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-10 12:41:43 +00:00
TeggyandWeblate d48978f6a4 Translated using Weblate (Spanish)
Currently translated at 86.5% (5531 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-12-10 12:41:42 +00:00
amo d1a8171079 resolve threads 2024-12-09 23:57:38 +00:00
amo d4b673ea38 Merge branch 'main' into dex-update-event 2024-12-09 23:54:08 +00:00
Hiroku 36e78a5af2 Merge branch 'fix-dex-quiet-cries' into 'main'
Fix quiet cries in the Pokédex

See merge request cable-mc/cobblemon!1354
2024-12-07 22:38:12 +00:00
Guilherme PereiraandHiroku 55621b01b7 Fix quiet cries in the Pokédex 2024-12-07 22:38:12 +00:00
Paul b828fe2b3a Merge remote-tracking branch 'origin/main' 2024-12-07 20:59:45 +10:00
Paul b7b10151e1 Added get_npc_variable and set_npc_variable to player functions for convenience, updated molang for flexibility with query struct nested assignments 2024-12-07 20:59:33 +10:00
amo de21b7c402 forgot me loighter 2024-12-07 04:44:27 +00:00
amo 10fe3c4362 🍋‍🟩 Chore: Add Dex data update event 2024-12-07 04:40:50 +00:00
Gustavo Felippi PuerariandWeblate aca1433595 Translated using Weblate (Portuguese (Brazil))
Currently translated at 30.8% (1969 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-07 03:41:43 +00:00
TeggyandWeblate 082c382179 Translated using Weblate (Spanish)
Currently translated at 80.4% (5140 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-12-07 03:41:42 +00:00
Test cac6ed843a Merge branch 'sterr/bugfixes' into 'main'
Adjusted portrait space detection in the Pokedex to prevent overlap

Closes #1055

See merge request cable-mc/cobblemon!1348
2024-12-06 18:32:20 +00:00
SterrezoandTest 8f5f40c360 Adjusted portrait space detection in the Pokedex to prevent overlap 2024-12-06 18:32:19 +00:00
Hiroku 0e586b4f38 Merge branch 'fix/ivs' into 'main'
Rework copy on properties, just clone fields rather than serialize + deserialize JSON

See merge request cable-mc/cobblemon!1344
2024-12-06 12:38:01 +00:00
Paul 62dd487448 Removed platform independent JSON datapack loading because Fabric has fixed the bug, closes #1184 2024-12-06 20:06:50 +10:00
Nick 04ecd9189c It would seem a particular build step was forgotten 2024-12-05 21:37:34 -08:00
Nick 55be22e942 Revert previous change, update stats differently instead 2024-12-05 21:29:13 -08:00
Hiroku f2e1b3dab4 Merge branch 'pokeedit-hidden-ability-false' into 'main'
Revert Pokémon ability to normal when hiddenAbility is false

See merge request cable-mc/cobblemon!1351
2024-12-06 00:51:21 +00:00
Paul 66f98ebf12 Added v.npc for on_player_wins and on_player_loses script hooks, v.npc to on_defeat and on_victory hooks 2024-12-05 20:43:04 +10:00
Paul c1842e42b0 Fixed run_molang script hooks not running multi-expressions, closes #1224 2024-12-05 19:14:49 +10:00
Hiroku e6c2f241d4 Merge branch 'MoreDynamicRafts' into 'main'
MoreDynamicRafts

See merge request cable-mc/cobblemon!1347
2024-12-05 08:39:13 +00:00
Segfault Guy c2d85a0cdf Battle performance, bugs, and PokemonEntity fixes. 2024-12-05 00:22:20 -05:00
JazzMcNade 0f9c282e1f Merge branch 'main' into MoreDynamicRafts 2024-12-04 21:23:45 -06:00
JazzMcNade 7bd5d77b60 Fixed naming conventions, removed some unnecessary variables. 2024-12-04 21:22:35 -06:00
Guilherme Pereira f7b4d4e65a add changelog of when hiddenability=false on pokespawn and pokeedit commands 2024-12-04 22:23:28 -03:00
Guilherme Pereira e78f403198 set pokemon ability to normal when property is false 2024-12-04 21:43:07 -03:00
Test 4ca91cc8d8 Merge branch 'pokeedit-nickname-completion' into 'main'
Add nickname completion suggestion for pokeedit and pokespawn commands

See merge request cable-mc/cobblemon!1350
2024-12-05 00:20:08 +00:00
Test 1518181f6b Merge branch 'sound' into 'main'
Move sounds + Pokedex volume adjustments + missing sound fixes

See merge request cable-mc/cobblemon!1341
2024-12-05 00:14:06 +00:00
Hiroku b915237c8d Merge branch 'more-npc-dakka' into 'main'
Even more npc dakka

See merge request cable-mc/cobblemon!1330
2024-12-04 21:52:38 +00:00
Guilherme Pereira bb41a72067 add nickname completion suggestion for properties argument type 2024-12-04 16:29:36 -03:00
Paul fbb8492c75 Added ScriptPartyProvider 2024-12-04 22:36:17 +10:00
Paul c07aef04b1 Merge remote-tracking branch 'origin/main' into more-npc-dakka 2024-12-04 22:05:11 +10:00
Paul 6ff4befb04 Possible fix for tick watchdog hang 2024-12-04 22:00:56 +10:00
Paul a858d4f532 Use emptyList default rather than null for party provider player list, update doco, corrected LookInDirectionTask's extra start conditions 2024-12-04 21:13:38 +10:00
Hiroku 28fc273b26 Merge branch 'gimmi_tower_typo_fix' into 'main'
Fixing something i found in the processor lists

See merge request cable-mc/cobblemon!1345
2024-12-04 10:47:14 +00:00
JazzMcNade fc89757a09 Tab spacing 2024-12-04 01:16:00 -06:00
JazzMcNade 243c9abfd1 Rafts can now can (un)deploy upon touching water or a solid surface. 2024-12-04 01:11:02 -06:00
Weblate 7cea5ad69e Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/
2024-12-04 00:41:50 +00:00
Zack the GhastandWeblate 0b9b5ac306 Translated using Weblate (Portuguese (Portugal))
Currently translated at 28.8% (1845 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-12-04 00:41:46 +00:00
Gustavo Felippi PuerariandWeblate 8941f3079b Translated using Weblate (Portuguese (Brazil))
Currently translated at 29.1% (1866 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-12-04 00:41:44 +00:00
Alexis SalgueiroandWeblate e9a0815ca6 Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-12-04 00:41:41 +00:00
Slippy b871645e9e Fixing something i found in the processor lists 2024-12-03 11:23:40 -06:00
Hiroku cec0ee04e0 Merge branch 'ability-patch-fix' into 'main'
Ability Patch fix

See merge request cable-mc/cobblemon!1342
2024-12-03 11:41:07 +00:00
Conan 069bc91aa1 Added fix to changelog 2024-12-03 12:39:54 +01:00
Hiroku 692a1bd6ba Merge branch 'stat-sanity' into 'main'
Make Stats#getStat use actual sane checking logic

See merge request cable-mc/cobblemon!1343
2024-12-03 11:22:35 +00:00
Paul c79916d8a0 More handy NPC presets, add player context to dynamic party molang environments, separated applied aspects from variation aspects for API 2024-12-03 21:20:31 +10:00
Nick d503d4a1eb Rework copy on properties, just clone fields rather than serialize + deserialize JSON 2024-12-02 19:10:30 -08:00
amo 3d877496b3 🍋‍🟩 Chore: why was it ever any other way 2024-12-03 02:18:33 +00:00
Conan 1e4964d80c Fixed an issue where Pokémon with their hidden ability couldn't change back to their original abilities 2024-12-02 13:41:01 +01:00
Paul a0f75dd090 Added is_chunk_loaded_at molang to level, added deeper support to json -> component deserialization 2024-12-02 09:46:52 +10:00
Sterrezo 5eceaa849c Quick fix to Mud Sport particles 2024-12-01 16:12:53 +01:00
Sterrezo 0e0233993a Merge branch 'main' into sound 2024-12-01 15:34:51 +01:00
Sterrezo 56ed5a6412 Added a sound to Kinesis 2024-12-01 15:30:47 +01:00
Hiroku 92ecaa66fa Merge branch 'power-items-tooltips' into 'main'
Fixes power items tooltips

See merge request cable-mc/cobblemon!1340
2024-12-01 09:46:08 +00:00
Guilherme Pereira 4d3e6400ab fixes power items tooltips 2024-12-01 05:30:46 -03:00
Paul f2e5ecef66 Conflicts begone 2024-12-01 17:00:03 +10:00
Paul ad9e85923a Merge remote-tracking branch 'origin/main' into more-npc-dakka
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
2024-12-01 16:57:06 +10:00
Paul 60d0c490dd Critical typo correction 2024-12-01 12:23:23 +10:00
Paul bf461297b2 Corrected multiple little inaccuracies around molang and flows 2024-12-01 12:09:11 +10:00
Hiroku 3ec89cd84e Merge branch 'beast-rod-line-fix' into 'main'
Fix fishing line color for beast rod

See merge request cable-mc/cobblemon!1339
2024-12-01 01:50:25 +00:00
Hiroku 6452521434 Merge branch 'held-items-tooltips' into 'main'
Held items, evolutions items and candies tooltips

See merge request cable-mc/cobblemon!1318
2024-12-01 01:39:30 +00:00
Guilherme PereiraandHiroku 5cbf961ac2 Held items, evolutions items and candies tooltips 2024-12-01 01:39:30 +00:00
Hiroku 6b473cffa3 Merge branch 'dex' into 'main'
refactor pokedex item model registration, update Pokedex rendering

See merge request cable-mc/cobblemon!1323
2024-12-01 01:38:41 +00:00
Nick f353548f9e Merge branch 'TheRaftShow' into 'main'
Battle Rafts

See merge request cable-mc/cobblemon!1338
2024-12-01 01:02:38 +00:00
JazzMcNadeandNick bba995f3d2 Battle Rafts 2024-12-01 01:02:38 +00:00
Sterrezo 5965d5a81b Psychiiiiiiic 2024-12-01 01:58:23 +01:00
Sterrezo 4e02ca310d Added sounds for Ember, fixed Ember missing an impact and corrected Psychic's timing again 2024-12-01 00:44:35 +01:00
Sterrezo 3260271d3c Adjusted Psychic 2024-11-30 23:58:20 +01:00
Sterrezo a77863adab Implemented sounds for new move particles 2024-11-30 18:07:30 +01:00
Sterrezo 455cfeb894 Missing sound fixes for particles 2024-11-30 17:29:42 +01:00
Plastered_Crab 46266c08ac Fix fishing line color for beast rod 2024-11-29 21:40:47 -08:00
Nick 19aa45e0af Merge branch 'bugfixes' into 'main'
Fishing bugfixes

See merge request cable-mc/cobblemon!1337
2024-11-30 03:26:06 +00:00
Nick 0fe8ebd008 Merge branch 'Offhand-bait-fixes' into 'main'
Fix offhand bait being applied

See merge request cable-mc/cobblemon!1336
2024-11-30 03:19:34 +00:00
Sterrezo 3e393546a2 Fishing Pokemon now uses up durability 2024-11-30 01:45:13 +01:00
Plastered_Crab e5995a5491 Fix offhand bait being applied
It was being applied still even when that bait was already on the bobber.
2024-11-29 16:31:25 -08:00
Sterrezo 7de083bf4f Fixed Fishermen selling 3 Pokerod smithing templates and capped max trades 2024-11-29 23:34:39 +01:00
Test 5f7451c284 rm unused files 2024-11-29 19:13:17 +00:00
Sterrezo fd3c614c2c Pokedex sound balancing
why did mojang hardcode this
2024-11-29 14:54:29 +01:00
Zack the GhastandWeblate fe48da6277 Translated using Weblate (Portuguese (Portugal))
Currently translated at 27.3% (1750 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-11-29 09:15:34 +00:00
MiaandWeblate 12c9c1c295 Translated using Weblate (German)
Currently translated at 88.8% (5679 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-11-29 09:15:33 +00:00
Test 454c2c60ab merge from main 2024-11-28 17:35:37 -05:00
Test c581673ef1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into dex
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/pokedex/PokedexGUI.kt
2024-11-28 17:19:53 -05:00
Test 09e29137fc check for view counter block in packet handler 2024-11-28 17:04:48 -05:00
Test fd1e5ef421 split lectern block entity into reuseable class 2024-11-28 16:38:39 -05:00
Test 8de05006f4 update dex rendering for player and blockEntities 2024-11-28 11:15:15 -05:00
Hiroku 7188978a66 Merge branch 'sound' into 'main'
Sounds for candy items + missing sound fixes + cleanup

See merge request cable-mc/cobblemon!1334
2024-11-28 11:08:28 +00:00
Hiroku f60fd26cbf Merge branch 'Lure_ball_tooltip_fix' into 'main'
Add correct Lure Ball tooltip now that fishing works :D

See merge request cable-mc/cobblemon!1335
2024-11-28 04:39:32 +00:00
Hiroku 3ba59d2165 Merge branch 'pokerod-durability-buff' into 'main'
Increase durability of Pokerods to be 256 instead of 64

See merge request cable-mc/cobblemon!1333
2024-11-28 04:24:44 +00:00
Plastered_Crab cd80598857 Add correct Lure Ball tooltip now that fishing works :D 2024-11-27 17:55:04 -08:00
Sterrezo 0978febaba Update CHANGELOG.md 2024-11-28 00:25:25 +01:00
Sterrezo bb67629fa5 Fixed Quick Attack and Paralysis missing sounds 2024-11-28 00:16:24 +01:00
Sterrezo d21039953f Update quickattack.json 2024-11-27 23:25:13 +01:00
Sterrezo 682f931f0f sounds.json fixes and duplicate asset removal 2024-11-27 23:16:00 +01:00
Plastered_Crab 3796997a12 Increase durability of Pokerods to be 256 instead of 64 2024-11-27 12:55:01 -08:00
Sterrezo b4cf49e1a8 Added a sound for using candy items
Closes a closed issue that requested sounds for candy items
2024-11-27 19:05:42 +01:00
Hiroku 2820989586 Merge branch 'ihatebugtypes' into 'main'
Ihatebugtypes

Closes #1174, #1180, and #1183

See merge request cable-mc/cobblemon!1313
2024-11-27 11:44:53 +00:00
Hiroku d37f6bc5a4 Merge branch 'pumpkins-can-move' into 'main'
re-added Pumpkaboo's moves

Closes #1202

See merge request cable-mc/cobblemon!1332
2024-11-27 11:44:23 +00:00
Hiroku 90d7fc3c2f Merge branch 'sterr/subtitles' into 'main'
Generic subtitles + bugfix

Closes #1200

See merge request cable-mc/cobblemon!1331
2024-11-27 11:44:03 +00:00
MoeBoy76 e2779c55f2 re-added Pumpkaboo's moves 2024-11-27 11:46:32 +11:00
Segfault Guy 349b4c28cc Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-11-26 13:49:07 -05:00
Sterrezo 7f2540a48f Added generic subtitles to block sounds 2024-11-26 18:02:22 +01:00
Sterrezo 367db9a368 Corrected subtitles for successful capture
Closes #1200
2024-11-26 17:53:16 +01:00
Zack the GhastandWeblate 7471b336be Translated using Weblate (Portuguese (Portugal))
Currently translated at 26.9% (1720 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-11-26 12:15:28 +00:00
Paul 4f3eb7e4ba Event flows merged in and used for a few battle-related NPC presets, heaps more molang hooks 2024-11-26 21:57:55 +10:00
Hiroku c95f4cb9ad Merge branch 'implement_pokemon' into 'main'
Several fixes to some pokemon and redo of Magikarp jump forms to fit standards

Closes #1137

See merge request cable-mc/cobblemon!1329
2024-11-26 11:30:17 +00:00
Frank The FarmerandHiroku c0ccefd9b4 Several fixes to some pokemon and redo of Magikarp jump forms to fit standards 2024-11-26 11:30:17 +00:00
Nick f45a1681fa Merge branch 'pokerod-tooltip-changes' into 'main'
Add new tooltips for pokerods to show players how to add bait

See merge request cable-mc/cobblemon!1328
2024-11-25 21:09:40 +00:00
Plastered_Crab 12c820313a Add lang files for adding and removing bait tooltips 2024-11-25 13:01:28 -08:00
Nick e6b287434b Merge branch 'off-hand-fishing-bait-changes' into 'main'
Changes to how offhand bait is applied to rod

See merge request cable-mc/cobblemon!1327
2024-11-25 20:13:38 +00:00
Nick d39ee60158 Merge branch 'lucky-sea-rate-changes' into 'main'
Alter Luck of the Sea spawn bucket rates

See merge request cable-mc/cobblemon!1326
2024-11-25 20:12:05 +00:00
Plastered_Crab d405ede256 Changes to how offhand bait is applied to rod
- only 1 bait from off hand is applied
- if bait is already on the rod when applying from offhand, bait is dropped from rod before applying bait from offhand
2024-11-25 11:29:19 -08:00
Nick bbaf4332c6 Merge branch 'jumping-ancient-balls' into 'main'
Ancient Pokeball particles and animations.

See merge request cable-mc/cobblemon!1324
2024-11-25 19:20:20 +00:00
TyzillionandNick 954e690a20 Ancient Pokeball particles and animations. 2024-11-25 19:20:20 +00:00
Nick 0dda070c4c Merge branch 'sound' into 'main'
Poke Ball sound overhaul

See merge request cable-mc/cobblemon!1319
2024-11-25 19:17:41 +00:00
Plastered_Crab e855e0f1ae Alter Luck of the Sea bucket rates 2024-11-25 10:13:36 -08:00
Hiroku 0515b3204b Merge branch 'improve-dex-search' into 'main'
Add functionality to search by species, ability, or drops in dex

Closes #1129

See merge request cable-mc/cobblemon!1320
2024-11-25 12:00:28 +00:00
TestandHiroku 049c0c308a Add functionality to search by species, ability, or drops in dex 2024-11-25 12:00:27 +00:00
Hiroku e424bd76b5 Merge branch 'sterr/npc-sound' into 'main'
Click sound in NPC dialogue now plays at the correct pitch

See merge request cable-mc/cobblemon!1325
2024-11-25 03:54:50 +00:00
Sterrezo 0443aa5109 Click sound now plays at the correct pitch. That float is in fact not the volume. 2024-11-25 04:45:44 +01:00
Paul f9a3d2dc0e Merge remote-tracking branch 'origin/event-flows' into more-npc-dakka
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/pokemon/PokemonCapturedEvent.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobblemonDataProvider.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokemon/PokemonEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/Pokemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2024-11-24 21:07:50 +10:00
Paul f817c18f4f Added NPC variable editing in NPC config menu 2024-11-24 21:02:38 +10:00
Test bd801b1517 refactor pokedex item model registration 2024-11-23 23:08:47 -05:00
Hiroku 0f17d30ece Merge branch 'Extreme-Tower-Makeover' into 'main'
Giving the Frozen Gimmi tower a new look & making it so Breezes sometimes...

See merge request cable-mc/cobblemon!1322
2024-11-23 10:39:20 +00:00
Hiroku f54aed0953 Merge branch 'particle-packet-expansion' into 'main'
[1.6] Expand SpawnSnowstormEntityPacket capabilties to support non-posable entities at a basic level

See merge request cable-mc/cobblemon!1309
2024-11-23 10:37:18 +00:00
Slippy 2b5a16d30f Giving the Frozen Gimmi tower a new look & making it so Breezes sometimes spawn on top instead of Evokers (Don't fall) 2024-11-23 02:11:03 -06:00
Slippy f1ed9b010e Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into 1.6-Bug-Testing 2024-11-23 01:58:17 -06:00
Paul e8dcd994be Fixed fish baits. Fished fix baits? Bished fix fates 2024-11-23 16:27:33 +10:00
Hiroku da371fd940 Merge branch 'fishingrod-crash-fix' into 'main'
Fix drowned crashing game when holding fishing rod

See merge request cable-mc/cobblemon!1321
2024-11-23 05:56:47 +00:00
mia 0cdeab0800 check livingEntity instanceof Player before casting 2024-11-22 20:14:29 -05:00
Sterrezo eca3c582aa Added sounds for Poke Balls landing on the ground during capture, updated sounds with new iterations 2024-11-22 14:32:54 +01:00
Sterrezo 8dd09a2e14 Merge branch 'main' into sound 2024-11-22 13:16:41 +01:00
Hiroku a96880b8ed Merge branch 'more-npc-dakka' into 'main'
Added panic AI for NPCs and much more molang hooking

See merge request cable-mc/cobblemon!1303
2024-11-22 10:15:33 +00:00
Hiroku 40de8b3ab9 Merge branch 'dex-fix' into 'main'
Fix dex search crash + add text cursor functionality

Closes #1185

See merge request cable-mc/cobblemon!1317
2024-11-22 08:59:37 +00:00
TestandHiroku 6eb814a7f0 Fix dex search crash + add text cursor functionality 2024-11-22 08:59:37 +00:00
Paul 2f2fd3b17e Fixed a couple of molang functions, added level support and fixes to NPC spawn files 2024-11-22 17:21:20 +10:00
Hiroku 4234f9be67 Merge branch 'fishing_particles' into 'main'
Fishing Particles

See merge request cable-mc/cobblemon!1316
2024-11-22 06:46:43 +00:00
Tyzillion f5766cdad4 Milliseconds? More like LITERAL TICKS. Lime disease... 2024-11-22 01:29:17 -05:00
Tyzillion 8c11ef9c00 System time? More like fishing time. Amiright? 2024-11-22 01:15:41 -05:00
Tyzillion 78ac8542f6 Added new particles to Poke fishing. 2024-11-22 00:51:55 -05:00
Segfault Guy 8c1d03359a Fix deserialization of IVs and EVs for PokemonProperties. 2024-11-21 22:19:01 -05:00
amo bb574e58d8 Merge branch 'main' into particle-packet-expansion 2024-11-22 00:51:23 +00:00
amo 5c3c7b4195 🍋‍🟩 Chore: Oops! v2 2024-11-22 00:50:37 +00:00
Hiroku ddec062e87 Merge branch 'experience-fix' into 'main'
Stops rewarding Pokemon EXP upon forfeiting NPC battles.

See merge request cable-mc/cobblemon!1278
2024-11-22 00:07:51 +00:00
Conan 3322f3ffb6 Changelog addition 2024-11-22 01:05:00 +01:00
Hiroku ab1ec11c26 Merge branch 'sterr/bugfixes' into 'main'
Sound and music bugfixes

Closes #1161 and #1172

See merge request cable-mc/cobblemon!1299
2024-11-21 23:49:19 +00:00
Hiroku 36aaa97029 Merge branch 'small-bugfixes' into 'main'
Small bugfixes

Closes #1099 and #1156

See merge request cable-mc/cobblemon!1284
2024-11-21 23:48:39 +00:00
Hiroku 6b3443fbd2 Merge branch 'berries-tooltips' into 'main'
Add tooltips for Pomeg, Tamato, Grepa, Kelpsy, Hondew and Qualot berries

See merge request cable-mc/cobblemon!1308
2024-11-21 23:46:56 +00:00
Hiroku 268a1ab311 Merge branch 'feed-display-case-from-underneath' into 'main'
Add support for feeding display case items from underneath

Closes #1177

See merge request cable-mc/cobblemon!1307
2024-11-21 23:42:45 +00:00
Paul 40957b6eac Added defaults to new PermissionValidator functions 2024-11-22 09:37:12 +10:00
Sterrezo d67be68b4b Changelog, updated break out animation (thanks Torch!), new break out sound for ancient Pokeballs 2024-11-22 00:29:52 +01:00
Hiroku f6f34a2b10 Merge branch 'npc-no-pain-no-gain' into 'main'
Added NPC properties: isInvulnerable, isLeashable, and allowProjectileHits. (no pain no gain)

Closes #1179

See merge request cable-mc/cobblemon!1306
2024-11-21 23:18:28 +00:00
Hiroku b2f71d305f Update SpawnSnowstormEntityParticleHandler.kt 2024-11-21 23:12:05 +00:00
Hiroku 51a8c31997 Merge branch 'npc-kill-command' into 'main'
Added a command to delete NPCs

See merge request cable-mc/cobblemon!1315
2024-11-21 23:10:40 +00:00
Conan 67ae5ff155 Added a command to delete NPCs 2024-11-22 00:06:07 +01:00
Hiroku 9e0cf03d8e Merge branch 'fix-mega-event-spelling-error' into 'main'
Fix spelling error in mega evolution event

See merge request cable-mc/cobblemon!1314
2024-11-21 22:13:25 +00:00
Conan 6a076d36f9 "isInvincible" != "isInvulnerable" 2024-11-21 20:28:54 +01:00
Sterrezo 4314a0b506 Major rework of Pokeball sound implementation and new sounds 2024-11-21 20:18:28 +01:00
amo 77490b5084 🍋‍🟩 Chore: Oops! 2024-11-21 14:15:44 +00:00
Segfault Guy 109eecd4fe Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-11-20 23:00:34 -05:00
Segfault Guy d6353aa2c7 Remedy for remedy. 2024-11-20 22:44:04 -05:00
Test fd0e741a25 update ui, fix renders in dex from clipping into background 2024-11-20 22:39:50 -05:00
Segfault Guy b0e0a06e9a Fix battle music race condition on forceBattle. 2024-11-20 21:00:16 -05:00
Conan 1c569ac5cf Added property descriptions 2024-11-20 17:01:14 +01:00
Guilherme Pereira 5ff5de8d14 re-add tooltip 'Cannot be eaten by holder' on another line for pomeg, tamato, grepa, kelpsy, hondew and qualot berries 2024-11-20 07:58:41 -03:00
Hiroku 881e1dc1a6 Merge branch 'hatenna-line-files-wrong-dex-numbers' into 'main'
Rename Hatenna line folders to match correct pokedex numbers

Closes #1173

See merge request cable-mc/cobblemon!1310
2024-11-20 09:20:37 +00:00
Hiroku 09b9fade87 Merge branch 'feature/fix-gui-mixin' into 'main'
fix gui mixin to prevent accidental 3rd person HUD disappearances

See merge request cable-mc/cobblemon!1312
2024-11-20 09:18:25 +00:00
Segfault Guy acd3b7cade Fix activation messages on ability suppressing moves. 2024-11-19 22:28:48 -05:00
Polymeta 482a0015bc fix gui mixin to prevent accidental 3rd person HUD disappearances
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-11-20 02:13:40 +00:00
Guilherme Pereira b881c96630 add changelog for feeding display case items from underneath fix 2024-11-19 20:09:25 -03:00
Hiroku 79cd1f5224 Merge branch 'init-events' into 'main'
emit(Unit), not just emit(), otherwise theres no data to post, duh

See merge request cable-mc/cobblemon!1311
2024-11-19 21:18:01 +00:00
Xander Forrest f369877c10 emit(Unit), not just emit(), otherwise theres no data to post, duh 2024-11-19 18:52:03 +00:00
Guilherme Pereira 1f1ff0e4fd rename hatenna, hattrem and hatterene folders to match correct pokedex numbers 2024-11-19 13:55:28 -03:00
amo 0a34e51e07 🍋‍🟩 Chore: Changelog 2024-11-19 15:51:45 +00:00
amo 741530eb43 🍋‍🟩 Feature: Expand SpawnSnowstormEntityParticleHandler to support non-bedrock entities at a very basic level 2024-11-19 15:44:02 +00:00
Guilherme Pereira 6c9c5a93f1 add tooltips for pomeg, tamato, grepa, kelpsy, hondew and qualot berries 2024-11-19 11:43:35 -03:00
Guilherme Pereira ddbf6d7345 add support for feeding display case items from underneath 2024-11-19 09:52:38 -03:00
Hiroku 0da09c767c Merge branch 'evolution_tweaks' into 'main'
Edited the obscuring evolution particles to better obscure pokemon based on hitbox volume and scale.

See merge request cable-mc/cobblemon!1305
2024-11-19 09:36:18 +00:00
Conan fb39ff8657 Added NPC properties: isInvulnerable, isLeashable, and allowProjectileHits. 2024-11-19 08:41:10 +01:00
Conan dd516c153e Added NPC properties: isInvulnerable, isLeashable, and allowProjectileHits. 2024-11-19 08:39:14 +01:00
Tyzillion 739d31a9ca I'M LOSING MY MIND... Anyways, more tweaks to the obscure particle. 2024-11-18 23:45:22 -05:00
Tyzillion a5675aedcb Tweaked the formula further to better account for middle stage evos. 2024-11-18 22:46:00 -05:00
Tyzillion 196bf42fb6 Tweaked obscuring molang formula to better obscure Pokemon based on hitbox volume and scale. 2024-11-18 22:02:34 -05:00
Test 1d01a2bf1f fix species name not being translated when scanned 2024-11-18 19:23:28 -05:00
Natchakot ChuchokjatupornandWeblate 948f299f8f Translated using Weblate (Thai)
Currently translated at 90.1% (5764 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-18 21:41:42 +00:00
Paul ce6087f368 Added panic AI for NPCs and much more molang hooking 2024-11-18 13:28:50 +10:00
mia f706dcda26 clarify ItemPropertiesMixin inject location 2024-11-17 20:45:59 -05:00
Segfault Guy 8e46a55cbd Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-11-17 19:12:41 -05:00
Hiroku d3ae4cd3e7 Merge branch '1.6-spawns' into 'main'
Updated spawn files. Edited ocean_monument preset. Edited is_lush, is_ocean,...

See merge request cable-mc/cobblemon!1293
2024-11-17 09:25:02 +00:00
Hiroku b41b496b80 Merge branch 'bugfix/dexo-fixo' into 'main'
Fixed dex errors caused by /giveallpokemon and other random catches & command permission

See merge request cable-mc/cobblemon!1301
2024-11-17 09:17:30 +00:00
Hiroku 9cd3ded705 Merge branch 'summary-updates' into 'main'
Summary updates

See merge request cable-mc/cobblemon!1300
2024-11-17 09:15:50 +00:00
TestandHiroku ca4b50d727 Summary updates 2024-11-17 09:15:50 +00:00
Paul f6bc3f662a PokedexCommand permission tweak 2024-11-17 13:23:07 +10:00
Paul 7ab621e5b9 Fixed dex errors caused by /giveallpokemon and other random catches 2024-11-17 13:22:55 +10:00
plastered_crab 4e63cb0bb3 Remove Tympole, Palpitoad, Seismitoad spawn pool world files 2024-11-16 18:15:07 -08:00
plastered_crab 671c7adb05 Tweak incorrect data for Magikarp and Spiritomb spawns 2024-11-16 18:13:14 -08:00
Sterrezo edbe539537 Merge branch 'main' into sterr/bugfixes 2024-11-17 03:05:56 +01:00
Sterrezo e20728faa0 Made owned shiny ambient sounds actually audible 2024-11-17 03:05:28 +01:00
Sterrezo 5a2f948acb Fixed music not playing when fishing or in npc battles
Doozy. Basically, using forceBattle from PokemonEntity.kt makes InitializeInstruction.kt send a packet with battle music before battleTheme is assigned in PlayerBattleActor.kt.
There's likely a more sophisticated way to fix this, but this works.
Closes #1172 and #1161
2024-11-17 03:04:00 +01:00
Hiroku 8a1faf3270 Merge branch 'apion-bugfix' into 'main'
Fix issue with evo progression not allowing 0.

See merge request cable-mc/cobblemon!1298
2024-11-16 22:55:55 +00:00
Hiroku d0b148a91a Merge branch 'cc-compat' into 'main'
Set cobblemon data version on genned chunks

See merge request cable-mc/cobblemon!1297
2024-11-16 22:52:51 +00:00
apion f6f88f5eef Revert "Added additional checks"
This reverts commit 3f36624ba7.
2024-11-16 16:19:48 -05:00
apion 3f36624ba7 Added additional checks 2024-11-16 15:22:08 -05:00
apion 7e256e8381 Fix issue with evo progression not allowing 0. 2024-11-16 12:24:59 -05:00
apion ad1aa9ad47 Licenses :( 2024-11-16 11:31:11 -05:00
apion b4e403a701 Removed unnecessary inject 2024-11-16 11:27:00 -05:00
apion 08557913d8 Set cobblemon data version on genned chunks 2024-11-16 11:22:42 -05:00
Hiroku 830c409a06 Merge branch 'non-pushable-npcs' into 'main'
Added a flag to prevent NPCs from being pushed.

See merge request cable-mc/cobblemon!1281
2024-11-16 12:59:34 +00:00
Hiroku 5e2ef6b5fb Merge branch 'main' into 'non-pushable-npcs'
# Conflicts:
#   common/src/main/kotlin/com/cobblemon/mod/common/util/DataKeys.kt
2024-11-16 12:59:16 +00:00
Conan a05f4edc82 Added a flag to prevent NPCs from being pushed (part 3). 2024-11-16 12:28:07 +01:00
Paul 97a3dc4d61 Treat NPC skill as a proper optional property on the entity instead of duplicating class data 2024-11-16 14:22:40 +10:00
Hiroku 768789d998 Merge branch 'feature/small-fixes' into 'main'
no more caffeine for shouldered pokemon

Closes #1146 and #1162

See merge request cable-mc/cobblemon!1277
2024-11-16 04:14:48 +00:00
PolymetaandHiroku bfa58e9fb9 no more caffeine for shouldered pokemon 2024-11-16 04:14:48 +00:00
Hiroku 9a514477c5 Merge branch 'trading-display-names' into 'main'
Display correct usernames in the TradeGUI

Closes #1168

See merge request cable-mc/cobblemon!1294
2024-11-16 04:12:16 +00:00
Paul 7623452f4a Fixed spectating not being an option in interact wheel (lol) 2024-11-16 13:47:15 +10:00
Test 72635d0f2f genericize example names 2024-11-15 22:39:11 -05:00
Paul 34e581a470 Merge remote-tracking branch 'origin/main' 2024-11-16 13:09:28 +10:00
Paul 5444d67c21 Added heaps of documentation on brain AI stuff for NPCs 2024-11-16 13:09:09 +10:00
Sterrezo 4c8c0fd063 Shiny Pokemon now play the shiny sendout sound when breaking out of a Pokeball instead of the notification 2024-11-16 03:01:07 +01:00
Sterrezo 73209ab6b5 Shiny notification and owned ambient particles no longer play in spectator 2024-11-16 02:35:09 +01:00
Hiroku 539331bdc7 Merge branch 'bait-tooltip-fixes' into 'main'
Changed fishing bait to use a codec instead of nbt stuff. Fixed issue where...

See merge request cable-mc/cobblemon!1296
2024-11-15 22:37:26 +00:00
apion 0d0598d68c Changed fishing bait to use a codec instead of nbt stuff. Fixed issue where bait tooltips don't work on servers 2024-11-15 06:06:03 -05:00
Conan 08d621ca5e Display correct usernames in the TradeGUI 2024-11-15 00:03:41 +01:00
Plastered_Crab a1dcede488 Fix bug with spawn files 2024-11-14 12:43:10 -08:00
Plastered_Crab aaec9ea397 Merge remote-tracking branch 'origin/1.6-spawns' into 1.6-Release-Testing 2024-11-14 09:31:33 -08:00
mia 6dfb1323b7 cleanup if statement logic 2024-11-14 08:49:01 -05:00
mia 973e730b48 license + remove unused imports 2024-11-14 08:42:36 -05:00
Veraxiel 5011607415 Updated submerged and fishing spawns to work under overhangs. 2024-11-14 06:29:10 -05:00
Veraxiel 580b0f2ccf Updated spawn files. Edited ocean_monument preset. Edited is_lush, is_ocean, and is_shrubland tags. Fixed revival_herbs feature tag. Updated spawn writer. 2024-11-14 05:15:14 -05:00
Hiroku fcd3951815 Merge branch 'More-structure-adjustments' into 'main'
Making more changes to structures

See merge request cable-mc/cobblemon!1291
2024-11-14 09:02:25 +00:00
Hiroku 5caa6d5950 Merge branch 'ihatebugtypes' into 'main'
faint (kill) all bug types

Closes #1153 and #1157

See merge request cable-mc/cobblemon!1276
2024-11-14 08:57:42 +00:00
Segfault GuyandHiroku 352ac4e15d faint (kill) all bug types 2024-11-14 08:57:42 +00:00
Hiroku e6d35e709e Merge branch 'Myslippy-main-patch-53217' into 'main'
Update CHANGELOG.md

See merge request cable-mc/cobblemon!1292
2024-11-14 08:56:04 +00:00
Myslippy 83cfcdce43 Update CHANGELOG.md 2024-11-14 05:25:44 +00:00
Slippy 96ae28ea91 Making more changes to structures 2024-11-13 23:14:12 -06:00
Landon 062fd2451a Merge branch 'Cynthia-Test-NPC-Change' into 'main'
Cynthia NPC team update

See merge request cable-mc/cobblemon!1289
2024-11-14 02:27:44 +00:00
Landon 235de329ee Merge branch 'main' into 'main'
Switch tooltip rendering to check Hide Additional instead

See merge request cable-mc/cobblemon!1279
2024-11-14 02:27:03 +00:00
Landon aede012933 Merge branch 'Fishing_Bait_Changes' into 'main'
New Bait Effects + Karp jump aspect name fixes

See merge request cable-mc/cobblemon!1287
2024-11-14 02:24:19 +00:00
Landon 1613cd281d Merge branch 'Swappable_Rod_Bobbers' into 'main'
Pokerods can Swap bobbers now

See merge request cable-mc/cobblemon!1288
2024-11-14 02:22:20 +00:00
Landon 706fcc8ca4 Merge branch 'init-events' into 'main'
Add Initialisation Events for Sidemod Devs

See merge request cable-mc/cobblemon!1290
2024-11-14 02:21:18 +00:00
Xander Forrest 5568bb6a95 add two new initialisation events for sidemod devs to hook into
- pokemon properties initialised event
so people can register their CustomPokemonProperty(s) at the right time so they can take effect in things like NPCs - previously not an issue because PokemonProperties were only really parsed post server start

- cobblemon initialised event
generic event because we got rid of the Cobblemon server started event. nice for sidemods to hook into so they know when they can init stuff that depends on cobblemon stuff being initialised (for instance: grab species/load mons from config files)
2024-11-14 00:17:48 +00:00
Plastered_Crab d5f22e7394 Test Cynthia NPC has lvl 100 mons now with updated Spiritomb 2024-11-13 15:37:57 -08:00
Test 0dc8456623 fix symbols 2024-11-13 23:30:39 +00:00
Plastered_Crab f5228db99f - Fix Tooltips for bait
- Add lang-able Egg Group tooltips
- Updated Egg Group bait logic
2024-11-13 15:19:33 -08:00
Natchakot ChuchokjatupornandWeblate 5c075d7d29 Translated using Weblate (Thai)
Currently translated at 88.7% (5671 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-13 22:41:55 +00:00
Plastered_Crab de8ebc9fcb - Fix Tooltips for bait
- Add lang-able Egg Group tooltips
- Updated Egg Group bait logic
2024-11-13 11:06:54 -08:00
Apion 093e0f2811 Merge branch 'more-dfu-sad' into 'main'
Fixes for JSON Pokemon store

See merge request cable-mc/cobblemon!1285
2024-11-13 16:07:10 +00:00
Apion 1a782e4185 Fixes for JSON Pokemon store 2024-11-13 16:07:10 +00:00
Apion 2e054dd5e1 Merge branch 'lang-updates' into 'main'
Weblate translations

See merge request cable-mc/cobblemon!1286
2024-11-13 16:07:02 +00:00
Apion 5e47102c10 Weblate translations 2024-11-13 16:07:02 +00:00
Apion e56a7d5325 Merge branch 'move-effects' into 'main'
Added particles for some moves.

See merge request cable-mc/cobblemon!1283
2024-11-13 16:00:39 +00:00
TyzillionandApion 9b8261d23b Added particles for some moves. 2024-11-13 16:00:39 +00:00
Apion e1705056f2 Merge branch 'shiny-shimmering-splendid' into 'main'
🍋‍🟩 API Feature: Shiny chance event and player context

See merge request cable-mc/cobblemon!1274
2024-11-13 15:48:16 +00:00
BriarandApion 76db87d9a5 🍋‍🟩 API Feature: Shiny chance event and player context 2024-11-13 15:48:15 +00:00
mia bbb06677b9 fix: uncast rods (both pokerods and vanilla) appearing as cast when dual-wielding 2024-11-13 09:19:20 -05:00
mia 8a5279741d fix bobber line being drawn incorrectly sometimes (fixes #1099) 2024-11-13 09:18:30 -05:00
plastered_crab 780d9ece59 - Add bait for luring ElementalType and Egg Group
- Fix names for Jump Karps
- Alter langs and tooltips for new bait
2024-11-13 01:14:14 -08:00
Segfault Guy fc8b6fb54b Fix illusion not copying caught ball. 2024-11-12 22:09:36 -05:00
Weblate 854f02d34f Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/
2024-11-12 21:41:59 +00:00
Natchakot ChuchokjatupornandWeblate a3c3fa12e5 Translated using Weblate (Thai)
Currently translated at 87.1% (5567 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-12 21:41:53 +00:00
Alexis SalgueiroandWeblate 3527da02a6 Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-12 21:41:48 +00:00
MiaandWeblate 96f537fa27 Translated using Weblate (German)
Currently translated at 87.5% (5596 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-11-12 21:41:45 +00:00
mia 9e22b662a4 remove duplicate sand_attack sounds and re-add to particles (fixes #1156) 2024-11-12 15:23:22 -05:00
Conan d731bde915 Added a flag to prevent NPCs from being pushed (part 2). 2024-11-12 12:48:34 +01:00
Conan 6ecdf25821 Added a flag to prevent NPCs from being pushed. 2024-11-12 03:09:28 +01:00
Stampede 4b55783785 Switch tooltip rendering to check Hide Additional instead 2024-11-11 12:15:16 -06:00
Conan 77c3f12634 Stops rewarding Pokemon EXP upon forfeiting NPC battles. 2024-11-11 18:52:35 +01:00
Segfault Guy d13d3fb137 licenses? who cares. 2024-11-10 21:43:51 -05:00
Segfault Guy f436b4a738 Merge remote-tracking branch 'origin/main' into ihatebugtypes 2024-11-10 21:43:00 -05:00
Segfault Guy 9e1a1c957b Tweak scheduler functions to work with new TickRateManager changes. 2024-11-10 21:20:59 -05:00
Segfault Guy e04155094b Fix trade parties being mirrored. 2024-11-10 21:03:24 -05:00
Segfault Guy 188115bf15 Boost effects will only play if stat stages change. 2024-11-10 20:55:35 -05:00
Paul e3fca67d52 Fixed NPCs and other stuff not rendering 2024-11-11 11:09:16 +10:00
Hiroku 932cdaaad3 Merge branch 'updated-tags' into 'main'
More Tag Changes, but this time with Edits!

See merge request cable-mc/cobblemon!1273
2024-11-10 23:41:15 +00:00
Paul e3f9937e78 Merge remote-tracking branch 'origin/main' 2024-11-11 09:40:49 +10:00
Paul 5b46d04c27 Reduce impact of repeatedly searching for a pokemon in a PC 2024-11-11 09:40:39 +10:00
dhi_holo c23aeaba78 Merge branch 'main' into updated-tags 2024-11-11 09:16:01 +10:00
Hiroku ecff621084 Merge branch 'DexScannerXrayVisionBegone' into 'main'
DexScannerXrayVisionBegone

See merge request cable-mc/cobblemon!1275
2024-11-10 22:08:53 +00:00
Segfault Guy 1d99037005 casting sounds are started by the client on bobber spawn. please dont start them on the server. 2024-11-10 15:47:07 -05:00
JazzMcNade 83ce63325d Dex scanner now checks for block collision. 2024-11-10 13:34:30 -06:00
dhi_holo 4f33612bbb Merge branch 'main' into updated-tags 2024-11-10 20:49:23 +10:00
dhi_holo 4624faf63e More Tag Changes, but this time with Edits!
Noticed a couple structures weren't in their tags yet, very fast fixing (don't you love it when you get a branch merged to immediately notice something else that could've been in the MR? I sure do)
2024-11-10 20:46:31 +10:00
Hiroku 187674afb6 Merge branch 'implement_pokemon' into 'main'
Latest implement fixes/changes/additions

Closes #1137

See merge request cable-mc/cobblemon!1271
2024-11-10 10:39:29 +00:00
CarmendarandHiroku fe5cf5a7d8 Latest implement fixes/changes/additions 2024-11-10 10:39:28 +00:00
Hiroku 3b3219ba69 Merge branch 'one-tag' into 'main'
Create fishing_boat.json

See merge request cable-mc/cobblemon!1272
2024-11-10 10:38:44 +00:00
dhi_holo 0e98b07b7b Create fishing_boat.json
I spent too damn long messing up the structure ids for this
2024-11-10 20:19:33 +10:00
Apion 57d380e18f Merge branch 'HiddenAbilityEvolutionFix' into 'main'
Hidden Ability Evolution Fix

Closes #1149

See merge request cable-mc/cobblemon!1270
2024-11-10 04:21:33 +00:00
JazzMcNadeandApion 086cdcdbd1 Hidden Ability Evolution Fix 2024-11-10 04:21:32 +00:00
Apion 2b796f7e4c Merge branch 'npc-fixo' into 'main'
Allow simple NPC parties to be static, added autoHealParty property to NPC...

See merge request cable-mc/cobblemon!1266
2024-11-10 03:58:09 +00:00
HirokuandApion b7d1f9bb2d Allow simple NPC parties to be static, added autoHealParty property to NPC... 2024-11-10 03:58:09 +00:00
Hiroku ba0f0657b2 Merge branch 'particle-hotfix' into 'main'
Fix default behavior of EntityParticlesActionEffectKeyframe to prioritize the...

See merge request cable-mc/cobblemon!1263
2024-11-10 02:48:22 +00:00
apion 8f59ec871f Fixed compile issue 2024-11-09 21:21:40 -05:00
apion b3d4306165 Remove backward compat with old locator field in EntityParticlesActionEffectKeyframe 2024-11-09 21:17:46 -05:00
Hiroku 20ddab8722 Merge branch 'feature/minor-fixes' into 'main'
fix evs not updating client side

Closes #1152

See merge request cable-mc/cobblemon!1267
2024-11-10 01:26:10 +00:00
PolymetaandHiroku 5327ff54b5 fix evs not updating client side 2024-11-10 01:26:10 +00:00
Hiroku b5f8181118 Merge branch 'sterr/bugfixes' into 'main'
Shiny particle fixes

See merge request cable-mc/cobblemon!1269
2024-11-10 01:26:05 +00:00
Paul 64b164bfca Updated locator prefix to dodge convention issues 2024-11-10 11:22:42 +10:00
Hiroku 93cb0f40f3 Merge branch 'get-vivil-on-with-it' into 'main'
Egg Advancement code functional and fixed Aspect tracking.

See merge request cable-mc/cobblemon!1268
2024-11-10 01:19:53 +00:00
MoeBoy76 20a56b1ff0 Egg Advancement code functional and fixed Aspect tracking. 2024-11-10 12:03:32 +11:00
Sterrezo 97dd08c35d Fixes for shiny particles
Changed how shiny particles are played, fixing Illusion and switching in not playing them
2024-11-10 02:03:22 +01:00
Hiroku 25c64841fe Merge branch 'fix-molang' into 'main'
proposed fix for client-side is_wild

See merge request cable-mc/cobblemon!1236
2024-11-10 00:34:43 +00:00
Hiroku dc5f616c90 Merge branch 'feature/dex-descirptions' into 'main'
fix up some missing dex entries and order

Closes #1107

See merge request cable-mc/cobblemon!1249
2024-11-10 00:27:03 +00:00
PolymetaandHiroku ff9033f6c4 fix up some missing dex entries and order 2024-11-10 00:27:03 +00:00
Hiroku 9f937f6b3b Merge branch 'bugfix/genders-and-dex' into 'main'
Fixed client showing incorrect gender for genderless mons, fixed dex not...

Closes #1142 and #1139

See merge request cable-mc/cobblemon!1258
2024-11-10 00:26:16 +00:00
Hiroku c5c6bc340a Handle case of null entity so non-sent-out-pokemon don't pass the wild check 2024-11-10 00:26:03 +00:00
Hiroku 90c7e5ab61 Merge branch 'DontCrossThePokeRods' into 'main'
Iris Compatibility for PokeRods

Closes #1004

See merge request cable-mc/cobblemon!1265
2024-11-09 23:36:34 +00:00
Sterrezo b3028dc45d Removed pitch variation from fishing rod sounds, adjusted volumes 2024-11-10 00:29:34 +01:00
JazzMcNade f64b9e2fe7 Fixed PokeRod fishing lines connecting between players when Iris is used. 2024-11-09 17:23:11 -06:00
Sterrezo 1e7ffedd36 Merge branch 'main' into sound 2024-11-10 00:03:47 +01:00
Natchakot ChuchokjatupornandWeblate e9f58df359 Translated using Weblate (Thai)
Currently translated at 84.1% (5381 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-09 21:29:17 +00:00
Adam IdriciandWeblate 6885569f9e Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-09 21:29:15 +00:00
Alexis SalgueiroandWeblate 601927406c Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-09 21:29:15 +00:00
Test e4fab76f0b rm println 2024-11-09 08:12:59 -05:00
Test 5a7b186478 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon 2024-11-09 08:12:27 -05:00
Hiroku 79d30f4fa5 Merge branch 'cleanup-interfaces' into 'main'
Cleanup interfaces

See merge request cable-mc/cobblemon!1262
2024-11-09 09:59:32 +00:00
TestandHiroku 56dab6c18b Cleanup interfaces 2024-11-09 09:59:32 +00:00
Test 6546a5ae05 hide shiny icon if none registered 2024-11-08 21:37:14 -05:00
Test 57c243bd34 clean up scrolling UIs 2024-11-08 20:01:22 -05:00
Hiroku f2cd3fc435 Merge branch 'sound' into 'main'
Status sound updates

See merge request cable-mc/cobblemon!1261
2024-11-08 22:41:32 +00:00
SterrezoandHiroku 9b75b1fb93 Status sound updates 2024-11-08 22:41:32 +00:00
Polymeta 81f4b6e680 slightly tweaked boost and unboost pauses
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-11-08 22:05:25 +00:00
Sterrezo de783b6948 Volume adjustments to all status sounds 2024-11-08 17:28:34 +01:00
Sterrezo 53c6f707e6 Merge branch 'main' into sound 2024-11-08 17:08:27 +01:00
Sterrezo 23142c6ece Implemented burn status sound, fixed broken status sounds 2024-11-08 17:07:54 +01:00
Sterrezo 1fa3170355 Updated stat increase/decrease particles to use the final sounds 2024-11-08 16:40:32 +01:00
Hiroku 9025b7b825 Merge branch 'CommanderPassFix' into 'main'
Fix Dondozo/Tatsugiri Commander Interaction for Doubles

See merge request cable-mc/cobblemon!1260
2024-11-08 04:17:18 +00:00
JazzMcNade 1487ae1036 Pokemon with the "commanding" state now auto pass their turn. 2024-11-07 22:07:12 -06:00
Hiroku dab1240d19 Merge branch 'implement_pokemon' into 'main'
Couple additions & some fixes

Closes #1137

See merge request cable-mc/cobblemon!1256
2024-11-08 02:51:55 +00:00
CarmendarandHiroku feb6622762 Couple additions & some fixes 2024-11-08 02:51:55 +00:00
Natchakot ChuchokjatupornandWeblate 347b0bfa37 Translated using Weblate (Thai)
Currently translated at 81.4% (5206 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-07 23:47:02 +00:00
Alexis SalgueiroandWeblate efa63b105f Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-07 23:47:01 +00:00
Adam IdriciandWeblate 18d8c19df7 Translated using Weblate (French)
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-07 23:47:01 +00:00
Paul 3c4e1c59b1 Clarified some error logging now that abilities sync 2024-11-08 08:55:32 +10:00
Natchakot ChuchokjatupornandWeblate 8d7c92f30e Translated using Weblate (Thai)
Currently translated at 80.9% (5173 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-11-07 22:41:43 +00:00
Alexis SalgueiroandWeblate 4e7b7d8d59 Translated using Weblate (French)
Currently translated at 96.6% (6179 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-07 22:41:41 +00:00
Felipe Bermudes OrmeñoandWeblate 1213fc9145 Translated using Weblate (Spanish (Mexico))
Currently translated at 30.5% (1954 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-11-07 22:41:40 +00:00
Hiroku 3cd30681d7 Merge branch 'feature/fix-mixin-compat' into 'main'
exlude known fields and classes used by mixins into modelpart when deserializing models to prevent crashes

See merge request cable-mc/cobblemon!1259
2024-11-07 22:07:49 +00:00
Polymeta 308a4e9c06 introduce MixinCompatibilityExclusionStrategy to skip known fields and classes used by 3rd parties to prevent crashes when said 3rd parties are present with cobblemon
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-11-07 20:15:47 +00:00
Paul 34cc6da0a9 Oops I missed a thing 2024-11-07 22:13:18 +10:00
Paul 6f1b7edca4 Cleaned up Squirtle line, magikarp, Dragonair, Vaporeon pose handling for touching water, closes #1139 2024-11-07 22:04:25 +10:00
Paul fdc7a3d61a Fixed client showing incorrect gender for genderless mons, fixed dex not showing drops+abilities on servers, closes #1142 2024-11-07 19:19:01 +10:00
Paul 9798ba28ec Fixed deathloop that could occur with specific form configurations of gender ratios 2024-11-07 19:17:49 +10:00
Paul c8522488be Changelog deduplication 2024-11-07 19:11:25 +10:00
Hiroku f951e93875 Merge branch 'sound' into 'main'
Corrected the sound for owned shiny Pokemon particles

See merge request cable-mc/cobblemon!1257
2024-11-07 02:23:11 +00:00
Sterrezo d51c623168 Corrected the sound for owned shiny Pokemon particles
Reverted the volume to 1.0 because it's specified in the sounds.json
2024-11-07 01:57:55 +01:00
Paul fe57312d4f Merge remote-tracking branch 'origin/main' 2024-11-06 08:52:43 +10:00
Paul ee148954c0 Changelog squashing [skip-ci] 2024-11-06 08:52:37 +10:00
Hiroku 6ffc7d45c3 Merge branch 'evolution-message-fix' into 'main'
fix: post-evolution message uses correct names

See merge request cable-mc/cobblemon!1255
2024-11-05 22:51:55 +00:00
Hiroku a0301c85e8 Merge branch 'ihatebugtypes1.6part2' into 'main'
Ihatebugtypes1.6part2

Closes #1038, #1113, and #1114

See merge request cable-mc/cobblemon!1254
2024-11-05 22:51:22 +00:00
mia 6928b9a017 fix: post-evolution message uses correct names 2024-11-05 16:57:25 -05:00
Segfault Guy ce0d32a857 Fix status not updating for party pokemon during battle on infliciton. 2024-11-05 13:18:08 -05:00
Segfault Guy 717e861c1d Lingering aroma, aroma veil, stockpile lang fixes. 2024-11-05 13:13:07 -05:00
Segfault Guy 541dd1e284 Fix PVE interactions. 2024-11-05 12:51:09 -05:00
Paul f68384a505 Fixed duplication in changelog [skip-ci] 2024-11-05 18:58:40 +10:00
Hiroku f406e6da6b Merge branch 'validate-nickname-server-side' into 'main'
Implemented a simple server-side check for when changing Pokemon their...

Closes #1136

See merge request cable-mc/cobblemon!1238
2024-11-05 08:28:00 +00:00
Hiroku c75c5e4901 Merge branch 'implement_pokemon' into 'main'
added west sea forms & right claw forms for shellos line & clauncher line respectively

Closes #1137

See merge request cable-mc/cobblemon!1253
2024-11-05 08:26:59 +00:00
CarmendarandHiroku b4aedf9ec9 added west sea forms & right claw forms for shellos line & clauncher line respectively 2024-11-05 08:26:58 +00:00
Hiroku cba00fba13 Merge branch 'request_icons' into 'main'
Player Interaction Request Icons

Closes #1067, #1059, #1066, and #1065

See merge request cable-mc/cobblemon!1181
2024-11-05 07:52:28 +00:00
Hiroku 90403d111b Merge branch 'MultiBattleFlatLevelBattlingFix' into 'main'
MultiBattleFlatLevelBattlingFix

See merge request cable-mc/cobblemon!1252
2024-11-05 07:45:06 +00:00
Segfault Guy 47460ef884 Merge remote-tracking branch 'origin/main' into player_icons 2024-11-05 00:23:12 -05:00
Segfault Guy e48d44c6e6 Correcting overlooked code. 2024-11-05 00:22:31 -05:00
JazzMcNade 8e522e3dd2 Merge branch 'main' into MultiBattleFlatLevelBattlingFix 2024-11-04 22:49:13 -06:00
JazzMcNade d9e0429ff4 Fixed party cloning for multibattles when the flat level rule is active. 2024-11-04 22:43:46 -06:00
Hiroku bd35fc3c9a Merge branch 'implement_pokemon' into 'main'
a few tweaks and fixes

Closes #1137

See merge request cable-mc/cobblemon!1251
2024-11-05 03:12:00 +00:00
CarmendarandHiroku 80d882a437 a few tweaks and fixes 2024-11-05 03:12:00 +00:00
Hiroku 610f9dccc1 Merge branch 'npc-party-time' into 'main'
NPC party upgrades

See merge request cable-mc/cobblemon!1248
2024-11-05 00:07:23 +00:00
Paul bddb5b9f40 Removed excessive backcompat for NPC party 2024-11-05 09:59:19 +10:00
Hiroku 84fc94cf4b Merge branch 'Fishing-Boat-Fix' into 'main'
Fishing boat fix

See merge request cable-mc/cobblemon!1250
2024-11-04 22:45:40 +00:00
Conan e1186ebf2b Removed scope functions. 2024-11-04 22:56:47 +01:00
Slippy e56a778246 Adjusted structure json for fishing boats 2024-11-04 11:17:14 -06:00
Slippy a2d89f320f More new structure adjustments. Vug fixes to Cove generation 2024-11-04 11:16:32 -06:00
Adam IdriciandWeblate 071038dc09 Translated using Weblate (French)
Currently translated at 96.6% (6176 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-04 12:28:48 +00:00
Test 7e11c4d47b Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon 2024-11-03 22:52:03 -05:00
Test cc70fd18d5 change dex item order for creative menu 2024-11-03 22:51:31 -05:00
Segfault Guy 334b47a778 Merge branch 'main' into player_icons 2024-11-03 22:38:29 -05:00
Segfault Guy a0c6ec7918 changelog 2024-11-03 22:04:21 -05:00
Segfault Guy 665883474d Add licenses. 2024-11-03 22:01:26 -05:00
Segfault Guy e0fce5386e Merge branch 'main' into player_icons 2024-11-03 21:59:00 -05:00
Hiroku d00829e609 Merge branch 'ihatebugtypes1.6' into 'main'
Ihatebugtypes1.6

Closes #1108, #1074, and #1110

See merge request cable-mc/cobblemon!1220
2024-11-04 02:57:12 +00:00
Paul de5b1e33fe Expose a set of aspects with mock effects, fixes #1108 2024-11-04 12:49:36 +10:00
Segfault Guy f2e6ca1439 Multi battle & team interaction bug fixes. 2024-11-03 21:37:36 -05:00
Paul 974bf73516 Merge remote-tracking branch 'origin/main' into ihatebugtypes1.6
# Conflicts:
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
2024-11-04 12:14:56 +10:00
Paul 3c8fe3bff7 Added level arg to spawnnpc and spawnnpcat 2024-11-04 11:20:38 +10:00
Paul 795a14a291 Fixed PartyStore loading actually being busted when the slot count isn't 6 (lol this has been in for ages) 2024-11-04 11:09:27 +10:00
Paul 0dca4a26e5 Merge remote-tracking branch 'origin/main' into npc-party-time 2024-11-04 10:19:41 +10:00
Weblate 2688e37f77 Update translation files
Updated by "Remove blank strings" add-on in Weblate.

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/
2024-11-03 22:31:01 +00:00
阿鱼andWeblate e8a9ea1185 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (6391 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-11-03 22:30:58 +00:00
Alexis SalgueiroandWeblate 4770c273f9 Translated using Weblate (French)
Currently translated at 96.3% (6159 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-03 22:30:55 +00:00
Adam IdriciandWeblate 0e2e42b826 Translated using Weblate (French)
Currently translated at 96.3% (6159 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-11-03 22:30:54 +00:00
GottvaterNougatKoenigandWeblate de819828ce Translated using Weblate (German)
Currently translated at 87.5% (5597 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-11-03 22:30:53 +00:00
MiaandWeblate fed34e9b98 Translated using Weblate (German)
Currently translated at 87.5% (5597 of 6391 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-11-03 22:30:53 +00:00
Hiroku edb98ae078 Merge branch 'implement_pokemon' into 'main'
remove extra pose from gyarados

Closes #1137

See merge request cable-mc/cobblemon!1244
2024-11-03 22:25:14 +00:00
CarmendarandHiroku 02ba40facb remove extra pose from gyarados 2024-11-03 22:25:14 +00:00
Paul 6fc87fdafd Added proper multi-locator support for action effects 2024-11-03 22:21:34 +10:00
Conan d430498243 Fixed potential desync problem 2024-11-03 12:12:11 +01:00
Paul 2a17f76869 Fixed evolutions not being synced to the client unless calculated while in the party without going to PC 2024-11-03 19:39:54 +10:00
Paul d5adfb70ea Finished pool party provider and built example 2024-11-03 17:20:49 +10:00
Hiroku 23b422bed6 Merge branch 'Shipwreck-Cove-Changes' into 'main'
Shipwreck cove changes

See merge request cable-mc/cobblemon!1247
2024-11-03 07:19:07 +00:00
Slippy f346b8db0c Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into Shipwrecks-and-Stuff 2024-11-03 01:10:03 -06:00
Slippy a951bd8d25 Loot table changes for Shipwreck Coves and Fishing Boats. Made fishing boats more common. 2024-11-03 01:09:25 -06:00
Segfault Guy 0d7ff74bd2 Trade interaction cleanup. 2024-11-02 23:42:41 -04:00
apion a36b832826 Update translations (again!) 2024-11-02 21:48:08 -04:00
Hiroku 055583de1d Merge branch 'RevisedBattleSendouts' into 'main'
Revised pokemon sendouts to allow for smaller pokemon to be sendout closer to their opponents.

See merge request cable-mc/cobblemon!1246
2024-11-03 01:33:55 +00:00
JazzMcNade 63f2c49606 Merge branch 'main' into RevisedBattleSendouts 2024-11-02 20:20:49 -05:00
JazzMcNade ff879f488e Revised pokemon sendouts to allow for smaller pokemon to be sendout closer to their opponents.
This should reduce the number of instances in which a pokemon will be thrown behind the player
2024-11-02 20:14:37 -05:00
Apion 0942553bb7 Merge branch 'lang-updates' into 'main'
Update translations

See merge request cable-mc/cobblemon!1245
2024-11-03 00:55:23 +00:00
Apion ac7d2f6075 Update translations 2024-11-03 00:55:23 +00:00
Conan f1fcf60924 Fixed an oopsie, also moved MAX_NAME_LENGTH to SetNicknameHandler. 2024-11-03 00:30:54 +01:00
Hiroku 1d460555af Merge branch 'implement_pokemon' into 'main'
Fix underwater anim conditions

Closes #1137

See merge request cable-mc/cobblemon!1243
2024-11-02 23:24:37 +00:00
CarmendarandHiroku 904dcb61b0 Fix underwater anim conditions 2024-11-02 23:24:36 +00:00
Hiroku b038841242 Merge branch 'feature/small-fixes' into 'main'
fix pokedex crashing on custom mons and evos randomizing gender

Closes #1138 and #1135

See merge request cable-mc/cobblemon!1242
2024-11-02 23:10:24 +00:00
PolymetaandHiroku 7efa155b51 fix pokedex crashing on custom mons and evos randomizing gender 2024-11-02 23:10:24 +00:00
Hiroku 07cef9c683 Merge branch '1.6-mongodb' into 'main'
MongoDB implementation for dex, player data and store.

See merge request cable-mc/cobblemon!1239
2024-11-02 23:06:08 +00:00
Hiroku 85b836ee28 Merge branch 'implement_pokemon' into 'main'
Implement a bunch of pokemon

Closes #1137

See merge request cable-mc/cobblemon!1234
2024-11-02 22:57:58 +00:00
ApionandHiroku 74222fe727 Implement a bunch of pokemon 2024-11-02 22:57:58 +00:00
Apion a30dacb4be Merge branch 'move-effects' into 'main'
Added particles and sounds for moves.

See merge request cable-mc/cobblemon!1240
2024-11-02 21:14:20 +00:00
TyzillionandApion 66473d9b47 Added particles and sounds for moves. 2024-11-02 21:14:20 +00:00
navneetset 0764a932e1 Removed old mongo player data adapter. 2024-11-02 21:40:27 +01:00
Conan a227ef1001 Implemented a simple server-side check for when changing Pokemon their nickname before sending the packet. 2024-11-02 19:21:07 +01:00
navneetset d568644155 Added dex manager adapter to JSON and MongoDB codec 2024-11-02 10:05:24 +01:00
tmetcalfe89 2d13b85488 proposed fix for client-side is_wild 2024-11-01 22:29:59 -07:00
Paul a2edfcfdcb Merge remote-tracking branch 'origin/main' into npc-party-time 2024-11-02 15:17:23 +10:00
Paul 63ab04d3d8 Allow weight -1 in pool function and add has_aspect to NPC molang 2024-11-02 15:11:51 +10:00
Hiroku 34a8badd6f Merge branch 'molang-function-fix' into 'main'
Better molang function adding

See merge request cable-mc/cobblemon!1235
2024-11-02 04:38:12 +00:00
apion 0f41194d22 Better molang function adding 2024-11-01 21:29:15 -04:00
navneetset 54cb857224 MongoDB implementation for 1.6 2024-11-02 00:14:40 +01:00
apion 36b1e926a9 Made CodecBackedAdapter work for serializing too. 2024-11-01 18:29:53 -04:00
Hiroku b80b27e8f9 Merge branch 'en_us-fixes' into 'main'
en_us Fixes

See merge request cable-mc/cobblemon!1228
2024-11-01 11:21:40 +00:00
Hiroku 755ca9d261 Merge branch 'sound' into 'main'
Updates to evolution and trading sounds

See merge request cable-mc/cobblemon!1233
2024-11-01 11:21:32 +00:00
mia 24f64da512 fix(lang): hopefully every move now uses proper description 2024-11-01 06:42:31 -04:00
mia b11f553af0 fix(lang): abilities use official descriptions, some move description fixes 2024-11-01 06:42:31 -04:00
mia bce33acbc5 fix(lang): fix hydrosteam lang keys 2024-11-01 06:42:31 -04:00
mia a42b88f22f fix(lang): remove unneeded "'s" 2024-11-01 06:42:31 -04:00
mia fe7d3a51f9 fix(lang): make all moves use official descriptions 2024-11-01 06:42:31 -04:00
Sterrezo c260594865 Trade sound updates 2024-11-01 11:40:57 +01:00
Hiroku 89a25ab03e Merge branch 'Shipwrecks-and-Stuff' into 'main'
Shipwrecks and stuff

See merge request cable-mc/cobblemon!1232
2024-11-01 10:38:44 +00:00
Hiroku b97589c934 Merge branch 'PvP_Flat_Level_Battling' into 'main'
PvP flat level battling

See merge request cable-mc/cobblemon!1157
2024-11-01 10:22:17 +00:00
Sterrezo b3ffcdd039 Merge branch 'main' into sound 2024-11-01 11:14:01 +01:00
Hiroku 51e81d207e Update CHANGELOG.md 2024-11-01 10:13:53 +00:00
Slippy 50a3aa6a4f Adjusted more things for new 1.6 structure 2024-11-01 04:45:52 -05:00
Slippy f84cb41f28 Updates to new 1.6 structures 2024-11-01 04:32:50 -05:00
Slippy 6c95b3e50c Toppled Pillars log spam fix 2024-11-01 04:04:42 -05:00
Slippy 60667794a7 Village Pokecenter fixes 2024-11-01 03:59:19 -05:00
Slippy f39f2c3e4a What??? Last minute structures in 1.6??? 2024-11-01 03:17:59 -05:00
Slippy d104342df1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon 2024-11-01 03:12:17 -05:00
Hiroku 1d9f540198 Merge branch 'bugfix/hiro-fixes-more-bugs' into 'main'
Bugfixes

Closes #1092 and #1032

See merge request cable-mc/cobblemon!1231
2024-11-01 07:38:07 +00:00
Paul ec34f51ead Fixed case where pokemon couldn't add relearn moves after forgetting a move, closes #1032 2024-11-01 15:55:29 +10:00
Paul fa284636ed Merge remote-tracking branch 'origin/main' into bugfix/hiro-fixes-more-bugs 2024-11-01 14:48:13 +10:00
Hiroku 306ac74cd8 Merge branch 'trade' into 'main'
Trading animation

See merge request cable-mc/cobblemon!1230
2024-11-01 04:40:13 +00:00
TestandHiroku ff65613ffd Trading animation 2024-11-01 04:40:13 +00:00
Paul 21b6c1dc29 Implemented pool-based party generation for NPCs 2024-11-01 14:21:59 +10:00
Segfault Guy 29a8522a86 Player interaction request redesign. 2024-11-01 00:15:27 -04:00
Apion 1b41cc04eb Merge branch 'feature/fixes-and-tweaks' into 'main'
fix a NF crash and introduce small mixing to enhance search in creative

Closes #1128

See merge request cable-mc/cobblemon!1227
2024-10-31 22:38:31 +00:00
PolymetaandApion 45e7d8fe81 fix a NF crash and introduce small mixing to enhance search in creative 2024-10-31 22:38:31 +00:00
apion 73af1863ec Fixes #1074 2024-10-31 18:02:47 -04:00
apion 9cd8f0e7c2 Fixes #1110 2024-10-31 16:07:17 -04:00
Sterrezo 2ff406453f Update evolution_full.ogg
yeah
2024-10-31 01:04:10 +01:00
mia 29a9d3caba fix(lang): rename "tree" variation to "wood" 2024-10-30 11:35:39 -04:00
tmetcalfe89andmia f6ae1b8a69 lang'd the rod tooltip parts 2024-10-30 11:35:39 -04:00
mia b2b4c934a2 fix(lang): add missing punctuation, focus sash --> focus band 2024-10-30 11:35:39 -04:00
mia b1815bc0cd fix(lang): 'Hydro Stream' --> 'Hydro Steam' 2024-10-30 11:35:39 -04:00
mia 8c431f2af5 fix(lang): consistent apostrophe use 2024-10-30 11:35:39 -04:00
mia 04bcb0d41e fix(lang): remove unneeded trailing whitespaces 2024-10-30 11:35:39 -04:00
mia d1e119ac9b fix(lang): hydrosnipe mixup, add drum solo 2024-10-30 11:35:39 -04:00
mia 7db059d4ba fix(lang): punctuation for two gmax moves 2024-10-30 11:34:46 -04:00
mia a930a71a3a fix(lang): more x_items --> battle_items 2024-10-30 11:34:46 -04:00
mia 87f0c6cf7a fix merge conflicts 2024-10-30 11:34:39 -04:00
mia 54037fc499 fix(lang): remove light_orb 2024-10-30 11:18:29 -04:00
mia e2f6c02ad9 fix(lang): grey --> gray 2024-10-30 11:18:29 -04:00
mia 1fc24a5ee3 fix(lang): smithing templates, pokerod smithing slot 2024-10-30 11:18:29 -04:00
阿鱼andWeblate bf0f553b5e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (6388 of 6388 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-28 09:05:18 +00:00
Alexis SalgueiroandWeblate 6b525a2ffe Translated using Weblate (French)
Currently translated at 100.0% (6388 of 6388 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-28 09:05:17 +00:00
Felipe Bermudes OrmeñoandWeblate aa91c9e311 Translated using Weblate (Spanish (Mexico))
Currently translated at 27.7% (1771 of 6388 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-28 09:05:17 +00:00
阿鱼andWeblate 55349229d5 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (6386 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-27 07:31:31 +00:00
MiaandWeblate 1408ff26a3 Translated using Weblate (German)
Currently translated at 92.3% (5900 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-27 07:31:30 +00:00
GottvaterNougatKoenigandWeblate 646234b90b Translated using Weblate (German)
Currently translated at 92.3% (5900 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-27 07:31:30 +00:00
Hiroku 7abedb0e60 Merge branch 'egg-on-yer-face' into 'main'
Added Egg events for devs

See merge request cable-mc/cobblemon!1194
2024-10-27 06:01:58 +00:00
Paul d2d9647295 Merge remote-tracking branch 'origin/main' into egg-on-yer-face
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
2024-10-27 15:54:39 +10:00
Hiroku 2edbfc2870 Merge branch 'whatsy/bugfixes' into 'main'
various bugfixes

Closes #1030, #1022, #1007, and #1021

See merge request cable-mc/cobblemon!1212
2024-10-27 05:53:52 +00:00
Paul 1a50ff829b Corrected messaging for evolve message so it also displays for entity-less-evos 2024-10-27 15:45:54 +10:00
Paul c617e98f33 Fixed really well grown berries causing crashes (lol), fixes #1124 2024-10-27 15:32:34 +10:00
MoeBoy76 54aef4d66b Removed cancellable from non-cancellable event 2024-10-27 14:09:22 +11:00
Paul 76d35914c0 Fixed some log spam that could occur when boxing pokemon 2024-10-27 10:37:26 +10:00
apion 664cdc0937 Revert "fix mint bounding blocks being randomly -0.9 in size"
This reverts commit 97c2711eb8.
2024-10-26 19:34:07 -04:00
Apion e3913d1231 Merge branch 'one-seex-events' into 'main'
Serverside events & Fishing event function registry

See merge request cable-mc/cobblemon!1193
2024-10-26 22:58:42 +00:00
amoandApion 24b00e0839 Serverside events & Fishing event function registry 2024-10-26 22:58:42 +00:00
Hiroku 92ce7fd395 Merge branch 'ys/lang-fixes' into 'main'
Clear smog lang

Closes #1120

See merge request cable-mc/cobblemon!1225
2024-10-26 21:19:36 +00:00
Yaseen 3e0b280456 Clear positive and negative boosts from battle context 2024-10-26 18:00:42 +01:00
Yaseen ee419596ce broadcast the message foe clear smog 2024-10-26 16:24:44 +01:00
Yaseen 732eb344af - clear smog 2024-10-26 16:01:19 +01:00
Hiroku 3c7c820622 Merge branch 'braaaaains' into 'main'
Added configurable NPC brains

See merge request cable-mc/cobblemon!1221
2024-10-25 21:47:01 +00:00
Paul 5d2f8edcb0 Merge remote-tracking branch 'origin/main' into braaaaains
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/npc/NPCClass.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/npc/NPCPreset.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/adapters/NPCClassAdapter.kt
2024-10-25 21:36:32 +10:00
Paul 5a5a9113e9 Fixed Oinkologne being unable to be female and reworked gender checking from properties, closes #1092 2024-10-25 17:20:58 +10:00
Paul 7149116a68 Merge remote-tracking branch 'origin/braaaaains' into braaaaains 2024-10-25 09:43:45 +10:00
Paul 7a40e71123 Documentation for brain stuff 2024-10-25 09:43:27 +10:00
Hiroku d1554f1ae5 Merge branch 'toobig' into 'main'
mint trees / berry bushes now respect whether they're on tilled or wild land

See merge request cable-mc/cobblemon!1195
2024-10-24 23:25:54 +00:00
Hiroku e15f4f8ad1 Merge branch 'sterr/bugfixes' into 'main'
Audio bugfixes

Closes #1045

See merge request cable-mc/cobblemon!1222
2024-10-24 23:24:13 +00:00
阿鱼andWeblate f9afd30577 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 95.2% (6083 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-24 19:55:03 +00:00
Wi2terandWeblate 7f0d7d8e1a Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 95.2% (6083 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-24 19:55:03 +00:00
Zack the GhastandWeblate b63d7d8f3f Translated using Weblate (Portuguese (Portugal))
Currently translated at 26.8% (1712 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-24 19:55:01 +00:00
Adam IdriciandWeblate a7ba8953ab Translated using Weblate (French)
Currently translated at 100.0% (6386 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-24 19:55:01 +00:00
Alexis SalgueiroandWeblate 1ea87c6cc7 Translated using Weblate (French)
Currently translated at 100.0% (6386 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-24 19:55:01 +00:00
Felipe Bermudes OrmeñoandWeblate f68966ce90 Translated using Weblate (Spanish (Mexico))
Currently translated at 27.2% (1743 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-24 19:55:00 +00:00
GottvaterNougatKoenigandWeblate 744e6faa53 Translated using Weblate (German)
Currently translated at 92.3% (5898 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-24 19:54:59 +00:00
Natchakot ChuchokjatupornandWeblate 8e84ce7615 Translated using Weblate (Thai)
Currently translated at 78.8% (5038 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-22 00:09:52 +00:00
Adam IdriciandWeblate 1c5745c174 Translated using Weblate (French)
Currently translated at 100.0% (6386 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-22 00:09:52 +00:00
Adam IdriciandWeblate d357aff7dc Translated using Weblate (French)
Currently translated at 99.7% (6372 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-21 22:48:27 +00:00
Zack the GhastandWeblate e2ea9cd199 Translated using Weblate (Portuguese (Portugal))
Currently translated at 26.4% (1689 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-21 22:45:36 +00:00
Adam IdriciandWeblate 59d32e8254 Translated using Weblate (French)
Currently translated at 99.2% (6335 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-21 22:45:36 +00:00
Alexis SalgueiroandWeblate 3091e5b198 Translated using Weblate (French)
Currently translated at 99.2% (6335 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-21 22:45:36 +00:00
Felipe Bermudes OrmeñoandWeblate 9c71e3cfd5 Translated using Weblate (Spanish (Mexico))
Currently translated at 25.9% (1656 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-21 22:45:35 +00:00
Xander Forrest 68427df817 remove sneaky debug 2024-10-21 21:28:00 +07:00
Sterrezo c08cc48449 Merge branch 'main' into sterr/bugfixes 2024-10-21 12:38:28 +02:00
Paul 628941aa0e Fixed NPCs not using the NPC battle theme hook, closes #1094 2024-10-21 17:45:05 +10:00
MoeBoy76 74bb66fd2b Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into egg-on-yer-face 2024-10-21 18:36:15 +11:00
Paul 6b3d60fccc Fixed NPC owned pokemon persisting and becoming wild 2024-10-21 17:35:28 +10:00
MoeBoy76 d733b1de68 Updated egg events for API requirements 2024-10-21 18:35:14 +11:00
Hiroku b4e402c83d Update NPCBrain.kt 2024-10-21 07:15:46 +00:00
Paul 4b2b2f24ee Fixed Frillish T-pose while sleeping, closes #1102 2024-10-21 17:09:34 +10:00
Paul f95389b01b Fixed R being able to open the battle menu while in battle and the GUI is hidden using F1, closes #1104 2024-10-21 17:06:59 +10:00
Paul 8a94a6126a Fixed crash from loading world in specific pasture scenario, closes #1105 2024-10-21 17:02:50 +10:00
Paul 4cbd5c1745 Fixed crashes from modelPart being null in JSON poser loading, closes #1112 2024-10-21 17:00:21 +10:00
Paul f003406ffe Lots more brain setup, now with presets for combat and chatting and action effects 2024-10-21 16:40:55 +10:00
Segfault Guy ec3458b717 Remove unnecessary delay from generic moves. 2024-10-21 00:47:26 -04:00
Segfault Guy 1117792bf7 Misc. battle lang fixes + additions. 2024-10-21 00:46:54 -04:00
Hiroku 164207ee10 Merge branch 'feature/posing-shenanigans' into 'main'
attempt in fixing particles in json posers being higher up than intended

Closes #1106

See merge request cable-mc/cobblemon!1219
2024-10-21 03:11:59 +00:00
Hiroku df1ff47e0e Merge branch 'feature/restore-mod-compat' into 'main'
restored modcompat with dynamic lights and adorn

Closes #775

See merge request cable-mc/cobblemon!1210
2024-10-21 01:18:56 +00:00
Polymeta a2add409c2 introduce ability to manually define rootBone on model, otherwise we assume it's Pokémon name (filename) by default for backwards compatibility
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-20 21:36:07 +01:00
Adam IdriciandWeblate 49aa5b4824 Translated using Weblate (French)
Currently translated at 97.1% (6203 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:59:00 +00:00
Alexis SalgueiroandWeblate 8b8db92ace Translated using Weblate (French)
Currently translated at 97.1% (6203 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:59:00 +00:00
Alexis SalgueiroandWeblate cd6c4fe732 Translated using Weblate (French)
Currently translated at 97.1% (6202 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:58:35 +00:00
Adam IdriciandWeblate c0d889a4eb Translated using Weblate (French)
Currently translated at 97.1% (6202 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:58:35 +00:00
Alexis SalgueiroandWeblate 851854d675 Translated using Weblate (French)
Currently translated at 97.1% (6201 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:58:04 +00:00
Adam IdriciandWeblate 8f8864eb38 Translated using Weblate (French)
Currently translated at 97.1% (6201 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:58:04 +00:00
Zack the GhastandWeblate 22e55d97d3 Translated using Weblate (Portuguese (Portugal))
Currently translated at 26.2% (1674 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-20 13:57:41 +00:00
Adam IdriciandWeblate 95dad9a5d1 Translated using Weblate (French)
Currently translated at 97.0% (6200 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:57:40 +00:00
Alexis SalgueiroandWeblate dbab502150 Translated using Weblate (French)
Currently translated at 97.0% (6200 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:57:40 +00:00
Alexis SalgueiroandWeblate 4a25894e68 Translated using Weblate (French)
Currently translated at 96.9% (6189 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:44:25 +00:00
Adam IdriciandWeblate c88bdf6060 Translated using Weblate (French)
Currently translated at 96.9% (6189 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:44:25 +00:00
Zack the GhastandWeblate 8f14bba7f4 Translated using Weblate (Portuguese (Portugal))
Currently translated at 26.0% (1661 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-20 13:42:34 +00:00
Adam IdriciandWeblate c46995fe88 Translated using Weblate (French)
Currently translated at 96.9% (6190 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:42:33 +00:00
Alexis SalgueiroandWeblate 804f0fa807 Translated using Weblate (French)
Currently translated at 96.9% (6190 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-20 13:42:33 +00:00
Sterrezo 869216c8c8 Fixed log spam and fixed Petilil Hisui bias missing a cry 2024-10-20 12:26:15 +02:00
Sterrezo 4a21d8f1ef Doesn't crash now! 2024-10-20 12:00:49 +02:00
Sterrezo 8e7a599d9d Merge branch 'main' into sterr/bugfixes 2024-10-20 11:28:40 +02:00
Sterrezo 6996f8d07d Merge branch 'main' into sterr/bugfixes 2024-10-20 11:25:04 +02:00
Hiroku a4d331dc77 Merge branch 'sound' into 'main'
Massive update to sound assets and sounds.json

See merge request cable-mc/cobblemon!1217
2024-10-20 04:04:45 +00:00
Hiroku e635d92cfc Merge branch 'more-things' into 'main'
updates and fixes

See merge request cable-mc/cobblemon!1218
2024-10-20 02:05:46 +00:00
TestandHiroku 3c38b954a8 updates and fixes 2024-10-20 02:05:46 +00:00
Sterrezo 3ebbabd22a Fixed missing item interaction sounds 2024-10-20 01:22:02 +02:00
Hiroku 4ff1379f06 Merge branch 'shoulder-scan-2' into 'main'
Shoulder Scan 2 - Electric Boogaloo

Closes #1078

See merge request cable-mc/cobblemon!1208
2024-10-19 23:04:00 +00:00
JordanandHiroku 5d8515a756 Shoulder Scan 2 - Electric Boogaloo 2024-10-19 23:04:00 +00:00
Wi2terandWeblate 5a1f2df5f1 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 91.8% (5866 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-19 21:41:51 +00:00
Natchakot ChuchokjatupornandWeblate e5a3bf7b4f Translated using Weblate (Thai)
Currently translated at 78.9% (5041 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-19 21:41:51 +00:00
Zack the GhastandWeblate 09f8932f90 Translated using Weblate (Portuguese (Portugal))
Currently translated at 25.9% (1655 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-19 21:41:50 +00:00
Felipe Bermudes OrmeñoandWeblate 91574143e9 Translated using Weblate (Spanish (Mexico))
Currently translated at 25.8% (1653 of 6386 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-19 21:41:50 +00:00
Landon 25084a6616 Merge branch 'pokedex-camera' into 'main'
Improve camera zooming controls

See merge request cable-mc/cobblemon!1207
2024-10-19 20:21:36 +00:00
Paul 34ead9472d Added animation reflex check for valid expressions 2024-10-19 19:45:18 +10:00
Paul dc54895a6d Lots and lots of work on brain JSON framework 2024-10-19 19:23:59 +10:00
Hiroku 8be3843359 Merge branch 'Structure-Fixes-1.6' into 'main'
Structure Generation Reworks

See merge request cable-mc/cobblemon!1198
2024-10-19 02:13:15 +00:00
Hiroku b83dbfce33 Merge branch 'implement_pokemon' into 'main'
He has a gun help

See merge request cable-mc/cobblemon!1215
2024-10-19 02:06:33 +00:00
Frank The FarmerandHiroku 2d7a0a09ea He has a gun help 2024-10-19 02:06:33 +00:00
Sterrezo 2391830f56 Merge branch 'main' into sound 2024-10-18 23:55:41 +02:00
Wi2terandWeblate 8537ebac3b Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 90.3% (5768 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-18 20:41:49 +00:00
Natchakot ChuchokjatupornandWeblate e54597ba5d Translated using Weblate (Thai)
Currently translated at 78.4% (5006 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-18 20:41:49 +00:00
Zack the GhastandWeblate 716187c61b Translated using Weblate (Portuguese (Portugal))
Currently translated at 25.6% (1639 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-18 20:41:49 +00:00
Alexis SalgueiroandWeblate b5eea5ad2c Translated using Weblate (French)
Currently translated at 96.8% (6185 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-18 20:41:49 +00:00
Felipe Bermudes OrmeñoandWeblate 1c76c237a3 Translated using Weblate (Spanish (Mexico))
Currently translated at 25.8% (1648 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-18 20:41:49 +00:00
Sterrezo 144f4fd267 Merge branch 'main' into sound 2024-10-18 15:31:36 +02:00
Sterrezo 11e45e2def Small fix to berries + more changelog 2024-10-18 15:20:55 +02:00
Sterrezo 822a8c97fd Changelog, reordered fishing sounds in sounds.json 2024-10-18 15:02:46 +02:00
Sterrezo 68dc8282b3 Renamed sound events for all blocks and Gimmighoul interactions 2024-10-18 15:00:51 +02:00
Sterrezo 5ee195bac8 Reorganized berry harvesting and mulch sounds 2024-10-18 14:42:55 +02:00
Sterrezo 51929e6bcc Reorganized item interaction sounds and sound events 2024-10-18 13:43:45 +02:00
Hiroku 28418c767d Merge branch 'feature/smaller-fixes-additions' into 'main'
fix eye height and small dex additions

Closes #1100 and #1098

See merge request cable-mc/cobblemon!1211
2024-10-18 10:58:45 +00:00
Hiroku 56b7c619a2 Merge branch 'pokemon-properties-helditem-check' into 'main'
added a check on the helditem for pokemon properties

See merge request cable-mc/cobblemon!1214
2024-10-18 08:22:37 +00:00
Hiroku bde2e5ba60 Merge branch 'MasterBallFireImmunity' into 'main'
Master Ball Fire Immunity

See merge request cable-mc/cobblemon!1216
2024-10-18 05:33:39 +00:00
JazzMcNade 70893ddfe1 Restored Fire Immunity to the Master Ball 2024-10-18 00:25:02 -05:00
tmetcalfe89 3e746d5009 i hate scoped returns 2024-10-17 18:58:21 -07:00
tmetcalfe89 a4e4fb6bc7 partial match instead 2024-10-17 16:18:36 -07:00
Hiroku f26c939f8a Merge branch 'tim/gmax-move-desc-fixes' into 'main'
small fixes for g-max lang entries

See merge request cable-mc/cobblemon!1213
2024-10-17 22:52:36 +00:00
tmetcalfe89 36b8119972 fixed missing drum solo, grammar, hydro snipe user 2024-10-17 15:37:58 -07:00
Natchakot ChuchokjatupornandWeblate 6cb1ff0abe Translated using Weblate (Thai)
Currently translated at 77.4% (4941 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-17 19:50:48 +00:00
Adam IdriciandWeblate 9b18aabe94 Translated using Weblate (French)
Currently translated at 96.4% (6155 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-17 19:50:48 +00:00
Alexis SalgueiroandWeblate 48328416bf Translated using Weblate (French)
Currently translated at 96.4% (6155 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-17 19:50:47 +00:00
Felipe Bermudes OrmeñoandWeblate 745866093e Translated using Weblate (Spanish (Mexico))
Currently translated at 24.5% (1565 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-17 19:50:47 +00:00
Sterrezo 7c17888a13 Renamed shiny sounds to match the assets 2024-10-17 19:05:25 +02:00
Sterrezo 2536a90ecc Added sound events for Rage Powder 2024-10-17 18:55:14 +02:00
Sterrezo 675e1eb39f Restructured all powder move sound events to make them unique
Also removed an underscore in "non_volatile"
2024-10-17 17:58:17 +02:00
Sterrezo 9e61b2fb6b Restructured status sound assets and sound events 2024-10-17 17:37:24 +02:00
Sterrezo 8d12897bc3 Removed unused files and sound events 2024-10-17 17:06:35 +02:00
Sterrezo c14fc285e1 Fixed Flamethrower missing sounds and renamed sound events for consistency 2024-10-17 17:02:35 +02:00
Sterrezo c06e5618ef Removed unused impact layers and moved them to the assets repository 2024-10-17 16:56:23 +02:00
tmetcalfe89 1d15dc37e4 added component *exact* matching 2024-10-16 18:07:23 -07:00
Natchakot ChuchokjatupornandWeblate 7033948b4e Translated using Weblate (Thai)
Currently translated at 75.8% (4839 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-16 22:41:40 +00:00
Spaidy NatorandWeblate 156ca6bd1b Translated using Weblate (Russian)
Currently translated at 94.4% (6031 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ru/
2024-10-16 22:41:40 +00:00
Adam IdriciandWeblate 39c5d9b179 Translated using Weblate (French)
Currently translated at 96.1% (6137 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-16 22:41:39 +00:00
Alexis SalgueiroandWeblate 362538b1c0 Translated using Weblate (French)
Currently translated at 96.1% (6137 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-16 22:41:39 +00:00
Polymeta ad84a9a967 add arbok variation to dex
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-16 22:48:42 +01:00
Polymeta 487eeadccd dont show shiny default and start with main ability instead of ha in display
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-16 22:20:17 +01:00
tmetcalfe89 a626f62ae5 WIP - check if Pokemon held item matches
unsure how to check the NBT/components matching
2024-10-16 11:56:40 -07:00
Natchakot ChuchokjatupornandWeblate 249486e8bb Translated using Weblate (Thai)
Currently translated at 74.6% (4762 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-15 20:41:47 +00:00
Zack the GhastandWeblate 8ccbe3ee8e Translated using Weblate (Portuguese (Portugal))
Currently translated at 25.5% (1629 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-15 20:41:47 +00:00
YasitoandWeblate 20174aab11 Translated using Weblate (French)
Currently translated at 92.7% (5918 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-15 20:41:47 +00:00
Alexis SalgueiroandWeblate b47da36c80 Translated using Weblate (French)
Currently translated at 92.7% (5918 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-15 20:41:47 +00:00
Felipe Bermudes OrmeñoandWeblate 34519870b4 Translated using Weblate (Spanish (Mexico))
Currently translated at 24.2% (1550 of 6383 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-15 20:41:47 +00:00
Sterrezo 756396ceb6 Update CHANGELOG.md 2024-10-15 16:37:49 +02:00
Sterrezo dec88e34c5 Gave powder moves less generic names, Spore now has a separate sound event
"powder.stun.actor" has been renamed to "move.stunspore.actor," same with other moves with the same naming convention.
Spore now has a unique sound event, but uses the same audio file as before. This lets it be changed with resource packs.
2024-10-15 16:32:32 +02:00
Sterrezo 4e68d81bbd Renamed "attacks" to "move" in the sounds folder, powder moves and spore now have their own folder
Consistency with Minecraft and already existing sound events
2024-10-15 16:24:35 +02:00
Polymeta 02f1edd695 remove todo for it has been in fact done
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-15 09:54:34 +01:00
Sterrezo 0a586c31f4 Changelog (for later) 2024-10-15 02:06:23 +02:00
Test 536ae20d1f Merge branch 'sound' into 'main'
Audio bugfixes and volume adjustments

See merge request cable-mc/cobblemon!1209
2024-10-15 00:03:57 +00:00
SterrezoandTest 38b0551a2d Audio bugfixes and volume adjustments 2024-10-15 00:03:57 +00:00
Polymeta 98416e9cbc commit of shame
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-15 01:01:33 +01:00
Test afc1b9aaba clean 2024-10-14 19:50:44 -04:00
Polymeta 3aaef40d07 more dex calculators, debug command and small fix with using calculators server-side
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-15 00:45:04 +01:00
Test 9a509f8a80 clean 2024-10-14 19:39:07 -04:00
Sterrezo 7a9a12ac29 Removed unused variables and arguments from functions 2024-10-15 01:13:17 +02:00
Polymeta bc3d3702c9 fix eye height not scaling with hitbox size like it should
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-15 00:07:28 +01:00
Polymeta 6c1b9d31f7 adorn compat restored (doesnt work in-dev but in proper jars)
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-14 21:39:56 +01:00
Polymeta bed47c7f04 dynamic light compat restored
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-14 21:36:46 +01:00
PolymetaandWeblate f4746207d0 Translated using Weblate (German)
Currently translated at 92.3% (5895 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-14 17:41:47 +00:00
MiaandWeblate 9aa6831a20 Translated using Weblate (German)
Currently translated at 92.3% (5895 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-14 17:41:47 +00:00
Felipe Bermudes OrmeñoandWeblate 71f4345deb Translated using Weblate (Spanish (Mexico))
Currently translated at 24.0% (1537 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-14 17:41:47 +00:00
Zack the GhastandWeblate b9cd951c36 Translated using Weblate (Portuguese (Portugal))
Currently translated at 25.2% (1612 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-14 17:41:47 +00:00
Alexis SalgueiroandWeblate 38d20dd69a Translated using Weblate (French)
Currently translated at 92.2% (5888 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-14 17:41:47 +00:00
Natchakot ChuchokjatupornandWeblate caa46f13be Translated using Weblate (Thai)
Currently translated at 73.5% (4695 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-14 17:41:47 +00:00
Sterrezo 54c0f2438c Sendout sound no longer unintentionally plays when a wild Pokemon breaks out
+ a bunch of volume tweaks in sounds.json
2024-10-14 19:25:50 +02:00
Sterrezo e2ee2f60c6 Small corrections to the latest Pokedex sound source change 2024-10-14 18:48:14 +02:00
Sterrezo 517841c2fa Pokedex sounds now come from UI and not the player channel
+ a bunch of volume tweaks
2024-10-14 18:21:28 +02:00
Sterrezo 28e9d89ae3 Merge branch 'main' into sound 2024-10-14 16:28:51 +02:00
Paul 3edb7fbd3a More brain config for NPCs 2024-10-14 13:56:32 +10:00
Landon Wills 892a5a8fd3 Install new 48 MP camera lens into pro max model with better zooming capabilities 2024-10-13 20:32:21 -04:00
Landon Wills ba155b99a2 Upgrade camera drivers for pro max model 2024-10-13 20:06:04 -04:00
Paul 6df544c279 Merge remote-tracking branch 'origin/main' 2024-10-14 10:01:55 +10:00
Paul 44a1e5ae69 Added NPC AI outlining (WIP), added canDespawn property to NPC classes and presets 2024-10-14 10:01:42 +10:00
Hiroku cf70263a22 Merge branch 'JayceTRD-main-patch-32373' into 'main'
Added cobblemon.battle.end.neutralizinggas to en_us.json

See merge request cable-mc/cobblemon!1205
2024-10-13 23:29:33 +00:00
JayceTRD 536a241f90 Added cobblemon.battle.end.neutralizinggas to en_us.json 2024-10-13 23:27:27 +00:00
Hiroku a61eb1a847 Merge branch 'feature/fix-sign-crash' into 'main'
make sure hanging signs are allowed for hanging sign block entity

Closes #1086

See merge request cable-mc/cobblemon!1204
2024-10-13 21:12:38 +00:00
PolymetaandHiroku 672b72c091 make sure hanging signs are allowed for hanging sign block entity 2024-10-13 21:12:38 +00:00
Hiroku 6ec312ca5e Merge branch 'ys/fix-evo-animation-cancel' into 'main'
Dont clear active animations that should endure primary animations

Closes #1064

See merge request cable-mc/cobblemon!1201
2024-10-13 21:07:56 +00:00
Hiroku 265e4495ef Merge branch 'issue-983' into 'main'
Fix issue with pasture pokemon despawning

Closes #983

See merge request cable-mc/cobblemon!1203
2024-10-13 21:07:44 +00:00
Test 36c355d5cd Merge branch 'pokedex-spin-fix' into 'main'
Fix pokemon spinning unreasonably fast when dragged

See merge request cable-mc/cobblemon!1202
2024-10-13 20:52:33 +00:00
MiaandTest 9c6cb90b93 Fix pokemon spinning unreasonably fast when dragged 2024-10-13 20:52:33 +00:00
Landon Wills cf6a997cfd Fix issue with pasture pokemon despawning 2024-10-13 16:50:16 -04:00
Yaseen 5d437dcb2a less code 2024-10-13 16:03:02 +01:00
Yaseen 450517cba3 Merge branch 'main' into ys/fix-evo-animation-cancel 2024-10-13 15:56:38 +01:00
Yaseen 9a7428841f Dont clear active animations that should endure primary animations 2024-10-13 15:52:38 +01:00
Hiroku 654c4341ef Merge branch 'bugfix/hiro-fixes-packets' into 'main'
Delay deserialization of Pokemon S2C codec until it's in the handler for...

See merge request cable-mc/cobblemon!1196
2024-10-13 09:40:48 +00:00
Hiroku 2c3112d0d4 Merge branch 'FishingSendoutFix' into 'main'
Closes #1011 Fishing sendout fix

Closes #1011

See merge request cable-mc/cobblemon!1200
2024-10-13 07:06:42 +00:00
JazzMcNade bb4d0298a6 Merge branch 'main' into FishingSendoutFix 2024-10-13 01:46:44 -05:00
JazzMcNade b5f9dfd66d Fixed player pokemon being sent out at the player's feet when initiating a fishing battle. 2024-10-13 01:42:54 -05:00
Paul 0d8bc4351a Merge remote-tracking branch 'origin/main' 2024-10-13 16:08:15 +10:00
Paul f4276bbcc0 Removed temporary raft code, indirectly closes #1087 2024-10-13 16:08:00 +10:00
Paul a2c6d6fa30 Fixed shoulder renderer not applying a pokemon context, closes #1083 2024-10-13 16:03:40 +10:00
Patch Notes GuyandWeblate 2c3ac5da05 Translated using Weblate (Czech)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/cs/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate ad9c86372d Translated using Weblate (Japanese)
Currently translated at 91.5% (5841 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ja/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate f531c1eb64 Translated using Weblate (Chinese (Traditional Han script, Hong Kong))
Currently translated at 67.6% (4318 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hant_HK/
2024-10-13 02:45:20 +00:00
Patch Notes GuyandWeblate 0a8743158d Translated using Weblate (Portuguese (Portugal))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_PT/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate d344ad0bc6 Translated using Weblate (Italian)
Currently translated at 85.8% (5477 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/it/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 62c3ec8c72 Translated using Weblate (Thai)
Currently translated at 72.9% (4653 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/th/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate b4919fea4d Translated using Weblate (English (United Kingdom))
Currently translated at 0.1% (9 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/en_GB/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 2ebb8e64c4 Translated using Weblate (English (en_PT))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/en_PT/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 379bddc338 Translated using Weblate (Korean)
Currently translated at 86.9% (5551 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ko/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 0335eccfb5 Translated using Weblate (Russian)
Currently translated at 94.4% (6028 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/ru/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 0497489292 Translated using Weblate (Spanish (Mexico))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es_MX/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 2c168bbce0 Translated using Weblate (Esperanto (eo_EO))
Currently translated at 17.2% (1099 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/eo_EO/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate f6dcbc0d26 Translated using Weblate (Greek (el_CY))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/el_CY/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate cc54eb8f3f Translated using Weblate (Hungarian)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/hu/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 65314f7d1d Translated using Weblate (Spanish)
Currently translated at 85.7% (5470 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/es/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate bf7f84a94e Translated using Weblate (French)
Currently translated at 91.9% (5871 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr/
2024-10-13 02:45:19 +00:00
MiaandWeblate da64a9c186 Translated using Weblate (German)
Currently translated at 91.8% (5865 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate a8147beae1 Translated using Weblate (Polish)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pl/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 25da152ebf Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 71.2% (4550 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hant/
2024-10-13 02:45:19 +00:00
Patch Notes GuyandWeblate 1cc3d64c79 Translated using Weblate (Ukrainian)
Currently translated at 88.7% (5663 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/uk/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 30063e96b5 Translated using Weblate (Dutch)
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/nl/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 3bd7d09b34 Translated using Weblate (Portuguese (Brazil))
Currently translated at 24.0% (1533 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/pt_BR/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate c3d5773cc9 Translated using Weblate (Turkish)
Currently translated at 11.2% (718 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/tr/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate c688fbabc4 Translated using Weblate (Swedish)
Currently translated at 17.2% (1099 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/sv/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 4b313ef54c Translated using Weblate (French (Canada))
Currently translated at 88.7% (5664 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/fr_CA/
2024-10-13 02:45:18 +00:00
Patch Notes GuyandWeblate 01c2c4efae Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 90.3% (5767 of 6382 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/zh_Hans/
2024-10-13 02:45:18 +00:00
Hiroku aab6fcf891 Merge branch 'Fix1035RestorationExplosions' into 'main'
Closes #1035 restoration explosions

Closes #1035

See merge request cable-mc/cobblemon!1199
2024-10-13 01:53:03 +00:00
JazzMcNade 86ae831d74 Merge branch 'main' into Fix1035RestorationExplosions 2024-10-12 20:35:04 -05:00
JazzMcNade 9d12ce8a33 Fixed tank drops in survival/creative. Reduced code. 2024-10-12 20:34:38 -05:00
Paul 57ef15dea2 Remove reference to non-existent preset 2024-10-13 10:30:56 +10:00
Paul 5650cdc6ed Fixed NPC presets loading from NPCs folder (OOPS), fixed variations not applying to NPC classes, fixed variations not updating aspects after init 2024-10-13 10:30:27 +10:00
Paul 0048622693 Fixed WeightedAspect adapter not being registered for NPC presets 2024-10-13 09:08:44 +10:00
Paul 7940b60d77 Fixed Amaura fossil crash, closes #1085 2024-10-13 08:43:52 +10:00
Paul 886c0c7026 Fixed presets not able to deserialize variation providers 2024-10-13 07:40:25 +10:00
Hiroku 199ab9f4ee Merge branch 'RemoveUnnecessaryGenericHitEffects' into 'main'
Moves with Action Effects no longer display the generic hit effect.

See merge request cable-mc/cobblemon!1197
2024-10-12 21:33:29 +00:00
Paul 573b8cbcf9 Fix SpawnPokemonPacket decoding Species on net thread 2024-10-13 07:32:28 +10:00
JazzMcNade 6583168366 Moves with Action Effects no longer display the generic hit effect. Created generic effect for non-move damage sources. 2024-10-12 14:49:29 -05:00
Paul 8951816ddd Delay deserialization of Pokemon S2C codec until it's in the handler for SetPCPokemonPacket, SetPCBoxPokemonPacket, SetPartyPokemonPacket 2024-10-12 18:18:32 +10:00
Paul bc668d84c9 Fixed advancement display of pokemon renders, closes #976 2024-10-12 16:59:48 +10:00
MiaandWeblate b1290cbc38 Translated using Weblate (German)
Currently translated at 87.5% (5579 of 6375 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-12 02:00:08 +00:00
Paul 2261cf1077 Conflicto fixo 2024-10-12 11:55:50 +10:00
Paul 0ae427fd14 Fixed NPC pokemon still dropping items on faint 2024-10-12 10:18:47 +10:00
Paul 37a25c6b5a Fixed applyplayertexture not working on NPCs that delegate to standard but are not standard 2024-10-12 09:12:24 +10:00
MiaandWeblate 597080aac2 Translated using Weblate (German)
Currently translated at 87.4% (5578 of 6375 strings)

Translation: Cobblemon/Mod
Translate-URL: http://lang.cobblemon.com/projects/cobblemon/mod/de/
2024-10-11 21:41:28 +00:00
Slippy ca71fe141a Significantly changed how fossils structures generate in order to avoid generating on top of each other and on top of vanilla structures. 2024-10-11 13:47:31 -05:00
Slippy d1028a79ed Drastic change to how ruins generate. They should avoid any vanilla structures that generate in their respective biomes. 2024-10-11 13:21:37 -05:00
Sterrezo 112a3b9963 Updated 4 cries
Quality updates to Chansey, Crobat, Hoothoot and Noctowl
2024-10-11 15:36:01 +02:00
Sterrezo 444f1e9f69 Merge branch 'main' into sound 2024-10-11 15:33:36 +02:00
Xander Forrest 97c2711eb8 fix mint bounding blocks being randomly -0.9 in size
make berries / mint trees have a lower bounding box if planted, if wild, normal, all looks nice
vanilla MC doesn't actually move the bounding box down on tilled soil, so maybe we shouldn't either
2024-10-11 17:31:16 +07:00
Paul 2ae2d9f53b Initialize NPCs at level 1 by default from /spawnnpc 2024-10-11 20:23:46 +10:00
Paul 38df6f4833 Fixed deserialization of custom_script NPC interactions 2024-10-11 19:51:11 +10:00
Paul bed2e3035b Added /spawnnpc and /spawnnpcat commands 2024-10-11 16:33:39 +10:00
Paul a784aa38cb Lang update 2024-10-11 16:09:46 +10:00
Slippy c25f3ce430 Updated Rooted Arch Ruins Structure 2024-10-11 01:02:20 -05:00
MoeBoy76 2ef13cf556 Fixed import 2024-10-11 13:43:35 +11:00
MoeBoy76 9bb594f07d Added Egg events for devs 2024-10-11 13:35:02 +11:00
Hiroku c18d853a55 Merge branch 'fuck-assets' into 'main'
move best spawner config & showdown data to resources/data

See merge request cable-mc/cobblemon!1191
2024-10-10 20:45:29 +00:00
Xander Forrest d6581e9931 try with resources block when copying from stream 2024-10-11 00:14:47 +07:00
Nick d7962e7d48 Merge branch 'feature/more-bugs-fixed' into 'main'
more smaller bugs fixed (neoforge users rejoice)

Closes #1068, #1072, and #1073

See merge request cable-mc/cobblemon!1192
2024-10-10 16:57:59 +00:00
PolymetaandNick f3f6a9744b more smaller bugs fixed (neoforge users rejoice) 2024-10-10 16:57:59 +00:00
Nick 715112f8d9 Merge branch 'feature/shinies' into 'main'
Shiny Pokémon Particles and Sound Effects! ✨✨✨💖

See merge request cable-mc/cobblemon!1183
2024-10-10 16:52:39 +00:00
TyzillionandNick 278d0d6f96 Shiny Pokémon Particles and Sound Effects! ✨✨✨💖 2024-10-10 16:52:39 +00:00
Slippy 559a30da29 Updated eroded pillar 2 nbt file 2024-10-10 11:10:41 -05:00
Slippy e896067428 Updated Plains Pokecenter & suspicious_mound3 NBT Files 2024-10-10 10:48:28 -05:00
Xander Forrest 95c26448bc move best-spawner-config & showdown zip/metadata to resources/data instead of assets, where they should not be
add FileUtils.copyInternalToExternal to move things from internal to, you guessed it, external paths.
2024-10-10 17:20:12 +07:00
Hiroku 8d99ebbcde Merge branch 'feature/bug-galore' into 'main'
various bug fixes

Closes #994, #1037, #1057, #1060, #1070, and #420

See merge request cable-mc/cobblemon!1188
2024-10-10 10:09:19 +00:00
PolymetaandHiroku 4c024ac947 various bug fixes 2024-10-10 10:09:19 +00:00
Hiroku b4946e13f2 Merge branch 'misc' into 'main'
add Upper Hand name/description

See merge request cable-mc/cobblemon!1190
2024-10-10 09:25:16 +00:00
Xander Forrest bc4af40a34 remove gb specific move name 2024-10-10 16:24:21 +07:00
Xander Forrest 64ecec1a9a add Upper Hand name/description 2024-10-10 16:10:05 +07:00
Hiroku 7f8ef38b64 Merge branch 'clone' into 'main'
regen tethering ID as well as UUID in Pokemon.clone()

See merge request cable-mc/cobblemon!1189
2024-10-10 08:52:19 +00:00
Hiroku e4360ca9b5 Play animation sound keyframes through the entity where possible, the way Arceus intended 2024-10-10 08:47:09 +00:00
Xander Forrest bc27ec7288 remove tethering id not randomly generate 2024-10-10 15:44:41 +07:00
Xander Forrest 875f2d99ab regen tethering ID as well as UUID in Pokemon.clone() 2024-10-10 14:24:05 +07:00
Slippy d1914dd434 Suspicious Mound Fix 2024-10-09 20:43:40 -05:00
Sterrezo 8756ef5034 Zoom sound now checks for a variable, instead of a hardcoded value 2024-10-07 08:50:35 +02:00
Hiroku a4d18eba89 Merge branch 'sound' into 'main'
Sound bugfix and small volume tweaks

Closes #1069

See merge request cable-mc/cobblemon!1187
2024-10-07 06:36:58 +00:00
Sterrezo edffc248f4 Small volume tweaks to Pokedex sounds 2024-10-07 08:29:51 +02:00
Sterrezo 600bbfc5f3 Prevented the zoom sound from playing when unable to increase or decrease zoom further 2024-10-07 08:28:40 +02:00
JazzMcNade 4cfaf27ac7 Fixes 1035 2024-10-06 19:58:38 -05:00
Hiroku 692f1de510 Merge branch 'Updating-Structures-to-1.21' into 'main'
1.21.1 structure fixes

See merge request cable-mc/cobblemon!1184
2024-10-06 20:55:42 +00:00
Polymeta e230dd740d Merge branch 'refs/heads/main' into Updating-Structures-to-1.21
# Conflicts:
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/desert/houses.json
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/plains/houses.json
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/savanna/houses.json
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/snowy/houses.json
#	common/src/main/resources/data/minecraft/worldgen/template_pool/village/taiga/houses.json
2024-10-06 20:46:40 +01:00
Hiroku e24008c89e Merge branch 'keybind-shmebind' into 'main'
Remove PokedexBinding.kt and references.

See merge request cable-mc/cobblemon!1185
2024-10-06 02:48:08 +00:00
Hiroku ed29801820 Merge branch 'feature/pokedex-sync-fixes' into 'main'
fix pokedex sync and other issues

Closes #1000, #1041, and #1051

See merge request cable-mc/cobblemon!1186
2024-10-06 02:47:53 +00:00
Polymeta a5fe51b8fa various pokedex fixes
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-10-06 03:37:46 +01:00
Hiroku 600cc48073 Merge branch 'slated' into 'main'
Added Missing Recipe

Closes #1033

See merge request cable-mc/cobblemon!1180
2024-10-06 00:08:09 +00:00
JPAKx4 a4aa8f3778 Remove PokedexBinding.kt and references. 2024-10-05 14:38:21 -05:00
Segfault Guy 1649b9790b Only render icons outside of battle. 2024-10-05 08:47:11 -04:00
Slippy 2f16490aa8 Hopefully this fixed village centers from not having loot and generating very uncommonly 2024-10-04 23:06:11 -05:00
Slippy 8728e3a69a Hopefully this fixed village centers 2024-10-04 23:03:47 -05:00
Hiroku ed82a72919 Merge branch 'unblank_descriptions' into 'main'
Fix scrolling issue in InfoTextScrollWidget.kt

Closes #1023

See merge request cable-mc/cobblemon!1182
2024-10-05 03:29:48 +00:00
JPAKx4 953163b12e Fix scrolling issue in InfoTextScrollWidget.kt 2024-10-04 22:20:26 -05:00
Test aa57cd7e3e prevent cry animation stacking on button click 2024-10-04 22:32:48 -04:00
Segfault Guy b23c9b2133 Improve billboarding of icon to align with player nametags. Fix shifting of icon with respect to camera pitch. 2024-10-03 21:09:15 -04:00
Test eaeb918b33 update assets 2024-10-01 23:49:58 -04:00
Test f05af3d427 licensing, icons 2024-10-01 20:42:52 -04:00
Lily 8f40ab45db Added missing Custap Berry message. Closes #1030 2024-09-30 19:27:12 -04:00
Lily 1a1cf3ab7b Pokemon given through /giveallpokemon now have an Original Trainer. Closes #1022 2024-09-30 19:23:00 -04:00
Lily 3231c92baa Evolution message now sends after the animation is complete. Closes #1007
Reject AcceptEvolutionPacket if the Pokemon is busy. Closes #1021
2024-09-30 19:20:35 -04:00
dhi_holo 863baa5ae6 Added Missing Recipe
Resolves #1033
2024-09-30 18:34:32 +10:00
Segfault Guy a73c5fac86 Normalize request notification messages. 2024-09-29 21:40:59 -04:00
Segfault Guy 79be2e64ae Remove CompoundIcon due to design issues. Test unique icon textures. 2024-09-29 08:24:30 -04:00
Hiroku 913ca3d467 Merge branch 'sound' into 'main'
Tweaked evolution sound logic

See merge request cable-mc/cobblemon!1179
2024-09-29 08:44:30 +00:00
Sterrezo 22b541af10 Tweaked evolution sound logic
Added a click sound to the evolve widget. Evolution ui sound now plays only when evolving from the ui, not with the Pokemon sent out.
2024-09-29 10:43:28 +02:00
Hiroku c1a706ca69 Merge branch 'scan-fixes' into 'main'
scan and dex fixes

See merge request cable-mc/cobblemon!1178
2024-09-29 02:42:23 +00:00
TestandHiroku 47f8647d48 scan and dex fixes 2024-09-29 02:42:22 +00:00
JazzMcNade 9ae31a3f5d Simplified adjust level rules 2024-09-28 01:31:56 -05:00
Hiroku a0e01b9652 Merge branch '#1013-immortal-pokemon' into 'main'
Fixes Pokemon being immortal after breaking free from capture

Closes #1013

See merge request cable-mc/cobblemon!1177
2024-09-28 04:23:40 +00:00
Deltric 9d88fb7ca2 Resets beam mode to 0 after a Pokemon is finished breaking free from capture. Prevents them from staying immortal. 2024-09-27 22:49:32 -05:00
Paul ca0170f1ed Several camera mode fixes, fixing several move effects. Closes #1010 2024-09-28 11:36:45 +10:00
Paul bc6c9f5df8 Dude don't format stuff like that 2024-09-27 20:38:57 +10:00
Paul 1231e1b0f6 Merge remote-tracking branch 'origin/main' into PvP_Flat_Level_Battling 2024-09-27 12:54:12 +10:00
Paul 050f7e6161 Added property on PokemonEntity to toggle pose type recalculation 2024-09-27 12:20:57 +10:00
Paul 658ec95e6b Fixed pressing E for a nickname closing the GUI, closes #1006 2024-09-27 11:28:57 +10:00
JazzMcNade b99822e7da Merge branch 'main' into PvP_Flat_Level_Battling 2024-09-26 20:09:02 -05:00
Segfault Guy e66951debc A player can only have one of each request. 2024-09-26 21:04:26 -04:00
Hiroku 883f8149da Merge branch 'BattleBugStomping' into 'main'
BattleBugStomping Bugaloo

See merge request cable-mc/cobblemon!1167
2024-09-27 00:06:53 +00:00
Hiroku e5e4871c96 Merge branch 'feature/bugfixes' into 'main'
small fixes

Closes #1001 and #999

See merge request cable-mc/cobblemon!1176
2024-09-27 00:05:34 +00:00
JazzMcNade e074411596 Cleaned up Revival Blessing logic 2024-09-26 01:53:51 -05:00
JazzMcNade adf0ba7c9f Merge branch 'main' into BattleBugStomping 2024-09-26 01:22:11 -05:00
JazzMcNade 3d8c22fd68 Fixed client sync issues with triple battle's auto shift to center. 2024-09-26 00:18:03 -05:00
Segfault Guy 1e8a8d0896 Fix request expiry. 2024-09-25 23:25:23 -04:00
Polymeta a966f0f9a6 dont reset state with empty state causing the loss of aspects
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-25 23:32:01 +01:00
Polymeta da74990909 only rotate collection when leading pokemon is passed in to preserve original party order
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-25 22:43:00 +01:00
JazzMcNade 0e3102f5e4 Fixed a bug in which not having enough pokemon to fill all fainted slots would cause a soft lock. Fixed Revival Blessing. 2024-09-25 00:45:41 -05:00
Nick 36e3816bf3 Merge branch 'feature/pokemon-debug-utils' into 'main'
debug galore for pokemon

See merge request cable-mc/cobblemon!1175
2024-09-24 23:05:41 +00:00
PolymetaandNick 99e47e4cb7 debug galore for pokemon 2024-09-24 23:05:41 +00:00
Nick aa875b06ab Merge branch 'feature/form-dfu' into 'main'
introduce feature DFU to prevent loss of forms and other features when migrating from 1.20

Closes #993 and #541

See merge request cable-mc/cobblemon!1174
2024-09-24 17:24:29 +00:00
PolymetaandNick dfb08c8db0 introduce feature DFU to prevent loss of forms and other features when migrating from 1.20 2024-09-24 17:24:29 +00:00
Nick eefff036b7 Merge branch 'more-npcs' into 'main'
Many NPC improvements for foundation

See merge request cable-mc/cobblemon!1171
2024-09-23 23:02:00 +00:00
HirokuandNick 43050b4276 Many NPC improvements for foundation 2024-09-23 23:02:00 +00:00
Nick b1b8c6e9db Merge branch 'bugfix/fix-for-slippy' into 'main'
Fixed Jigsaw structure maximums

See merge request cable-mc/cobblemon!1173
2024-09-23 22:06:16 +00:00
Paul 583a973e53 Fixed Jigsaw structure maximums 2024-09-23 15:51:58 +10:00
Hiroku c0b945e3da Merge branch 'parchment' into 'main'
Added parchment mappings for param names

See merge request cable-mc/cobblemon!1172
2024-09-23 02:10:44 +00:00
apion fa73fb8e46 Added parchment mappings for param names 2024-09-22 22:00:49 -04:00
Hiroku 1fd9128b33 Merge branch 'DoubledPokeballSendOutParticlesFix' into 'main'
DoubledPokeballSendOutParticlesFix

See merge request cable-mc/cobblemon!1169
2024-09-23 00:34:43 +00:00
Hiroku f9799ef55e Merge branch 'feature/small-tweaks' into 'main'
remove redundant tracker and hardcode battle ui navigation to leftclick

Closes #992

See merge request cable-mc/cobblemon!1170
2024-09-22 21:25:15 +00:00
PolymetaandHiroku ab69c4f095 remove redundant tracker and hardcode battle ui navigation to leftclick 2024-09-22 21:25:15 +00:00
JazzMcNade a9a0fff643 PokemonClientDelagate now checks if beammode 1 in currently in progress before applying its effects. 2024-09-22 12:27:11 -05:00
Segfault Guy f9def3acf5 Implement DeferredRenderer for rendering request icons after translucent layer in LevelRender. 2024-09-22 11:49:17 -04:00
Apion 9bdb8102c1 Merge branch 'bugfix/1-6-fixes' into 'main'
Dex variation definitions for many pokes, show all pose types in dex

See merge request cable-mc/cobblemon!1168
2024-09-21 23:01:33 +00:00
HirokuandApion febcb7092a Dex variation definitions for many pokes, show all pose types in dex 2024-09-21 23:01:33 +00:00
Apion 4ec8b01efb Merge branch 'feature/jarring-changes' into 'main'
JarInJar fabric kotlin instead of shadowing kotlin libs to avoid compatibility issues

Closes #933

See merge request cable-mc/cobblemon!1161
2024-09-21 22:44:42 +00:00
PolymetaandApion 95b15d50c3 JarInJar fabric kotlin instead of shadowing kotlin libs to avoid compatibility issues 2024-09-21 22:44:42 +00:00
JazzMcNade 88d7b38a90 Cleaned up math 2024-09-21 17:44:21 -05:00
Apion 471eef6c31 Merge branch 'SinglesSendoutAdjustments' into 'main'
SinglesSendoutAdjustments

See merge request cable-mc/cobblemon!1166
2024-09-21 22:40:15 +00:00
JazzMcNadeandApion 513910e448 SinglesSendoutAdjustments 2024-09-21 22:40:15 +00:00
JazzMcNade 528f1d68b9 Fixed bug in which a fainted pokemon could be sent out in multibattles. Fixed actor display test when the first slot is fainted. Fixed timings of gui items now that the BattleOverlay tick speed has been fixed. 2024-09-21 17:32:36 -05:00
apion 1613250f5d Add method for in PlatformRegistry for sidemod usage 2024-09-21 18:27:14 -04:00
Hiroku f8a2802a8e Merge branch 'feature/sneaky-label' into 'main'
Tweak pokemon label display and additional config setting

See merge request cable-mc/cobblemon!1164
2024-09-21 22:16:44 +00:00
PolymetaandHiroku fdcbca4410 Tweak pokemon label display and additional config setting 2024-09-21 22:16:44 +00:00
Hiroku 85b96268be Merge branch 'Uh-Oh-Slippy-is-Messing-with-Code-Again' into 'main'
Uh oh slippy is messing with code again

See merge request cable-mc/cobblemon!1162
2024-09-21 00:17:15 +00:00
Hiroku 0a94c00859 Merge branch 'bugfix/1-6-fixes' into 'main'
Fixes

Closes #973 and #989

See merge request cable-mc/cobblemon!1165
2024-09-21 00:16:55 +00:00
Paul b7a2091c3e Fixed battle overlay animations absolutely zooooming 2024-09-21 10:01:45 +10:00
Polymeta 2dcd9467ec fix compile errors
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-20 13:08:50 +01:00
Polymeta 4fc6d35aab Merge branch 'Myslippy-main-patch-44800' into 'Uh-Oh-Slippy-is-Messing-with-Code-Again'
Update CHANGELOG.md (I apologize for my sins hiro please forgive me)

See merge request cable-mc/cobblemon!1163
2024-09-20 11:41:48 +00:00
Paul 89d62606d3 Merge remote-tracking branch 'origin/main' into bugfix/1-6-fixes 2024-09-20 19:54:21 +10:00
Myslippy c424e3a8c5 Update CHANGELOG.md (I apologize for my sins hiro please forgive me) 2024-09-20 09:36:35 +00:00
Slippy 792a8795ed more adjustments 2024-09-20 04:20:48 -05:00
Slippy 05d3c6d928 updated village pokecenter structure nbt files 2024-09-20 04:01:33 -05:00
Slippy 3f56af4b86 updated village pokecenter structure nbt files 2024-09-20 03:50:25 -05:00
Apion fe0e32de76 Merge branch 'Whaet' into 'main'
Update treasure.json

See merge request cable-mc/cobblemon!1160
2024-09-20 06:43:35 +00:00
apion 7456afac58 Fix crash 2024-09-20 02:28:13 -04:00
dhi_holo ee07204bae Merge branch 'main' into Whaet 2024-09-20 15:18:50 +10:00
dhi_holo 252296bf71 Update treasure.json
Made it so you can't fish obscene numbers of Poké Rod Smithing Templates anymore, but you can still get more from higher enchanted rods
2024-09-20 15:18:09 +10:00
Apion 3c4da18040 Merge branch 'bugfix/1-6-fixes' into 'main'
1.6 fixes

Closes #991, #973, and #989

See merge request cable-mc/cobblemon!1159
2024-09-20 05:16:46 +00:00
HirokuandApion 88ff54b97b 1.6 fixes 2024-09-20 05:16:45 +00:00
Hiroku 1f1590a49f Merge branch 'sidemoddable-storage-types' into 'main'
Moved PlayerInstancedDataStoreType to not be an enum (so sidemods can add new ones)

See merge request cable-mc/cobblemon!1158
2024-09-20 05:14:36 +00:00
apion c9476efe6f Licenses (please have mercy) 2024-09-20 00:12:00 -04:00
apion ac77262c88 Moved PlayerInstancedDataStoreType to not be an enum (so sidemods can add new ones) 2024-09-20 00:05:21 -04:00
Paul ba649652da Fixed shiny property not syncing properly #991 2024-09-20 13:25:32 +10:00
Paul c63dff32a0 Fixed capture pokeballs in battle UI spinning forever, fixes #973 2024-09-20 12:51:56 +10:00
Paul c253683506 Made relic coin pouches waterloggable, fixes #989 2024-09-20 12:24:46 +10:00
Hiroku d7788e277f Merge branch 'dialogue' into 'main'
cleanup dialog

See merge request cable-mc/cobblemon!1152
2024-09-19 23:54:48 +00:00
TestandHiroku 44cd81eb24 cleanup dialog 2024-09-19 23:54:47 +00:00
Hiroku 0987afe645 Merge branch 'feature/post-port-trauma' into 'main'
1.21.1 port fixes and other things

Closes #941, #214, #959, #986, #978, #975, and #952

See merge request cable-mc/cobblemon!1155
2024-09-19 23:47:01 +00:00
Polymeta d407561978 add datafixer for pokemon model components
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-19 17:04:06 +01:00
Polymeta dfe6c19e01 also apply regenerator on force switches
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-19 16:43:55 +01:00
Polymeta 978e625ba2 fix regenrator ability HP desync
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-19 15:35:20 +01:00
JazzMcNade 167e22cb9c Small refactor and fixed some text 2024-09-19 01:40:45 -05:00
JazzMcNade 5fe2ae9af1 Flat level battling rough draft 2024-09-18 20:53:35 -05:00
Polymeta d401009dbb restore some "lost" default pokemon nbt so it can be targeted by selectors
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 23:53:55 +01:00
Polymeta 0d16619eb8 create BeastBallModel.kt and assign it so the beast ball gets correct throwing animation and small cleanup
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 23:10:16 +01:00
Polymeta fd8feca60b merge 2 item renderer mixin classes into one and refactor out equality method to use for both dex and pokeball
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:54 +01:00
Polymeta d13908a8e7 fix pasture pokemon dropping loot when owner is not "present"
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:14 +01:00
Polymeta 1aae6fcc57 PR feedback
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:14 +01:00
Polymeta 6331742f93 fix mixin doing instance based comparison into something a little more concrete (resource location) also fixed boat crash
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:13 +01:00
Polymeta a21d99c871 make the interaction wheel slightly bigger to prevent overlapping buttons
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:13 +01:00
Polymeta c8f230ee8f update multiblock to contain all 3 parts as valid blocks for block entity also fix shoulder mount showing pre-evo and make pokemon smarter on leash
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-18 21:45:08 +01:00
Nick 8cf6645cdd Merge branch 'dfu-fun' into 'main'
DataFixers for a bunch of stuff

See merge request cable-mc/cobblemon!1156
2024-09-18 17:36:37 +00:00
ApionandNick 2b4b8fe13a DataFixers for a bunch of stuff 2024-09-18 17:36:37 +00:00
Slippy 3fcfac1cf6 Bug Fixes for ruins and fossil structures 2024-09-16 23:01:40 -05:00
Hiroku c73bfe67bf Merge branch 'no_ai-and-freeze_frame' into 'main'
Added no_ai and freeze_frame props, respect noai=true, added /freezepokemon

See merge request cable-mc/cobblemon!1154
2024-09-16 00:08:10 +00:00
Paul 25bdef0510 Cleanup isNoAi references since it's not needed 2024-09-16 08:16:18 +10:00
Paul d0c9093f41 Added no_ai and freeze_frame props, respect noai=true, added /freezepokemon 2024-09-15 20:12:45 +10:00
Hiroku 98e38836c5 Merge branch 'implement_pokemon' into 'main'
Petilil animation fix

See merge request cable-mc/cobblemon!1140
2024-09-15 09:51:19 +00:00
Frank The FarmerandHiroku b3a3064e1b Petilil animation fix 2024-09-15 09:51:19 +00:00
Paul a8caaf4654 Added changelog for breaking changes, use 'maxHealth' instead of 'hp' with temporary backcompat 2024-09-15 16:31:28 +10:00
Apion 232e0f478a Merge branch 'fix/storage-registry-support' into 'main'
Fixed NBT on pokemon held items not serializing, updated to 1.21.1

See merge request cable-mc/cobblemon!1153
2024-09-15 06:17:18 +00:00
Hiroku c039bf7f20 Merge branch 'another-minor-tag-push' into 'main'
Tag updates

See merge request cable-mc/cobblemon!1151
2024-09-15 03:36:59 +00:00
Paul 88d6c17c90 Fixed NBT on pokemon held items not serializing, updated to 1.21.1 2024-09-15 13:26:33 +10:00
dhi_holo 4e76871046 Tag updates
Forgot to add some blocks to some tags, so now that's fixed :)
2024-09-15 12:30:29 +10:00
Hiroku 598d016172 Merge branch 'feature/turn-off-dex-with-hotbar' into 'main'
ensure that when using hotbar, the scanning gui disappears

Closes #981

See merge request cable-mc/cobblemon!1150
2024-09-15 02:09:41 +00:00
PolymetaandHiroku 0c5baec179 ensure that when using hotbar, the scanning gui disappears 2024-09-15 02:09:41 +00:00
Hiroku 4729d4204c Merge branch 'more-json-fixes' into 'main'
Flash Fire Lang Addition

See merge request cable-mc/cobblemon!1149
2024-09-14 23:44:38 +00:00
dhi_holo 1a07b21b8d Merge branch 'main' into more-json-fixes 2024-09-15 09:17:32 +10:00
Hiroku b10bee6a3e Merge branch 'feature/fix-pipeline' into 'main'
make sure to deploy maven artefacts from main

See merge request cable-mc/cobblemon!1148
2024-09-14 23:01:00 +00:00
PolymetaandHiroku 44889a6c7d make sure to deploy maven artefacts from main 2024-09-14 23:01:00 +00:00
Hiroku 705eeae700 Merge branch 'BattleTargetSelectionRevision' into 'main'
Battle target selection revision / player interaction options consistency

See merge request cable-mc/cobblemon!1144
2024-09-14 22:11:00 +00:00
Hiroku a2122c7b24 Merge branch 'feature/advanced-advancements!' into 'main'
fix interaction advancement json files and ensure resurrection advancement is triggered by machine

Closes #985 and #957

See merge request cable-mc/cobblemon!1147
2024-09-14 22:10:19 +00:00
PolymetaandHiroku 940ed1450d fix interaction advancement json files and ensure resurrection advancement is triggered by machine 2024-09-14 22:10:18 +00:00
Hiroku 265ecd3749 Merge branch 'sound_tracker' into 'main'
Client sound tracking for entities & casting sound preemption

See merge request cable-mc/cobblemon!1119
2024-09-14 22:09:08 +00:00
Polymeta 561ded8747 merge artefacts...
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-14 22:27:31 +01:00
Hiroku 4e695cf020 Merge branch 'Corrected-natural-tag' into 'main'
Paul is fired for breaking the spawns!

See merge request cable-mc/cobblemon!1146
2024-09-14 21:06:07 +00:00
Segfault GuyandPolymeta f9288efb31 i forgot to add licenses because i dont care 2024-09-14 22:00:52 +01:00
Segfault GuyandPolymeta f69ffe9d99 Preemptively discarding bobber entity stops cast sound. 2024-09-14 22:00:52 +01:00
Segfault GuyandPolymeta 6ec81e6af2 Implement SoundTracker for active client sounds + fix rod casting sounds. 2024-09-14 22:00:43 +01:00
FrankTheFarmer c6baf6eafb Paul is fired for breaking the spawns! 2024-09-14 21:23:23 +10:00
dhi_holo 31fc59236f Lang addition and failed advancement fix
Issue #985 is relevant to some of the changes
2024-09-14 20:41:28 +10:00
JazzMcNade c4fa18ef41 Merge branch 'main' into BattleTargetSelectionRevision 2024-09-14 01:35:02 -05:00
Hiroku 2d34b7446e Merge branch 'feature/poke-rod-crash' into 'main'
fix pokerods crashing servers when being cast

See merge request cable-mc/cobblemon!1145
2024-09-14 05:52:07 +00:00
Paul eee994831c Merge remote-tracking branch 'origin/main' 2024-09-14 15:09:21 +10:00
Paul 72768ed1ac Changelog cleanup 2024-09-14 15:09:10 +10:00
Hiroku 635279c076 Merge branch 'sculk_sensor' into 'main'
Made PC and Pasture click the Sculk sensor

See merge request cable-mc/cobblemon!1137
2024-09-14 05:08:52 +00:00
Hiroku ad9f758b2f Merge branch 'feature/pokemon-label-name-config' into 'main'
Pokemon label is working again and new config setting

See merge request cable-mc/cobblemon!1142
2024-09-14 05:03:41 +00:00
PolymetaandHiroku 6a804792e3 Pokemon label is working again and new config setting 2024-09-14 05:03:41 +00:00
Hiroku 2104bf28b1 Merge branch 'UI_close_like_minecraft' into 'main'
Ui close like minecraft

See merge request cable-mc/cobblemon!1127
2024-09-14 05:00:34 +00:00
JazzMcNade 2300581493 Merge branch 'main' into BattleTargetSelectionRevision 2024-09-13 20:14:42 -05:00
Paul 7ce6fb065a Merge remote-tracking branch 'origin/main' 2024-09-14 10:27:21 +10:00
Paul dcea385b66 Created a #cobblemon:natural tag so spawns are faster 2024-09-14 10:24:41 +10:00
Polymeta d680e998ce rip out soundinstance from bobber as it was clientOnly and therefore not working properly anyways - also tidy up
Signed-off-by: Polymeta <40173118+Polymeta@users.noreply.github.com>
2024-09-13 17:16:40 +01:00
Hiroku 23ea4c6474 Merge branch 'feature/primary-click-batte-ui' into 'main'
use primary click only when navigating battle UI

Closes #954

See merge request cable-mc/cobblemon!1141
2024-09-13 05:56:04 +00:00
PolymetaandHiroku abf106ce94 use primary click only when navigating battle UI 2024-09-13 05:56:04 +00:00
JazzMcNade 1b3343589f Updated Triples Shift Button 2024-09-13 00:55:23 -05:00
Hiroku 96c6af8d59 Merge branch 'where-are-they' into 'main'
Recipes and Loot Tables

See merge request cable-mc/cobblemon!1143
2024-09-13 05:10:05 +00:00
Hiroku 82bbcfad26 Merge branch 'career-development' into 'main'
Decrease unemployment rate among villagers

See merge request cable-mc/cobblemon!1138
2024-09-13 05:09:18 +00:00
TestandHiroku 70e55626a0 Decrease unemployment rate among villagers 2024-09-13 05:09:17 +00:00
dhi_holo 107665c415 Merge branch 'main' into where-are-they 2024-09-13 12:04:36 +10:00
dhi_holo c8dd002e4a Some Tag Additions
Just a few new standard namespace tag additions for our items, and fixed an error with the poke rods tag
2024-09-13 12:04:20 +10:00
Paul fd2d06458b Merge remote-tracking branch 'origin/main' 2024-09-13 11:26:58 +10:00
Paul 29cb1276eb Clear calculated values on the client when data changes in pokedex 2024-09-13 11:26:40 +10:00
dhi_holo 0e0f6cee27 Merge branch 'main' into where-are-they 2024-09-13 10:21:12 +10:00
Apion 9c3a0704b9 Merge branch 'feature/bug-squashing' into 'main'
various smaller bugfixes

Closes #969, #970, #971, #972, and #967

See merge request cable-mc/cobblemon!1135
2024-09-12 23:28:49 +00:00
PolymetaandApion e9db3fc70c various smaller bugfixes 2024-09-12 23:28:49 +00:00
Slippy a41c3cb805 Updated village loot table 2024-09-12 13:46:51 -05:00
Slippy dd9fc85100 Updated structure files of village pokecenters 2024-09-12 03:42:24 -05:00
Slippy 00483ef54c Adjusted Decorated Pot Loot Table 2024-09-12 01:59:21 -05:00
dhi_holo 03210f0465 More Loot Table Fixes
Apricorn Leaves cleaned up, Medicinal Leek cleaned up, Tumblestone Clusters, Buddling Tumblestones, and basic Tumblestone Block fixed to behave properly.
2024-09-12 16:39:33 +10:00
JazzMcNade 26dc76a4f3 Fixed inconsistent ordering of options in PlayerInteractOptionsPacket 2024-09-12 01:35:26 -05:00
dhi_holo ae5e63aac9 Gilded Chest Update
Updated Gilded Chest's loot tables to use updated component data formatting, however this didn't fix them not dropping. Will need further investigation.
2024-09-12 15:53:12 +10:00
dhi_holo 08c8dd0f99 Added Missing Recipes
with tags and advancements related to the missing recipes too.
2024-09-12 14:18:51 +10:00
JazzMcNade 2044862edd Implemented tile based target selection, removed battle portrait target selection 2024-09-11 20:18:51 -05:00
apion 148b3c4271 Fixes #977 (Sherds not rendering) 2024-09-11 20:37:38 -04:00
Slippy 870cd0ec52 Updated structure files in taiga village and snowy village 2024-09-11 12:41:59 -05:00
Hiroku ef58d38c12 Merge branch 'loot-oh' into 'main'
Loot Table Fixes

See merge request cable-mc/cobblemon!1139
2024-09-11 10:10:14 +00:00
dhi_holo 7250b1a83c Loot Table Fixes
Ores now drop stuff correctly again, and Relic Coin Sacks (due to having an unused Natural blockstate) now can drop 20-64 relic coins when broken with the Natural blockstate set to true
2024-09-11 17:22:09 +10:00
Erusel 710b3f0303 Even better, centralised function 2024-09-11 02:32:01 +02:00
Erusel 57cf6f09fd Thanks to Hiroku's advice, it's more graceful. 2024-09-11 02:06:12 +02:00
Hiroku ec6820fa9d Merge branch 'holographic-cleanups' into 'main'
Holographic Cleanups

Closes #964

See merge request cable-mc/cobblemon!1136
2024-09-10 20:38:37 +00:00
Slippy bf4b211c4f removed "adapt noise" field. removed forest gate template pool. removed "start_height" field from structure sets. removed birch tree structures from oak tree template pool. 2024-09-10 06:25:07 -05:00
Slippy 3a2accb239 Ruin structures have been given loot tables for decorated pots 2024-09-10 02:46:00 -05:00
dhi_holo 6508d39e22 Merge branch 'main' into holographic-cleanups 2024-09-10 11:35:29 +10:00
Hiroku d0c7862103 Merge branch 'party-control-tweaks' into 'main'
Tweaks and fixes of sendout and other R key functions

See merge request cable-mc/cobblemon!1113
2024-09-09 02:47:52 +00:00
Paul f12962fd24 Changelog cleanup 2024-09-09 12:38:23 +10:00
Paul 9c7db81e22 Merge remote-tracking branch 'origin/main' into party-control-tweaks 2024-09-09 12:18:28 +10:00
Hiroku 6be1caf41a Merge branch 'sound' into 'main'
Fixed sound stuff lost in merges

See merge request cable-mc/cobblemon!1133
2024-09-09 02:17:55 +00:00
Hiroku d582507a6e Merge branch 'implement_pokemon' into 'main'
Some rather important animation fixes

See merge request cable-mc/cobblemon!1134
2024-09-09 02:17:13 +00:00
Frank The FarmerandHiroku 302c0e6fe7 Some rather important animation fixes 2024-09-09 02:17:13 +00:00
Erusel 97761ba1e3 Made PC and Pasture click the Sculk sensor 2024-09-09 00:10:04 +02:00
Slippy a75b578954 Updated Ruin Structure template_pool files to contain the new "override_liquid_settings" field. 2024-09-07 23:43:24 -05:00
dhi_holo 44ade828fa Update en_us.json
Updated Smithing Templates to the 1.21.2 style (because it's so much more usable, and means less updating work later)
Improved names of Gone Fishin' and A True Antiquarian advancements
2024-09-08 11:05:45 +10:00
dhi_holo 4c1a5f12b7 Merge branch 'main' into holographic-cleanups 2024-09-08 10:51:06 +10:00
Hiroku bbe7f96332 Merge branch 'BallBuffs' into 'main'
Ball buffs

See merge request cable-mc/cobblemon!1131
2024-09-08 00:37:11 +00:00
Hiroku a29a7ebbca Merge branch 'feature/resolve-some-todos' into 'main'
now that pokedex is present, resolve some todos that required on it, also use OTs for exp calc

Closes #966

See merge request cable-mc/cobblemon!1132
2024-09-08 00:18:10 +00:00
PolymetaandHiroku f4a7cc92ee now that pokedex is present, resolve some todos that required on it, also use OTs for exp calc 2024-09-08 00:18:10 +00:00
Sterrezo 9768711c5e Evolution sound is working now! 2024-09-08 01:56:54 +02:00
Sterrezo 4b3a864b28 Nothing is working
I fixed some missing sounds that were lost in merges. Added a placeholder animation to Hisui bias Petilil. Removed an empty sound event.
2024-09-08 01:19:06 +02:00
Slippy 60f057d28e Fossil Template Pools updated to contain "apply_waterlogging" field 2024-09-07 18:11:54 -05:00
Slippy 3c4219b069 update village template_pools to include 1.21 "override_liquid_settings" field 2024-09-07 17:12:11 -05:00
JazzMcNade 0db6da951e Updated tooltip strings for dusk ball. 2024-09-07 16:44:54 -05:00
JazzMcNade 3963537e40 Buffed Dusk Ball and Repeat Ball catch rate 2024-09-07 16:38:57 -05:00
Licious dd5e578d3a Merge branch 'ImplementRepeatBall' into 'main'
Implemented Repeat Ball's catch modifier

See merge request cable-mc/cobblemon!1130
2024-09-07 20:13:37 +00:00
JazzMcNade 4dab4b7ef6 Implemented Repeat Ball's catch modifier 2024-09-07 14:44:20 -05:00
Hiroku c19444816a Merge branch 'log-async' into 'main'
More safely check thread for spawners and influencers access and fix internal illegal access

See merge request cable-mc/cobblemon!1123
2024-09-07 10:11:27 +00:00
Paul 0610a997e2 Merge remote-tracking branch 'origin/main' into log-async
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/factory/JsonPlayerDataStoreFactory.kt
2024-09-07 19:37:38 +10:00
Hiroku 10faab68f9 Merge branch 'DoublesAreTheFuture' into 'main'
Added Doubles/Triples/Multibattles

See merge request cable-mc/cobblemon!1091
2024-09-07 09:36:59 +00:00
Paul 42c91c667b Licenses AGAIN RAAAAA 2024-09-07 19:25:09 +10:00
Paul bde9ddd017 TODO clearing 2024-09-07 19:14:49 +10:00
Paul c19a92406e Resolving merge issues 2024-09-07 19:05:50 +10:00
dhi_holo 93389ae98b Merge branch 'main' into holographic-cleanups 2024-09-07 18:14:41 +10:00
dhi_holo cb1dba64c0 missed a bit
one day I'll do this properly from stage 0

This is funnier though
2024-09-07 18:14:05 +10:00
Slippy 2d01e7a482 Village Pokecenters 2024-09-07 02:12:20 -05:00
dhi_holo 88f285199c added a thing for the rod recipe advancements
just makes it less spammy
2024-09-07 17:10:40 +10:00
dhi_holo e17bd10660 Automaton Fixes
Fixed Automaton Armour Trim being called that (instead of Armor because it's en_us), and missing the item name entirely
2024-09-07 17:00:06 +10:00
Hiroku c2ac903180 Merge branch 'mod-compat' into 'main'
Re add JEI compat

See merge request cable-mc/cobblemon!1129
2024-09-07 06:47:59 +00:00
dhi_holo 84feb449d9 Rodvancements
+Added Recipe Advancements for all of the Poké Rod Smithing Template stuff
+Unhid the Candy advancement, as there's now enough ways to get them that it doesn't need to be hidden
-Removed the Poké Rod Smithing Template from the Archaeology tab, as it's unfitting and is located in another tab where it does fit as well.
2024-09-07 16:44:06 +10:00
apion c475e51a1c Re add JEI compat 2024-09-07 02:16:02 -04:00
dhi_holo 682abbdd43 Green Dye Switch
For the sake of sanity
2024-09-07 16:11:23 +10:00
dhi_holo f8e68d2217 Updated Protector Recipe
Now cleaner and cooler
2024-09-07 14:51:31 +10:00
dhi_holo e8ddabe3ac Merge branch 'main' into holographic-cleanups 2024-09-07 14:33:35 +10:00
dhi_holo 32dd49b669 Update display_case.json
Fixes z-fighting, resolving #964
2024-09-07 14:30:54 +10:00
Paul b9d3966cfe Merge remote-tracking branch 'origin/main' into DoublesAreTheFuture
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/gui/GuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/SwitchInstruction.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/battle/ClientBattle.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/PokemonGuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleOverlay.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/subscreen/BattleSwitchPokemonSelection.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/RenderHelper.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
#	common/src/main/resources/assets/cobblemon/sounds.json
#	common/src/main/resources/assets/cobblemon/sounds/item/pokedex/pokedex_show.ogg
2024-09-07 14:26:07 +10:00
Paul 682325af59 Merge remote-tracking branch 'origin/main' into evolution-effect 2024-09-07 14:03:45 +10:00
Paul d145969631 Removed unneeded glowTime code 2024-09-07 14:03:23 +10:00
Hiroku 432ccf17c0 Merge branch 'evolution-effect' into 'main'
Evolution effect

See merge request cable-mc/cobblemon!970
2024-09-07 04:03:14 +00:00
Paul c6452d1905 I will teach the license file the true meaning of pain (bread) 2024-09-07 13:54:16 +10:00
Paul f72f422ef0 Conflict fixes and fixes to recent animation function changes 2024-09-07 13:43:56 +10:00
dhi_holo d10ba586c8 To Undo Later
Just making it so the game doesn't have errors from the bug with the species not loading before the advancements, will undo this change once we can
(also corrected an error I put in the lang)
2024-09-07 13:09:25 +10:00
Paul 39fc384b67 Merge remote-tracking branch 'origin/main' into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokemon/evolution/Evolution.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/snowstorm/ParticleEvent.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/PoseableEntityState.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/animation/PoseTransitionAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/animation/PrimaryAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/animation/StatefulAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/bedrock/animation/BedrockActiveAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/pokemon/PokemonRenderer.kt
2024-09-07 13:09:21 +10:00
Paul 477318b124 Imports 2024-09-07 12:53:10 +10:00
Paul 367d79a976 Merge remote-tracking branch 'origin/main' into poker-decks 2024-09-07 12:52:01 +10:00
Hiroku eb36320396 Merge branch 'sega_bass_pro_fishing_2' into 'main'
Make it possible to add new animation molang functions.

See merge request cable-mc/cobblemon!1115
2024-09-07 02:45:21 +00:00
dhi_holo 6409b75aef Merge branch 'main' into holographic-cleanups 2024-09-07 12:34:15 +10:00
Hiroku 98e4f6facc Merge branch 'stone-blocks' into 'main'
Blocks! More Blocks! Stones, even!

Closes #930

See merge request cable-mc/cobblemon!1120
2024-09-07 02:16:31 +00:00
Hiroku 5ea8bbd08e Merge branch 'TheSketchySmeargle' into 'main'
Sketch and Forget

See merge request cable-mc/cobblemon!1093
2024-09-07 01:55:18 +00:00
Paul e7efb94ee9 Merge remote-tracking branch 'origin/main' into poker-decks 2024-09-07 10:51:04 +10:00
Hiroku c3230f0722 Update CHANGELOG.md 2024-09-07 00:49:52 +00:00
Paul 0fd6328ae4 Fixed compile error from mappings switch 2024-09-07 10:43:43 +10:00
Hiroku 43a05e5037 Merge branch 'feature/neoforge-bump-fixes' into 'main'
bump neoforge to stable version and fix breaking changes (and add missing license headers)

Closes #961 and #960

See merge request cable-mc/cobblemon!1128
2024-09-07 00:38:35 +00:00
PolymetaandHiroku c2b5eca4c7 bump neoforge to stable version and fix breaking changes (and add missing license headers) 2024-09-07 00:38:35 +00:00
Hiroku e9c88ae899 Merge branch 'feature/poker-chips' into 'poker-decks'
variation tooltip to display when buttons are hovered

See merge request cable-mc/cobblemon!1125
2024-09-07 00:38:01 +00:00
PolymetaandHiroku fece798b92 variation tooltip to display when buttons are hovered 2024-09-07 00:38:01 +00:00
Myslippy 564b5ae413 Update StructurePoolGeneratorMixin.java 2024-09-06 20:51:40 +00:00
Myslippy a8c93146da Update StructurePoolGeneratorMixin 2024-09-06 20:08:37 +00:00
Licious a0c3e40cc4 Merge branch 'fix_moves_description' into 'main'
Fix moves descriptions cutting off

See merge request cable-mc/cobblemon!1126
2024-09-06 13:10:23 +00:00
EruselandLicious 1da011026e Fix moves descriptions cutting off 2024-09-06 13:10:23 +00:00
Erusel 4ab4f27690 fixed trade gui not closing 2024-09-06 14:39:50 +02:00
Erusel 5aaf3aaa8a fixed doomed key pressed method not being called and screens not closing 2024-09-06 14:38:18 +02:00
BuildTools 73ba27a148 fixed imports 2024-09-06 13:55:44 +02:00
BuildTools 7493ac80c4 changing thing for making it closing at the inventory key and not "e" 2024-09-06 13:55:05 +02:00
BuildTools 5d4c4a2d9d added minecraft like closing on PC 2024-09-06 13:24:03 +02:00
BuildTools dad87454cf added minecraft like closing on Pokenav 2024-09-06 13:23:18 +02:00
BuildTools fbcbdd0d1f added minecraft like closing on Starter Selection 2024-09-06 13:21:16 +02:00
BuildTools 37ac4837b2 added minecraft like closing on Trade GUI 2024-09-06 13:20:21 +02:00
BuildTools 8cae97b297 added minecraft like closing on Summary 2024-09-06 13:17:49 +02:00
JazzMcNade 3981ccc332 Player Interactions: Server now informs the client on why an option is unavailable. 2024-09-06 01:31:48 -05:00
Lily e5c2daac2e added cosmetic variants for several pokemon in the pokedex 2024-09-04 21:28:57 -04:00
Lily cccd3aa310 fixed searching 2024-09-04 17:56:44 -04:00
Lily b8dc811a4f fixed missing drop button 2024-09-04 12:51:48 -04:00
Lily 2e8529cc62 oops 2024-09-04 12:34:43 -04:00
Lily 5f8a49e008 re-ordered paldean dex; fixed johto dex missing from the national category 2024-09-04 12:28:59 -04:00
JazzMcNade a945c839f0 Greyed out trade request option if it's unavailable 2024-09-03 23:51:22 -05:00
Test 607413db61 Merge branch 'fix_pc_arrow_hover' into 'main'
Fix NavigationButton hover

See merge request cable-mc/cobblemon!1124
2024-09-04 04:07:32 +00:00
EruselandTest d478eecf47 Fix NavigationButton hover 2024-09-04 04:07:31 +00:00
SPGesus dd624d06f3 Update galar.json 2024-09-04 01:26:13 +00:00
SPGesus bc596a48ed Update alola.json 2024-09-03 22:59:34 +00:00
dhi_holo 25ad6e96f4 Not Yet Fixed Because Grr
The component data for these is pretty much solved, except for one major issue:
It totally stops the advancements loading in game for some reason. Doesn't like the species ID effectively. If anyone wants to take a crack at it between now and whenever it's solved, plz
2024-09-03 16:26:37 +10:00
dhi_holo 8efd658a93 Fix Batch 1
Added translation strings for the two new gamerules and 6 new tags (even if one of them isn't actually in this branch)
Fixed two advancements having incorrect icons (due to switch from nbt to item components)
2024-09-02 18:22:07 +10:00
dhi_holo c565a79697 Change Instrument
Evolution Blocks now use the Bit instrument (from Emerald Blocks) instead of Basedrum (from stone)
2024-09-02 16:30:13 +10:00
dhi_holo 81f82faa2d Updated to 1.21
Updated to Main/1.21
2024-09-02 16:20:28 +10:00
dhi_holo 978e886b6e Merge branch 'main' into stone-blocks 2024-09-02 15:35:58 +10:00
Paul 6d7784cb3a Added dex additions and dex entry additions 2024-09-02 15:11:03 +10:00
JazzMcNade 63de39b970 Merged Main into DoublesAreTheFuture 2024-09-01 19:18:50 -05:00
JazzMcNade 05a8154d2e Merge Conflicts 2024-09-01 18:32:30 -05:00
JazzMcNade 134b071a1d Merge branch 'main' into TheSketchySmeargle 2024-09-01 18:32:08 -05:00
Paul 5f4366735f Merge remote-tracking branch 'origin/poker-decks' into poker-decks 2024-09-01 22:00:00 +10:00
apion 7fd0f2710e Fixed pokedex grant all command 2024-09-01 07:09:55 -04:00
Paul 7a4760e1bc Merge remote-tracking branch 'origin/main' into poker-decks
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/events/CobblemonEvents.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/gui/GuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/PokemonGuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/AerodactylModel.kt
#	common/src/main/resources/assets/cobblemon/sounds.json
2024-09-01 20:24:24 +10:00
apion 6574976f2d Pokedex scrolls to correct mon when opened via scanner 2024-09-01 06:18:34 -04:00
apion 6126653a2c Fix neoforge scanner rendering 2024-09-01 05:38:32 -04:00
Paul f45bc68ee6 Changelog! Again! Check again tomorrow for more (also mojmaps) 2024-09-01 19:33:07 +10:00
Paul 1c71e68323 Merge remote-tracking branch 'origin/main' into log-async 2024-09-01 19:29:56 +10:00
Paul 2d9523b9a1 Deleted unused posers 2024-09-01 19:27:00 +10:00
Paul 5ed9fba170 Changelog squashing for 1.6 2024-09-01 19:25:40 +10:00
Hiroku 22583bd207 Merge branch 'sega_bass_pro_fishing_2' into 'main'
1.6 Merge

Closes #916

See merge request cable-mc/cobblemon!1107
2024-09-01 07:53:43 +00:00
Paul 32d68ce554 Conflicto begonus 2024-09-01 17:10:26 +10:00
Paul 72a897063c Merge remote-tracking branch 'origin/main' into sega_bass_pro_fishing_2
# Conflicts:
#	common/src/main/java/com/cobblemon/mod/common/mixin/PlayerMixin.java
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonSounds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/item/PokemonSelectingItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokemon/evolution/Evolution.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/SwitchInstruction.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/block/HealingMachineBlock.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/block/PCBlock.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/battle/BattleMusicHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/battle/BattleSwitchPokemonHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/sound/battle/BattleMusicInstance.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/battle/BagItemConvertible.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/item/interactive/ReviveItem.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokemon/evolution/controller/ServerEvolutionController.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/world/gamerules/CobblemonGameRules.kt
#	common/src/main/resources/data/cobblemon/loot_table/ruins/common/luna_henge_ruins.json
#	common/src/main/resources/data/cobblemon/loot_table/ruins/common/sol_henge_ruins.json
#	common/src/main/resources/data/cobblemon/loot_table/ruins/common/stonjourner_henge_ruins.json
#	common/src/main/resources/data/cobblemon/loot_table/ruins/uncommon/luna_henge_ruins.json
#	common/src/main/resources/data/cobblemon/loot_table/ruins/uncommon/sol_henge_ruins.json
#	common/src/main/resources/data/cobblemon/loot_table/ruins/uncommon/stonjourner_henge_ruins.json
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_center1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_center1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_center1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side2a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side2b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side2c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side3a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side3b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side3c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side4a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side4b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/lunatone_side4c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_center1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_center1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_center1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side2a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side2b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side2c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side3a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side3b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side3c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side4a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side4b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/solrock_side4c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_center1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_center1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_center1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner10a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner10b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner10c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner11a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner11b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner11c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner12a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner12b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner12c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner2a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner2b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner2c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner3a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner3b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner3c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner4a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner4b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner4c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner5a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner5b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner5c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner6a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner6b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner6c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner7a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner7b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner7c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner8a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner8b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner8c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner9a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner9b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_corner9c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side1a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side1b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side1c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side2a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side2b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side2c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side3a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side3b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side3c.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side4a.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side4b.nbt
#	common/src/main/resources/data/cobblemon/structure/ruins/stonjourner_side4c.nbt
2024-09-01 16:32:14 +10:00
Paul a471a0183f Fixed form unlocking not working properly and gender ratios misbehaving in dex 2024-09-01 16:25:37 +10:00
Hiroku 11cfb7184d Merge branch 'sound' into 'main'
Sound updates

See merge request cable-mc/cobblemon!1121
2024-09-01 06:15:36 +00:00
Hiroku e2645e02d1 Merge branch 'poker-table' into 'poker-decks'
Table for poker decks

See merge request cable-mc/cobblemon!1122
2024-09-01 04:50:21 +00:00
TestandHiroku 33ff9e90b6 Table for poker decks 2024-09-01 04:50:21 +00:00
Test e75e2801ce fix slot spacing 2024-08-31 23:53:53 -04:00
Tyzillion 7f77abd9a2 License update and changelog update. 2024-08-31 23:13:46 -04:00
Paul 592e6ce5a8 Properly setup dex data with ordering 2024-09-01 11:47:52 +10:00
JazzMcNade f653d325bb Battle wheel option is now greyed out if the target is unable to battle. 2024-08-31 19:11:40 -05:00
Paul 859ca62dc8 Fixed flashing dex screen and seen pokemon not showing properly 2024-08-31 12:25:05 +10:00
Paul 148f4be444 Dex sort order 2024-08-31 11:07:45 +10:00
Paul 4bf6ec80b4 re-enabled dex scanning but it blows up the game 2024-08-30 22:12:50 +10:00
Paul d9a0998213 Added variation controls to dex, fixed various bugs with dex 2024-08-30 22:00:14 +10:00
JazzMcNade eeec0e853b Fixed request button text. Updated team leave icon. 2024-08-30 00:34:42 -05:00
Tyzillion 925b18d809 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into evolution-effect 2024-08-28 20:37:39 -04:00
Paul 9c817f77dc Dex initialization fixes, display correct first-known-forms in national dex, fixed species features not saving 2024-08-26 21:36:12 +10:00
Paul b044fe01bb Form dex squashing, Alola dex with separated Rattata as example, various fixes for UI knowledge 2024-08-26 17:03:09 +10:00
Paul d46c88dcf3 Significant restructuring of pokedex entry data 2024-08-26 12:26:20 +10:00
JazzMcNade 03231beab7 Sketch's new move is now immediately applied to effectedpokemon, rather than during postbattle. 2024-08-25 19:44:43 -05:00
amo b4919d18d1 🌠 Fix: Fix friendship only ever being updated clientside & chance inverted check 2024-08-25 14:05:26 +01:00
amo d9e8283743 🌠 Chore: Remove strict inequality from bobber rendering check 2024-08-25 12:59:15 +01:00
apion 3d84063f9a Fix licenses, delete unnecessary files 2024-08-25 02:17:18 -04:00
apion 73237073c2 Lang fixes 2024-08-25 02:09:47 -04:00
apion 05b04cfa67 Added swapping between dexes 2024-08-25 02:09:00 -04:00
apion 4187c04374 Added Johto pokemon, and allowed for aggregation of separately defined dexes 2024-08-25 01:48:05 -04:00
apion d5fca78ba0 Merge remote-tracking branch 'origin/poker-decks-key-value' into poker-decks-key-value
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/pokedex/PokedexGUI.kt
2024-08-24 23:25:28 -04:00
apion 8411cd44f9 Added a codec backed GSON adapter, added a codec for ExpressionLikes, setup infrastructure for different types of dexes 2024-08-24 23:24:54 -04:00
Paul e1dc9b1b1b Merge relics 2024-08-25 11:40:41 +10:00
Paul 595a079625 Merge remote-tracking branch 'origin/poker-decks' into poker-decks-key-value
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokedex/PokedexJSONRegistry.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokedex/PokedexRecord.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokedex/SpeciesPokedexEntry.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/pokedex/PokedexGUI.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokedex/DexData.kt
#	common/src/main/resources/data/cobblemon/pokedexes/national.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_alola.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_galar.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_hisui.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_hoenn.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_johto.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_kalos.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_kanto.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_paldea.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_sinnoh.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_unknown.json
#	common/src/main/resources/data/cobblemon/pokedexes/national_unova.json
2024-08-25 11:11:14 +10:00
apion cf5bd4dca6 Fix conditions (again) 2024-08-24 16:59:42 -04:00
apion a0d9322e55 Fix conditions 2024-08-24 16:52:23 -04:00
apion 304f6c83ee Fix compile errors and encode/decode issues 2024-08-24 16:20:22 -04:00
Paul 8d4a7de267 Calculated pokedex data, some clean up of unused stuff, need to fix up dex client 2024-08-24 22:36:57 +10:00
apion 3b302d6777 Add referential integrity 2024-08-23 23:14:40 -04:00
Paul 59a92391cd Merge remote-tracking branch 'origin/poker-decks-key-value' into poker-decks-key-value 2024-08-23 22:27:55 +10:00
Paul d18a3e43e4 Reworking dex data to be declarative 2024-08-23 22:27:36 +10:00
apion c9baf9332b Add forms 2024-08-22 18:27:44 -04:00
apion ccf3d8eefe Add the 151 OG pokemon as dex entries 2024-08-22 17:24:24 -04:00
Sterrezo 9ac8ca3a7b Final tweaks to the new evolution sound 2024-08-22 14:08:58 +02:00
apion 0698f8265b Fixed numbering 2024-08-21 22:39:41 -04:00
apion a10622151c Renamed stuff to be pokedex specific 2024-08-21 21:15:21 -04:00
apion f69ed78582 Cleaned up event subscriptions a bit, hooked into player party store instead of trying to track pokedex events everywhere. 2024-08-21 19:43:12 -04:00
apion c52ad67435 Fix pokemon rendering when not supposed to 2024-08-21 19:06:01 -04:00
dhi_holo a79428cfb6 Update CobblemonBlocks.kt
Made Ice Block use the Ice colour on maps (why are the map colour names so annoying)
2024-08-21 17:17:17 +10:00
dhi_holo a0672f6354 Data and Textures
all the data files for the smooth tumblestone block suites, and the textures updated since past commit
2024-08-21 16:40:49 +10:00
dhi_holo 72000a1340 More Tumblestone Blocks WIP
Needing to take a break, so untested WIP push just so it's saved. Adds all 9 smooth blocks, and updates older textures. Should be fully functional on the asset side as of this commit, data side will be done later.
2024-08-21 14:57:16 +10:00
Sterrezo 9d25da31dc Fixed block sounds playing at an incorrect pitch
Increased the pitch in CobblemonSounds.kt, workaround for #929
Tweaked volumes again.
2024-08-20 13:10:58 +02:00
Sterrezo 96778d2de0 Implemented sounds for evolution stone blocks 2024-08-20 11:58:19 +02:00
dhi_holo c646f7555e Blocks In
All 10 blocks implemented in near full.
Block data, models, loot tables, recipes, advancements, item groups, lang. Only missing the textures for 6 of the blocks, the sounds (needs changing in Blocks as well as implementation), and confirmation for one texture.

Ice Stone texture also updated
2024-08-20 12:30:07 +10:00
Test c5600ff881 rolling scan lines 2024-08-18 23:17:08 -04:00
apion a39b3092be Actually added a pokemon with an alternate form (rattata) 2024-08-18 17:21:04 -04:00
apion 8c5a24c431 More progress 2024-08-18 16:38:53 -04:00
Sterrezo fb84c48d4d Merge branch 'main' into sound 2024-08-18 21:20:54 +02:00
Sterrezo efc59ab2be More updates to the UI evolution sound 2024-08-18 21:19:09 +02:00
apion 44560195fc Things are kinda working 2024-08-18 14:17:15 -04:00
apion 9b2f0c9375 More work trying to convert to new data format 2024-08-18 13:34:38 -04:00
Hiroku 5cbcef5a88 Merge branch 'remove-unused-event' into 'main'
Remove unused held item update event

See merge request cable-mc/cobblemon!1118
2024-08-18 02:46:56 +00:00
Hiroku 7aa76587df Merge branch 'whatsy/poker-decks' into 'poker-decks'
poker decks

See merge request cable-mc/cobblemon!1089
2024-08-18 02:46:37 +00:00
JazzMcNade ebbbec9d6c Fixed merge conflicts 2024-08-17 21:30:46 -05:00
JazzMcNade 8bb2d1321d Merge branch 'main' into TheSketchySmeargle 2024-08-17 21:30:20 -05:00
Tyzillion e5ffb6db96 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into evolution-effect 2024-08-17 22:23:57 -04:00
apion 7700a606d0 IDK if this stuff is staying 2024-08-17 20:52:49 -04:00
Paul 57dbb9fc02 Conflicto confundo 2024-08-18 10:01:47 +10:00
Paul 938cd995d7 Merge remote-tracking branch 'origin/poker-decks' into whatsy/poker-decks
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/pokedex/MapUpdatePacketHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/pokedex/scanner/PokedexUsageContext.kt
2024-08-18 09:58:41 +10:00
Paul 112649081f Properly handle the ordering of dexes 2024-08-18 09:54:36 +10:00
apion d27ee304cb This ones for you Village 2024-08-17 13:53:44 -04:00
apion 1b5ad6e860 Fix server crashes 2024-08-17 10:58:44 -04:00
apion d283eb061a Fix issue where only assets for the red pokedex are used 2024-08-17 09:46:08 -04:00
Paul 92111b1046 Ported some dex stuff to mojmaps, scanning owned pokemon adds to Caught status in dex 2024-08-17 21:35:23 +10:00
Paul fbc976bfa0 Merge branch 'poker-decks' into whatsy/poker-decks
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokedex/PokedexJSONRegistry.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/pokedex/PokedexGUI.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/keybind/keybinds/PokedexBinding.kt
2024-08-17 19:37:52 +10:00
Landon Wills 5c6ecb1807 Remove unused held item update event 2024-08-16 23:13:39 -04:00
Paul cb266499a3 Use a snapshot of the storm matrix for event particle type EMITTER 2024-08-16 17:28:29 +10:00
Paul 094f860b80 Fixed evo burst particle being emitter bound 2024-08-16 15:53:04 +10:00
Paul 79c1259cae Restored original particle event source matrix for EMITTER and EMITTER_BOUND types 2024-08-16 15:43:53 +10:00
Sterrezo 01f922b653 Clarified a change in the changelog and re-added a sound for evolution in sounds.json 2024-08-16 01:11:52 +02:00
Sterrezo 71d1730697 Merge branch 'main' into sound 2024-08-16 00:58:52 +02:00
Apion 84dfd56c12 Merge branch 'Slippy-is-a-Coder-Now' into 'main'
Slippy is a coder now

See merge request cable-mc/cobblemon!1108
2024-08-15 21:25:57 +00:00
Nick 770abc2b9b Merge branch 'feature/fix-license' into 'main'
fix missing license headers

See merge request cable-mc/cobblemon!1116
2024-08-15 17:35:28 +00:00
Polymeta 353069803f fix missing license headers 2024-08-15 18:17:55 +01:00
Waterpicker 03227d07f2 Make it possible to add new animation molang functions. 2024-08-15 02:06:51 -05:00
Paul b8d913bd2b Fixed weird waterlogging issues in pasture and PC 2024-08-12 15:34:57 +10:00
Paul 9339d91cbb Missing licenses 2024-08-12 13:47:15 +10:00
Paul 3a759eccf7 Improved "!" above challenger heads, it's not smooth yet 2024-08-12 13:45:26 +10:00
Paul 8b255c784a Fixed monitor block rotations from structures maybe 2024-08-11 18:17:27 +10:00
apion d515091b30 Add all unimplemented mons to dex 2024-08-11 01:30:14 -04:00
apion 1f3e408396 Made pokemon types into an enum, changed how server side scan validation works 2024-08-10 22:38:03 -04:00
apion f800070f91 Made scanning actually add pokedex records 2024-08-10 20:27:21 -04:00
apion 5f4c2d1d7e God have mercy on my soul 2024-08-10 19:15:33 -04:00
JazzMcNade d8bae04239 BattleChallengeParticleWIP 2024-08-10 18:06:59 -05:00
Tyzillion 4efd8a7fef Tweaked evolution particles. 2024-08-10 15:52:27 -04:00
Tyzillion e7911644d8 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokemon/evolution/Evolution.kt
2024-08-10 14:57:33 -04:00
apion 590c3cfcd2 Added zooming back 2024-08-10 10:05:40 -04:00
apion 2b1b393c92 Added back the display of the species name 2024-08-10 07:27:56 -04:00
apion 0b3d78e509 More cleanup 2024-08-10 06:30:47 -04:00
Sylvonir b42b561e49 Oops random extra variable 2024-08-09 21:38:44 -07:00
Sylvonir 68639390f5 Merge remote-tracking branch 'origin/party-control-tweaks' into party-control-tweaks 2024-08-09 21:38:17 -07:00
Sylvonir 226fefc08a Hopefully match party scroll behaviour with vanilla logic 2024-08-09 21:38:07 -07:00
Sylvonir c8fb04e0ea Hopefully match party scroll behaviour with vanilla logic 2024-08-09 21:35:38 -07:00
Sylvonir f4aa67390a Merge remote-tracking branch 'origin/party-control-tweaks' into party-control-tweaks 2024-08-09 21:30:38 -07:00
Hiroku 4cdea8d1fc Merge branch 'sprites' into 'sega_bass_pro_fishing_2'
Gui Sprites

See merge request cable-mc/cobblemon!1102
2024-08-10 00:43:54 +00:00
WaterpickerandHiroku 1b6139b386 Gui Sprites 2024-08-10 00:43:54 +00:00
Hiroku de3342226b Merge branch 'battle_bug_fixes' into 'main'
Battle bugs pentakill

Closes #865, #912, #880, #466, and #819

See merge request cable-mc/cobblemon!1105
2024-08-10 00:37:40 +00:00
Hiroku ca890133ba Merge branch 'Myslippy-main-patch-47052' into 'main'
Update CHANGELOG.md

See merge request cable-mc/cobblemon!1111
2024-08-10 00:36:24 +00:00
Hiroku c452aa77a9 Merge branch 'fix-missing-stellar-message' into 'main'
Fix terastallize message missing when using stellar

See merge request cable-mc/cobblemon!1112
2024-08-10 00:36:12 +00:00
Sylvonir 1530f4d09a Update CHANGELOG.md 2024-08-09 15:22:26 -07:00
Sylvonir 2a64c405f9 Update CHANGELOG.md 2024-08-09 15:12:51 -07:00
Sylvonir d5a22165c6 Fix battle log GUI flashing when BattleGUI is opened 2024-08-09 15:00:40 -07:00
Sylvonir a16ae6665a Fix party scroll not overriding vanilla scroll with high scroll speeds 2024-08-09 13:55:01 -07:00
Sylvonir 12595dde53 Let Pokémon be invulnerable during sendout and intangible during recall 2024-08-09 13:33:15 -07:00
Sylvonir 68299d2b57 Tweak recall timing and allow it to cancel sendout 2024-08-09 13:02:13 -07:00
JazzMcNade 3d8935136e Updated Lang key references 2024-08-09 01:17:24 -05:00
Landon Wills fba2217e6f Fix terastallize message missing when using stellar 2024-08-09 02:00:10 -04:00
JazzMcNade 462a8502bf Removed delay in damage being applied for some targets in multitarget attacks 2024-08-09 00:54:50 -05:00
Apion 2bd1382b85 Merge branch 'feature/simplify-modelloader-mixin' into 'sega_bass_pro_fishing_2'
Stop throwing errors in the model loader that generate misleading crash-reports

See merge request cable-mc/cobblemon!1110
2024-08-08 16:11:08 +00:00
PolymetaandApion 7791e72f72 Stop throwing errors in the model loader that generate misleading crash-reports 2024-08-08 16:11:07 +00:00
JazzMcNade d8645530de Fixed up challenge notification messages 2024-08-08 00:28:42 -05:00
Myslippy 8026a7c0b7 Update CHANGELOG.md 2024-08-08 03:16:19 +00:00
JazzMcNade 1e27298f36 Sendouts for double/triples now better reflect the party team ordering 2024-08-07 21:36:05 -05:00
Segfault Guy 640c7b1086 Switch clarity and cleanup to address log flooding. 2024-08-05 23:51:07 -04:00
JazzMcNade 35cc7cc956 Adjusted sendout timings so that the first sendout always happens immediately. Challengers always sendout first. 2024-08-05 20:27:41 -05:00
JazzMcNade a34bc3ef49 Battle start sendout timings are now staggered and randomized. 2024-08-05 00:24:16 -05:00
JazzMcNade e7f1092264 Added Actor display names to battle overlay 2024-08-04 23:21:13 -05:00
JazzMcNade 077669d34f Fixed back button from from playing a click sound when it is not visible 2024-08-04 17:54:02 -05:00
JazzMcNade d3784e918e Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-08-04 17:36:57 -05:00
JazzMcNade d0f2d816fe Back button position is now consistent between screens. refactored class name for better clarity 2024-08-04 17:09:23 -05:00
JazzMcNade d54d91e60f Implemented Compact battle portraits, Added portrait target selection, fixed some styling 2024-08-04 16:16:24 -05:00
apion 301b210d5a Started some big boy cleanup for the dex 2024-08-04 16:31:04 -04:00
apion b942c3a45e Fix dimension serialization 2024-08-04 13:17:04 -04:00
apion 8b053f491b Another pass 2024-08-04 09:05:42 -04:00
apion a65c82c2b4 Third pass at resolving mapping problems 2024-08-04 08:27:13 -04:00
apion 813258064c Second pass at resolving mapping problems 2024-08-04 08:16:58 -04:00
apion c5124cf19d First pass at resolving mapping problems 2024-08-04 03:46:24 -04:00
apion 6ffa7b1be3 Merge branch 'refs/heads/sega_bass_pro_fishing_2' into poker-decks
# Conflicts:
#	common/src/main/java/com/cobblemon/mod/common/mixin/PartyScrollMixin.java
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/gui/GuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/GeneralPlayerData.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/PlayerDataStoreManager.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/adapter/JsonPlayerData.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/adapter/MongoPlayerData.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/factory/JsonPlayerDataStoreFactory.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/factory/PlayerDataStoreFactory.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonBakingOverrides.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/PokemonGuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleOverlay.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/keybind/CobblemonKeyBinds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/net/SetClientPlayerDataHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/RenderHelper.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PosableModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/bedrock/animation/BedrockAnimation.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/ChangeScaleAndSize.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/ChangeWalkSpeed.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/OpenStarterScreenCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/battle/BattleInitializePacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/starter/SetClientPlayerDataPacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/serverhandling/starter/RequestStarterScreenHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/starter/CobbledStarterHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MiscUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/PlayerExtensions.kt
#	common/src/main/resources/cobblemon-common.accesswidener
#	fabric/src/main/kotlin/com/cobblemon/mod/fabric/client/CobblemonFabricClient.kt
2024-08-04 02:53:12 -04:00
Hiroku cd68665cf4 Merge branch 'main' into 'main'
Enhance Test Coverage for IVs.createRandomIVs

See merge request cable-mc/cobblemon!1101
2024-08-03 01:34:39 +00:00
Hiroku de9d9ec645 Merge branch 'battle_theme_tweaks' into 'main'
Battle theme Sound Physics Remastered compat + fade out override

See merge request cable-mc/cobblemon!1106
2024-08-03 01:33:58 +00:00
Hiroku 598748220f Less code = better 2024-08-03 01:05:05 +00:00
JazzMcNade 0fd4f68f69 Corrected Lang 2024-08-02 19:30:25 -05:00
Paul 313250347c More safely check thread for spawners and influencers access 2024-08-03 10:09:56 +10:00
Sterrezo cbdb63b102 I never forget to ctrl + s the changelog 2024-08-02 15:10:05 +02:00
Sterrezo d211fb2310 Updated sounds for clicks, evolution and evolution notification. Renamed and relocated evolution sound assets.
Evolution sounds were scattered in the folder with Pokemon. I moved them all to their own folder and renamed them to be more descriptive as to where they play both in files and in code.
2024-08-02 15:07:17 +02:00
Sterrezo 2f730be207 Merge branch 'main' into sound 2024-08-02 13:53:20 +02:00
Slippy 761eb07300 Merge branch 'Slippy-is-a-Coder-Now' of https://gitlab.com/cable-mc/cobblemon into Slippy-is-a-Coder-Now 2024-08-02 00:11:15 -05:00
Slippy fec9ace152 PC loot table 2024-08-02 00:10:55 -05:00
tmetcalfe89 63e5274fc9 healer pools and entries 2024-08-01 21:32:10 -07:00
Slippy ae28d186a0 When PC and Healer blow up and is set to natural = false, they won't drop anything. 2024-08-01 22:16:46 -05:00
Slippy e901d3d1e7 PC and Healing Machine now drop iron ingots when natural = true 2024-08-01 22:11:00 -05:00
Plastered_Crab 1e0c2005da - fixed closing animation 2024-08-01 14:00:56 -07:00
Slippy 33aa6d4591 I coded something. hope it doesnt break :) 2024-08-01 11:30:42 -05:00
Segfault Guy 14c3e4e9a0 Merge remote-tracking branch 'origin/main' into battle_theme_tweaks 2024-07-30 23:25:32 -04:00
Segfault Guy b89cd88639 Merge remote-tracking branch 'origin/main' into battle_bug_fixes 2024-07-30 23:00:49 -04:00
Segfault Guy 87a106bd1e Changelogs 2024-07-30 23:00:11 -04:00
Segfault Guy 1aacad2733 Battle start + invulnerability cleanup. 2024-07-30 21:50:39 -04:00
Plastered_Crab 89dca86a21 - added test compass to top of scanner 2024-07-30 16:19:12 -07:00
Plastered_Crab cdcd7bdec6 - More adjustments to the smaller hitboxes during scanning so scanning tiny pokemon (like joltik) is easier 2024-07-30 13:22:07 -07:00
Plastered_Crab 35c3e8f245 - scanner range adjustment when zooming and fixed my goofs with the grace period 2024-07-30 09:56:13 -07:00
plastered_crab 678b0cc7fd - making smaller hitboxes bigger when scanning (needs fine tuning) 2024-07-30 00:32:49 -07:00
plastered_crab f2dd1a5c62 - overlay is kill (for real this time) 2024-07-29 22:23:05 -07:00
Segfault Guy 7c26008ad4 Turn 0, battle init fix, switch tile changes, eject pack implementation. 2024-07-29 23:52:56 -04:00
plastered_crab b54d284fdb - kill overlay upon scan finishing 2024-07-29 20:35:19 -07:00
plastered_crab 79d8425749 - added grace period for scanning 2024-07-29 20:13:40 -07:00
Test 36c4e4e553 overlay screen tests 2024-07-29 22:56:21 -04:00
Paul c28c17b514 Smoothed dex zoom in and zoom out transitioning 2024-07-28 11:06:50 +10:00
Test 75faa7b798 overlay screen tests 2024-07-27 20:42:35 -04:00
JazzMcNade f76d0511b9 Fixed Battle tiles for Single battles 2024-07-27 19:09:47 -05:00
JazzMcNade ebe47700b2 BattleRequestUI: Improved performance, expanded navigation button height, some refactoring 2024-07-27 13:56:02 -05:00
JazzMcNade f1de8adc68 Made Multibattle requests and responses more flexible 2024-07-25 23:32:31 -05:00
JazzMcNade ee0e76a172 Multibattles: Simple Geometry to make Showdown positions match Minecraft player positions 2024-07-25 00:59:31 -05:00
VasconcelosJoao 0b7c183eeb New test cases 2024-07-24 18:40:39 -03:00
VasconcelosJoao e790f03066 New test cases 2024-07-24 18:38:52 -03:00
JazzMcNade 12da3a428f Improved sendout positions for multi-battles 2024-07-24 01:08:15 -05:00
JazzMcNade 0ddd8a499a Fixed an issue with switch menu selection when there are no reserve pokemon 2024-07-23 21:51:09 -05:00
Segfault Guy faa9e73d22 Merge remote-tracking branch 'origin/main' into battle_bug_fixes 2024-07-23 00:24:37 -04:00
Segfault Guy b2fe1c2fb4 Switch and withdraw logs. 2024-07-23 00:24:07 -04:00
JazzMcNade 3a3fe49c7c Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-07-22 00:35:37 -05:00
JazzMcNade cf06bed1f3 Rough Draft of new Battle Request UI 2024-07-22 00:35:22 -05:00
Segfault Guy 0011cab21e Fix nullptr exceptions when using revive or healing bench pokemon in battle. 2024-07-21 12:22:38 -04:00
Paul d282631662 Added logging for unsafe access to various APIs and moved JOIN and DISCONNECT platform events to always be sync 2024-07-21 13:16:13 +10:00
Segfault Guy 260767bed4 Add gamerule for invulnerability during battle. 2024-07-20 19:58:56 -04:00
Slippy 2895c0a2ef I hate the crumbling arch 2024-07-18 08:57:11 -05:00
Test e7cbd74b05 fix scale 2024-07-18 01:51:35 -04:00
Test bd9ebce842 Merge remote-tracking branch 'origin/DoublesAreTheFuture' into DoublesAreTheFuture 2024-07-18 01:08:36 -04:00
Test 94a1943398 assets 2024-07-18 01:08:13 -04:00
Slippy acc87f9eae Solhenge, Lunahenge, and Stonjournerhenge structures completed. 2024-07-17 12:31:55 -05:00
JazzMcNade 41cf571958 Timeout Expiration Callback for Multibattle team requests. 2024-07-16 23:42:24 -05:00
JazzMcNade c09f534746 Peer Review: Refactored interaction range constants as configuration variables. 2024-07-16 00:59:25 -05:00
JazzMcNade 3f389bd351 Some peer review Corrections 2024-07-15 23:46:27 -05:00
plastered_crab 26d431cd5e - wip function for rending scan progress 2024-07-13 16:34:44 -07:00
JazzMcNade 2f32886576 Changed BenchMovePacket to not map the empty string to null. Updated Changelog 2024-07-13 01:23:12 -05:00
JazzMcNade 074b32ef9c Merge branch 'main' into TheSketchySmeargle 2024-07-12 20:53:27 -05:00
JazzMcNade e169009c6c Updated Changelog 2024-07-12 14:25:40 -05:00
JazzMcNade 3102189a66 Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-07-12 14:10:41 -05:00
JazzMcNade 1be9325a65 Resolved more remappings, fixed a triples related sendout position bug 2024-07-12 14:09:39 -05:00
plastered_crab db048b68bb - tweaked scanning distance to feel a bit better based on zoom level 2024-07-12 00:41:45 -07:00
plastered_crab 76c3cba300 - tweaks to Dex Scanner mode so Scanner overlay doesn't get stuck on randomly 2024-07-11 23:31:09 -07:00
Segfault Guy 653e048d2e Fix new battle music instance not playing when old instance is still fading out 2024-07-11 22:22:26 -04:00
Segfault Guy 36f87425c9 Sound Physics Remastered compat 2024-07-11 21:37:44 -04:00
plastered_crab 57603e60e6 - distance of scanning and detection of pokemon is determined by Zoom Level now 2024-07-11 01:05:40 -07:00
plastered_crab 487361208e - pokemon are detected if scanner is aimed at them when initiating scan overlay 2024-07-11 00:41:14 -07:00
plastered_crab 20b2711703 - attempt to fix HUD UI of Scanner getting stuck 2024-07-11 00:11:23 -07:00
Lily 43d4eacefc Merge branch 'poker-decks' into whatsy/poker-decks 2024-07-09 10:49:15 -04:00
Lily caa9ff5eba text now shows up when there's no drops available for a mon 2024-07-09 10:47:20 -04:00
Sterrezo 3f5286c0a9 Increased snap sound's asset volume 2024-07-09 00:10:29 +02:00
Sterrezo fedf2eb950 Decreased the scan's volume 2024-07-08 23:44:40 +02:00
Sterrezo 56b2951d88 Sound updates and fixes 2024-07-08 23:29:37 +02:00
Sterrezo 35d96d2eb7 A lot of sound updates to herbs and blocks 2024-07-08 13:35:36 +02:00
Sterrezo b6e6d9a151 Merge branch 'main' into sound 2024-07-08 11:35:44 +02:00
JazzMcNade d01989343c Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-07-07 14:08:17 -05:00
JazzMcNade fd40ec47ab 99% conflicts resolved 2024-07-07 14:07:22 -05:00
JazzMcNade eed218b994 Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-07-07 04:22:06 -05:00
plastered_crab 2013f890a5 - no more transparent issues 2024-07-06 16:24:18 -07:00
plastered_crab 42efbe5a07 - new sounds (again) 2024-07-05 17:10:04 -07:00
plastered_crab cf17f2f4ac - new sounds 2024-07-05 17:04:48 -07:00
Lily 301d1c377a fix drop percentage display showing decimals 2024-07-05 12:05:37 -04:00
plastered_crab df3d2f99d4 - test feature trimming of borders 2024-07-04 17:45:07 -07:00
Lily 2c6229417f drop table fixes 2024-07-04 17:25:39 -04:00
Lily 94d18593a0 region selection and drops info tab 2024-07-04 16:48:47 -04:00
Lily b4b6606f39 work on region selection and viewing pokemon drops 2024-07-04 10:48:22 -04:00
plastered_crab a70c08f484 - hopefully this won't end badly 2024-07-04 00:11:01 -07:00
plastered_crab b19a5f637a - I broke everything.... put it back 2024-07-03 23:51:27 -07:00
plastered_crab 331551a614 - tweak to test feature 2024-07-03 23:33:56 -07:00
Plastered_Crab 0897d3afb5 - the maps Todd Howards better now 2024-07-03 12:51:28 -07:00
Plastered_Crab a2be8c9fdd - maps interacting with decks starting to Todd Howard 2024-07-03 09:26:57 -07:00
plastered_crab 9f71d45eeb - new classes for a test feature 2024-07-03 08:03:35 -07:00
plastered_crab 910d42af16 - even MORE prep for the handoff for the Village people 2024-07-02 21:09:19 -07:00
plastered_crab 8af83a2cb9 - extra prep for big flashy features 2024-07-02 20:57:53 -07:00
Plastered_Crab 04c3a1cd0d - more important stuff 2024-07-02 20:39:44 -07:00
Plastered_Crab 6f5efa3d62 - more stuff for the new features 2024-07-02 16:02:10 -07:00
Plastered_Crab 32c7f178b5 Merge remote-tracking branch 'origin/poker-decks' into poker-decks 2024-07-02 13:08:52 -07:00
Plastered_Crab 4129f29da0 - lots of changes for a top-secret mysterious feature 2024-07-02 13:08:31 -07:00
JazzMcNade a2145b6bf7 Merge branch 'sega_bass_pro_fishing_2' into DoublesAreTheFuture 2024-06-29 21:12:35 -05:00
JazzMcNade e14c8b5264 Refactored los checking for interactions 2024-06-29 18:41:22 -05:00
JazzMcNade 22385421ef Lang fix for range messaging 2024-06-28 01:25:53 -05:00
JazzMcNade dc103d286b Interaction wheel no longer lies about where it is actually clickable 2024-06-26 20:58:31 -05:00
Lily 766a7e5595 filled in a ton of missing langs 2024-06-26 19:43:46 -04:00
Paul 9f75d842d8 Lil generic cleanup 2024-06-26 19:47:58 +10:00
Paul 636e938789 Broader applyEffects functionality, implemented cry function in dex 2024-06-26 19:28:25 +10:00
Paul 26a4e9a7d8 Fixed misplaced \r in PokedexEntryProgress tripping up the license checker 2024-06-24 18:59:11 +10:00
Paul 6fd1e31c87 Fixed size display for dex 2024-06-24 18:41:00 +10:00
Paul 85a855be97 Licenses 2024-06-24 14:39:05 +10:00
Paul 4d108e424e Dex ported to 1.21 2024-06-24 14:37:34 +10:00
Paul b1333e490f Merge branch 'refs/heads/sega_bass_pro_fishing_2' into poker-decks
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/advancement/criterion/BattleCountableCriterion.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/gui/GuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonBakingOverrides.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/PokemonGuiUtils.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/BattleOverlay.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/gui/battle/subscreen/BattleSwitchPokemonSelection.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobblemonDataProvider.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/events/AdvancementHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/battle/BattleInitializePacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/starter/SetClientPlayerDataPacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/PlayerExtensions.kt
#	common/src/main/resources/assets/cobblemon/lang/en_us.json
2024-06-24 11:20:24 +10:00
Village 9a57fc5d40 🃏 2024-06-23 20:08:32 -04:00
Paul 78bce64df2 Fixed hisui pokedex data not migrated to new format stuff 2024-06-23 16:53:31 +10:00
JazzMcNade 0e7b9bdd0c Refactoring getSendoutPosition 2024-06-13 20:02:30 -05:00
JazzMcNade 9c8ff24bf2 Enforcement of minimum spacing for pokemon entities during battle. 2024-06-12 01:20:22 -05:00
JazzMcNade 3738b035d1 Changed allowed ranges and range checking for most interactions 2024-06-11 20:15:45 -05:00
JazzMcNade 7a97b7e92a Added the ability to empty a move slot (forget a move) on the move swap screen 2024-06-08 17:28:09 -05:00
JPAKx4 2ac91b0731 Added data for pokedex and classes that process that data. Utility Scripts also contains two scripts used for generating data. Data not final. 2024-06-04 20:36:24 -05:00
JazzMcNade c689f7c48e Merge branch 'main' into TheSketchySmeargle 2024-06-04 00:24:20 -05:00
JazzMcNade 12592f437e Fixed bug with clients not receiving power point updates post battle for Sketch acquired moves on Smeargle 2024-06-04 00:23:01 -05:00
JazzMcNade 22565a0ed5 Fixed a bug with recognizing that a pair of players already have an existing challenge 2024-06-01 21:11:26 -05:00
JazzMcNade e9085a3339 Added lang key for multibattles in the interact gui 2024-06-01 20:11:52 -05:00
JazzMcNade 5d32d043a1 Refactored getSendoutPosition(), adjusted singles sendout positions 2024-06-01 16:10:30 -05:00
JazzMcNade 1028ba07af Pokemon in single battles are sent out a bit to the side for better viewing 2024-06-01 13:19:54 -05:00
JazzMcNade 86bd2240c3 Compacted Battle portraits 2024-05-29 19:14:05 -05:00
JazzMcNade 27b276fc36 Moves learned via Sketch now persist post battle 2024-05-28 16:17:12 -05:00
JazzMcNade 8fdb551fe8 Merge branch 'main' into DoublesAreTheFuture 2024-05-27 01:45:17 -05:00
Sterrezo 0f3104f9d4 Merge branch 'main' into sound 2024-05-27 01:33:14 +02:00
Sterrezo 21a32bd459 Updated all generic impact assets
Increased the volume of all generic impact sounds. Audio assets have been updated to have a 0.2ms delay to account for ogg file compression cutting the initial start of the sound, making the attack have less impact.
2024-05-26 14:25:34 +02:00
Tyzillion f9a37791b7 Evolution can now be canceled when withdrawn during evolution animation. 2024-05-26 00:17:22 -04:00
Tyzillion fb6e9f3493 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into evolution-effect
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/api/pokemon/evolution/Evolution.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/entity/PokemonClientDelegate.kt
2024-05-26 00:04:59 -04:00
JazzMcNade b851fa0d5f Merge branch 'main' into DoublesAreTheFuture 2024-05-25 19:35:26 -05:00
JPAKx4 ee73058f5b Added a count for amount of species with a specific knowledge level and getting the knowledge level of a specific species in ClientPokedex.kt . 2024-05-20 06:35:31 -05:00
JPAKx4 1d20051888 ScrollingWidget has a function for rendering the scrollbar, which is able to be overriden. 2024-05-19 18:15:42 -05:00
Paul a7e6e638fe Added run_command molang function to general query structs and player structs 2024-05-20 09:10:04 +10:00
Paul 9ef3ea2932 Use context for flows because it's cooler, added more functions to pokemon related molang 2024-05-19 19:08:56 +10:00
Paul 38dcee3327 Merge remote-tracking branch 'origin/sega_bass_pro_fishing_2' into event-flows
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/CobblemonNetwork.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokeball/EmptyPokeBallEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2024-05-19 11:27:18 +10:00
JPAKx4 5ec1ef72be Added searching to the Pokedex, and the "Invisible" property for pokemon. 2024-05-14 22:25:12 -05:00
JPAKx4 76560198b8 Updated Pokedex to Cobblemon 1.5 2024-05-11 19:57:43 -05:00
JPAKx4 b546327af9 Merge branch 'main' into its-dexter-time
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/keybind/CobblemonKeyBinds.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/events/AdvancementHandler.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/battle/BattleInitializePacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/net/messages/client/starter/SetClientPlayerDataPacket.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/PlayerExtensions.kt
2024-05-11 19:45:55 -05:00
JazzMcNade 04d1f8c37e Added command to allow users to leave a multiteam without needing to find their teammate 2024-05-11 18:38:17 -05:00
JazzMcNade 2363d76f85 Added command portrait highlighting for multi-battles 2024-05-11 04:39:28 -05:00
JPAKx4 eead2724e7 Pokedex is Datapackable probably 2024-05-10 22:22:16 -05:00
JazzMcNade 419cb48327 Re-enabled targeting fainted slots. Removed target check that was generating false positive errors for target selection 2024-05-09 23:52:55 -05:00
JazzMcNade 8a91a58caa Items that did not have an opportunity to have their effect applied b/c of the battle ending are now refunded post battle. Refactored BagItem to specify the returnItem 2024-05-09 01:23:33 -05:00
JPAKx4 2b68ccd0f9 Forms in the Pokedex are read from the Pokedex Files now. 2024-05-02 14:49:28 -05:00
JPAKx4 5adefaac5e Pokedex is now based on files in the resources, and such is also datapackable. Forms still need to be fixed and the spreadsheet needs expanded as well. 2024-05-01 16:36:02 -05:00
JazzMcNade eee563f07a Fixed cancelling selection around fainted slots. Disabled cancelling item selections. 2024-04-29 01:02:54 -05:00
JazzMcNade a231250372 Triples: no longer mentions a fainted pokemon's name if a move targets a pokemon after it has already fainted. 2024-04-25 02:01:01 -05:00
JazzMcNade 14f486d086 Added language keys to differentiate between ally switch and triples shift 2024-04-25 01:33:42 -05:00
JazzMcNade c2f7f3d506 Merge branch 'main' into DoublesAreTheFuture 2024-04-23 23:53:12 -05:00
JazzMcNade 593f9cee03 Disabled single target selection against fainted slots 2024-04-23 21:36:14 -05:00
Paul ba6513942d Fixed evo_glow_time call not using query struct 2024-04-24 12:12:00 +10:00
Paul 84c7d36840 Merge remote-tracking branch 'origin/main' into evolution-effect 2024-04-24 12:00:20 +10:00
JazzMcNade f0821bc1d2 More precise revive switch selection checking 2024-04-23 19:56:53 -05:00
amo 084e5f744a early flash layer impl 2024-04-23 14:53:36 +01:00
Paul 90a1acb56e Fixed evolution animation being cancelled when the entity is pushed, minor fix to action effects 2024-04-22 15:03:44 +10:00
JazzMcNade ef7ad797d1 PvP doubles/triples now require a sufficient number of unfainted pokemon to start, Fainted pokemon can no longer be send as part of the initial sendout 2024-04-21 19:49:05 -05:00
JazzMcNade 56f86e15ae Selecting forfeit in a double/triple battle now short circuits any other pending action requests 2024-04-21 13:59:50 -05:00
JazzMcNade a285dbbe43 Fixed a number of issues with Revival Blessing and (Max) Revive bag item, removed a dupe of super effective message 2024-04-21 04:08:34 -05:00
JazzMcNade cc2783a553 Fixed softlock when 2 pokemon are ko'd but the player only has 1 pokemon in reserve 2024-04-18 21:37:06 -05:00
JazzMcNade 2ca67c805f Fixed double shift positioning in triples.
Fixed fainted pokemon portraits reappearing after shifting into a fainted slot
2024-04-17 21:58:45 -05:00
JazzMcNade 4b0f1e3d7d Merge Conflict: Fixed swap instruction string key 2024-04-17 01:25:02 -05:00
JazzMcNade 06a8c9e713 Fixed more merge conflicts 2024-04-17 01:02:31 -05:00
JazzMcNade a447228de1 More Merge Conflicts 2024-04-16 21:43:11 -05:00
JazzMcNade c6032fdaab Merge branch 'main' into DoublesAreTheFuture
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownActionRequest.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/ShowdownInterpreter.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/CritInstruction.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/interpreter/instructions/SuperEffectiveInstruction.kt
2024-04-16 21:16:11 -05:00
JazzMcNade 103af083a3 Fixed a Multibattle softlock when a player's last pokemon has fainted but their teammate has unfainted pokemon 2024-04-16 01:47:54 -05:00
JazzMcNade e67c0ebbb8 Added the ability for players to "team up" for Multibattles. Added Multibattle Support. 2024-04-15 21:54:45 -05:00
JazzMcNade a51d282007 Added Battle Portrait highlighting for the mon currently receiving commands in Doubles/Triples 2024-03-20 00:33:38 -05:00
JPAKx4 afb93ba15c Cleaned up the ScrollingWidget.kt and the children now that the Mixin is implemented. 2024-03-19 06:16:17 -05:00
Nick fef655065b Merge branch 'its-dexter-time' of gitlab.com:cable-mc/pokemon-cobbled into its-dexter-time 2024-03-18 19:18:58 -07:00
Nick 1d2ce79fba Fix scroll widget being slightly off on both x and y axis 2024-03-18 19:18:50 -07:00
JPAKx4 0b13ad2fbc Fixed the ScrollingWidget.kt to properly select entries based on mouse position. 2024-03-18 15:13:47 -05:00
JazzMcNade 3004c2a44c Added additional checks for doubles/triples exp gain 2024-03-17 20:06:36 -05:00
JazzMcNade a2a2d8860e Fixed another instance of giving orders to fainted mons. 2024-03-17 13:45:34 -05:00
JazzMcNade af81763577 Refactoring out function 2024-03-15 22:09:32 -05:00
JazzMcNade c3dafcc615 Added target declaration for super effective, resist, and crit on multitarget attack hits. 2024-03-15 01:30:34 -05:00
JazzMcNade 0340f54e2c Position shifting can now swap pokemon into fainted position slots. 2024-03-13 02:08:09 -05:00
JazzMcNade e2917b044a Added lang strings for different battle formats 2024-03-13 00:29:54 -05:00
JazzMcNade 34f00dbb05 Split BattleChallengePacket into BattleChallengePacket and BattleChallengeResponsePacket 2024-03-12 01:11:40 -05:00
JazzMcNade 93801ae6d5 Added Shifting to Triple Battles 2024-03-10 15:07:08 -05:00
JazzMcNade b50bf547f8 Battle effects now strike all targets in a multitarget attack. Fixed another softlock issue 2024-03-10 00:18:16 -06:00
JazzMcNade 01ac831c24 Fixed soft locking after a switch event 2024-03-09 18:01:49 -06:00
JazzMcNade adcccfee02 Fixed a bug in which during a forced switch event, the player would be requested to input actions on non-switching slots. 2024-03-07 23:56:47 -06:00
JPAKx4 365dd2c45c Began doing the "deltaDex" config file 2024-03-07 22:48:15 -06:00
JazzMcNade a97e8c819d Switch menu tiles are now vertically offset from the lowest active pokemon tiles 2024-03-07 00:42:49 -06:00
JazzMcNade 4eeaf5102f Added support for Ally Switch 2024-03-06 01:19:23 -06:00
JPAKx4 e9d4524a4f Worked on forms and added Weight/Height stuff. 2024-02-27 20:24:12 -06:00
JPAKx4 78c32e5396 Created a generic ScrollingWidget.kt and added a DescriptionWidget.kt for the PokedexGUI.kt 2024-02-27 13:35:09 -06:00
JPAKx4 58cb6295fa Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time 2024-02-26 18:17:35 -06:00
JPAKx4 4bc94f8deb Made the info section render an animated pokemon. 2024-02-26 18:15:27 -06:00
apion 25d3d9f7da Made tint values travel down to emissive layers 2024-02-26 18:04:30 -05:00
JPAKx4 e5235cb121 Added Scroll bar to the PokedexGUI.kt 2024-02-26 16:42:22 -06:00
apion 3534dc0722 Added revoke command 2024-02-26 17:07:02 -05:00
apion ce5b94745e Fixed add only for pokemon with no alternate forms 2024-02-26 16:49:07 -05:00
apion 0868d71c59 Added command to fill pokedex, licenses 2024-02-26 05:42:28 -05:00
JPAKx4 801de096fd Work on Scrollbar and added the starter event to the PokedexHandler.kt 2024-02-25 22:04:25 -06:00
JPAKx4 347c56c484 Added Portraits and Text 2024-02-25 19:59:51 -06:00
JPAKx4 a184c8b960 Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time 2024-02-25 17:46:47 -06:00
JazzMcNade d15307a809 The target menu now displays if a target is valid or not. Multitargeting is supported as well. 2024-02-25 17:13:42 -06:00
apion 950994d95c Added tracked data serialization 2024-02-25 06:29:41 -05:00
apion 19535fc81e Cleanup 2024-02-25 02:26:34 -05:00
apion a80938badf Moved pokedex storage to use nbt 2024-02-25 00:45:43 -05:00
apion a484ba6c68 Cool codec stuff 2024-02-24 22:55:51 -05:00
JPAKx4 8afe6d5b22 Added Slots for pokedex and sorting for the species. 2024-02-24 21:48:09 -06:00
apion 30ba386294 Started trying to do incremental updates 2024-02-24 20:20:22 -05:00
apion f2ae51df7d Small fixes 2024-02-24 17:57:32 -05:00
apion b5d354164c Added back previously tracked events 2024-02-24 16:18:37 -05:00
JazzMcNade 935fd53b70 Fixed pokemon positioning in doubles/triples. Fixed positioning in portraits/targeting. Added triples as a selectable battleType. 2024-02-24 14:00:52 -06:00
apion fe69659191 Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time 2024-02-24 03:22:18 -05:00
apion 536fac3904 Restructured the pokedex so that we can configure exactly what data gets tracked. It is super cool 2024-02-24 03:22:08 -05:00
JPAKx4 77a416b699 Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time 2024-02-23 21:10:23 -06:00
apionandJPAKx4 1e05d35e06 Added Justify Text Right and new text for the pokedex. 2024-02-23 21:10:07 -06:00
Paul 12b92d3f35 Added flow datapackable thing 2024-02-24 11:58:57 +10:00
apion a84c72d703 Merge branch 'main' into its-dexter-time
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/GeneralPlayerData.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/PlayerDataStoreManager.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/factory/JsonPlayerDataStoreFactory.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/BattleBuilder.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/PlayerExtensions.kt
2024-02-23 20:39:27 -05:00
apion 0b29bbf82c Merge branch 'main' into its-dexter-time
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/Cobblemon.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/GeneralPlayerData.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/PlayerDataStoreManager.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/api/storage/player/factory/JsonPlayerDataStoreFactory.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/battles/BattleBuilder.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/client/CobblemonClient.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/command/TestCommand.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/PlayerExtensions.kt
2024-02-23 20:39:07 -05:00
Paul dacfb4f1ff Merge branch 'npcs' into event-flows
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/entity/pokeball/EmptyPokeBallEntity.kt
#	common/src/main/kotlin/com/cobblemon/mod/common/util/MoLangExtensions.kt
2024-02-24 10:02:26 +10:00
Paul 4086ba73d3 Some structs for things 2024-02-24 09:59:27 +10:00
JPAKx4 35085c462e Created layout for Pokedex. Placeholder images added for the background. 2024-02-23 11:56:58 -06:00
JazzMcNade db33633406 Added sendout locations for doubles and triples first pass. 2024-02-23 02:12:19 -06:00
apion 809f1aeca3 Got incremental pokedex updates working 2024-02-23 01:06:56 -05:00
apion dfa76da95e Move onBattle logic to PokedexHandler 2024-02-23 00:07:36 -05:00
apion 776883c96d Small cleanup 2024-02-22 23:44:19 -05:00
JPAKx4 c5c58c0c60 Added events in PokedexHandler that update the server and client side pokedexes and added an optimization to track when a PokedexEntry was actually changed to reduce how much is sent on updates 2024-02-22 21:50:29 -06:00
JPAKx4 9861877f45 Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time 2024-02-22 19:41:27 -06:00
apion 338a312485 Darken icon for encountered only mons 2024-02-22 20:14:32 -05:00
JPAKx4 a3b2bed484 Merge remote-tracking branch 'origin/its-dexter-time' into its-dexter-time
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/pokedex/Progress.kt
2024-02-22 19:00:34 -06:00
JPAKx4 fa2ac5d984 Refactored packages for pokedex networking 2024-02-22 19:00:02 -06:00
apion 951676e6bf Added icon to pokemon who have been encountered before 2024-02-22 19:56:33 -05:00
JazzMcNade 49095f73d5 Fainted Pokemon no longer display on the target selection. Added the ability to cancel the previous action in a double battle. 2024-02-22 00:17:20 -06:00
apion 15940ff0a6 Added Pokedex store, plus added tracking of wild pokemon encounters 2024-02-22 01:00:42 -05:00
apion bec608be96 Refactored storage system to make adding more types of stores easier. 2024-02-21 22:55:09 -05:00
JazzMcNade 2ffe107789 Added primitive targeting. Fixed an issue in which the client would attempt to give orders to a fainted slot. 2024-02-18 23:47:01 -06:00
JazzMcNade f2f6c3d0ef Added UI endpoint to initiate a double battle. Added primitive battleFormat selection for BattleChallengePacket 2024-02-14 00:35:24 -06:00
JPAKx4 3704865ddb Created several classes related to creating the pokedex. DTO has been handled, but may need to change depending on functionality. Added keybind for "k", which all it currently does is display test text and print the pokedex entry class memories into a log. 2023-11-25 22:31:29 -06:00
JPAKx4 8815e8f03e Created several classes related to creating the pokedex. DTO has been handled, but may need to change depending on functionality. Added keybind for "k", which all it currently does is display test text and print the pokedex entry class memories into a log. 2023-11-25 22:00:26 -06:00
JPAKx4 a2414f9ffc Created several classes related to creating the pokedex. DTO has been handled, but may need to change depending on functionality. Added keybind for "k", which all it currently does is display test text and print the pokedex entry class memories into a log. 2023-11-25 22:00:26 -06:00
JPAKx4 db8ee43fd3 Merge remote-tracking branch 'origin/main' into its-dexter-time
# Conflicts:
#	common/src/main/kotlin/com/cobblemon/mod/common/data/CobblemonDataProvider.kt
2023-11-19 16:19:21 -06:00
JPAKx4 7e755721a8 Added pokedex UI and net (very early progress) 2023-11-19 16:18:22 -06:00
MoeBoy76 231b3d2eac Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into its-dexter-time 2023-03-03 11:44:23 +11:00
MoeBoy76 ac4d36100a updated some parts per design and added some fail-safe checking 2023-03-03 11:43:37 +11:00
MoeBoy76 2bf1c39839 Initial dex code and testing for datapacks 2023-02-24 08:38:06 +11:00
MoeBoy76 ad2c307b60 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into its-dexter-time
# Conflicts:
#	common/src/main/resources/assets/cobblemon/sounds.json
2023-02-17 11:39:00 +11:00
MoeBoy76 74ba080937 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into its-dexter-time
# Conflicts:
#	common/src/main/resources/assets/cobblemon/sounds.json
2022-12-23 16:19:56 +11:00
8035 changed files with 569002 additions and 183117 deletions
+2 -1
View File
@@ -37,6 +37,7 @@ common/src/main/resources/assets/cobblemon/showdown
/fabric/src/generated/resources/cobblemon-common.accesswidener
/.ignored/
common/.fabric
.kotlin/
# MacOS
.DS_Store
.DS_Store
+148 -29
View File
@@ -3,23 +3,155 @@ image: amazoncorretto:21
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
# TODO add client reference test process, search for import com.cobblemon.mod.common.client
stages:
- preprocessing
- packsquash
- replaceresources
- build
- deploy
#TODO add client reference test process, search for import com.cobblemon.mod.common.client
check_assets_cache:
stage: preprocessing
script:
- echo "Checking if cached hash matches current hash"
# Calculate the current hash
- find common/src/main/resources/assets common/src/main/resources/data -type f -exec sha256sum {} + | sort -k 2 | sha256sum > current_hash.txt
- echo "Current hash:"
- cat current_hash.txt
# Check for the existence of the previous hash
- if [[ -f assets_data_hash.txt ]]; then
echo "Previous cached hash found:";
cat assets_data_hash.txt;
if cmp -s assets_data_hash.txt current_hash.txt; then
echo "Hashes match, skipping PackSquash";
rm -f run_packsquash.flag || true;
else
echo "Hashes differ, PackSquash needed";
touch run_packsquash.flag;
fi;
else
echo "No cached hash found, marking PackSquash as required";
touch run_packsquash.flag;
fi
# Save the current hash for future runs
- echo "Saving current hash to cache";
- cp current_hash.txt assets_data_hash.txt
artifacts:
paths:
- current_hash.txt
- assets_data_hash.txt
- run_packsquash.flag
expire_in: 7 days
cache:
key: "cache-${CI_COMMIT_REF_NAME}"
paths:
- assets_data_hash.txt
- ./compressed_pack.zip
setup_resource_pack:
stage: preprocessing
script:
- echo "Setting up fake resource pack"
- mkdir ./fake_resource_pack
- cp -r common/src/main/resources/assets common/src/main/resources/data ./fake_resource_pack/
- echo '{"pack":{"pack_format":34,"description":"Fake Cobblemon Pack"}}' > ./fake_resource_pack/pack.mcmeta
artifacts:
paths:
- ./fake_resource_pack/
expire_in: 7 days
setup_packsquash:
stage: preprocessing
script:
- echo "Installing wget & unzip"
- yum install -y wget unzip
- echo "Downloading PackSquash"
- wget https://github.com/ComunidadAylas/PackSquash/releases/download/v0.4.0/PackSquash.CLI.executable.x86_64-unknown-linux-musl.zip
- unzip PackSquash.CLI.executable.x86_64-unknown-linux-musl.zip -d ./packsquash_bin
- echo "Creating PackSquash options.toml"
- |
cat <<EOF > ./options.toml
pack_directory = "./fake_resource_pack/"
output_file_path = "./compressed_pack.zip"
zip_spec_conformance_level = "high"
['**/*?.ogg']
transcode_ogg = false
two_pass_vorbis_optimization_and_validation = false
sampling_frequency = 999999
empty_audio_optimization=false
EOF
artifacts:
paths:
- ./packsquash_bin/
- ./options.toml
expire_in: 7 days
default:
artifacts:
expire_in: 7 days
run_packsquash:
stage: packsquash
dependencies:
- check_assets_cache
- setup_resource_pack
- setup_packsquash
script:
- ls -l
- if [[ ! -f ./compressed_pack.zip || -f run_packsquash.flag ]]; then
echo "Running PackSquash";
chmod +x ./packsquash_bin/packsquash;
./packsquash_bin/packsquash ./options.toml;
else
echo "Skipping PackSquash; no changes detected and compressed pack exists";
fi
cache:
key: "cache-${CI_COMMIT_REF_NAME}"
policy: pull-push
paths:
- assets_data_hash.txt
- ./compressed_pack.zip
artifacts:
paths:
- ./compressed_pack.zip
replace_resources:
stage: replaceresources
dependencies:
- run_packsquash
script:
- echo "Installing unzip"
- yum install -y unzip
- echo "Unzipping compressed pack"
- mkdir temp_unpack
- unzip ./compressed_pack.zip -d temp_unpack
- echo "Removing original assets and data"
- rm -rf common/src/main/resources/assets
- rm -rf common/src/main/resources/data
- echo "Replacing assets and data"
- mv temp_unpack/assets common/src/main/resources/
- mv temp_unpack/data common/src/main/resources/
artifacts:
paths:
- common/src/main/resources/
build:
stage: build
only:
- branches@cable-mc/cobblemon
dependencies:
- replace_resources
script:
- export GRADLE_OPTS="-Xmx4G -Xms4G"
- chmod +x ./gradlew
- ./gradlew build
cache:
key: "$CI_COMMIT_REF_NAME"
policy: push
artifacts:
paths:
- neoforge/build/libs
- fabric/build/libs
@@ -28,39 +160,26 @@ publish:
stage: deploy
dependencies:
- build
cache:
key: "CI_COMMIT_REF_NAME"
policy: pull
paths:
- neoforge/build/libs/*.jar
- fabric/build/libs/*.jar
rules:
- if: '$CI_COMMIT_BRANCH == "sega_bass_pro_fishing_2"'
- if: '$CI_PROJECT_PATH == "cable-mc/cobblemon" && $CI_COMMIT_BRANCH == "main"'
script:
- export GRADLE_OPTS="-Xmx4G -Xms4G"
- chmod +x ./gradlew
- ./gradlew publish
# Separate step to deploy the artifacts, save Norry the headache of keeping even more shit around
deploy:
stage: deploy
dependencies:
- build
when: manual
cache:
key: "$CI_COMMIT_REF_NAME"
policy: pull
artifacts:
paths:
- neoforge/build/libs/*.jar
- fabric/build/libs/*.jar
script:
deploy_artifacts:
stage: deploy
dependencies:
- build
script:
- echo "Collecting artifacts..."
- mv neoforge/build/libs/*+*.jar ./
- mv fabric/build/libs/*+*.jar ./
- find neoforge/build/libs/ -type f -name "*.jar" | grep -vE "dev-shadow|sources|javadoc" | xargs -I {} mv {} ./
- find fabric/build/libs/ -type f -name "*.jar" | grep -vE "dev-shadow|sources|javadoc" | xargs -I {} mv {} ./
- for f in *.jar; do mv "$f" "$(echo "$f" | sed s/+/b$CI_PIPELINE_IID+/)"; done
artifacts:
expire_in: 28 days
paths:
- ./*.jar
# - neoforge/build/libs/*+*.jar
# - fabric/build/libs/*+*.jar
-1
View File
@@ -1 +0,0 @@
LambDynamicLights compat needs to be restored
-24
View File
@@ -1,24 +0,0 @@
### Additions
- Pokémon are now animated when seen in any GUI that isn't the party GUI.
- Quirk animations can now occur for Pokémon that are shoulder mounted.
### Changes
- Improved the performance of display cases that contain Pokémon photos.
### Fixes
- Fixed some Pokémon photos in display cases flashing if the Pokémon has gender differences.
- Fixed Bidoof and Jigglypuff sleep animations stopping after some time, causing them to be 'asleep' while T-posing menacingly.
- Fixed entities not changing poses unless you're looking at them.
- Fixed cries not playing on send-out if the Pokémon is off-screen.
### Developer
- Rebuilt large swaths of the model animation code to simplify it.
- Renamed a bunch of things from %Poseable% to %Posable% because spelling.
- Renamed StatelessAnimation to PoseAnimation.
- Renamed StatefulAnimation to ActiveAnimation.
- Documented the animation system.
### Data Pack & Resource Pack Creators
- Added MoLang compatibility in the isVisible property for transformed parts.
- Added q.has_aspect('some_aspect') function to animations, posers, and entity particle effects.
- Added support for conditional pose animations.
+633 -154
View File
File diff suppressed because it is too large Load Diff
+27
View File
@@ -0,0 +1,27 @@
plugins {
id("java-gradle-plugin")
kotlin("jvm") version "2.1.0"
}
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.architectury.dev/")
maven("https://maven.fabricmc.net/")
}
dependencies {
implementation("net.neoforged:moddev-gradle:2.0.75")
implementation("dev.architectury:at:1.0.1")
implementation("net.fabricmc:access-widener:2.1.0")
}
gradlePlugin {
plugins {
create("cobblemongradle") {
id = "com.cobblemon.gradle"
implementationClass = "com.cobblemon.gradle.CobblemonGradle"
version = "1.0.0"
}
}
}
+7
View File
@@ -0,0 +1,7 @@
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
@@ -0,0 +1,85 @@
package com.cobblemon.gradle
import com.cobblemon.gradle.extension.CobblemonGradleExtension
import com.cobblemon.gradle.extension.tasks.ConvertAccessWidenersTask
import com.cobblemon.gradle.extension.tasks.UnzipAccessWidenersTask
import net.neoforged.nfrtgradle.CreateMinecraftArtifacts
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.attributes.LibraryElements
import org.gradle.language.jvm.tasks.ProcessResources
class CobblemonGradle : Plugin<Project> {
override fun apply(project: Project) {
val cobblemonExtension = project.extensions.create(
CobblemonGradleExtension.EXTENSION_NAME,
CobblemonGradleExtension::class.java
)
//This exists because all of
// - com.cobblemon:mod
// - com.cobblemon:mod-resources
// - com.cobblemon:accesswidener
//technically point to the same dependency (the :common project). To pick the proper artifact from that project
//we set attributes in that project and check for them here.
val accessWideners = project.configurations.register("accessWidener") { configuration ->
configuration.isCanBeConsumed = false
configuration.isCanBeResolved = true
configuration.isCanBeDeclared = true
configuration.attributes {
it.attribute(
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
project.objects.named(LibraryElements::class.java, LibraryElements.OBJECTS)
)
}
}
val includeRootResources = project.configurations.register("includeRootResources") { configuration ->
configuration.isCanBeConsumed = false
configuration.isCanBeResolved = true
configuration.isCanBeDeclared = true
configuration.attributes {
it.attribute(
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
project.objects.named(LibraryElements::class.java, LibraryElements.RESOURCES)
)
}
}
val unzipAwTask = project.tasks.register("unzipAccessWideners", UnzipAccessWidenersTask::class.java) {
it.accessWidenerZips = accessWideners.get()
}
val convertAwTask = project.tasks.register(ConvertAccessWidenersTask.NAME, ConvertAccessWidenersTask::class.java) {
it.enabled = cobblemonExtension.convertAccessWideners
it.dependsOn(unzipAwTask)
it.accessWideners = project.files(unzipAwTask).plus(project.files(cobblemonExtension.additionalAccessWideners))
}
//Add root resources and access wideners to output jar
project.tasks.named("processResources", ProcessResources::class.java) { task ->
task.dependsOn(includeRootResources)
if (cobblemonExtension.convertAccessWideners) {
task.dependsOn(convertAwTask)
task.from(convertAwTask)
}
else {
task.dependsOn(unzipAwTask)
task.from(unzipAwTask)
}
task.doLast {
project.copy {
it.from(project.provider {
includeRootResources.get().resolve().map { project.zipTree(it) }
})
it.into(task.destinationDir)
}
}
}
project.tasks.withType(CreateMinecraftArtifacts::class.java) {
it.dependsOn(convertAwTask)
it.accessTransformers.from(convertAwTask)
}
}
}
@@ -0,0 +1,12 @@
package com.cobblemon.gradle.extension
import org.gradle.api.file.FileCollection
abstract class CobblemonGradleExtension {
var additionalAccessWideners: FileCollection? = null
var convertAccessWideners = true
companion object {
const val EXTENSION_NAME = "cobblemon"
}
}
@@ -0,0 +1,82 @@
package com.cobblemon.gradle.extension.tasks
import dev.architectury.at.AccessChange
import dev.architectury.at.AccessTransform
import dev.architectury.at.AccessTransformSet
import dev.architectury.at.ModifierChange
import dev.architectury.at.io.AccessTransformFormats
import net.fabricmc.accesswidener.AccessWidenerReader
import net.fabricmc.accesswidener.AccessWidenerVisitor
import org.cadixdev.bombe.type.signature.MethodSignature
import org.gradle.api.DefaultTask
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputFiles
import org.gradle.api.tasks.TaskAction
import java.io.Writer
import java.nio.file.Files
abstract class ConvertAccessWidenersTask : DefaultTask() {
abstract var accessWideners: FileCollection
@InputFiles get
@Internal
val accessTransformerDir = project.layout.buildDirectory.dir("access-transformers")
@OutputFiles
val accessTransformers = project.files ({
accessWideners.files.map {
accessTransformerDir.get().file(it.name.replace("accesswidener", "accesstransformer.cfg"))
}
})
@TaskAction
fun convertAccessWideners() {
accessWideners.files.forEach { file ->
val awFile = Files.newBufferedReader(file.toPath())
val result = AccessTransformSet.create();
AccessWidenerReader(object : AccessWidenerVisitor {
override fun visitClass(name: String, access: AccessWidenerReader.AccessType, transitive: Boolean) {
result.getOrCreateClass(name).merge(toAt(access));
}
override fun visitMethod(owner: String, name: String, descriptor: String, access: AccessWidenerReader.AccessType, transitive: Boolean) {
result.getOrCreateClass(owner).mergeMethod(MethodSignature.of(name, descriptor), toAt(access));
}
override fun visitField(owner: String, name: String, descriptor: String, access: AccessWidenerReader.AccessType, transitive: Boolean) {
result.getOrCreateClass(owner).mergeField(name, toAt(access));
}
}).read(awFile)
val outputFile = accessTransformerDir.get().file(
file.name.replace("accesswidener", "accesstransformer.cfg")
)
var outputWriter: Writer? = null
try {
outputWriter = outputFile.asFile.writer()
AccessTransformFormats.FML.write(outputWriter, result)
}
finally {
outputWriter?.flush()
outputWriter?.close()
}
}
}
private fun toAt(access: AccessWidenerReader.AccessType): AccessTransform {
return when (access) {
AccessWidenerReader.AccessType.ACCESSIBLE -> AccessTransform.of(AccessChange.PUBLIC)
AccessWidenerReader.AccessType.EXTENDABLE, AccessWidenerReader.AccessType.MUTABLE -> AccessTransform.of(
AccessChange.PUBLIC,
ModifierChange.REMOVE
)
}
}
companion object {
const val NAME = "convertAccessWideners"
}
}
@@ -0,0 +1,33 @@
package com.cobblemon.gradle.extension.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.Task
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.OutputFiles
import org.gradle.api.tasks.TaskAction
abstract class UnzipAccessWidenersTask : DefaultTask() {
abstract var accessWidenerZips: FileCollection
@InputFiles get
@OutputFiles
val outputFiles = project.provider {
project.files(accessWidenerZips.flatMap { zip ->
project.zipTree(zip).files.map { OUTPUT_DIR.get().file(it.name) }
})
}
@Internal
val OUTPUT_DIR = project.layout.buildDirectory.dir("cobblemon-working/access-wideners")
@TaskAction
fun run() {
project.copy {
it.from(accessWidenerZips.map(project::zipTree))
it.into(OUTPUT_DIR)
}
}
}
+3 -1
View File
@@ -1,12 +1,14 @@
plugins {
id("cobblemon.root-conventions")
//id("cobblemon.root-conventions")
id ("net.nemerosa.versioning") version "3.1.0"
}
version = "${project.property("mod_version")}+${project.property("mc_version")}"
val isSnapshot = project.property("snapshot")?.equals("true") ?: false
/*
if (isSnapshot) {
val fixedBranchName = versioning.info.branch.substringAfter("/")
version = "$version-${fixedBranchName}-${versioning.info.build}"
}
*/
+90 -54
View File
@@ -1,68 +1,102 @@
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import utilities.isSnapshot
import utilities.version
/*
*
* * 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 "3.1.0"
kotlin("jvm") version "2.1.0"
id ("net.neoforged.moddev") version "2.0.75"
id("net.kyori.blossom") version "2.1.0"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("com.cobblemon.gradle")
}
architectury {
common("neoforge", "fabric")
cobblemon {
additionalAccessWideners = files(sourceSets.main.get().resources).filter { it.extension == "accesswidener" }
}
val rootResources = configurations.create("rootResources") {
isCanBeConsumed = true
isCanBeResolved = false
attributes {
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.RESOURCES))
}
}
val accessWidenerExport = configurations.create("accessWidenerExport") {
isCanBeConsumed = true
isCanBeResolved = false
attributes {
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.OBJECTS))
}
}
tasks.processResources {
exclude("*.accesswidener")
}
tasks.create<Zip>("zipResources") {
dependsOn("processResources")
from(tasks.processResources.get().destinationDir)
this.archiveBaseName = "mod-resources"
}
tasks.create<Zip>("zipAccessWideners") {
from(sourceSets.main.get().resources)
include("*.accesswidener")
this.archiveBaseName = "mod-accesswideners"
}
tasks.jar {
archiveBaseName = "mod"
manifest {
attributes(mapOf("FMLModType" to "GAMELIBRARY"))
}
exclude {
it.file in tasks.processResources.get().outputs.files
}
}
tasks.assemble {
dependsOn(tasks.named("zipResources"))
dependsOn(tasks.named("zipAccessWideners"))
}
artifacts {
add("rootResources", tasks.getByName<Zip>("zipResources"))
add("accessWidenerExport", tasks.getByName("zipAccessWideners"))
}
buildscript {
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.architectury.dev/")
maven("https://maven.fabricmc.net/")
}
}
repositories {
maven(url = "${rootProject.projectDir}/deps")
maven(url = "https://api.modrinth.com/maven")
maven(url = "https://maven.neoforged.net/releases")
mavenLocal()
mavenCentral()
maven("https://maven.fabricmc.net/")
maven("https://maven.blamejared.com/")
maven("https://api.modrinth.com/maven")
maven(url = "../deps")
}
dependencies {
implementation(libs.bundles.kotlin)
modImplementation(libs.fabric.loader)
modApi(libs.molang)
// Integrations
// compileOnlyApi(libs.jei.api)
modCompileOnly(libs.bundles.fabric.integrations.compileOnly) {
compileOnly(libs.bundles.mongo)
compileOnly(libs.bundles.kotlin)
compileOnly(libs.molang)
compileOnly(libs.graal)
compileOnly(libs.jei.api)
compileOnly(libs.bundles.fabric.integrations.compileOnly) {
isTransitive = false
}
// Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
// Showdown
modCompileOnly(libs.graal)
// Data Storage
modCompileOnly(libs.bundles.mongo)
// Unit Testing
compileOnly("net.fabricmc:sponge-mixin:0.15.5+mixin.0.8.7")
compileOnly("io.github.llamalad7:mixinextras-fabric:0.4.1")
testImplementation(libs.bundles.unitTesting)
}
tasks.withType<Test> {
useJUnitPlatform()
testLogging {
setEvents(listOf("failed"))
setExceptionFormat("full")
}
neoForge {
neoFormVersion = "1.21.1-20240808.144430"
interfaceInjectionData.from("src/main/resources/interfaces.json")
validateAccessTransformers = true
}
sourceSets {
@@ -72,7 +106,7 @@ sourceSets {
fun generateLicenseHeader() : String {
val builder = StringBuilder()
builder.append("/*\n")
rootProject.file("HEADER").forEachLine {
project.projectDir.parentFile.resolve("HEADER").forEachLine {
if(it.isEmpty()) {
builder.append(" *").append("\n")
} else {
@@ -85,12 +119,14 @@ sourceSets {
property("license", generateLicenseHeader())
property("modid", "cobblemon")
property("version", project.version())
property("isSnapshot", if(rootProject.isSnapshot()) "true" else "false")
property("version", project.version as String)
property("isSnapshot", "true")
/*
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")
*/
}
}
}
+97
View File
@@ -0,0 +1,97 @@
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import utilities.isSnapshot
import utilities.version
/*
*
* * 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 "3.1.0"
}
architectury {
common("neoforge", "fabric")
}
repositories {
maven(url = "${rootProject.projectDir}/deps")
maven(url = "https://api.modrinth.com/maven")
maven(url = "https://maven.neoforged.net/releases")
mavenLocal()
}
dependencies {
implementation(libs.bundles.kotlin)
modImplementation(libs.fabric.loader)
modApi(libs.molang)
// Integrations
compileOnlyApi(libs.jei.api)
modCompileOnly(libs.bundles.fabric.integrations.compileOnly) {
isTransitive = false
}
// Flywheel has no common dep so just pick one and don't use any platform specific code in common
// modCompileOnly(libs.flywheelFabric)
// Showdown
modCompileOnly(libs.graal)
// Data Storage
modCompileOnly(libs.bundles.mongo)
// Unit Testing
testImplementation(libs.bundles.unitTesting)
}
tasks.withType<Test> {
useJUnitPlatform()
testLogging {
setEvents(listOf("failed"))
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")
}
}
}
}
+95
View File
@@ -0,0 +1,95 @@
[versions]
# Kotlin
kotlin = "2.0.0"
# Plugins
licenser = "0.6.1"
shadow = "8.1.1"
blossom = "2.1.0"
idea-ext = "1.1.7"
# Loom
loom = "1.7-SNAPSHOT"
architectury-plugin = "3.4-SNAPSHOT"
# Common
molang = "1.1.18"
graal = "22.3.0"
icu4j = "71.1"
jei-api = "19.8.2.99"
# Fabric
fabric-loader = "0.16.5"
fabric-api = "0.104.0+1.21.1"
fabric-kotlin = "1.11.0+kotlin.2.0.0"
fabric-permissions-api = "0.2-SNAPSHOT"
lambDynamicLights = "3.0.1+1.21.1"
debugutils-fabric = "1.21-1.0.6-fabric"
# NeoForge
neoforge = "21.1.66"
neo-kotlin-for-forge = "5.5.0"
debugutils-forge = "1.21-1.0.6-neoforge"
# Data Storage
mongo = "4.10.2"
# Testing
junit = "5.9.0"
mockito = "5.2.0"
mockk = "1.12.1"
classgraph = "4.8.153"
[libraries]
# General Buildscript Plugins
kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
loom = { group = "dev.architectury", name = "architectury-loom", version.ref = "loom" }
architectury = { group = "architectury-plugin", name = "architectury-plugin.gradle.plugin", version.ref = "architectury-plugin" }
shadow = { group = "com.github.johnrengelman", name = "shadow", version.ref = "shadow" }
blossom = { group = "net.kyori", name = "blossom", version.ref = "blossom" }
ideaExt = { group = "org.jetbrains.gradle.plugin.idea-ext", name = "org.jetbrains.gradle.plugin.idea-ext.gradle.plugin", version.ref = "idea-ext"}
licenser = { group = "gradle.plugin.org.cadixdev.gradle", name = "licenser", version.ref = "licenser" }
# Kotlin
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
# Common
jei-api = { group = "mezz.jei", name = "jei-1.21-common-api", version.ref = "jei-api"}
molang = { group = "local.com.bedrockk", name = "molang", version.ref = "molang" }
graal = { group = "org.graalvm.js", name = "js", version.ref = "graal" }
icu4j = { group = "com.ibm.icu", name = "icu4j", version.ref = "icu4j" }
# Fabric
fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }
fabric-kotlin = { group = "net.fabricmc", name = "fabric-language-kotlin", version.ref = "fabric-kotlin" }
fabric-permissions = { group = "me.lucko", name = "fabric-permissions-api", version.ref = "fabric-permissions-api" }
adorn-fabric = { group = "maven.modrinth", name = "adorn", version = "6.0.0-neoforge"}
lambDynamicLights = { group = "maven.modrinth", name = "lambdynamiclights", version.ref = "lambDynamicLights"}
jei-api-fabric = { group = "mezz.jei", name = "jei-1.21-fabric-api", version.ref = "jei-api" }
jei-fabric = { group = "mezz.jei", name = "jei-1.21-fabric", version.ref = "jei-api"}
fabric-debugutils = { group = "maven.modrinth", name = "debugutils", version.ref = "debugutils-fabric"}
# NeoForge
neoforge = { group = "net.neoforged", name = "neoforge", version.ref = "neoforge" }
neo-kotlin-forge = { group = "thedarkcolour", name = "kotlinforforge-neoforge", version.ref = "neo-kotlin-for-forge" }
neoforge-debugutils = { group = "maven.modrinth", name = "debugutils", version.ref = "debugutils-forge"}
# Data Storage
mongo-driver-core = { group = "org.mongodb", name = "mongodb-driver-core", version.ref = "mongo" }
mongo-driver-sync = { group = "org.mongodb", name = "mongodb-driver-sync", version.ref = "mongo" }
# Testing
junit = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit" }
mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" }
mock-kotlin = { group = "io.mockk", name = "mockk", version.ref = "mockk" }
classgraph = { group = "io.github.classgraph", name = "classgraph", version.ref = "classgraph" }
[bundles]
kotlin = [ "kotlin-stdlib", "kotlin-reflect" ]
fabric = [ "fabric-kotlin", "fabric-permissions" ]
fabric-integrations-compileOnly = [ "adorn-fabric", "lambDynamicLights", "jei-api-fabric" ]
fabric-integrations-runtimeOnly = [ "jei-fabric" ]
mongo = [ "mongo-driver-core", "mongo-driver-sync" ]
unitTesting = [ "junit", "mockito-core", "mock-kotlin", "classgraph" ]
@@ -1,23 +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;
import com.cobblemon.mod.common.entity.npc.NPCEntity;
import java.util.Collection;
import net.minecraft.world.entity.ai.Brain;
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
import net.minecraft.world.entity.ai.sensing.Sensor;
import net.minecraft.world.entity.ai.sensing.SensorType;
public class GenericsCheatClass {
// For some reason, doing this in the NPCEntity class in Kotlin gives confusing generic errors I could not resolve.
public static Brain.Provider<NPCEntity> createNPCBrain(Collection<MemoryModuleType<?>> memories, Collection<SensorType<? extends Sensor<? super NPCEntity>>> sensors) {
return Brain.provider(memories, sensors);
}
}
@@ -1,93 +0,0 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.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 org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import net.minecraft.util.Tuple;
import net.minecraft.world.entity.player.Player;
// 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(Player player, boolean underwater) {
final var shoulderDataPair = PokemonOnShoulderRenderer.shoulderDataOf(player);
final Optional<Integer> leftLightLevel = extractShoulderLightLevel(shoulderDataPair.getFirst(), underwater);
final Optional<Integer> rightLightLevel = extractShoulderLightLevel(shoulderDataPair.getSecond(), 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,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.duck;
import org.jetbrains.annotations.Nullable;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource;
public interface SoundEngineDuck {
void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
void resumeSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
}
@@ -17,6 +17,4 @@ public interface SoundManagerDuck {
void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
void resumeSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
void stopSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
}
@@ -1,27 +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.duck;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource;
public interface SoundSystemDuck {
void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
void resumeSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
void stopSounds(@Nullable ResourceLocation id, @Nullable SoundSource category);
Collection<SoundInstance> getSounds(@Nullable SoundSource category);
}
@@ -0,0 +1,48 @@
/*
* 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 static com.cobblemon.mod.common.datafixer.CobblemonSchemas.VERSION_KEY;
import com.cobblemon.mod.common.datafixer.CobblemonSchemas;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.mojang.serialization.MapCodec;
import java.util.Optional;
import java.util.function.Supplier;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.IntTag;
import net.minecraft.resources.ResourceKey;
import net.minecraft.util.datafix.DataFixTypes;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.chunk.storage.ChunkStorage;
import net.minecraft.world.level.storage.DimensionDataStorage;
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.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ChunkStorage.class)
public class ChunkStorageMixin {
//Modifies the NBT returned by the vanilla upgradeChunkTag to also incorporate cobblemon fixup stuff
@ModifyExpressionValue(
method = "upgradeChunkTag(Lnet/minecraft/resources/ResourceKey;Ljava/util/function/Supplier;Lnet/minecraft/nbt/CompoundTag;Ljava/util/Optional;)Lnet/minecraft/nbt/CompoundTag;",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/util/datafix/DataFixTypes;updateToCurrentVersion(Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/nbt/CompoundTag;I)Lnet/minecraft/nbt/CompoundTag;"
)
)
public CompoundTag cobblemon$doChunkFix(
CompoundTag vanillaFixed
) {
int curVersion = vanillaFixed.contains(VERSION_KEY) ? vanillaFixed.getInt(VERSION_KEY) : 0;
return DataFixTypes.CHUNK.update(CobblemonSchemas.getDATA_FIXER(), vanillaFixed, curVersion, CobblemonSchemas.DATA_VERSION);
}
}
@@ -19,7 +19,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(CrashReport.class)
public final class CrashReportMixin {
@Inject(method = "getDetails", at = @At(value = "INVOKE", target = "Lnet/minecraft/SystemReport;appendToCrashReportString(Ljava/lang/StringBuilder;)V"))
@Inject(method = "getDetails(Ljava/lang/StringBuilder;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/SystemReport;appendToCrashReportString(Ljava/lang/StringBuilder;)V"))
public void cobblemon$printCobblemonDetails(StringBuilder builder, CallbackInfo callback) {
CrashReportCategory cobblemon = new CrashReportCategory("Cobblemon");
cobblemon.setDetail("Version", CobblemonBuildDetails.VERSION);
@@ -21,11 +21,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(DecoratedPotPatterns.class)
public abstract class DecoratedPotPatternsMixin {
@Inject(method = "getPatternFromItem", at=@At("HEAD"), cancellable = true)
private static void cobblemon$getCobblemonSherdTexture(Item sherd,
CallbackInfoReturnable<ResourceKey<DecoratedPotPattern>> cir) {
private static void cobblemon$getCobblemonSherdTexture(
Item sherd,
CallbackInfoReturnable<ResourceKey<DecoratedPotPattern>> cir
) {
if (CobblemonSherds.INSTANCE.getSherdToPattern().containsKey(sherd)) {
cir.setReturnValue(CobblemonSherds.INSTANCE.getSherdToPattern().get(sherd));
return;
cir.cancel();
}
}
}
@@ -9,6 +9,20 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.CobblemonClient;
import com.cobblemon.mod.common.client.render.MatrixWrapper;
import com.cobblemon.mod.common.client.render.models.blockbench.PosableModel;
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState;
import com.cobblemon.mod.common.entity.PosableEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import org.joml.Vector3f;
import org.spongepowered.asm.mixin.Debug;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@@ -34,4 +48,39 @@ public class EntityRenderDispatcherMixin {
public void resourceManagerReloadHook(ResourceManager resourceManager, CallbackInfo ci) {
CobblemonClient.INSTANCE.onAddLayer(this.playerRenderers);
}
@Inject(
method = "renderHitbox(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;FFFF)V",
at = @At(value = "TAIL")
)
private static void renderLocators(
PoseStack poseStack,
VertexConsumer buffer,
Entity entity,
float red,
float green,
float blue,
float alpha,
CallbackInfo ci
) {
if (entity instanceof PosableEntity posableEntity) {
if (posableEntity.getDelegate() instanceof PosableState state) {
state.getLocatorStates().forEach((locator, matrix) -> {
poseStack.pushPose();
Vec3 pos = matrix.getOrigin().subtract(entity.position());
LevelRenderer.renderLineBox(
poseStack,
buffer,
AABB.ofSize(pos, 0.25, 0.25, 0.25),
0F,
1F,
0F,
1F
);
poseStack.popPose();
});
}
}
}
}
@@ -0,0 +1,40 @@
/*
* 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 static com.cobblemon.mod.common.datafixer.CobblemonSchemas.VERSION_KEY;
import com.cobblemon.mod.common.datafixer.CobblemonSchemas;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.IntTag;
import net.minecraft.util.datafix.DataFixTypes;
import net.minecraft.world.level.chunk.storage.EntityStorage;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(EntityStorage.class)
public class EntityStorageMixin {
//Modifies the NBT returned by the vanilla upgradeChunkTag to also incorporate cobblemon fixup stuff
@ModifyExpressionValue(
method = "method_31731(Lnet/minecraft/world/level/ChunkPos;Ljava/util/Optional;)Lnet/minecraft/world/level/entity/ChunkEntities;",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/level/chunk/storage/SimpleRegionStorage;upgradeChunkTag(Lnet/minecraft/nbt/CompoundTag;I)Lnet/minecraft/nbt/CompoundTag;"
)
)
public CompoundTag cobblemon$doEntityFix(
CompoundTag vanillaFixed
) {
int curVersion = vanillaFixed.contains(VERSION_KEY) ? vanillaFixed.getInt(VERSION_KEY) : 0;
CompoundTag newTag = DataFixTypes.ENTITY_CHUNK.update(CobblemonSchemas.getDATA_FIXER(), vanillaFixed, curVersion, CobblemonSchemas.DATA_VERSION);
newTag.put(VERSION_KEY, IntTag.valueOf(CobblemonSchemas.DATA_VERSION));
return newTag;
}
}
@@ -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.item.PokedexItem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.ItemInHandRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.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(ItemInHandRenderer.class)
public class ItemInHandRendererMixin {
@Inject(method = "renderArmWithItem", at = @At(value = "HEAD"), cancellable = true)
private void cobblemon$renderArmWithItem(AbstractClientPlayer abstractClientPlayer, float f, float g, InteractionHand interactionHand, float h, ItemStack itemStack, float i, PoseStack poseStack, MultiBufferSource multiBufferSource, int j, CallbackInfo ci) {
if (abstractClientPlayer.isUsingItem() && abstractClientPlayer.getUseItem().getItem() instanceof PokedexItem) {
ci.cancel();
}
}
}
@@ -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.entity.fishing.PokeRodFishingBobberEntity;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.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(ItemProperties.class)
public class ItemPropertiesMixin {
// Mixins into the fishing rod's register() lambda expression
// Without this, the fishing rod item model appears cast when using a PokeRod in the other hand
@Inject(method = "method_27883", at = @At(value = "RETURN", ordinal = 1), cancellable = true)
private static void cobblemon$preventRodMixup(ItemStack itemStack, ClientLevel clientLevel, LivingEntity livingEntity, int i, CallbackInfoReturnable<Float> cir) {
if (!(livingEntity instanceof Player) || ((Player) livingEntity).fishing instanceof PokeRodFishingBobberEntity) {
cir.setReturnValue(0.0f);
}
}
}
@@ -0,0 +1,99 @@
/*
* 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.Cobblemon;
import com.cobblemon.mod.common.ModAPI;
import com.cobblemon.mod.common.item.PokeBallItem;
import com.cobblemon.mod.common.item.PokedexItem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.ItemModelShaper;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
/*
I think it would be nice to maybe use the existing mixin we have for custom item rendering [BuiltinModelItemRendererMixin]
Obviously that would require changes. Potentially each item renderer defines what modes it overrides for?
*/
@Mixin(ItemRenderer.class)
public abstract class ItemRendererMixin {
@Unique private final String MODEL_PATH = Cobblemon.implementation.getModAPI() == ModAPI.FABRIC ? "fabric_resource" : "standalone";
@Shadow @Final private ItemModelShaper itemModelShaper;
@Shadow public abstract void render(ItemStack stack, ItemDisplayContext renderMode, boolean leftHanded, PoseStack matrices, MultiBufferSource vertexConsumers, int light, int overlay, BakedModel model);
@Inject(
method = "render(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;ZLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILnet/minecraft/client/resources/model/BakedModel;)V",
at = @At("HEAD"),
cancellable = true
)
private void cobblemon$overrideItemModel(ItemStack stack, ItemDisplayContext renderMode, boolean leftHanded, PoseStack matrices, MultiBufferSource multiBufferSource, int light, int overlay, BakedModel model, CallbackInfo ci) {
boolean shouldBe2d = renderMode == ItemDisplayContext.GUI || renderMode == ItemDisplayContext.FIXED;
if (shouldBe2d) {
ResourceLocation resourceLocation = null;
if (stack.getItem() instanceof PokeBallItem pokeBallItem) resourceLocation = pokeBallItem.getPokeBall().getModel2d();
else if (stack.getItem() instanceof PokedexItem pokedexItem) resourceLocation = pokedexItem.getType().getItemSpritePath();
if (resourceLocation != null) {
BakedModel replacementModel = this.itemModelShaper.getModelManager().getModel(new ModelResourceLocation(resourceLocation, "inventory"));
if (!cobblemon$isSameModel(model, replacementModel)) {
ci.cancel();
render(stack, renderMode, leftHanded, matrices, multiBufferSource, light, overlay, replacementModel);
}
}
}
}
@Inject(method = "getModel", at = @At("HEAD"), cancellable = true)
private void cobblemon$getItemModel(ItemStack stack, Level world, LivingEntity entity, int seed, CallbackInfoReturnable<BakedModel> cir) {
ResourceLocation resourceLocation = null;
if (stack.getItem() instanceof PokeBallItem pokeBallItem) resourceLocation = pokeBallItem.getPokeBall().getModel3d();
else if (stack.getItem() instanceof PokedexItem pokedexItem) {
boolean isScanModel = entity instanceof Player && entity.getUseItem() == stack && entity.isUsingItem();
boolean canOpenScreen = entity != null && ((entity.getOffhandItem() == stack && !(entity.getMainHandItem().getItem() instanceof PokedexItem)) || entity.getMainHandItem() == stack);
resourceLocation = pokedexItem.getType().getItemModelPath(isScanModel ? "scanning" : (canOpenScreen ? null : "off"));
}
if (resourceLocation != null) {
BakedModel model = this.itemModelShaper.getModelManager().getModel(new ModelResourceLocation(resourceLocation, MODEL_PATH));
ClientLevel clientWorld = world instanceof ClientLevel ? (ClientLevel) world : null;
BakedModel overriddenModel = model.getOverrides().resolve(model, stack, clientWorld, entity, seed);
cir.setReturnValue(overriddenModel == null ? this.itemModelShaper.getModelManager().getMissingModel() : overriddenModel);
}
}
// this method aims to cover an issue with modernfixes and it's "dynamic resource" causing the usual .equals check to always fail, resulting in a StackOverflow
// this falls back to comparing the model contents (e.g. location of the texture, width and height)
@Unique
private static boolean cobblemon$isSameModel(BakedModel original, BakedModel replacement) {
return original.equals(replacement) ||
(original.getParticleIcon().contents().name().equals(replacement.getParticleIcon().contents().name()) &&
original.getParticleIcon().contents().width() == replacement.getParticleIcon().contents().width() &&
original.getParticleIcon().contents().height() == replacement.getParticleIcon().contents().height());
}
}
@@ -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.mixin;
import com.cobblemon.mod.common.util.DataKeys;
import com.mojang.serialization.Dynamic;
import net.minecraft.util.datafix.fixes.ItemStackComponentizationFix;
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;
import java.util.stream.Stream;
@Mixin(ItemStackComponentizationFix.class)
public class ItemStackComponentizationFixMixin
{
@Inject(method = "fixItemStack", at = @At("TAIL"))
private static void fixItemStack(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic, CallbackInfo ci) {
cobblemon$attemptPokemonModelDataFix(itemStackData, dynamic);
}
@Unique
private static void cobblemon$attemptPokemonModelDataFix(ItemStackComponentizationFix.ItemStackData itemStackData, Dynamic<?> dynamic)
{
var species = itemStackData.removeTag(DataKeys.POKEMON_ITEM_SPECIES).asString();
var aspects = itemStackData.removeTag(DataKeys.POKEMON_ITEM_ASPECTS).asList(dynamic1 -> dynamic1);
var redTint = itemStackData.removeTag(DataKeys.POKEMON_ITEM_TINT_RED).asNumber();
var greenTint = itemStackData.removeTag(DataKeys.POKEMON_ITEM_TINT_GREEN).asNumber();
var blueTint = itemStackData.removeTag(DataKeys.POKEMON_ITEM_TINT_BLUE).asNumber();
var alphaTint = itemStackData.removeTag(DataKeys.POKEMON_ITEM_TINT_ALPHA).asNumber();
if(species.hasResultOrPartial() && aspects != null) {
var pokeComponent = dynamic.emptyMap().set("species", dynamic.createString(species.getOrThrow()));
pokeComponent = pokeComponent.set("aspects", dynamic.createList(aspects.stream()));
if(redTint.hasResultOrPartial() || blueTint.hasResultOrPartial() || greenTint.hasResultOrPartial() || alphaTint.hasResultOrPartial()) {
pokeComponent = pokeComponent.set("tint", dynamic.createList(Stream.of(redTint, greenTint, blueTint, alphaTint)
.map(x -> x.mapOrElse(Number::floatValue, error -> 0F))
.map(dynamic::createFloat)));
}
itemStackData.setComponent("cobblemon:pokemon_item", pokeComponent);
}
}
}
@@ -0,0 +1,63 @@
/*
* 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.entity.LecternBlockEntity;
import com.cobblemon.mod.common.CobblemonBlocks;
import com.cobblemon.mod.common.CobblemonSounds;
import com.cobblemon.mod.common.item.PokedexItem;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.LecternBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
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 static net.minecraft.world.level.block.LecternBlock.HAS_BOOK;
@Mixin(LecternBlock.class)
public abstract class LecternBlockMixin {
@Inject(method = "useItemOn", at = @At(value = "HEAD"), cancellable = true)
private void cobblemon$useItemOn(ItemStack itemStack, BlockState blockState, Level world, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult, CallbackInfoReturnable<ItemInteractionResult> cir) {
if (!world.isClientSide && itemStack.getItem() instanceof PokedexItem) {
BlockEntity blockEntity = world.getBlockEntity(blockPos);
if (!blockState.getValue(HAS_BOOK)
&& blockEntity instanceof net.minecraft.world.level.block.entity.LecternBlockEntity
&& blockState.getBlock() instanceof LecternBlock
) {
ItemStack pokedexItemStack = itemStack.copy();
Direction facing = blockState.getValue(HorizontalDirectionalBlock.FACING);
itemStack.consumeAndReturn(1, player);
blockEntity.setRemoved();
BlockState newBlockState = CobblemonBlocks.LECTERN.defaultBlockState().setValue(HorizontalDirectionalBlock.FACING, facing);
world.setBlockAndUpdate(blockPos, newBlockState);
BlockEntity lecternEntity = world.getBlockEntity(blockPos);
if (lecternEntity instanceof LecternBlockEntity) {
((LecternBlockEntity) lecternEntity).setItemStack((pokedexItemStack));
world.playSound(null, blockPos, CobblemonSounds.POKEDEX_CLOSE, SoundSource.BLOCKS, 0.5F, 1.25F);
cir.setReturnValue(ItemInteractionResult.SUCCESS);
} else {
cir.setReturnValue(itemStack.isEmpty() && interactionHand == InteractionHand.MAIN_HAND ? ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION : ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION);
}
}
}
}
}
@@ -22,7 +22,7 @@ public abstract class MinecraftDedicatedServerMixin implements ServerInterface {
@Inject(method = "shouldDiscardEntity", at = @At(value = "HEAD"), cancellable = true)
public void cobblemon$allowPokemonSpawns(Entity entity, CallbackInfoReturnable<Boolean> callback) {
if(entity instanceof PokemonEntity) {
if (entity instanceof PokemonEntity) {
callback.setReturnValue(false);
}
}
@@ -9,7 +9,6 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.CobblemonBakingOverrides;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import net.minecraft.client.color.block.BlockColors;
@@ -20,8 +19,6 @@ import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.profiling.ProfilerFiller;
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;
@@ -31,16 +28,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ModelBakery.class)
public abstract class ModelLoaderMixin {
@Shadow abstract UnbakedModel getModel(ResourceLocation resourceLocation);
@Shadow protected abstract void registerModel(ModelResourceLocation modelId, UnbakedModel unbakedModel);
@Final
@Shadow
private Map<ResourceLocation, UnbakedModel> unbakedCache;
@Final
@Shadow
private static Logger LOGGER;
@Inject(
method = "<init>",
at = @At("TAIL")
@@ -51,19 +42,8 @@ public abstract class ModelLoaderMixin {
Map<ResourceLocation, List<BlockStateModelLoader.LoadedJson>> blockStates,
CallbackInfo ci) {
CobblemonBakingOverrides.INSTANCE.getModels().forEach(bakingOverride -> {
try {
BlockModel unbakedModel = this.loadBlockModel(bakingOverride.getModelLocation());
this.unbakedCache.put(bakingOverride.getModelIdentifier().id(), unbakedModel);
this.registerModel(bakingOverride.getModelIdentifier(), unbakedModel);
} catch (IOException e) {
LOGGER.error("Error loading a Cobblemon BakedModel:", e);
throw new RuntimeException(e);
}
var unbakedModel = this.getModel(bakingOverride.getModelLocation());
this.registerModel(bakingOverride.getModelIdentifier(), unbakedModel);
});
}
@Shadow
private BlockModel loadBlockModel(ResourceLocation id) throws IOException {
return null;
}
}
@@ -0,0 +1,111 @@
/*
* 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.CobblemonClient;
import com.cobblemon.mod.common.client.keybind.keybinds.PartySendBinding;
import com.cobblemon.mod.common.pokedex.scanner.PokedexUsageContext;
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.Minecraft;
import net.minecraft.client.MouseHandler;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.util.Mth;
import net.minecraft.util.SmoothDouble;
import org.objectweb.asm.Opcodes;
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(MouseHandler.class)
public class MouseHandlerMixin {
@Shadow
private double accumulatedScrollY;
@Shadow @Final private Minecraft minecraft;
@Shadow @Final private SmoothDouble smoothTurnY;
@Shadow @Final private SmoothDouble smoothTurnX;
@Shadow private double accumulatedDX;
@Shadow private double accumulatedDY;
@Inject(
method = "onScroll",
at = @At(
value = "FIELD",
target="Lnet/minecraft/client/MouseHandler;accumulatedScrollY:D",
opcode = Opcodes.PUTFIELD,
ordinal = 2,
shift = At.Shift.BEFORE
),
cancellable = true
)
public void cobblemon$scrollParty(long window, double horizontal, double vertical, CallbackInfo ci) {
if (PartySendBinding.INSTANCE.getWasDown()) {
int i = (int) accumulatedScrollY;
if (i > 0) {
accumulatedScrollY -= i;
CobblemonClient.INSTANCE.getStorage().shiftSelected(false);
ci.cancel();
PartySendBinding.INSTANCE.actioned();
} else if (i < 0) {
accumulatedScrollY -= i;
CobblemonClient.INSTANCE.getStorage().shiftSelected(true);
ci.cancel();
PartySendBinding.INSTANCE.actioned();
}
}
}
@Inject(
method = "onScroll",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/world/entity/player/Inventory;swapPaint(D)V"
),
cancellable = true
)
public void cobblemon$doPokedexZoom(long window, double horizontal, double vertical, CallbackInfo ci) {
PokedexUsageContext usageContext = CobblemonClient.INSTANCE.getPokedexUsageContext();
if (usageContext.getScanningGuiOpen()) {
usageContext.adjustZoom(vertical);
ci.cancel();
}
}
@WrapWithCondition(
method = "turnPlayer",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/player/LocalPlayer;turn(DD)V"
)
)
public boolean cobblemon$modifyRotation(LocalPlayer player, double cursorDeltaX, double cursorDeltaY, @Local(argsOnly = true) double d) {
// I know this technically doesn't need to be a WrapWithCondition, but it'll make things easier later for riding.
PokedexUsageContext usageContext = CobblemonClient.INSTANCE.getPokedexUsageContext();
if (usageContext.getScanningGuiOpen()) {
this.smoothTurnY.reset();
this.smoothTurnX.reset();
var defaultSensitivity = this.minecraft.options.sensitivity().get() * 0.6000000238418579 + 0.20000000298023224;
var spyglassSensitivity = Math.pow(defaultSensitivity, 3);
var lookSensitivity = spyglassSensitivity * 8.0;
var sensitivity = Mth.lerp(usageContext.getFovMultiplier(), spyglassSensitivity, lookSensitivity);
player.turn(this.accumulatedDX * sensitivity, (this.accumulatedDY * sensitivity));
return false;
}
return true;
}
}
@@ -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.BattleMusicController;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.MusicManager;
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(MusicManager.class)
public class MusicManagerMixin {
@Shadow @Final
private Minecraft minecraft;
@Shadow @Nullable
private SoundInstance currentMusic;
/** 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.minecraft.getSoundManager().isActive(BattleMusicController.INSTANCE.getMusic())) cb.cancel();
}
}
@@ -1,37 +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.client.sound.battle.BattleMusicController;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.MusicManager;
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(MusicManager.class)
public class MusicTrackerMixin {
@Shadow @Final
private Minecraft minecraft;
@Shadow @Nullable
private SoundInstance currentMusic;
/** 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.minecraft.getSoundManager().isActive(BattleMusicController.INSTANCE.getMusic())) cb.cancel();
}
}
@@ -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 static com.cobblemon.mod.common.datafixer.CobblemonSchemas.VERSION_KEY;
import com.cobblemon.mod.common.datafixer.CobblemonSchemas;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
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(NbtUtils.class)
public class NbtUtilsMixin {
@Inject(
method = "addCurrentDataVersion(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;",
at = @At("TAIL")
)
private static void addCobblemonDataVersion(
CompoundTag tag,
CallbackInfoReturnable<CompoundTag> cir
) {
tag.putInt(VERSION_KEY, CobblemonSchemas.DATA_VERSION);
}
}
@@ -1,53 +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.client.CobblemonClient;
import com.cobblemon.mod.common.client.keybind.keybinds.PartySendBinding;
import net.minecraft.client.MouseHandler;
import org.objectweb.asm.Opcodes;
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(MouseHandler.class)
public class PartyScrollMixin {
@Shadow
private double accumulatedScrollY;
@Inject(
method = "onScroll",
at = @At(
value = "FIELD",
target="Lnet/minecraft/client/MouseHandler;accumulatedScrollY:D",
opcode = Opcodes.PUTFIELD,
ordinal = 2,
shift = At.Shift.BEFORE
),
cancellable = true
)
public void onMouseScroll(long window, double horizontal, double vertical, CallbackInfo ci) {
if (PartySendBinding.INSTANCE.getWasDown()) {
int i = (int)accumulatedScrollY;
if (i > 0) {
while (i-- > 0) CobblemonClient.INSTANCE.getStorage().shiftSelected(false);
ci.cancel();
accumulatedScrollY = 0;
PartySendBinding.INSTANCE.actioned();
} else if (i < 0) {
while (i++ < 0) CobblemonClient.INSTANCE.getStorage().shiftSelected(true);
ci.cancel();
accumulatedScrollY = 0;
PartySendBinding.INSTANCE.actioned();
}
}
}
}
@@ -12,35 +12,50 @@ import com.cobblemon.mod.common.Cobblemon;
import com.cobblemon.mod.common.CobblemonItems;
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.pokemon.PokemonSpecies;
import com.cobblemon.mod.common.api.storage.party.PartyStore;
import com.cobblemon.mod.common.api.tags.CobblemonItemTags;
import com.cobblemon.mod.common.pokedex.scanner.PokedexEntityData;
import com.cobblemon.mod.common.pokedex.scanner.ScannableEntity;
import com.cobblemon.mod.common.pokemon.FormData;
import com.cobblemon.mod.common.pokemon.Gender;
import com.cobblemon.mod.common.pokemon.Pokemon;
import com.cobblemon.mod.common.pokemon.Species;
import com.cobblemon.mod.common.util.CompoundTagExtensionsKt;
import com.cobblemon.mod.common.util.CompoundTagUtilities;
import com.cobblemon.mod.common.util.DataKeys;
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.Nullable;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import java.util.stream.Collectors;
@Mixin(Player.class)
public abstract class PlayerMixin extends LivingEntity {
public abstract class PlayerMixin extends LivingEntity implements ScannableEntity {
@Shadow public abstract CompoundTag getShoulderEntityLeft();
@@ -63,19 +78,19 @@ public abstract class PlayerMixin extends LivingEntity {
super(p_20966_, p_20967_);
}
@Inject(method = "respawnEntityOnShoulder", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/EntityType;create(Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/world/Level;)Ljava/util/Optional;"), cancellable = true)
@Inject(method = "respawnEntityOnShoulder", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/EntityType;create(Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/world/level/Level;)Ljava/util/Optional;"), cancellable = true)
private void cobblemon$removePokemon(CompoundTag nbt, CallbackInfo ci) {
if (CompoundTagExtensionsKt.isPokemonEntity(nbt)) {
final UUID uuid = this.getPokemonID(nbt);
if (this.isShoulderPokemon(this.getShoulderEntityRight())) {
final UUID uuidRight = this.getPokemonID(this.getShoulderEntityRight());
final UUID uuid = CompoundTagUtilities.getPokemonID(nbt);
if (CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityRight())) {
final UUID uuidRight = CompoundTagUtilities.getPokemonID(this.getShoulderEntityRight());
if (uuid.equals(uuidRight)) {
this.recallPokemon(uuidRight);
this.setShoulderEntityRight(new CompoundTag());
}
}
if (this.isShoulderPokemon(this.getShoulderEntityLeft())) {
final UUID uuidLeft = this.getPokemonID(this.getShoulderEntityLeft());
if (CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityLeft())) {
final UUID uuidLeft = CompoundTagUtilities.getPokemonID(this.getShoulderEntityLeft());
if (uuid.equals(uuidLeft)) {
this.recallPokemon(uuidLeft);
this.setShoulderEntityLeft(new CompoundTag());
@@ -99,36 +114,25 @@ public abstract class PlayerMixin extends LivingEntity {
// We want to allow both of these to forcefully remove the entities
if (this.isSpectator() || this.isDeadOrDying())
return;
if (!this.isShoulderPokemon(this.getShoulderEntityLeft())) {
if (!CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityLeft())) {
this.respawnEntityOnShoulder(this.getShoulderEntityLeft());
this.setShoulderEntityLeft(new CompoundTag());
}
if (!this.isShoulderPokemon(this.getShoulderEntityRight())) {
if (!CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityRight())) {
this.respawnEntityOnShoulder(this.getShoulderEntityRight());
this.setShoulderEntityRight(new CompoundTag());
}
ci.cancel();
}
private UUID getPokemonID(CompoundTag nbt) {
return nbt.getCompound(DataKeys.POKEMON)
.getUUID(DataKeys.POKEMON_UUID);
}
private void recallPokemon(UUID uuid) {
// We need to do this cause the Entity doesn't store a reference to its storage
try {
final PartyStore party = Cobblemon.INSTANCE.getStorage().getParty(this.uuid);
for (Pokemon pokemon : party) {
if (pokemon.getUuid().equals(uuid)) {
pokemon.recall();
}
final PartyStore party = Cobblemon.INSTANCE.getStorage().getParty(this.getUUID(), this.registryAccess());
for (Pokemon pokemon : party) {
if (pokemon.getUuid().equals(uuid)) {
pokemon.recall();
}
} catch (NoPokemonStoreException ignored) {}
}
private boolean isShoulderPokemon(CompoundTag nbt) {
return CompoundTagExtensionsKt.isPokemonEntity(nbt);
}
}
@Inject(
@@ -159,4 +163,61 @@ public abstract class PlayerMixin extends LivingEntity {
}
}
}
@Inject(method = "isInvulnerableTo", at = @At("HEAD"), cancellable = true)
public void isInvulnerableTo(DamageSource source, CallbackInfoReturnable<Boolean> ci) {
if (!level().isClientSide) {
ServerPlayer player = (ServerPlayer)(Object)this;
boolean invulnerableInBattle = this.level().getGameRules().getBoolean(CobblemonGameRules.BATTLE_INVULNERABILITY);
boolean inBattle = Cobblemon.INSTANCE.getBattleRegistry().getBattleByParticipatingPlayer(player) != null;
if (invulnerableInBattle && inBattle) {
ci.setReturnValue(true);
}
}
}
@Override @Nullable
public PokedexEntityData resolvePokemonScan() {
if(CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityRight())){
return getDataFromShoulderPokemon(this.getShoulderEntityRight());
}
if(CompoundTagUtilities.isShoulderPokemon(this.getShoulderEntityLeft())){
return getDataFromShoulderPokemon(this.getShoulderEntityLeft());
}
return null;
}
@Nullable @Unique
private PokedexEntityData getDataFromShoulderPokemon(CompoundTag shoulderTag) {
CompoundTag pokemonTag = shoulderTag.getCompound(DataKeys.POKEMON);
if(pokemonTag.isEmpty()) return null;
Species species = PokemonSpecies.INSTANCE.getByIdentifier(ResourceLocation.parse(pokemonTag.getString(DataKeys.POKEMON_SPECIES_IDENTIFIER)));
if(species == null) return null;
String formId = pokemonTag.getString(DataKeys.POKEMON_FORM_ID);
FormData form = species.getStandardForm();
List<FormData> formList = species.getForms().stream().filter(it -> it.formOnlyShowdownId().equals(formId)).toList();
if(!formList.isEmpty()) form = formList.getFirst();
if(form == null) return null;
String genderString = pokemonTag.getString(DataKeys.POKEMON_GENDER);
if(genderString.isEmpty()) return null;
Gender gender = Gender.valueOf(genderString);
boolean shiny = pokemonTag.getBoolean(DataKeys.POKEMON_SHINY);
int level = pokemonTag.getInt(DataKeys.POKEMON_LEVEL);
Set<String> aspects = shoulderTag.getList(DataKeys.SHOULDER_ASPECTS, Tag.TAG_STRING).stream().map(Tag::getAsString).collect(Collectors.toSet());
return new PokedexEntityData(
species,
form,
gender,
aspects,
shiny,
level,
this.getUUID()
);
}
@Override
public LivingEntity resolveEntityScan() {
return this;
}
}
@@ -0,0 +1,28 @@
/*
* 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.render.ClientPlayerIcon;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
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(PlayerRenderer.class)
public class PlayerRendererMixin {
@Inject(method = "render", at = @At(value = "TAIL"))
public void renderPlayer(AbstractClientPlayer player, float f, float g, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) {
ClientPlayerIcon.Companion.onRenderPlayer(player);
}
}
@@ -0,0 +1,113 @@
/*
* 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.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundEngineDuck;
import com.google.common.collect.Multimap;
import com.mojang.blaze3d.audio.Channel;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.ChannelAccess;
import net.minecraft.client.sounds.SoundEngine;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource;
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(SoundEngine.class)
public abstract class SoundEngineMixin implements SoundEngineDuck {
@Shadow
private boolean loaded;
@Shadow
private Multimap<SoundSource, SoundInstance> instanceBySource;
@Shadow @Final
private Map<SoundInstance, ChannelAccess.ChannelHandle> instanceToChannel;
@Shadow
protected abstract void stop(SoundInstance sound);
@Shadow
public abstract boolean isActive(SoundInstance sound);
/** Resumes the Source belonging to the queried SoundInstance. */
private void resume(SoundInstance sound) {
ChannelAccess.ChannelHandle sourceManager = this.instanceToChannel.get(sound);
if (this.loaded && sourceManager != null) sourceManager.execute(Channel::unpause);
}
/** Pauses the Source belonging to the queried SoundInstance. */
private void pause(SoundInstance sound) {
ChannelAccess.ChannelHandle sourceManager = this.instanceToChannel.get(sound);
if (this.loaded && sourceManager != null) sourceManager.execute(Channel::pause);
}
/** Resumes the SoundInstance(s) queried by id and/or category. */
@Override
public void resumeSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
if (category != null) {
this.instanceBySource.get(category).forEach((sound) -> {
if (id == null || sound.getLocation().equals(id)) resume(sound);
});
} else if (id == null) {
this.instanceToChannel.keySet().forEach(this::resume);
} else {
this.instanceToChannel.keySet().forEach(sound -> {
if (sound.getLocation().equals(id)) resume(sound);
});
}
}
/** Pauses the SoundInstances queried by id and/or category. */
@Override
public void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
if (category != null) {
this.instanceBySource.get(category).forEach((sound) -> {
if (id == null || sound.getLocation().equals(id)) pause(sound);
});
} else if (id == null) {
this.instanceToChannel.keySet().forEach(this::pause);
} else {
this.instanceToChannel.keySet().forEach(sound -> {
if (sound.getLocation().equals(id)) pause(sound);
});
}
}
/** Allows stopping all SoundInstances that belong to a queried category. */
@Inject(method = "stop(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/sounds/SoundSource;)V", at = @At("HEAD"), cancellable = true)
public void stopSounds(@Nullable ResourceLocation id, @Nullable SoundSource category, CallbackInfo cb) {
if (id == null && category != null) {
this.instanceBySource.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 = "resume()V", at = @At("HEAD"), cancellable = true)
public void resume(CallbackInfo cb) {
if (this.isActive(BattleMusicController.INSTANCE.getMusic())) {
this.instanceBySource.values().forEach(sound -> {
if (sound == BattleMusicController.INSTANCE.getMusic() || !BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getSource())) {
resume(sound);
}
});
cb.cancel();
}
}
}
@@ -8,9 +8,12 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.client.sound.BlockEntitySoundTracker;
import com.cobblemon.mod.common.client.sound.EntitySoundTracker;
import com.cobblemon.mod.common.client.sound.BattleMusicController;
import com.cobblemon.mod.common.client.sound.SoundTracker;
import com.cobblemon.mod.common.duck.SoundManagerDuck;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import com.cobblemon.mod.common.duck.SoundEngineDuck;
import net.minecraft.client.resources.sounds.BiomeAmbientSoundsHandler;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.resources.sounds.UnderwaterAmbientSoundInstances;
@@ -55,19 +58,13 @@ public abstract class SoundManagerMixin implements SoundManagerDuck {
/** Pauses the queried SoundInstance(s). If id is null, will pause all sounds belonging to the SoundCategory. */
@Override
public void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
((SoundSystemDuck)soundEngine).pauseSounds(id, category);
((SoundEngineDuck)soundEngine).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 ResourceLocation id, @Nullable SoundSource category) {
((SoundSystemDuck)soundEngine).resumeSounds(id, category);
}
/** Stops the queried SoundInstance(s). If id is null, will stop all sounds belonging to the SoundCategory. */
@Override
public void stopSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
((SoundSystemDuck)soundEngine).stopSounds(id, category);
((SoundEngineDuck)soundEngine).resumeSounds(id, category);
}
/** Blocks filtered sounds from being played while a BattleMusicInstance is in progress. */
@@ -91,4 +88,10 @@ public abstract class SoundManagerMixin implements SoundManagerDuck {
public void playEnd(SoundInstance sound, int delay, CallbackInfo cb) {
if (ambientLoopCondition(sound)) this.pauseSounds(sound.getLocation(), SoundSource.AMBIENT);
}
/** Clears tracked sounds on the client when disconnected. */
@Inject(method = "stop()V", at = @At("TAIL"))
public void stop(CallbackInfo cb) {
SoundTracker.Companion.clear();
}
}
@@ -1,113 +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.client.sound.battle.BattleMusicController;
import com.cobblemon.mod.common.duck.SoundSystemDuck;
import com.google.common.collect.Multimap;
import com.mojang.blaze3d.audio.Channel;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.ChannelAccess;
import net.minecraft.client.sounds.SoundEngine;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource;
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(SoundEngine.class)
public abstract class SoundSystemMixin implements SoundSystemDuck {
@Shadow
private boolean loaded;
@Shadow
private Multimap<SoundSource, SoundInstance> instanceBySource;
@Shadow @Final
private Map<SoundInstance, ChannelAccess.ChannelHandle> instanceToChannel;
@Shadow
protected abstract void stop(SoundInstance sound);
@Shadow
public abstract boolean isActive(SoundInstance sound);
/** Resumes the Source belonging to the queried SoundInstance. */
private void resume(SoundInstance sound) {
ChannelAccess.ChannelHandle sourceManager = this.instanceToChannel.get(sound);
if (this.loaded && sourceManager != null) sourceManager.execute(Channel::unpause);
}
/** Pauses the Source belonging to the queried SoundInstance. */
private void pause(SoundInstance sound) {
ChannelAccess.ChannelHandle sourceManager = this.instanceToChannel.get(sound);
if (this.loaded && sourceManager != null) sourceManager.execute(Channel::pause);
}
/** Resumes the SoundInstance(s) queried by id and/or category. */
@Override
public void resumeSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
if (category != null) {
this.instanceBySource.get(category).forEach((sound) -> {
if (id == null || sound.getLocation().equals(id)) resume(sound);
});
} else if (id == null) {
this.instanceToChannel.keySet().forEach(this::resume);
} else {
this.instanceToChannel.keySet().forEach(sound -> {
if (sound.getLocation().equals(id)) resume(sound);
});
}
}
/** Pauses the SoundInstances queried by id and/or category. */
@Override
public void pauseSounds(@Nullable ResourceLocation id, @Nullable SoundSource category) {
if (category != null) {
this.instanceBySource.get(category).forEach((sound) -> {
if (id == null || sound.getLocation().equals(id)) pause(sound);
});
} else if (id == null) {
this.instanceToChannel.keySet().forEach(this::pause);
} else {
this.instanceToChannel.keySet().forEach(sound -> {
if (sound.getLocation().equals(id)) pause(sound);
});
}
}
/** Allows stopping all SoundInstances that belong to a queried category. */
@Inject(method = "stop(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/sounds/SoundSource;)V", at = @At("HEAD"), cancellable = true)
public void stopSoustopnds(@Nullable ResourceLocation id, @Nullable SoundSource category, CallbackInfo cb) {
if (id == null && category != null) {
this.instanceBySource.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 = "resume()V", at = @At("HEAD"), cancellable = true)
public void resume(CallbackInfo cb) {
if (this.isActive(BattleMusicController.INSTANCE.getMusic())) {
this.instanceBySource.values().forEach(sound -> {
if (sound == BattleMusicController.INSTANCE.getMusic() || !BattleMusicController.INSTANCE.getFilteredCategories().contains(sound.getSource())) {
resume(sound);
}
});
cb.cancel();
}
}
}
@@ -9,22 +9,26 @@
package com.cobblemon.mod.common.mixin;
import com.cobblemon.mod.common.world.CobblemonStructureIDs;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.LevelHeightAccessor;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.RandomState;
import net.minecraft.world.level.levelgen.structure.PoolElementStructurePiece;
import net.minecraft.world.level.levelgen.structure.pools.JigsawPlacement;
import net.minecraft.world.level.levelgen.structure.pools.LegacySinglePoolElement;
import net.minecraft.world.level.levelgen.structure.pools.SinglePoolElement;
import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement;
import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool;
import net.minecraft.world.level.levelgen.structure.pools.*;
import net.minecraft.world.level.levelgen.structure.pools.alias.PoolAliasLookup;
import net.minecraft.world.level.levelgen.structure.templatesystem.LiquidSettings;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.apache.commons.lang3.mutable.MutableObject;
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.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
import java.util.*;
@@ -39,11 +43,11 @@ public abstract class StructurePoolGeneratorMixin {
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.VILLAGE_PLAINS_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.VILLAGE_DESERT_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.VILLAGE_SAVANNA_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.VILLAGE_SNOWY_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.VILLAGE_TAIGA_POKECENTER, Set.of(pokecenter));
structureGroups.put(CobblemonStructureIDs.SAVANNA_BERRY_SMALL, Set.of(berry));
structureGroups.put(CobblemonStructureIDs.SAVANNA_BERRY_LARGE, Set.of(berry));
@@ -117,53 +121,25 @@ public abstract class StructurePoolGeneratorMixin {
return reducedList.iterator();
}
@ModifyVariable(method = "tryPlacingChildren", at = @At("HEAD"), ordinal = 0, argsOnly = true)
private PoolElementStructurePiece injected(PoolElementStructurePiece poolStructurePiece) {
ResourceLocation structureLocationKey = getCobblemonOnlyLocation(poolStructurePiece.getElement());
@Inject(method = "tryPlacingChildren", at = @At(value = "NEW", target = "net/minecraft/world/level/levelgen/structure/PoolElementStructurePiece", ordinal = 0), locals = LocalCapture.CAPTURE_FAILHARD)
private void afterTryPlacingChildren(
PoolElementStructurePiece poolElementStructurePiece,
MutableObject<VoxelShape> mutableObject,
int i,
boolean bl,
LevelHeightAccessor levelHeightAccessor,
RandomState randomState,
PoolAliasLookup poolAliasLookup,
LiquidSettings liquidSettings,
CallbackInfo ci,
@Local(ordinal = 1) StructurePoolElement structurePoolElement
) {
ResourceLocation structureLocationKey = getCobblemonOnlyLocation(structurePoolElement);
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 ResourceLocation getCobblemonOnlyLocation(StructurePoolElement structurePoolElement) {
ResourceLocation location = getLocationIfAvailable(structurePoolElement);
if (location == null) return null;
@@ -186,26 +162,4 @@ public abstract class StructurePoolGeneratorMixin {
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,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.Cobblemon;
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
import org.jetbrains.annotations.Nullable;
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(TargetingConditions.class)
public class TargetingConditionsMixin {
@Inject(method = "test", at = @At("HEAD"), cancellable = true)
public void test(@Nullable LivingEntity baseEntity, LivingEntity targetEntity, CallbackInfoReturnable<Boolean> ci) {
if (targetEntity instanceof ServerPlayer player) {
boolean canTargetInBattle = player.level().getGameRules().getBoolean(CobblemonGameRules.MOB_TARGET_IN_BATTLE);
boolean targetInBattle = Cobblemon.INSTANCE.getBattleRegistry().getBattleByParticipatingPlayer(player) != null;
if (!canTargetInBattle && targetInBattle) ci.setReturnValue(false);
}
}
}
@@ -0,0 +1,68 @@
/*
* 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.Cobblemon;
import com.cobblemon.mod.common.CobblemonVillagerProfessions;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import kotlin.Pair;
import net.minecraft.ChatFormatting;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.layers.RenderLayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.monster.ZombieVillager;
import net.minecraft.world.entity.npc.Villager;
import net.minecraft.world.entity.npc.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.CallbackInfo;
@Mixin(RenderLayer.class)
public abstract class VillagerProfessionLayerMixin {
@Inject(method = "renderColoredCutoutModel", at = @At(value = "HEAD"), cancellable = true)
private static <T extends LivingEntity> void cobblemon$renderVillagerProfessionLayer(EntityModel<T> entityModel, ResourceLocation resourceLocation, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, T livingEntity, int j, CallbackInfo ci) {
if (resourceLocation.getNamespace().equals(Cobblemon.MODID)) {
VillagerProfession profession = null;
boolean isZombie = false;
if (livingEntity instanceof Villager) profession = ((Villager) livingEntity).getVillagerData().getProfession();
if (livingEntity instanceof ZombieVillager) {
profession = ((ZombieVillager) livingEntity).getVillagerData().getProfession();
isZombie = true;
}
Pair<String, String[]> override = CobblemonVillagerProfessions.INSTANCE.getNameTagOverride(profession);
if (profession != null && override != null) {
String entityName = ChatFormatting.stripFormatting(livingEntity.getName().getString());
boolean nameMatches = false;
for (String name: override.getSecond())
if (entityName.endsWith(name)) {
nameMatches = true;
break;
}
if (nameMatches && resourceLocation.equals(getProfessionResourceLocation(resourceLocation.getNamespace(), ResourceLocation.parse(profession.name()).getPath(), isZombie))) {
ResourceLocation textureLocation = getProfessionResourceLocation(resourceLocation.getNamespace(), override.getFirst(), isZombie);
VertexConsumer vertexConsumer = multiBufferSource.getBuffer(RenderType.entityCutoutNoCull(textureLocation));
entityModel.renderToBuffer(poseStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(livingEntity, 0.0F), j);
ci.cancel();
}
}
}
}
private static ResourceLocation getProfessionResourceLocation(String namespace, String profession, Boolean isZombie) {
return ResourceLocation.fromNamespaceAndPath(namespace, "textures/entity/" + (isZombie ? "zombie_villager" : "villager") + "/profession/" + profession + ".png");
}
}
@@ -0,0 +1,19 @@
/*
* 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.accessor;
import net.minecraft.world.level.biome.Biome;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(Biome.class)
public interface BiomeAccessor {
@Accessor("climateSettings")
Biome.ClimateSettings getClimateSettings();
}
@@ -0,0 +1,19 @@
/*
* 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.accessor;
import net.minecraft.client.gui.components.AbstractSelectionList;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(AbstractSelectionList.class)
public interface EntryListWidgetAccessor {
@Accessor("renderHeader")
boolean getRenderHeader();
}
@@ -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.mixin.client;
import com.cobblemon.mod.common.client.CobblemonClient;
import com.cobblemon.mod.common.pokedex.scanner.PokedexUsageContext;
import net.minecraft.client.player.AbstractClientPlayer;
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(AbstractClientPlayer.class)
public class AbstractClientPlayerMixin {
@Inject(
method = "getFieldOfViewModifier()F",
at = @At(
value = "HEAD"
),
cancellable = true
)
public void cobblemon$getPokedexFovMultiplier(CallbackInfoReturnable<Float> cir) {
PokedexUsageContext usageContext = CobblemonClient.INSTANCE.getPokedexUsageContext();
if (usageContext.getScanningGuiOpen()) {
cir.setReturnValue(usageContext.getFovMultiplier());
}
}
}
@@ -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.client;
import com.cobblemon.mod.common.client.gui.ScrollingWidget;
import net.minecraft.client.gui.components.AbstractSelectionList;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.Constant;
import org.spongepowered.asm.mixin.injection.ModifyConstant;
@Mixin(AbstractSelectionList.class)
public abstract class EntryListWidgetMixin {
@SuppressWarnings("ConstantValue")
@ModifyConstant(method = "getEntryAtPosition", constant = @Constant(intValue = 4))
public int cobblemon$adjustOnlyIfNecessary(int input) {
if(ScrollingWidget.class.isInstance(this)) {
return 0;
}
return input;
}
}
@@ -9,6 +9,8 @@
package com.cobblemon.mod.common.mixin.invoker;
import java.util.List;
import com.cobblemon.mod.common.integration.AdornCompatibility;
import juuxel.adorn.block.variant.BlockVariantSet;
import juuxel.adorn.block.variant.BlockVariantSets;
import org.spongepowered.asm.mixin.Final;
@@ -26,7 +28,7 @@ public abstract class AdornRegisterInvoker {
private static List<BlockVariantSet> variantSets;
@Inject(method = "register()V", at = @At("HEAD"), remap = false)
void register(CallbackInfo ci) {
// variantSets.add(AdornCompatibility.INSTANCE);
private static void register(CallbackInfo ci) {
variantSets.add(new AdornCompatibility());
}
}
@@ -1,69 +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.pokeball;
import com.cobblemon.mod.common.Cobblemon;
import com.cobblemon.mod.common.ModAPI;
import com.cobblemon.mod.common.item.PokeBallItem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.ItemModelShaper;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ItemRenderer.class)
public abstract class ItemRendererMixin {
@Unique private static final String MODEL_PATH = Cobblemon.implementation.getModAPI() == ModAPI.FABRIC ? "fabric_resource" : "standalone";
@Shadow @Final private ItemModelShaper itemModelShaper;
@Shadow public abstract void render(ItemStack stack, ItemDisplayContext renderMode, boolean leftHanded, PoseStack matrices, MultiBufferSource vertexConsumers, int light, int overlay, BakedModel model);
@Inject(method = "getModel", at = @At("HEAD"), cancellable = true)
private void cobblemon$bakePokeballModel(ItemStack stack, Level world, LivingEntity entity, int seed, CallbackInfoReturnable<BakedModel> cir) {
if (stack.getItem() instanceof PokeBallItem pokeBallItem) {
BakedModel model = this.itemModelShaper.getModelManager().getModel(new ModelResourceLocation(pokeBallItem.getPokeBall().getModel3d(), MODEL_PATH));
ClientLevel clientWorld = world instanceof ClientLevel ? (ClientLevel) world : null;
BakedModel overriddenModel = model.getOverrides().resolve(model, stack, clientWorld, entity, seed);
cir.setReturnValue(overriddenModel == null ? this.itemModelShaper.getModelManager().getMissingModel() : overriddenModel);
}
}
@Inject(
method = "render(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;ZLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILnet/minecraft/client/resources/model/BakedModel;)V",
at = @At("HEAD"),
cancellable = true
)
private void cobblemon$determinePokeballModel(ItemStack stack, ItemDisplayContext renderMode, boolean leftHanded, PoseStack matrices, MultiBufferSource vertexConsumers, int light, int overlay, BakedModel model, CallbackInfo ci) {
boolean shouldBe2d = renderMode == ItemDisplayContext.GUI || renderMode == ItemDisplayContext.FIXED;
if (shouldBe2d && stack.getItem() instanceof PokeBallItem pokeBallItem) {
BakedModel replacementModel = this.itemModelShaper.getModelManager().getModel(new ModelResourceLocation(pokeBallItem.getPokeBall().getModel2d(), "inventory"));
if (!model.equals(replacementModel)) {
ci.cancel();
render(stack, renderMode, leftHanded, matrices, vertexConsumers, light, overlay, replacementModel);
}
}
}
}
@@ -16,12 +16,8 @@ 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.interaction.RequestManager
import com.cobblemon.mod.common.api.permission.PermissionValidator
import com.cobblemon.mod.common.api.pokeball.catching.calculators.CaptureCalculator
import com.cobblemon.mod.common.api.pokeball.catching.calculators.CaptureCalculators
@@ -56,9 +52,13 @@ import com.cobblemon.mod.common.api.storage.factory.FileBackedPokemonStoreFactor
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.storage.player.PlayerInstancedDataStoreManager
import com.cobblemon.mod.common.api.storage.player.PlayerInstancedDataStoreTypes
import com.cobblemon.mod.common.api.storage.player.adapter.DexDataMongoBackend
import com.cobblemon.mod.common.api.storage.player.adapter.DexDataNbtBackend
import com.cobblemon.mod.common.api.storage.player.adapter.PlayerDataJsonBackend
import com.cobblemon.mod.common.api.storage.player.adapter.PlayerDataMongoBackend
import com.cobblemon.mod.common.api.storage.player.factory.CachedPlayerDataStoreFactory
import com.cobblemon.mod.common.api.tags.CobblemonEntityTypeTags
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
import com.cobblemon.mod.common.battles.BagItems
@@ -68,19 +68,16 @@ import com.cobblemon.mod.common.battles.BattleSide
import com.cobblemon.mod.common.battles.ShowdownThread
import com.cobblemon.mod.common.battles.actor.PokemonBattleActor
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.command.argument.DialogueArgumentType
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.client.CobblemonPack
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.FlowHandler
import com.cobblemon.mod.common.events.PokedexHandler
import com.cobblemon.mod.common.events.ServerTickHandler
import com.cobblemon.mod.common.net.messages.client.settings.ServerSettingsPacket
import com.cobblemon.mod.common.permission.LaxPermissionValidator
@@ -92,14 +89,21 @@ import com.cobblemon.mod.common.pokemon.evolution.variants.BlockClickEvolution
import com.cobblemon.mod.common.pokemon.feature.TagSeasonResolver
import com.cobblemon.mod.common.pokemon.helditem.CobblemonHeldItemManager
import com.cobblemon.mod.common.pokemon.properties.AspectPropertyType
import com.cobblemon.mod.common.pokemon.properties.BattleCloneProperty
import com.cobblemon.mod.common.pokemon.properties.FreezeFrameProperty
import com.cobblemon.mod.common.pokemon.properties.HiddenAbilityPropertyType
import com.cobblemon.mod.common.pokemon.properties.NoAIProperty
import com.cobblemon.mod.common.pokemon.properties.UnaspectPropertyType
import com.cobblemon.mod.common.pokemon.properties.UncatchableProperty
import com.cobblemon.mod.common.pokemon.properties.tags.PokemonFlagProperty
import com.cobblemon.mod.common.pokemon.stat.CobblemonStatProvider
import com.cobblemon.mod.common.starter.CobblemonStarterHandler
import com.cobblemon.mod.common.trade.TradeManager
import com.cobblemon.mod.common.util.*
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.server
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
@@ -111,7 +115,7 @@ import java.io.File
import java.io.FileReader
import java.io.FileWriter
import java.io.PrintWriter
import java.util.*
import java.util.UUID
import kotlin.math.roundToInt
import kotlin.properties.Delegates
import kotlin.reflect.full.memberProperties
@@ -120,6 +124,7 @@ import kotlin.reflect.jvm.javaField
import net.minecraft.client.Minecraft
import net.minecraft.commands.synchronization.SingletonArgumentInfo
import net.minecraft.resources.ResourceKey
import net.minecraft.server.packs.PackType
import net.minecraft.world.item.NameTagItem
import net.minecraft.world.level.Level
import net.minecraft.world.level.storage.LevelResource
@@ -130,6 +135,7 @@ object Cobblemon {
const val MODID = CobblemonBuildDetails.MOD_ID
const val VERSION = CobblemonBuildDetails.VERSION
const val CONFIG_PATH = "config/$MODID/main.json"
@JvmField
val LOGGER: Logger = LogManager.getLogger()
lateinit var implementation: CobblemonImplementation
@@ -151,18 +157,28 @@ object Cobblemon {
val battleRegistry = BattleRegistry
var storage = PokemonStoreManager()
var molangData = NbtMoLangDataStoreFactory
lateinit var playerData: PlayerDataStoreManager
lateinit var playerDataManager: PlayerInstancedDataStoreManager
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
var seasonResolver: SeasonResolver = TagSeasonResolver
@JvmStatic
val builtinPacks = listOf<CobblemonPack>(
CobblemonPack(id = "adorncompatibility", name = "Adorn Compatibility", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.ALWAYS_ENABLED, neededMods = setOf("adorn")),
CobblemonPack(id = "gyaradosjump", name = "Gyarados Jump Patterns", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.DEFAULT_ENABLED),
CobblemonPack(id = "regionbiasforms", name = "Region Bias Forms", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.DEFAULT_ENABLED),
CobblemonPack(id = "uniqueshinyforms", name = "Shinies for Magikarp Jump", packType = PackType.CLIENT_RESOURCES, activationBehaviour = ResourcePackActivationBehaviour.NORMAL),
CobblemonPack(id = "repurposedstructurescobblemon", name = "Repurposed Structures Cobblemon", packType = PackType.SERVER_DATA, activationBehaviour = ResourcePackActivationBehaviour.DEFAULT_ENABLED, neededMods = setOf("repurposed_structures")),
)
fun preInitialize(implementation: CobblemonImplementation) {
this.implementation = implementation
this.LOGGER.info("Launching Cobblemon ${CobblemonBuildDetails.VERSION}${if(CobblemonBuildDetails.SNAPSHOT) "-SNAPSHOT" else ""} ")
if(CobblemonBuildDetails.SNAPSHOT) {
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}")
}
@@ -175,6 +191,7 @@ object Cobblemon {
implementation.registerEntityTypes()
implementation.registerEntityAttributes()
implementation.registerBlockEntityTypes()
implementation.registerVillagers()
implementation.registerWorldGenFeatures()
implementation.registerParticles()
implementation.registerEntityDataSerializers()
@@ -199,16 +216,16 @@ object Cobblemon {
DATA_SYNCHRONIZED.subscribe {
storage.onPlayerDataSync(it)
playerData.get(it).sendToPlayer(it)
playerDataManager.syncAllToPlayer(it)
starterHandler.handleJoin(it)
ServerSettingsPacket(this.config.preventCompletePartyDeposit, this.config.displayEntityLevelLabel).sendToPlayer(it)
ServerSettingsPacket(this.config.preventCompletePartyDeposit, this.config.displayEntityLevelLabel, this.config.displayEntityNameLabel, this.config.maxPokemonLevel).sendToPlayer(it)
}
PlatformEvents.SERVER_PLAYER_LOGOUT.subscribe {
PCLinkManager.removeLink(it.player.uuid)
BattleRegistry.getBattleByParticipatingPlayer(it.player)?.stop()
BattleRegistry.onPlayerDisconnect(it.player)
storage.onPlayerDisconnect(it.player)
playerData.onPlayerDisconnect(it.player)
TradeManager.onLogoff(it.player)
playerDataManager.onPlayerDisconnect(it.player)
RequestManager.onLogoff(it.player)
}
PlatformEvents.PLAYER_DEATH.subscribe {
PCLinkManager.removeLink(it.player.uuid)
@@ -232,9 +249,6 @@ 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() }
}
@@ -250,6 +264,8 @@ object Cobblemon {
}
HeldItemProvider.register(CobblemonHeldItemManager, Priority.LOWEST)
}
fun initialize() {
@@ -273,10 +289,17 @@ object Cobblemon {
FlagSpeciesFeatureProvider(keys = listOf(DataKeys.HAS_BEEN_SHEARED), default = false))
CustomPokemonProperty.register(UncatchableProperty)
CustomPokemonProperty.register(BattleCloneProperty)
CustomPokemonProperty.register(PokemonFlagProperty)
CustomPokemonProperty.register(HiddenAbilityPropertyType)
CustomPokemonProperty.register(AspectPropertyType)
CustomPokemonProperty.register(UnaspectPropertyType)
CustomPokemonProperty.register(FreezeFrameProperty)
CustomPokemonProperty.register(NoAIProperty)
CobblemonEvents.POKEMON_PROPERTY_INITIALISED.emit(Unit)
FlowHandler.setup()
ifDedicatedServer {
isDedicatedServer = true
@@ -291,16 +314,21 @@ object Cobblemon {
}
PlatformEvents.SERVER_STARTING.subscribe { event ->
val server = event.server
playerData = PlayerDataStoreManager().also { it.setup(server) }
playerDataManager = PlayerInstancedDataStoreManager().also { it.setup(server) }
val mongoClient: MongoClient?
val pokemonStoreRoot = server.getWorldPath(LevelResource.ROOT).resolve("pokemon").toFile()
val storeAdapter = when (config.storageFormat) {
"nbt", "json" -> {
val jsonFactory = JsonPlayerDataStoreFactory()
jsonFactory.setup(server)
playerData.setFactory(jsonFactory)
val generalJsonFactory = CachedPlayerDataStoreFactory(PlayerDataJsonBackend())
generalJsonFactory.setup(server)
val pokedexNbtFactory = CachedPlayerDataStoreFactory(DexDataNbtBackend())
pokedexNbtFactory.setup(server)
playerDataManager.setFactory(generalJsonFactory, PlayerInstancedDataStoreTypes.GENERAL)
playerDataManager.setFactory(pokedexNbtFactory, PlayerInstancedDataStoreTypes.POKEDEX)
if (config.storageFormat == "nbt") {
NBTStoreAdapter(pokemonStoreRoot.absolutePath, useNestedFolders = true, folderPerClass = true)
@@ -321,15 +349,23 @@ object Cobblemon {
.applyConnectionString(ConnectionString(config.mongoDBConnectionString))
.build()
mongoClient = MongoClients.create(mongoClientSettings)
val mongoFactory = MongoPlayerDataStoreFactory(mongoClient, config.mongoDBDatabaseName)
playerData.setFactory(mongoFactory)
val generalMongoFactory = CachedPlayerDataStoreFactory(PlayerDataMongoBackend(mongoClient, config.mongoDBDatabaseName, "PlayerDataCollection"))
generalMongoFactory.setup(server)
val pokedexMongoFactory = CachedPlayerDataStoreFactory(DexDataMongoBackend(mongoClient, config.mongoDBDatabaseName, "PokeDexCollection"))
pokedexMongoFactory.setup(server)
playerDataManager.setFactory(generalMongoFactory, PlayerInstancedDataStoreTypes.GENERAL)
playerDataManager.setFactory(pokedexMongoFactory, PlayerInstancedDataStoreTypes.POKEDEX)
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.getWorldPath(LevelResource.ROOT))) as FileStoreAdapter<*>
@@ -345,22 +381,14 @@ object Cobblemon {
}
PlatformEvents.SERVER_STOPPED.subscribe {
storage.unregisterAll()
playerData.saveAll()
storage.unregisterAll(it.server.registryAccess())
playerDataManager.saveAllStores()
}
PlatformEvents.SERVER_STARTED.subscribe {
bestSpawner.onServerStarted()
battleRegistry.onServerStarted()
}
PlatformEvents.SERVER_TICK_POST.subscribe { ServerTickHandler.onTick(it.server) }
POKEMON_CAPTURED.subscribe { AdvancementHandler.onCapture(it) }
// EGG_HATCH.subscribe { AdvancementHandler.onHatch(it) }
BATTLE_VICTORY.subscribe { AdvancementHandler.onWinBattle(it) }
EVOLUTION_COMPLETE.subscribe(Priority.LOWEST) { event ->
AdvancementHandler.onEvolve(event)
}
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.")
@@ -368,12 +396,24 @@ object Cobblemon {
BattleFormat.GEN_9_SINGLES,
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
BattleSide(PokemonBattleActor(UUID.randomUUID(), BattlePokemon(Pokemon().initialize()), -1F)),
true
).ifSuccessful { it.mute = true }
false
).ifSuccessful {
it.mute = true
}.ifErrored {
val errors = it.errors.joinToString("\n") { it.javaClass.name }
LOGGER.error("Failed to start dummy Showdown battle: $errors")
}
}
//To whomever is merging, this is moved out of Cobblemon and into the CobblemonImplementations
//CobblemonSherds.registerSherds()
registerEventHandlers()
CobblemonEvents.COBBLEMON_INITIALISED.emit(Unit)
}
fun registerEventHandlers() {
AdvancementHandler.registerListeners()
PokedexHandler.registerListeners()
}
fun getLevel(dimension: ResourceKey<Level>): Level? {
@@ -471,13 +511,16 @@ object Cobblemon {
}
private fun registerArgumentTypes() {
this.implementation.registerCommandArgument(cobblemonResource("pokemon"), PokemonArgumentType::class, SingletonArgumentInfo.contextFree(PokemonArgumentType::pokemon))
this.implementation.registerCommandArgument(cobblemonResource("pokemon"), SpeciesArgumentType::class, SingletonArgumentInfo.contextFree(SpeciesArgumentType::species))
this.implementation.registerCommandArgument(cobblemonResource("pokemon_properties"), PokemonPropertiesArgumentType::class, SingletonArgumentInfo.contextFree(PokemonPropertiesArgumentType::properties))
this.implementation.registerCommandArgument(cobblemonResource("spawn_bucket"), SpawnBucketArgumentType::class, SingletonArgumentInfo.contextFree(SpawnBucketArgumentType::spawnBucket))
this.implementation.registerCommandArgument(cobblemonResource("move"), MoveArgumentType::class, SingletonArgumentInfo.contextFree(MoveArgumentType::move))
this.implementation.registerCommandArgument(cobblemonResource("party_slot"), PartySlotArgumentType::class, SingletonArgumentInfo.contextFree(PartySlotArgumentType::partySlot))
this.implementation.registerCommandArgument(cobblemonResource("pokemon_store"), PokemonStoreArgumentType::class, SingletonArgumentInfo.contextFree(PokemonStoreArgumentType::pokemonStore))
this.implementation.registerCommandArgument(cobblemonResource("dialogue"), DialogueArgumentType::class, SingletonArgumentInfo.contextFree(DialogueArgumentType::dialogue))
this.implementation.registerCommandArgument(cobblemonResource("form"), FormArgumentType::class, SingletonArgumentInfo.contextFree(FormArgumentType::form))
this.implementation.registerCommandArgument(cobblemonResource("dex"), DexArgumentType::class, SingletonArgumentInfo.contextFree (DexArgumentType::dex))
this.implementation.registerCommandArgument(cobblemonResource("npc_class"), NPCClassArgumentType::class, SingletonArgumentInfo.contextFree(NPCClassArgumentType::npcClass))
}
}
@@ -12,8 +12,9 @@ import net.minecraft.world.entity.schedule.Activity
object CobblemonActivities {
val activities = mutableListOf<Activity>()
val BATTLING_ACTIVITY = Activity("pokemon_battling")
val NPC_BATTLING = Activity("npc_battling")
val BATTLING = register(Activity("battling"))
val ACTION_EFFECT = register(Activity("action_effect"))
val NPC_CHATTING = register(Activity("npc_chatting"))
fun register(activity: Activity): Activity {
activities.add(activity)
@@ -36,6 +36,9 @@ object CobblemonBlockEntities : PlatformRegistry<Registry<BlockEntityType<*>>, R
@JvmField
val PC: BlockEntityType<PCBlockEntity> = this.create("pc", BlockEntityType.Builder.of(::PCBlockEntity, CobblemonBlocks.PC).build(null))
@JvmField
val LECTERN: BlockEntityType<LecternBlockEntity> = this.create("lectern", BlockEntityType.Builder.of(::LecternBlockEntity, CobblemonBlocks.LECTERN).build(null))
@JvmField
val BERRY = this.create("berry", BlockEntityType.Builder.of(::BerryBlockEntity, *CobblemonBlocks.berries().values.toTypedArray()).build(null))
@@ -10,6 +10,7 @@ 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.LecternBlock
import com.cobblemon.mod.common.block.MintBlock.MintType
import com.cobblemon.mod.common.block.chest.GildedChestBlock
import com.cobblemon.mod.common.block.sign.CobblemonHangingSignBlock
@@ -37,8 +38,6 @@ import net.minecraft.world.level.material.PushReaction
@Suppress("SameParameterValue", "HasPlatformType", "MemberVisibilityCanBePrivate", "unused")
object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<Block>>, Block>() {
override val registry: Registry<Block> = BuiltInRegistries.BLOCK
override val resourceKey: ResourceKey<Registry<Block>> = Registries.BLOCK
@@ -116,16 +115,23 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val APRICORN_FENCE = this.create("apricorn_fence", FenceBlock(BlockBehaviour.Properties.of().mapColor(APRICORN_PLANKS.defaultMapColor()).instrument(NoteBlockInstrument.BASS).strength(2.0f, 3.0f).sound(SoundType.WOOD)))
@JvmField
val APRICORN_FENCE_GATE = this.create("apricorn_fence_gate", FenceGateBlock(APRICORN_WOOD_TYPE, BlockBehaviour.Properties.of().mapColor(APRICORN_PLANKS.defaultMapColor()).strength(2.0f, 3.0f).sound(SoundType.WOOD)))
@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_BUTTON = this.create("apricorn_button", BlocksInvoker.createWoodenButtonBlock(APRICORN_BLOCK_SET_TYPE))
@JvmField
val APRICORN_PRESSURE_PLATE = this.create("apricorn_pressure_plate", PressurePlateBlockInvoker.`cobblemon$create`(APRICORN_BLOCK_SET_TYPE, BlockBehaviour.Properties.of().mapColor(APRICORN_PLANKS.defaultMapColor()).noCollission().strength(0.5f).sound(SoundType.WOOD)))
@JvmField
val APRICORN_SIGN = this.create("apricorn_sign", CobblemonSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SIGN), APRICORN_WOOD_TYPE))
@JvmField //if you wonder why we don't copy of OAK_WALL_SIGN, then I can tell you its because it uses Properties#dropsLike to point to the SIGN loot table, but we cant use that in our setup due to a deeper rooted issue, so falling back to this and writing dedicated (duplicated) loot tables
val APRICORN_WALL_SIGN = this.create(
"apricorn_wall_sign",
CobblemonWallSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SIGN), APRICORN_WOOD_TYPE)
)
@JvmField
val APRICORN_WALL_SIGN = this.create("apricorn_wall_sign", CobblemonWallSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_WALL_SIGN), APRICORN_WOOD_TYPE))
@JvmField
val APRICORN_HANGING_SIGN = this.create("apricorn_hanging_sign", CobblemonHangingSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_WALL_HANGING_SIGN), APRICORN_WOOD_TYPE))
val APRICORN_HANGING_SIGN = this.create(
"apricorn_hanging_sign",
CobblemonHangingSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_HANGING_SIGN), APRICORN_WOOD_TYPE)
)
@JvmField
val APRICORN_WALL_HANGING_SIGN = this.create("apricorn_wall_hanging_sign", CobblemonWallHangingSignBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_HANGING_SIGN), APRICORN_WOOD_TYPE))
@JvmField
@@ -190,279 +196,113 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
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(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val TUMBLESTONE_BLOCK = this.create("tumblestone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SKY_TUMBLESTONE_BLOCK = this.create("sky_tumblestone_block",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val SKY_TUMBLESTONE_BLOCK = this.create("sky_tumblestone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BLOCK = this.create("black_tumblestone_block",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val BLACK_TUMBLESTONE_BLOCK = this.create("black_tumblestone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_TUMBLESTONE = this.create("polished_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val POLISHED_TUMBLESTONE = this.create("polished_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_TUMBLESTONE_STAIRS = this.create("polished_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(POLISHED_TUMBLESTONE)))
@JvmField
val POLISHED_TUMBLESTONE_SLAB = this.create("polished_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val POLISHED_TUMBLESTONE_SLAB = this.create("polished_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_TUMBLESTONE_WALL = this.create("polished_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val POLISHED_TUMBLESTONE_WALL = this.create("polished_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_POLISHED_TUMBLESTONE = this.create("chiseled_polished_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val CHISELED_POLISHED_TUMBLESTONE = this.create("chiseled_polished_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val TUMBLESTONE_BRICKS = this.create("tumblestone_bricks", Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val SMOOTH_TUMBLESTONE = this.create("smooth_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SMOOTH_TUMBLESTONE_STAIRS = this.create("smooth_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(SMOOTH_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(SMOOTH_TUMBLESTONE)))
@JvmField
val SMOOTH_TUMBLESTONE_SLAB = this.create("smooth_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val TUMBLESTONE_BRICKS = this.create("tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val TUMBLESTONE_BRICK_STAIRS = this.create("tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(TUMBLESTONE_BRICKS.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(TUMBLESTONE_BRICKS)))
@JvmField
val TUMBLESTONE_BRICK_SLAB = this.create("tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
@JvmField
val TUMBLESTONE_BRICK_WALL = this.create("tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val TUMBLESTONE_BRICK_SLAB = this.create("tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_TUMBLESTONE_BRICKS = this.create("chiseled_tumblestone_bricks",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val TUMBLESTONE_BRICK_WALL = this.create("tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_SKY_TUMBLESTONE = this.create("polished_sky_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val CHISELED_TUMBLESTONE_BRICKS = this.create("chiseled_tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_SKY_TUMBLESTONE = this.create("polished_sky_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_SKY_TUMBLESTONE_STAIRS = this.create("polished_sky_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_SKY_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(POLISHED_SKY_TUMBLESTONE)))
@JvmField
val POLISHED_SKY_TUMBLESTONE_SLAB = this.create("polished_sky_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
@JvmField
val POLISHED_SKY_TUMBLESTONE_WALL = this.create("polished_sky_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val POLISHED_SKY_TUMBLESTONE_SLAB = this.create("polished_sky_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_POLISHED_SKY_TUMBLESTONE = this.create("chiseled_polished_sky_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val POLISHED_SKY_TUMBLESTONE_WALL = this.create("polished_sky_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SKY_TUMBLESTONE_BRICKS = this.create("sky_tumblestone_bricks",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val CHISELED_POLISHED_SKY_TUMBLESTONE = this.create("chiseled_polished_sky_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SKY_TUMBLESTONE_BRICK_STAIRS = this.create("sky_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(
SKY_TUMBLESTONE_BRICKS.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(SKY_TUMBLESTONE_BRICKS)))
val SMOOTH_SKY_TUMBLESTONE = this.create("smooth_sky_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SKY_TUMBLESTONE_BRICK_SLAB = this.create("sky_tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val SMOOTH_SKY_TUMBLESTONE_STAIRS = this.create("smooth_sky_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(SMOOTH_SKY_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(SMOOTH_SKY_TUMBLESTONE)))
@JvmField
val SKY_TUMBLESTONE_BRICK_WALL = this.create("sky_tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val SMOOTH_SKY_TUMBLESTONE_SLAB = this.create("smooth_sky_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_SKY_TUMBLESTONE_BRICKS = this.create("chiseled_sky_tumblestone_bricks",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_LIGHT_BLUE)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val SKY_TUMBLESTONE_BRICKS = this.create("sky_tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_BLACK_TUMBLESTONE = this.create("polished_black_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val SKY_TUMBLESTONE_BRICK_STAIRS = this.create("sky_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(SKY_TUMBLESTONE_BRICKS.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(SKY_TUMBLESTONE_BRICKS)))
@JvmField
val SKY_TUMBLESTONE_BRICK_SLAB = this.create("sky_tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val SKY_TUMBLESTONE_BRICK_WALL = this.create("sky_tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_SKY_TUMBLESTONE_BRICKS = this.create("chiseled_sky_tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_LIGHT_BLUE).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_BLACK_TUMBLESTONE = this.create("polished_black_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_STAIRS = this.create("polished_black_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_BLACK_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(POLISHED_BLACK_TUMBLESTONE)))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_SLAB = this.create("polished_black_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_WALL = this.create("polished_black_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val POLISHED_BLACK_TUMBLESTONE_SLAB = this.create("polished_black_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_POLISHED_BLACK_TUMBLESTONE = this.create("chiseled_polished_black_tumblestone",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val POLISHED_BLACK_TUMBLESTONE_WALL = this.create("polished_black_tumblestone_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BRICKS = this.create("black_tumblestone_bricks",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val CHISELED_POLISHED_BLACK_TUMBLESTONE = this.create("chiseled_polished_black_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_STAIRS = this.create("black_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(
BLACK_TUMBLESTONE_BRICKS.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(BLACK_TUMBLESTONE_BRICKS)))
val SMOOTH_BLACK_TUMBLESTONE = this.create("smooth_black_tumblestone", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_SLAB = this.create("black_tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val SMOOTH_BLACK_TUMBLESTONE_STAIRS = this.create("smooth_black_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(SMOOTH_BLACK_TUMBLESTONE.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(SMOOTH_BLACK_TUMBLESTONE)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_WALL = this.create("black_tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
))
val SMOOTH_BLACK_TUMBLESTONE_SLAB = this.create("smooth_black_tumblestone_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_BLACK_TUMBLESTONE_BRICKS = this.create("chiseled_black_tumblestone_bricks",
Block(
BlockBehaviour.Properties.of()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresCorrectToolForDrops()
.instrument(NoteBlockInstrument.BASEDRUM)
)
)
val BLACK_TUMBLESTONE_BRICKS = this.create("black_tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_STAIRS = this.create("black_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(BLACK_TUMBLESTONE_BRICKS.defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(BLACK_TUMBLESTONE_BRICKS)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_SLAB = this.create("black_tumblestone_brick_slab", SlabBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_WALL = this.create("black_tumblestone_brick_wall", WallBlock(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val CHISELED_BLACK_TUMBLESTONE_BRICKS = this.create("chiseled_black_tumblestone_bricks", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_BLACK).strength(1.0F).sound(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BASEDRUM)))
@JvmField
val FIRE_STONE_BLOCK = this.create("fire_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.FIRE).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT).lightLevel{13}))
@JvmField
val WATER_STONE_BLOCK = this.create("water_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.WATER).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT)))
@JvmField
val THUNDER_STONE_BLOCK = this.create("thunder_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.GLOW_LICHEN).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT).lightLevel{8}))
@JvmField
val LEAF_STONE_BLOCK = this.create("leaf_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT)))
@JvmField
val ICE_STONE_BLOCK = this.create("ice_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.ICE).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT)))
@JvmField
val SUN_STONE_BLOCK = this.create("sun_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_ORANGE).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT).lightLevel{5}))
@JvmField
val MOON_STONE_BLOCK = this.create("moon_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.DEEPSLATE).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT)))
@JvmField
val SHINY_STONE_BLOCK = this.create("shiny_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.QUARTZ).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT).lightLevel{15}))
@JvmField
val DAWN_STONE_BLOCK = this.create("dawn_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.DIAMOND).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT).lightLevel{15}))
@JvmField
val DUSK_STONE_BLOCK = this.create("dusk_stone_block", Block(BlockBehaviour.Properties.of().mapColor(MapColor.WARPED_HYPHAE).strength(1.0F).sound(CobblemonSounds.EVOLUTION_STONE_BLOCK_SOUNDS).requiresCorrectToolForDrops().instrument(NoteBlockInstrument.BIT)))
@JvmField
val BLACK_APRICORN = apricornBlock("black_apricorn", Apricorn.BLACK)
@@ -480,176 +320,48 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
val YELLOW_APRICORN = apricornBlock("yellow_apricorn", Apricorn.YELLOW)
@JvmField
val RELIC_COIN_POUCH = create(
"relic_coin_pouch",
CoinPouchBlock(
BlockBehaviour.Properties.of()
.sound(CobblemonSounds.RELIC_COIN_POUCH_SOUNDS)
.pushReaction(PushReaction.DESTROY)
.strength(0.4f)
.noOcclusion(), true
)
)
val RELIC_COIN_POUCH = create("relic_coin_pouch", CoinPouchBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.RELIC_COIN_POUCH_SOUNDS).pushReaction(PushReaction.DESTROY).noOcclusion(), true))
@JvmField
val RELIC_COIN_SACK = create(
"relic_coin_sack",
CoinPouchBlock(
BlockBehaviour.Properties.of()
.sound(CobblemonSounds.RELIC_COIN_SACK_SOUNDS)
.pushReaction(PushReaction.DESTROY)
.strength(0.4f), false
))
val RELIC_COIN_SACK = create("relic_coin_sack", CoinPouchBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.RELIC_COIN_SACK_SOUNDS).pushReaction(PushReaction.DESTROY).strength(0.4f), false))
@JvmField
val GILDED_CHEST = create(
"gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.RED
)
)
val GILDED_CHEST = create("gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.RED))
@JvmField
val BLUE_GILDED_CHEST = create("blue_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.BLUE))
@JvmField
val BLACK_GILDED_CHEST = create("black_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.BLACK))
@JvmField
val YELLOW_GILDED_CHEST = create("yellow_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.YELLOW))
@JvmField
val WHITE_GILDED_CHEST = create("white_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.WHITE))
@JvmField
val GREEN_GILDED_CHEST = create("green_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.GREEN))
@JvmField
val PINK_GILDED_CHEST = create("pink_gilded_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.PINK))
@JvmField
val GIMMIGHOUL_CHEST = create("gimmighoul_chest", GildedChestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS), GildedChestBlock.Type.FAKE))
@JvmField
val BLUE_GILDED_CHEST = create(
"blue_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.BLUE
)
)
val MONITOR = create("monitor", MonitorBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().strength(5.0F, 6.0F).lightLevel { if (it.getValue(MonitorBlock.SCREEN) != MonitorBlock.MonitorScreen.OFF) 15 else 0 }))
@JvmField
val FOSSIL_ANALYZER = create("fossil_analyzer", FossilAnalyzerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().strength(5.0F, 6.0F).noOcclusion()))
@JvmField
val RESTORATION_TANK = create("restoration_tank", RestorationTankBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.GLASS).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().strength(5.0F, 6.0F).noOcclusion()))
@JvmField
val BLACK_GILDED_CHEST = create(
"black_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.BLACK
)
)
val HEALING_MACHINE = create("healing_machine", HealingMachineBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.METAL).pushReaction(PushReaction.BLOCK).strength(2f).noOcclusion().lightLevel { if (it.getValue(HealingMachineBlock.CHARGE_LEVEL) >= HealingMachineBlock.MAX_CHARGE_LEVEL) 7 else 2 }))
@JvmField
val YELLOW_GILDED_CHEST = create(
"yellow_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.YELLOW
)
)
val PC = create("pc", PCBlock(BlockBehaviour.Properties.of().mapColor(MapColor.METAL).sound(SoundType.METAL).pushReaction(PushReaction.BLOCK).strength(2F).noOcclusion().lightLevel { if ((it.getValue(PCBlock.ON) as Boolean) && (it.getValue(PCBlock.PART) == PCBlock.PCPart.TOP)) 10 else 0 }))
@JvmField
val WHITE_GILDED_CHEST = create(
"white_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.WHITE
)
)
val LECTERN = create("lectern", LecternBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).instrument(NoteBlockInstrument.BASS).sound(SoundType.WOOD).strength(2.5F).ignitedByLava()))
@JvmField
val GREEN_GILDED_CHEST = create(
"green_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.GREEN
)
)
val DISPLAY_CASE = create("display_case", DisplayCaseBlock(BlockBehaviour.Properties.of().sound(CobblemonSounds.DISPLAY_CASE_SOUNDS).noOcclusion().pushReaction(PushReaction.BLOCK).mapColor(MapColor.STONE).strength(0.3F)))
@JvmField
val PINK_GILDED_CHEST = create(
"pink_gilded_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.PINK
)
)
@JvmField
val GIMMIGHOUL_CHEST = create(
"gimmighoul_chest",
GildedChestBlock(
BlockBehaviour.Properties.ofFullCopy(Blocks.CHEST).noOcclusion().sound(CobblemonSounds.GILDED_CHEST_SOUNDS),
GildedChestBlock.Type.FAKE
)
)
@JvmField
val MONITOR = create(
"monitor",
MonitorBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.METAL)
.sound(SoundType.METAL)
.pushReaction(PushReaction.BLOCK)
.requiresCorrectToolForDrops()
.strength(5.0F, 6.0F)
.lightLevel { if (it.getValue(MonitorBlock.SCREEN) != MonitorBlock.MonitorScreen.OFF) 15 else 0 }
)
)
@JvmField
val FOSSIL_ANALYZER = create(
"fossil_analyzer",
FossilAnalyzerBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.METAL)
.sound(SoundType.METAL)
.pushReaction(PushReaction.BLOCK)
.requiresCorrectToolForDrops()
.strength(5.0F, 6.0F)
.noOcclusion()
)
)
@JvmField
val RESTORATION_TANK = create(
"restoration_tank",
RestorationTankBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.METAL)
.sound(SoundType.GLASS)
.pushReaction(PushReaction.BLOCK)
.requiresCorrectToolForDrops()
.strength(5.0F, 6.0F)
.noOcclusion()
)
)
@JvmField
val HEALING_MACHINE = create(
"healing_machine",
HealingMachineBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.METAL)
.sound(SoundType.METAL)
.pushReaction(PushReaction.BLOCK)
.strength(2f)
.noOcclusion()
.lightLevel { if (it.getValue(HealingMachineBlock.CHARGE_LEVEL) >= HealingMachineBlock.MAX_CHARGE_LEVEL) 7 else 2 }
)
)
@JvmField
val PC = create(
"pc",
PCBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.METAL)
.sound(SoundType.METAL)
.pushReaction(PushReaction.BLOCK)
.strength(2F)
.noOcclusion()
.lightLevel { if ((it.getValue(PCBlock.ON) as Boolean) && (it.getValue(PCBlock.PART) == PCBlock.PCPart.TOP)) 10 else 0 }
)
)
@JvmField
val DISPLAY_CASE = create(
"display_case",
DisplayCaseBlock(
BlockBehaviour.Properties.of()
.sound(CobblemonSounds.DISPLAY_CASE_SOUNDS)
.noOcclusion()
.pushReaction(PushReaction.BLOCK)
.mapColor(MapColor.STONE)
.strength(0.3f)
)
)
val PASTURE = create("pasture", PastureBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_BROWN).sound(SoundType.WOOD).strength(2F).noOcclusion().pushReaction(PushReaction.BLOCK).lightLevel { if ((it.getValue(PastureBlock.ON) as Boolean) && (it.getValue(PastureBlock.PART) == PastureBlock.PasturePart.TOP)) 10 else 0 }))
val RED_MINT = create("red_mint", MintBlock(MintType.RED, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED).noCollission().randomTicks().instabreak().sound(CobblemonSounds.MINT_SOUNDS).pushReaction(PushReaction.DESTROY)))
@JvmField
@@ -663,20 +375,6 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
@JvmField
val WHITE_MINT = create("white_mint", MintBlock(MintType.WHITE, BlockBehaviour.Properties.of().mapColor(MapColor.SNOW).noCollission().randomTicks().instabreak().sound(CobblemonSounds.MINT_SOUNDS).pushReaction(PushReaction.DESTROY)))
@JvmField
val PASTURE = create(
"pasture",
PastureBlock(
BlockBehaviour.Properties.of()
.mapColor(MapColor.COLOR_BROWN)
.sound(SoundType.WOOD)
.strength(2F)
.noOcclusion()
.pushReaction(PushReaction.BLOCK)
.lightLevel { if ((it.getValue(PastureBlock.ON) as Boolean) && (it.getValue(PastureBlock.PART) == PastureBlock.PasturePart.TOP)) 10 else 0 }
)
)
@JvmField
val VIVICHOKE_SEEDS = this.create("vivichoke_seeds", VivichokeBlock(BlockBehaviour.Properties.of().pushReaction(PushReaction.DESTROY).ignitedByLava().mapColor(MapColor.PLANT).noCollission().randomTicks().instabreak().sound(CobblemonSounds.VIVICHOKE_SOUNDS)))
@JvmField
@@ -0,0 +1,58 @@
/*
* 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 com.bedrockk.molang.Expression
import com.cobblemon.mod.common.api.ai.config.BrainConfig
import com.cobblemon.mod.common.api.ai.config.task.TaskConfig
import com.cobblemon.mod.common.api.data.DataRegistry
import com.cobblemon.mod.common.api.data.JsonDataRegistry
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.util.adapters.ActivityAdapter
import com.cobblemon.mod.common.util.adapters.BrainConfigAdapter
import com.cobblemon.mod.common.util.adapters.ExpressionAdapter
import com.cobblemon.mod.common.util.adapters.ExpressionLikeAdapter
import com.cobblemon.mod.common.util.adapters.TaskConfigAdapter
import com.cobblemon.mod.common.util.cobblemonResource
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.PackType
import net.minecraft.world.entity.schedule.Activity
object CobblemonBrainConfigs : JsonDataRegistry<List<BrainConfig>> {
override val gson: Gson = GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(Activity::class.java, ActivityAdapter)
.registerTypeAdapter(Expression::class.java, ExpressionAdapter)
.registerTypeAdapter(ExpressionLike::class.java, ExpressionLikeAdapter)
.registerTypeAdapter(BrainConfig::class.java, BrainConfigAdapter)
.registerTypeAdapter(TaskConfig::class.java, TaskConfigAdapter)
.create()
override val typeToken = TypeToken.getParameterized(List::class.java, BrainConfig::class.java) as TypeToken<List<BrainConfig>>
override val resourcePath = "brain_presets"
override val id: ResourceLocation = cobblemonResource("brain_presets")
override val type = PackType.SERVER_DATA
override val observable = SimpleObservable<CobblemonBrainConfigs>()
val presets = mutableMapOf<ResourceLocation, List<BrainConfig>>()
override fun sync(player: ServerPlayer) {
// TODO implement probs ay
}
override fun reload(data: Map<ResourceLocation, List<BrainConfig>>) {
presets.clear()
presets.putAll(data)
}
}
@@ -17,8 +17,10 @@ import net.minecraft.commands.Commands
object CobblemonCommands {
fun register(dispatcher: CommandDispatcher<CommandSourceStack>, registry: CommandBuildContext, selection: Commands.CommandSelection) {
SpawnPokemon.register(dispatcher)
SpawnNPCCommand.register(dispatcher)
GivePokemon.register(dispatcher)
TakePokemon.register(dispatcher)
ChangeEyeHeight.register(dispatcher)
ChangeScaleAndSize.register(dispatcher)
ChangeWalkSpeed.register(dispatcher)
TestCommand.register(dispatcher)
@@ -39,6 +41,7 @@ object CobblemonCommands {
PcCommand.register(dispatcher)
SpawnPokemonFromPool.register(dispatcher)
PokeboxCommand.register(dispatcher)
PokedexCommand.register(dispatcher)
TestStoreCommand.register(dispatcher)
QueryLearnsetCommand.register(dispatcher)
TestPcSlotCommand.register(dispatcher)
@@ -49,6 +52,11 @@ object CobblemonCommands {
BedrockParticleCommand.register(dispatcher)
OpenDialogueCommand.register(dispatcher)
NPCEditCommand.register(dispatcher)
NPCDeleteCommand.register(dispatcher)
AbandonMultiTeam.register(dispatcher)
FreezePokemonCommand.register(dispatcher)
ApplyPlayerTextureCommand.register(dispatcher)
RunMolangScriptCommand.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
@@ -0,0 +1,103 @@
/*
* 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 com.bedrockk.molang.runtime.MoLangRuntime
import com.bedrockk.molang.runtime.value.MoValue
import com.cobblemon.mod.common.CobblemonNetwork.sendPacket
import com.cobblemon.mod.common.api.data.DataRegistry
import com.cobblemon.mod.common.api.events.Cancelable
import com.cobblemon.mod.common.api.molang.ExpressionLike
import com.cobblemon.mod.common.api.molang.MoLangFunctions.setup
import com.cobblemon.mod.common.api.reactive.SimpleObservable
import com.cobblemon.mod.common.api.scripting.CobblemonScripts
import com.cobblemon.mod.common.net.messages.client.data.FlowRegistrySyncPacket
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.endsWith
import java.util.concurrent.ExecutionException
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.PackType
import net.minecraft.server.packs.resources.ResourceManager
/**
* Holds all the flows that are loaded from the server's data packs. A flow is foldered under the event identifier,
* which can be Cobblemon's namespace but can also be minecraft or any other namespace someone has added hooks for.
* The value of the map is a list of MoLang scripts that will execute when that event occurs.
*
* @author Hiroku
* @since February 24th, 2024
*/
object CobblemonFlows : DataRegistry {
override val id = cobblemonResource("flows")
override val observable = SimpleObservable<CobblemonFlows>()
override val type = PackType.SERVER_DATA
override fun sync(player: ServerPlayer) {
player.sendPacket(FlowRegistrySyncPacket(clientFlows.entries))
}
val runtime by lazy { MoLangRuntime().setup() } // Lazy for if someone adds to generalFunctions in MoLangFunctions
val clientFlows = hashMapOf<ResourceLocation, MutableList<ExpressionLike>>()
val flows = hashMapOf<ResourceLocation, MutableList<ExpressionLike>>()
override fun reload(manager: ResourceManager) {
clientFlows.clear()
flows.clear()
val unsortedFlows = mutableMapOf<ResourceLocation, MutableList<Pair<String, ExpressionLike>>>()
val folderBeforeNameRegex = ".*\\/([^\\/]+)\\/[^\\/]+\$".toRegex()
manager.listResources("flows") { path -> path.endsWith(CobblemonScripts.MOLANG_EXTENSION) }.forEach { (identifier, resource) ->
resource.openAsReader().use { stream ->
stream.buffered().use { reader ->
try {
val expression = reader.readText().asExpressionLike()
val event = folderBeforeNameRegex.find(identifier.path)?.groupValues?.get(1)
?: throw IllegalArgumentException("Invalid flow path: $identifier. Should have a folder structure that includes the name of the event being flowed.")
val flowKey = ResourceLocation.fromNamespaceAndPath(identifier.namespace, event)
unsortedFlows.putIfAbsent(flowKey, mutableListOf())
unsortedFlows[flowKey]!!.add(identifier.path to expression)
} catch (exception: Exception) {
throw ExecutionException("Error loading MoLang script for flow: $identifier", exception)
}
}
}
}
unsortedFlows.forEach { (key, value) ->
value.sortBy { it.first }
if (key.path.startsWith("flows/client/")) {
clientFlows.getOrPut(key) { mutableListOf() }.addAll(value.map { it.second })
} else {
flows.getOrPut(key) { mutableListOf() }.addAll(value.map { it.second })
}
}
Cobblemon.LOGGER.info("Loaded ${flows.size} flows and ${clientFlows.size} client flows")
observable.emit(this)
}
fun run(eventResourceLocation: ResourceLocation, context: Map<String, MoValue>, cancelable: Cancelable? = null) {
if (cancelable == null) {
runtime.environment.query.functions.remove("cancel")
} else {
runtime.environment.query.addFunction("cancel") { cancelable }
}
flows[eventResourceLocation]?.forEach {
if (cancelable != null && cancelable.isCanceled) {
return
}
it.resolve(runtime, context)
}
}
}
@@ -8,25 +8,22 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.data.JsonDataRegistry
import com.cobblemon.mod.common.api.net.NetworkPacket
import com.mojang.brigadier.arguments.ArgumentType
import kotlin.reflect.KClass
import net.minecraft.commands.synchronization.ArgumentTypeInfo
import net.minecraft.network.chat.Component
import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.MinecraftServer
import net.minecraft.server.level.ServerPlayer
import net.minecraft.server.packs.PackType
import net.minecraft.server.packs.resources.PreparableReloadListener
import net.minecraft.server.packs.resources.ResourceManager
import net.minecraft.tags.TagKey
import net.minecraft.world.level.GameRules
import net.minecraft.world.level.ItemLike
import net.minecraft.world.level.biome.Biome
import net.minecraft.world.level.levelgen.GenerationStep
import net.minecraft.world.level.levelgen.placement.PlacedFeature
import kotlin.reflect.KClass
interface CobblemonImplementation {
val modAPI: ModAPI
@@ -97,6 +94,12 @@ interface CobblemonImplementation {
*/
fun registerBlockEntityTypes()
/**
* TODO
*
*/
fun registerVillagers()
/**
* TODO
*
@@ -165,14 +168,6 @@ 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<ResourceLocation, T>
/**
* Registers an item to the [ComposterBlock].
*
@@ -180,16 +175,6 @@ interface CobblemonImplementation {
* @param chance The chance % of increasing the composter level, 0 to 1 expected.
*/
fun registerCompostable(item: ItemLike, chance: Float)
/**
* Registers a builtin resource pack.
*
* @param id The unique [ResourceLocation] 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: ResourceLocation, title: Component, activationBehaviour: ResourcePackActivationBehaviour)
}
enum class ResourcePackActivationBehaviour {
@@ -19,6 +19,7 @@ import com.cobblemon.mod.common.api.text.gray
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.client.pokedex.PokedexType
import com.cobblemon.mod.common.entity.boat.CobblemonBoatType
import com.cobblemon.mod.common.item.*
import com.cobblemon.mod.common.item.armor.CobblemonArmorTrims
@@ -53,6 +54,9 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
override val registry: Registry<Item> = BuiltInRegistries.ITEM
override val resourceKey: ResourceKey<Registry<Item>> = Registries.ITEM
@JvmField
val NPC_EDITOR = create("npc_editor", CobblemonItem(Item.Properties().stacksTo(1)))
@JvmField
val pokeBalls = mutableListOf<PokeBallItem>()
@JvmField
@@ -152,6 +156,22 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val ANCIENT_ORIGIN_BALL = pokeBallItem(PokeBalls.ANCIENT_ORIGIN_BALL)
val pokedexes = mutableListOf<PokedexItem>()
@JvmField
val POKEDEX_RED = pokedexItem(PokedexType.RED)
@JvmField
val POKEDEX_YELLOW = pokedexItem(PokedexType.YELLOW)
@JvmField
val POKEDEX_GREEN = pokedexItem(PokedexType.GREEN)
@JvmField
val POKEDEX_BLUE = pokedexItem(PokedexType.BLUE)
@JvmField
val POKEDEX_PINK = pokedexItem(PokedexType.PINK)
@JvmField
val POKEDEX_BLACK = pokedexItem(PokedexType.BLACK)
@JvmField
val POKEDEX_WHITE = pokedexItem(PokedexType.WHITE)
@JvmField
val VIVICHOKE = compostableItem("vivichoke")
@@ -256,6 +276,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
val PASTURE = blockItem("pasture", CobblemonBlocks.PASTURE)
@JvmField
val DISPLAY_CASE = blockItem("display_case", CobblemonBlocks.DISPLAY_CASE)
@JvmField
val LECTERN = blockItem("lectern", CobblemonBlocks.LECTERN)
// Evolution items
@JvmField val LINK_CABLE = create("link_cable", LinkCableItem())
@@ -370,6 +392,9 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField val BERRY_JUICE = this.create("berry_juice", BerryJuiceItem())
@JvmField
val GALARICA_NUTS = create("galarica_nuts", GalaricaNutItem())
// Medicine
@JvmField
val RARE_CANDY = candyItem("rare_candy") { _, pokemon -> pokemon.getExperienceToNextLevel() }
@@ -420,6 +445,7 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
.saturationModifier(1.2F)
.effect(MobEffectInstance(MobEffects.ABSORPTION, 900, 0), 1F)
.alwaysEdible()
.usingConvertsTo(Items.BOWL)
.build())) {
override fun finishUsingItem(stack: ItemStack, world: Level, user: LivingEntity): ItemStack {
user.removeAllEffects()
@@ -455,7 +481,7 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val HEAL_POWDER = create("heal_powder", HealPowderItem())
@JvmField
val LEEK_AND_POTATO_STEW = create("leek_and_potato_stew", Item(Item.Properties().food(FoodProperties.Builder().nutrition(8).saturationModifier(0.6f).build()).stacksTo(1)))
val LEEK_AND_POTATO_STEW = create("leek_and_potato_stew", Item(Item.Properties().food(FoodProperties.Builder().nutrition(8).saturationModifier(0.6f).usingConvertsTo(Items.BOWL).build()).stacksTo(1)))
@JvmField
val REVIVE = create("revive", ReviveItem(max = false))
@JvmField
@@ -962,6 +988,12 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val CHISELED_POLISHED_TUMBLESTONE = blockItem("chiseled_polished_tumblestone", CobblemonBlocks.CHISELED_POLISHED_TUMBLESTONE)
@JvmField
val SMOOTH_TUMBLESTONE = blockItem("smooth_tumblestone", CobblemonBlocks.SMOOTH_TUMBLESTONE)
@JvmField
val SMOOTH_TUMBLESTONE_STAIRS = blockItem("smooth_tumblestone_stairs", CobblemonBlocks.SMOOTH_TUMBLESTONE_STAIRS)
@JvmField
val SMOOTH_TUMBLESTONE_SLAB = blockItem("smooth_tumblestone_slab", CobblemonBlocks.SMOOTH_TUMBLESTONE_SLAB)
@JvmField
val TUMBLESTONE_BRICKS = blockItem("tumblestone_bricks", CobblemonBlocks.TUMBLESTONE_BRICKS)
@JvmField
val TUMBLESTONE_BRICK_STAIRS = blockItem("tumblestone_brick_stairs", CobblemonBlocks.TUMBLESTONE_BRICK_STAIRS)
@@ -982,6 +1014,12 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val CHISELED_POLISHED_SKY_TUMBLESTONE = blockItem("chiseled_polished_sky_tumblestone", CobblemonBlocks.CHISELED_POLISHED_SKY_TUMBLESTONE)
@JvmField
val SMOOTH_SKY_TUMBLESTONE = blockItem("smooth_sky_tumblestone", CobblemonBlocks.SMOOTH_SKY_TUMBLESTONE)
@JvmField
val SMOOTH_SKY_TUMBLESTONE_STAIRS = blockItem("smooth_sky_tumblestone_stairs", CobblemonBlocks.SMOOTH_SKY_TUMBLESTONE_STAIRS)
@JvmField
val SMOOTH_SKY_TUMBLESTONE_SLAB = blockItem("smooth_sky_tumblestone_slab", CobblemonBlocks.SMOOTH_SKY_TUMBLESTONE_SLAB)
@JvmField
val SKY_TUMBLESTONE_BRICKS = blockItem("sky_tumblestone_bricks", CobblemonBlocks.SKY_TUMBLESTONE_BRICKS)
@JvmField
val SKY_TUMBLESTONE_BRICK_STAIRS = blockItem("sky_tumblestone_brick_stairs", CobblemonBlocks.SKY_TUMBLESTONE_BRICK_STAIRS)
@@ -1002,6 +1040,12 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val CHISELED_POLISHED_BLACK_TUMBLESTONE = blockItem("chiseled_polished_black_tumblestone", CobblemonBlocks.CHISELED_POLISHED_BLACK_TUMBLESTONE)
@JvmField
val SMOOTH_BLACK_TUMBLESTONE = blockItem("smooth_black_tumblestone", CobblemonBlocks.SMOOTH_BLACK_TUMBLESTONE)
@JvmField
val SMOOTH_BLACK_TUMBLESTONE_STAIRS = blockItem("smooth_black_tumblestone_stairs", CobblemonBlocks.SMOOTH_BLACK_TUMBLESTONE_STAIRS)
@JvmField
val SMOOTH_BLACK_TUMBLESTONE_SLAB = blockItem("smooth_black_tumblestone_slab", CobblemonBlocks.SMOOTH_BLACK_TUMBLESTONE_SLAB)
@JvmField
val BLACK_TUMBLESTONE_BRICKS = blockItem("black_tumblestone_bricks", CobblemonBlocks.BLACK_TUMBLESTONE_BRICKS)
@JvmField
val BLACK_TUMBLESTONE_BRICK_STAIRS = blockItem("black_tumblestone_brick_stairs", CobblemonBlocks.BLACK_TUMBLESTONE_BRICK_STAIRS)
@@ -1012,6 +1056,27 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
@JvmField
val CHISELED_BLACK_TUMBLESTONE_BRICKS = blockItem("chiseled_black_tumblestone_bricks", CobblemonBlocks.CHISELED_BLACK_TUMBLESTONE_BRICKS)
@JvmField
val FIRE_STONE_BLOCK = blockItem("fire_stone_block", CobblemonBlocks.FIRE_STONE_BLOCK)
@JvmField
val WATER_STONE_BLOCK = blockItem("water_stone_block", CobblemonBlocks.WATER_STONE_BLOCK)
@JvmField
val THUNDER_STONE_BLOCK = blockItem("thunder_stone_block", CobblemonBlocks.THUNDER_STONE_BLOCK)
@JvmField
val LEAF_STONE_BLOCK = blockItem("leaf_stone_block", CobblemonBlocks.LEAF_STONE_BLOCK)
@JvmField
val ICE_STONE_BLOCK = blockItem("ice_stone_block", CobblemonBlocks.ICE_STONE_BLOCK)
@JvmField
val SUN_STONE_BLOCK = blockItem("sun_stone_block", CobblemonBlocks.SUN_STONE_BLOCK)
@JvmField
val MOON_STONE_BLOCK = blockItem("moon_stone_block", CobblemonBlocks.MOON_STONE_BLOCK)
@JvmField
val SHINY_STONE_BLOCK = blockItem("shiny_stone_block", CobblemonBlocks.SHINY_STONE_BLOCK)
@JvmField
val DAWN_STONE_BLOCK = blockItem("dawn_stone_block", CobblemonBlocks.DAWN_STONE_BLOCK)
@JvmField
val DUSK_STONE_BLOCK = blockItem("dusk_stone_block", CobblemonBlocks.DUSK_STONE_BLOCK)
@JvmField
val AUTOMATON_ARMOR_TRIM_SMITHING_TEMPLATE: SmithingTemplateItem = this.create(
"automaton_armor_trim_smithing_template",
@@ -1184,12 +1249,18 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, ResourceKey<Registry<It
private fun candyItem(name: String, calculator: CandyItem.Calculator): CandyItem = this.create(name, CandyItem(calculator))
private fun pokerodItem(pokeRodId: ResourceLocation): PokerodItem {
val settings = Item.Properties().stacksTo(1).durability(Items.FISHING_ROD.components().get(DataComponents.MAX_DAMAGE)!!)
val settings = Item.Properties().stacksTo(1).durability(256)
val item = create(pokeRodId.path, PokerodItem(pokeRodId, settings))
pokeRods.add(item)
return item
}
private fun pokedexItem(type: PokedexType): PokedexItem {
val item = create("pokedex_${type.name.lowercase()}", PokedexItem(type))
pokedexes.add(item)
return item
}
private fun heldItem(name: String, remappedName: String? = null): CobblemonItem = create(
name,
CobblemonItem(Item.Properties()).also {
@@ -8,6 +8,8 @@
package com.cobblemon.mod.common
import com.cobblemon.mod.common.api.dialogue.ActiveDialogue
import com.cobblemon.mod.common.api.moves.animations.ActionEffectContext
import com.mojang.serialization.Codec
import com.mojang.serialization.codecs.ListCodec
import com.mojang.serialization.codecs.PrimitiveCodec
@@ -20,6 +22,8 @@ object CobblemonMemories {
val BATTLING_POKEMON = register("battling_pokemon", ListCodec(UUIDUtil.CODEC, 0, 31))
val NPC_BATTLING = register("npc_battling", PrimitiveCodec.BOOL)
val DIALOGUES = register<List<ActiveDialogue>>("npc_dialogues")
val ACTIVE_ACTION_EFFECT = register<ActionEffectContext>("active_action_effect")
fun <U> register(id: String, codec: Codec<U>): MemoryModuleType<U> {
val memoryModule = MemoryModuleType(Optional.of(codec))
@@ -24,6 +24,7 @@ import com.cobblemon.mod.common.client.net.effect.RunPosableMoLangHandler
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.PokedexUIPacketHandler
import com.cobblemon.mod.common.client.net.gui.SummaryUIPacketHandler
import com.cobblemon.mod.common.client.net.npc.CloseNPCEditorHandler
import com.cobblemon.mod.common.client.net.npc.OpenNPCEditorHandler
@@ -31,6 +32,7 @@ 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.pokedex.ServerConfirmedRegisterHandler
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.UnvalidatedPlaySoundS2CPacketHandler
@@ -49,15 +51,10 @@ import com.cobblemon.mod.common.client.net.storage.pc.OpenPCHandler
import com.cobblemon.mod.common.client.net.storage.pc.SetPCBoxPokemonHandler
import com.cobblemon.mod.common.client.net.storage.pc.SetPCPokemonHandler
import com.cobblemon.mod.common.client.net.toast.ToastPacketHandler
import com.cobblemon.mod.common.client.net.trade.TradeAcceptanceChangedHandler
import com.cobblemon.mod.common.client.net.trade.TradeCancelledHandler
import com.cobblemon.mod.common.client.net.trade.TradeCompletedHandler
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.client.net.trade.*
import com.cobblemon.mod.common.net.PacketRegisterInfo
import com.cobblemon.mod.common.net.messages.client.PlayerInteractOptionsPacket
import com.cobblemon.mod.common.net.messages.client.SetClientPlayerDataPacket
import com.cobblemon.mod.common.net.messages.client.animation.PlayPosableAnimationPacket
import com.cobblemon.mod.common.net.messages.client.battle.*
import com.cobblemon.mod.common.net.messages.client.callback.OpenMoveCallbackPacket
@@ -78,6 +75,7 @@ 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
import com.cobblemon.mod.common.net.messages.client.pasture.PokemonUnpasturedPacket
import com.cobblemon.mod.common.net.messages.client.pokedex.ServerConfirmedRegisterPacket
import com.cobblemon.mod.common.net.messages.client.pokemon.update.*
import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.AddEvolutionPacket
import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.ClearEvolutionsPacket
@@ -85,41 +83,25 @@ import com.cobblemon.mod.common.net.messages.client.pokemon.update.evolution.Rem
import com.cobblemon.mod.common.net.messages.client.settings.ServerSettingsPacket
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.SpawnNPCPacket
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
import com.cobblemon.mod.common.net.messages.client.starter.SetClientPlayerDataPacket
import com.cobblemon.mod.common.net.messages.client.storage.RemoveClientPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.SwapClientPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.InitializePartyPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.MoveClientPartyPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.SetPartyPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.party.SetPartyReferencePacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.ClosePCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.InitializePCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.MoveClientPCPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.OpenPCPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.SetPCBoxPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.SetPCPokemonPacket
import com.cobblemon.mod.common.net.messages.client.storage.pc.*
import com.cobblemon.mod.common.net.messages.client.toast.ToastPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeAcceptanceChangedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeCancelledPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeCompletedPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeOfferExpiredPacket
import com.cobblemon.mod.common.net.messages.client.trade.TradeOfferNotificationPacket
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.trade.*
import com.cobblemon.mod.common.net.messages.client.ui.InteractPokemonUIPacket
import com.cobblemon.mod.common.net.messages.client.ui.PokedexUIPacket
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.RequestPlayerInteractionsPacket
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.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.*
import com.cobblemon.mod.common.net.messages.server.battle.*
import com.cobblemon.mod.common.net.messages.server.block.AdjustBlockEntityViewerCountPacket
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
@@ -132,6 +114,8 @@ import com.cobblemon.mod.common.net.messages.server.npc.SaveNPCPacket
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
import com.cobblemon.mod.common.net.messages.server.pokedex.scanner.FinishScanningPacket
import com.cobblemon.mod.common.net.messages.server.pokedex.scanner.StartScanningPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.interact.InteractPokemonPacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.SetNicknamePacket
import com.cobblemon.mod.common.net.messages.server.pokemon.update.evolution.AcceptEvolutionPacket
@@ -146,16 +130,10 @@ import com.cobblemon.mod.common.net.messages.server.storage.pc.MovePartyPokemonT
import com.cobblemon.mod.common.net.messages.server.storage.pc.ReleasePCPokemonPacket
import com.cobblemon.mod.common.net.messages.server.storage.pc.SwapPCPokemonPacket
import com.cobblemon.mod.common.net.messages.server.storage.pc.UnlinkPlayerFromPCPacket
import com.cobblemon.mod.common.net.messages.server.trade.AcceptTradeRequestPacket
import com.cobblemon.mod.common.net.messages.server.trade.CancelTradePacket
import com.cobblemon.mod.common.net.messages.server.trade.ChangeTradeAcceptancePacket
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.messages.server.trade.*
import com.cobblemon.mod.common.net.serverhandling.*
import com.cobblemon.mod.common.net.serverhandling.battle.*
import com.cobblemon.mod.common.net.serverhandling.block.AdjustBlockEntityViewerCountHandler
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
@@ -169,6 +147,8 @@ import com.cobblemon.mod.common.net.serverhandling.npc.SaveNPCHandler
import com.cobblemon.mod.common.net.serverhandling.pasture.PasturePokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pasture.UnpastureAllPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pasture.UnpasturePokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pokedex.scanner.FinishScanningHandler
import com.cobblemon.mod.common.net.serverhandling.pokedex.scanner.StartScanningHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.interact.InteractPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.pokemon.update.SetNicknameHandler
import com.cobblemon.mod.common.net.serverhandling.starter.RequestStarterScreenHandler
@@ -186,11 +166,7 @@ import com.cobblemon.mod.common.net.serverhandling.storage.pc.MovePartyPokemonTo
import com.cobblemon.mod.common.net.serverhandling.storage.pc.ReleasePartyPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.storage.pc.SwapPCPokemonHandler
import com.cobblemon.mod.common.net.serverhandling.storage.pc.UnlinkPlayerFromPCHandler
import com.cobblemon.mod.common.net.serverhandling.trade.AcceptTradeRequestHandler
import com.cobblemon.mod.common.net.serverhandling.trade.CancelTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.ChangeTradeAcceptanceHandler
import com.cobblemon.mod.common.net.serverhandling.trade.OfferTradeHandler
import com.cobblemon.mod.common.net.serverhandling.trade.UpdateTradeOfferHandler
import com.cobblemon.mod.common.net.serverhandling.trade.*
import com.cobblemon.mod.common.util.server
import net.minecraft.server.level.ServerPlayer
@@ -270,6 +246,7 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(SummaryUIPacket.ID, SummaryUIPacket::decode, SummaryUIPacketHandler))
list.add(PacketRegisterInfo(InteractPokemonUIPacket.ID, InteractPokemonUIPacket::decode, InteractPokemonUIPacketHandler))
list.add(PacketRegisterInfo(PlayerInteractOptionsPacket.ID, PlayerInteractOptionsPacket::decode, PlayerInteractOptionsHandler))
list.add(PacketRegisterInfo(PokedexUIPacket.ID, PokedexUIPacket::decode, PokedexUIPacketHandler))
// Starter packets
list.add(PacketRegisterInfo(OpenStarterUIPacket.ID, OpenStarterUIPacket::decode, StarterUIPacketHandler))
@@ -284,6 +261,7 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(BattleHealthChangePacket.ID, BattleHealthChangePacket::decode, BattleHealthChangeHandler))
list.add(PacketRegisterInfo(BattleSetTeamPokemonPacket.ID, BattleSetTeamPokemonPacket::decode, BattleSetTeamPokemonHandler))
list.add(PacketRegisterInfo(BattleSwitchPokemonPacket.ID, BattleSwitchPokemonPacket::decode, BattleSwitchPokemonHandler))
list.add(PacketRegisterInfo(BattleSwapPokemonPacket.ID, BattleSwapPokemonPacket::decode, BattleSwapPokemonHandler))
list.add(PacketRegisterInfo(BattleMessagePacket.ID, BattleMessagePacket::decode, BattleMessageHandler))
list.add(PacketRegisterInfo(BattleCaptureStartPacket.ID, BattleCaptureStartPacket::decode, BattleCaptureStartHandler))
list.add(PacketRegisterInfo(BattleCaptureEndPacket.ID, BattleCaptureEndPacket::decode, BattleCaptureEndHandler))
@@ -298,6 +276,12 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(BattleReplacePokemonPacket.ID, BattleReplacePokemonPacket::decode, BattleReplacePokemonHandler))
list.add(PacketRegisterInfo(BattleTransformPokemonPacket.ID, BattleTransformPokemonPacket::decode, BattleTransformPokemonHandler))
// MultiBattleTeam Packets
list.add(PacketRegisterInfo(TeamRequestNotificationPacket.ID, TeamRequestNotificationPacket::decode, TeamRequestNotificationHandler))
list.add(PacketRegisterInfo(TeamRequestExpiredPacket.ID, TeamRequestExpiredPacket::decode, TeamRequestExpiredHandler))
list.add(PacketRegisterInfo(TeamMemberRemoveNotificationPacket.ID, TeamMemberRemoveNotificationPacket::decode, TeamMemberRemoveNotificationHandler))
list.add(PacketRegisterInfo(TeamJoinNotificationPacket.ID, TeamJoinNotificationPacket::decode, TeamJoinNotificationHandler))
// Settings packets
list.add(PacketRegisterInfo(ServerSettingsPacket.ID, ServerSettingsPacket::decode, ServerSettingsPacketHandler))
@@ -316,7 +300,10 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(NPCRegistrySyncPacket.ID, NPCRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(PokeRodRegistrySyncPacket.ID, PokeRodRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(ScriptRegistrySyncPacket.ID, ScriptRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(PokedexDexSyncPacket.ID, PokedexDexSyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(DexEntrySyncPacket.ID, DexEntrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(FishingBaitRegistrySyncPacket.ID, FishingBaitRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
list.add(PacketRegisterInfo(FlowRegistrySyncPacket.ID, FlowRegistrySyncPacket::decode, DataRegistrySyncPacketHandler()))
// Effects
list.add(PacketRegisterInfo(SpawnSnowstormParticlePacket.ID, SpawnSnowstormParticlePacket::decode, SpawnSnowstormParticleHandler))
@@ -327,11 +314,13 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(UnvalidatedPlaySoundS2CPacket.ID, UnvalidatedPlaySoundS2CPacket::decode, UnvalidatedPlaySoundS2CPacketHandler))
list.add(PacketRegisterInfo(SpawnPokemonPacket.ID, SpawnPokemonPacket::decode, SpawnExtraDataEntityHandler()))
list.add(PacketRegisterInfo(SpawnPokeballPacket.ID, SpawnPokeballPacket::decode, SpawnExtraDataEntityHandler()))
list.add(PacketRegisterInfo(ToastPacket.ID, ToastPacket::decode, ToastPacketHandler))
list.add(PacketRegisterInfo(SpawnGenericBedrockPacket.ID, SpawnGenericBedrockPacket::decode, SpawnExtraDataEntityHandler()))
list.add(PacketRegisterInfo(SpawnNPCPacket.ID, SpawnNPCPacket::decode, SpawnExtraDataEntityHandler()))
list.add(PacketRegisterInfo(ToastPacket.ID, ToastPacket::decode, ToastPacketHandler))
// Trade packets
list.add(PacketRegisterInfo(TradeAcceptanceChangedPacket.ID, TradeAcceptanceChangedPacket::decode, TradeAcceptanceChangedHandler))
list.add(PacketRegisterInfo(TradeProcessStartedPacket.ID, TradeProcessStartedPacket::decode, TradeProcessStartedHandler))
list.add(PacketRegisterInfo(TradeCancelledPacket.ID, TradeCancelledPacket::decode, TradeCancelledHandler))
list.add(PacketRegisterInfo(TradeCompletedPacket.ID, TradeCompletedPacket::decode, TradeCompletedHandler))
list.add(PacketRegisterInfo(TradeUpdatedPacket.ID, TradeUpdatedPacket::decode, TradeUpdatedHandler))
@@ -365,6 +354,8 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(CloseNPCEditorPacket.ID, CloseNPCEditorPacket::decode, CloseNPCEditorHandler))
list.add(PacketRegisterInfo(OpenNPCEditorPacket.ID, OpenNPCEditorPacket::decode, OpenNPCEditorHandler))
// Pokédex scanning
list.add(PacketRegisterInfo(ServerConfirmedRegisterPacket.ID, ServerConfirmedRegisterPacket::decode, ServerConfirmedRegisterHandler))
return list
}
@@ -385,6 +376,10 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(RequestMoveSwapPacket.ID, RequestMoveSwapPacket::decode, RequestMoveSwapHandler))
list.add(PacketRegisterInfo(BenchMovePacket.ID, BenchMovePacket::decode, BenchMoveHandler))
list.add(PacketRegisterInfo(BattleChallengePacket.ID, BattleChallengePacket::decode, ChallengeHandler))
list.add(PacketRegisterInfo(BattleChallengeResponsePacket.ID, BattleChallengeResponsePacket::decode, ChallengeResponseHandler))
list.add(PacketRegisterInfo(BattleTeamRequestPacket.ID, BattleTeamRequestPacket::decode, TeamRequestHandler))
list.add(PacketRegisterInfo(BattleTeamResponsePacket.ID, BattleTeamResponsePacket::decode, TeamRequestResponseHandler))
list.add(PacketRegisterInfo(BattleTeamLeavePacket.ID, BattleTeamLeavePacket::decode, TeamLeaveHandler))
list.add(PacketRegisterInfo(MovePCPokemonToPartyPacket.ID, MovePCPokemonToPartyPacket::decode, MovePCPokemonToPartyHandler))
list.add(PacketRegisterInfo(MovePartyPokemonToPCPacket.ID, MovePartyPokemonToPCPacket::decode, MovePartyPokemonToPCHandler))
@@ -413,14 +408,22 @@ object CobblemonNetwork {
list.add(PacketRegisterInfo(AcceptTradeRequestPacket.ID, AcceptTradeRequestPacket::decode, AcceptTradeRequestHandler))
list.add(PacketRegisterInfo(CancelTradePacket.ID, CancelTradePacket::decode, CancelTradeHandler))
list.add(PacketRegisterInfo(ChangeTradeAcceptancePacket.ID, ChangeTradeAcceptancePacket::decode, ChangeTradeAcceptanceHandler))
list.add(PacketRegisterInfo(PerformTradePacket.ID, PerformTradePacket::decode, PerformTradeHandler))
list.add(PacketRegisterInfo(OfferTradePacket.ID, OfferTradePacket::decode, OfferTradeHandler))
list.add(PacketRegisterInfo(UpdateTradeOfferPacket.ID, UpdateTradeOfferPacket::decode, UpdateTradeOfferHandler))
// Pokédex scanning
list.add(PacketRegisterInfo(StartScanningPacket.ID, StartScanningPacket::decode, StartScanningHandler))
list.add(PacketRegisterInfo(FinishScanningPacket.ID, FinishScanningPacket::decode, FinishScanningHandler))
// Pasture
list.add(PacketRegisterInfo(PasturePokemonPacket.ID, PasturePokemonPacket::decode, PasturePokemonHandler))
list.add(PacketRegisterInfo(UnpasturePokemonPacket.ID, UnpasturePokemonPacket::decode, UnpasturePokemonHandler))
list.add(PacketRegisterInfo(UnpastureAllPokemonPacket.ID, UnpastureAllPokemonPacket::decode, UnpastureAllPokemonHandler))
// Block entity
list.add(PacketRegisterInfo(AdjustBlockEntityViewerCountPacket.ID, AdjustBlockEntityViewerCountPacket::decode, AdjustBlockEntityViewerCountHandler))
// Move select packets
list.add(PacketRegisterInfo(MoveSelectedPacket.ID, MoveSelectedPacket::decode, MoveSelectedHandler))
list.add(PacketRegisterInfo(MoveSelectCancelledPacket.ID, MoveSelectCancelledPacket::decode, MoveSelectCancelledHandler))
@@ -25,6 +25,8 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
@JvmField
val GUI_CLICK = this.create("gui.click")
@JvmField
val GUI_TRADE = this.create("gui.trade")
@JvmField
val PC_ON = this.create("pc.on")
@@ -40,35 +42,54 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
val PC_CLICK = this.create("pc.click")
@JvmField
val HEALING_MACHINE_ACTIVE = this.create("healing_machine.active")
val VILLAGER_WORK_NURSE = this.create("entity.villager.work_nurse")
@JvmField
val HEALING_MACHINE_ACTIVE = this.create("block.healing_machine.active")
@JvmField
val POKE_BALL_CAPTURE_STARTED = this.create("poke_ball.capture_started")
@JvmField
val POKE_BALL_CAPTURE_SUCCEEDED = this.create("poke_ball.capture_succeeded")
@JvmField
val POKE_BALL_SHAKE = this.create("poke_ball.shake")
@JvmField
val POKE_BALL_OPEN = this.create("poke_ball.open")
@JvmField
val POKE_BALL_HIT = this.create("poke_ball.hit")
@JvmField
val POKE_BALL_SEND_OUT = this.create("poke_ball.send_out")
@JvmField
val POKE_BALL_SHINY_SEND_OUT = this.create("poke_ball.shiny_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 POKEDEX_OPEN = this.create("item.pokedex.open")
@JvmField
val POKEDEX_CLOSE = this.create("item.pokedex.close")
@JvmField
val POKEDEX_CLICK = this.create("item.pokedex.click")
@JvmField
val POKEDEX_CLICK_SHORT = this.create("item.pokedex.click_short")
@JvmField
val POKEDEX_SCAN_OPEN = this.create("item.pokedex.scan_open")
@JvmField
val POKEDEX_SCAN_CLOSE = this.create("item.pokedex.scan_close")
@JvmField
val POKEDEX_SCAN_LOOP = this.create("item.pokedex.scan_loop")
@JvmField
val POKEDEX_SCAN_DETAIL = this.create("item.pokedex.scan_detail")
@JvmField
val POKEDEX_SCAN_REGISTER_POKEMON = this.create("item.pokedex.scan_register_pokemon")
@JvmField
val POKEDEX_SCAN_REGISTER_ASPECT = this.create("item.pokedex.scan_register_aspect")
@JvmField
val POKEDEX_SCAN_ZOOM_INCREMENT = this.create("item.pokedex.scan_zoom_increment")
@JvmField
val ITEM_USE = this.create("item.use")
@JvmField
val CAN_EVOLVE = this.create("pokemon.can_evolve")
val EVOLUTION_NOTIFICATION = this.create("evolution.notification")
@JvmField
val EVOLVING = this.create("pokemon.evolving")
val EVOLUTION_UI = this.create("evolution.ui")
@JvmField
val EVOLVE = this.create("evolution.evolve")
val EVOLUTION = this.create("evolution.full")
@JvmField
val PVN_BATTLE = this.create("battle.pvn.default")
@@ -78,61 +99,58 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
val PVW_BATTLE = this.create("battle.pvw.default")
@JvmField
val MEDICINE_HERB_USE = this.create("medicine_herb.use")
val MEDICINE_CANDY_USE = this.create("item.medicine.candy.use")
@JvmField
val MEDICINE_LIQUID_USE = this.create("medicine_liquid.use")
val MEDICINE_HERB_USE = this.create("item.medicine.herb.use")
@JvmField
val MEDICINE_PILLS_USE = this.create("medicine_pills.use")
val MEDICINE_LIQUID_USE = this.create("item.medicine.liquid.use")
@JvmField
val MEDICINE_SPRAY_USE = this.create("medicine_spray.use")
val MEDICINE_PILLS_USE = this.create("item.medicine.pills.use")
@JvmField
val MEDICINE_FEATHER_USE = this.create("medicine_feather.use")
val MEDICINE_SPRAY_USE = this.create("item.medicine.spray.use")
@JvmField
val MEDICINE_FEATHER_USE = this.create("item.medicine.feather.use")
@JvmField
val BERRY_HARVEST = this.create("berry.harvest")
val MULCH_PLACE = this.create("block.mulch.place")
@JvmField
val BERRY_EAT = this.create("berry.eat")
val MULCH_REMOVE = this.create("block.mulch.remove")
@JvmField
val MULCH_PLACE = this.create("mulch.place")
val FOSSIL_MACHINE_ACTIVATE = this.create("block.fossil_machine.activate")
@JvmField
val MULCH_REMOVE = this.create("mulch.remove")
val FOSSIL_MACHINE_ACTIVE_LOOP = this.create("block.fossil_machine.active_loop")
@JvmField
val FOSSIL_MACHINE_ASSEMBLE = this.create("block.fossil_machine.assemble")
@JvmField
val FOSSIL_MACHINE_DNA_FULL = this.create("block.fossil_machine.dna_full")
@JvmField
val FOSSIL_MACHINE_FINISHED = this.create("block.fossil_machine.finished")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA = this.create("block.fossil_machine.insert_dna")
@JvmField
val FOSSIL_MACHINE_INSERT_DNA_SMALL = this.create("block.fossil_machine.insert_dna_small")
@JvmField
val FOSSIL_MACHINE_INSERT_FOSSIL = this.create("block.fossil_machine.insert_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_FOSSIL = this.create("block.fossil_machine.retrieve_fossil")
@JvmField
val FOSSIL_MACHINE_RETRIEVE_POKEMON = this.create("block.fossil_machine.retrieve_pokemon")
@JvmField
val FOSSIL_MACHINE_UNPROTECTED = this.create("block.fossil_machine.unprotected")
@JvmField
val FOSSIL_MACHINE_ACTIVATE = this.create("fossil_machine.activate")
val RELIC_COIN_SACK_BREAK = this.create("block.relic_coin_sack.break")
@JvmField
val FOSSIL_MACHINE_ACTIVE_LOOP = this.create("fossil_machine.active_loop")
val RELIC_COIN_SACK_HIT = this.create("block.relic_coin_sack.hit")
@JvmField
val FOSSIL_MACHINE_ASSEMBLE = this.create("fossil_machine.assemble")
val RELIC_COIN_SACK_STEP = this.create("block.relic_coin_sack.step")
@JvmField
val FOSSIL_MACHINE_DNA_FULL = this.create("fossil_machine.dna_full")
val RELIC_COIN_SACK_PLACE = this.create("block.relic_coin_sack.place")
@JvmField
val FOSSIL_MACHINE_FINISHED = this.create("fossil_machine.finished")
val RELIC_COIN_POUCH_BREAK = this.create("block.relic_coin_pouch.break")
@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 RELIC_COIN_SACK_BREAK = this.create("relic_coin_sack.break")
@JvmField
val RELIC_COIN_SACK_HIT = this.create("relic_coin_sack.hit")
@JvmField
val RELIC_COIN_SACK_STEP = this.create("relic_coin_sack.step")
@JvmField
val RELIC_COIN_SACK_PLACE = this.create("relic_coin_sack.place")
@JvmField
val RELIC_COIN_POUCH_BREAK = this.create("relic_coin_pouch.break")
@JvmField
val RELIC_COIN_POUCH_PLACE = this.create("relic_coin_pouch.place")
val RELIC_COIN_POUCH_PLACE = this.create("block.relic_coin_pouch.place")
@JvmField
val FISHING_NOTIFICATION = this.create("fishing.notification")
@@ -150,67 +168,81 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
val FISHING_BAIT_ATTACH = this.create("fishing.bait_attach")
@JvmField
val FISHING_BAIT_DETACH = this.create("fishing.bait_detach")
@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")
val TUMBLESTONE_BREAK = this.create("block.tumblestone.break")
@JvmField
val GIMMIGHOUL_REVEAL = this.create("gimmighoul.reveal")
val TUMBLESTONE_BLOCK_BREAK = this.create("block.tumblestone.block_break")
@JvmField
val TUMBLESTONE_HIT = this.create("block.tumblestone.hit")
@JvmField
val TUMBLESTONE_PLACE = this.create("block.tumblestone.place")
@JvmField
val TUMBLESTONE_STEP = this.create("block.tumblestone.step")
@JvmField
val BERRY_BUSH_BREAK = this.create("berry_bush.break")
val EVOLUTION_STONE_BLOCK_BREAK = this.create("block.evolution_stone_block.break")
@JvmField
val BERRY_BUSH_PLACE = this.create("berry_bush.place")
val EVOLUTION_STONE_BLOCK_HIT = this.create("block.evolution_stone_block.hit")
@JvmField
val EVOLUTION_STONE_BLOCK_PLACE = this.create("block.evolution_stone_block.place")
@JvmField
val EVOLUTION_STONE_BLOCK_STEP = this.create("block.evolution_stone_block.step")
@JvmField
val BIG_ROOT_BREAK = this.create("big_root.break")
val GIMMIGHOUL_GIVE_ITEM = this.create("pokemon.gimmighoul.give_item")
@JvmField
val ENERGY_ROOT_PLACE = this.create("energy_root.place")
val GIMMIGHOUL_REVEAL = this.create("pokemon.gimmighoul.reveal")
@JvmField
val VIVICHOKE_BREAK = this.create("vivichoke.break")
val BERRY_BUSH_BREAK = this.create("block.berry_bush.break")
@JvmField
val VIVICHOKE_PLACE = this.create("vivichoke.place")
val BERRY_BUSH_PLACE = this.create("block.berry_bush.place")
@JvmField
val BERRY_HARVEST = this.create("block.berry_bush.harvest")
@JvmField
val BERRY_EAT = this.create("item.berry.eat")
@JvmField
val MINT_BREAK = this.create("mint.break")
val BIG_ROOT_BREAK = this.create("block.big_root.break")
@JvmField
val MINT_PLACE = this.create("mint.place")
val ENERGY_ROOT_PLACE = this.create("block.energy_root.place")
@JvmField
val REVIVAL_HERB_BREAK = this.create("revival_herb.break")
val VIVICHOKE_BREAK = this.create("block.vivichoke.break")
@JvmField
val REVIVAL_HERB_PLACE = this.create("revival_herb.place")
val VIVICHOKE_PLACE = this.create("block.vivichoke.place")
@JvmField
val MEDICINAL_LEEK_BREAK = this.create("medicinal_leek.break")
val MINT_BREAK = this.create("block.mint.break")
@JvmField
val MEDICINAL_LEEK_PLACE = this.create("medicinal_leek.plant")
val MINT_PLACE = this.create("block.mint.place")
@JvmField
val GILDED_CHEST_OPEN = this.create("gilded_chest.open")
val REVIVAL_HERB_BREAK = this.create("block.revival_herb.break")
@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")
val REVIVAL_HERB_PLACE = this.create("block.revival_herb.place")
@JvmField
val RELIC_COIN_SACK_SOUNDS = SoundType(1f, 1f,
val MEDICINAL_LEEK_BREAK = this.create("block.medicinal_leek.break")
@JvmField
val MEDICINAL_LEEK_PLACE = this.create("block.medicinal_leek.plant")
@JvmField
val GILDED_CHEST_OPEN = this.create("block.gilded_chest.open")
@JvmField
val GILDED_CHEST_CLOSE = this.create("block.gilded_chest.close")
@JvmField
val GILDED_CHEST_STEP = this.create("block.gilded_chest.step")
@JvmField
val GILDED_CHEST_HIT = this.create("block.gilded_chest.hit")
@JvmField
val GILDED_CHEST_BREAK = this.create("block.gilded_chest.break")
@JvmField
val GILDED_CHEST_PLACE = this.create("block.gilded_chest.place")
@JvmField
val RELIC_COIN_SACK_SOUNDS = SoundType(1f, 1.1f,
RELIC_COIN_SACK_BREAK,
RELIC_COIN_SACK_STEP,
RELIC_COIN_SACK_PLACE,
@@ -218,7 +250,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
RELIC_COIN_SACK_STEP
)
@JvmField
val RELIC_COIN_POUCH_SOUNDS = SoundType(1f, 1f,
val RELIC_COIN_POUCH_SOUNDS = SoundType(1f, 1.1f,
RELIC_COIN_POUCH_BREAK,
RELIC_COIN_SACK_STEP,
RELIC_COIN_POUCH_PLACE,
@@ -226,6 +258,13 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
RELIC_COIN_SACK_STEP
)
@JvmField
val MOVE_QUICKATTACK_TARGET = this.create("move.quickattack.target")
@JvmField
val MOVE_PURSUIT_TARGET = this.create("move.pursuit.target")
@JvmField
val MOVE_PSYCHIC_TARGET = this.create("move.psychic.target")
@JvmField
val IMPACT_NORMAL = this.create("impact.normal")
@JvmField
@@ -264,7 +303,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
val IMPACT_WATER = this.create("impact.water")
@JvmField
val TUMBLESTONE_SOUNDS = SoundType(1f, 1f,
val TUMBLESTONE_SOUNDS = SoundType(1f, 1.1f,
TUMBLESTONE_BREAK,
TUMBLESTONE_STEP,
TUMBLESTONE_PLACE,
@@ -273,16 +312,25 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val TUMBLESTONE_BLOCK_SOUNDS = SoundType(1f, 1f,
val TUMBLESTONE_BLOCK_SOUNDS = SoundType(1f, 1.1f,
TUMBLESTONE_BLOCK_BREAK,
TUMBLESTONE_STEP,
TUMBLESTONE_PLACE,
TUMBLESTONE_HIT,
TUMBLESTONE_STEP
)
@JvmField
val EVOLUTION_STONE_BLOCK_SOUNDS = SoundType(1f, 1.1f,
EVOLUTION_STONE_BLOCK_BREAK,
EVOLUTION_STONE_BLOCK_STEP,
EVOLUTION_STONE_BLOCK_PLACE,
EVOLUTION_STONE_BLOCK_HIT,
EVOLUTION_STONE_BLOCK_STEP
)
@JvmField
val BERRY_BUSH_SOUNDS = SoundType(1f, 1f,
val BERRY_BUSH_SOUNDS = SoundType(0.8f, 1.1f,
BERRY_BUSH_BREAK,
SoundEvents.GRASS_STEP,
BERRY_BUSH_PLACE,
@@ -291,25 +339,25 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val BIG_ROOT_SOUNDS = SoundType(1f, 1f,
val BIG_ROOT_SOUNDS = SoundType(0.8f, 1.1f,
BIG_ROOT_BREAK,
SoundEvents.ROOTS_STEP,
SoundEvents.ROOTS_PLACE,
SoundEvents.ROOTS_HIT,
SoundEvents.ROOTS_FALL
)
@JvmField
val ENERGY_ROOT_SOUNDS = SoundType(1f, 1f,
SoundEvents.ROOTS_BREAK,
SoundEvents.ROOTS_STEP,
ENERGY_ROOT_PLACE,
SoundEvents.ROOTS_HIT,
SoundEvents.ROOTS_FALL
)
@JvmField
val MEDICINAL_LEEK_SOUNDS = SoundType(1f, 1f,
val ENERGY_ROOT_SOUNDS = SoundType(0.8f, 1.1f,
BIG_ROOT_BREAK,
SoundEvents.ROOTS_STEP,
ENERGY_ROOT_PLACE,
SoundEvents.ROOTS_HIT,
SoundEvents.ROOTS_FALL
)
@JvmField
val MEDICINAL_LEEK_SOUNDS = SoundType(1f, 1.1f,
MEDICINAL_LEEK_BREAK,
SoundEvents.GRASS_STEP,
MEDICINAL_LEEK_PLACE,
@@ -318,7 +366,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val VIVICHOKE_SOUNDS = SoundType(1f, 1f,
val VIVICHOKE_SOUNDS = SoundType(0.6f, 1.1f,
VIVICHOKE_BREAK,
SoundEvents.GRASS_STEP,
VIVICHOKE_PLACE,
@@ -327,7 +375,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val MINT_SOUNDS = SoundType(1f, 1f,
val MINT_SOUNDS = SoundType(0.6f, 1.1f,
MINT_BREAK,
SoundEvents.GRASS_STEP,
MINT_PLACE,
@@ -336,7 +384,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val REVIVAL_HERB_SOUNDS = SoundType(1f, 1f,
val REVIVAL_HERB_SOUNDS = SoundType(0.6f, 1.1f,
REVIVAL_HERB_BREAK,
SoundEvents.GRASS_STEP,
REVIVAL_HERB_PLACE,
@@ -345,7 +393,7 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val GILDED_CHEST_SOUNDS = SoundType(1f, 1f,
val GILDED_CHEST_SOUNDS = SoundType(1f, 1.1f,
GILDED_CHEST_BREAK,
GILDED_CHEST_STEP,
GILDED_CHEST_PLACE,
@@ -354,17 +402,17 @@ object CobblemonSounds : PlatformRegistry<Registry<SoundEvent>, ResourceKey<Regi
)
@JvmField
val DISPLAY_CASE_ADD_ITEM = this.create("display_case.add_item")
val DISPLAY_CASE_ADD_ITEM = this.create("block.display_case.add_item")
@JvmField
val DISPLAY_CASE_REMOVE_ITEM = this.create("display_case.remove_item")
val DISPLAY_CASE_REMOVE_ITEM = this.create("block.display_case.remove_item")
@JvmField
val DISPLAY_CASE_BREAK = this.create("display_case.break")
val DISPLAY_CASE_BREAK = this.create("block.display_case.break")
@JvmField
val DISPLAY_CASE_HIT = this.create("display_case.hit")
val DISPLAY_CASE_HIT = this.create("block.display_case.hit")
@JvmField
val DISPLAY_CASE_PLACE = this.create("display_case.place")
val DISPLAY_CASE_PLACE = this.create("block.display_case.place")
@JvmField
val DISPLAY_CASE_STEP = this.create("display_case.step")
val DISPLAY_CASE_STEP = this.create("block.display_case.step")
@JvmField
val DISPLAY_CASE_SOUNDS = SoundType(1f, 1f,
@@ -9,9 +9,16 @@
package com.cobblemon.mod.common
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.util.RandomSource
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.npc.VillagerData
import net.minecraft.world.entity.npc.VillagerProfession
import net.minecraft.world.entity.npc.VillagerTrades
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
import net.minecraft.world.item.trading.ItemCost
import net.minecraft.world.item.trading.MerchantOffer
import java.util.Optional
/**
* A generator for various trade offers in the mod.
@@ -32,12 +39,45 @@ object CobblemonTradeOffers {
* @return The resulting list.
*/
fun tradeOffersFor(profession: VillagerProfession): List<VillagerTradeOffer> = when (profession) {
VillagerProfession.FARMER -> listOf(
VillagerTradeOffer(VillagerProfession.FARMER, 3, listOf(VillagerTrades.ItemsForEmeralds(CobblemonItems.VIVICHOKE_SEEDS, 24, 1, 1, 6)))
CobblemonVillagerProfessions.NURSE -> listOf(
// requiredLevel = the level of the villager for the trade to appear for
// Novice = 1, Apprentice = 2, Journeyman = 3, Expert = 4, Master = 5
VillagerTradeOffer(CobblemonVillagerProfessions.NURSE, 1, listOf(
// i = emeraldCost, j = numberOfItems, k = maxUses, l = villagerXp, f = priceMultiplier
VillagerTrades.ItemsForEmeralds(CobblemonItems.ORAN_BERRY, 4, 1, 16, 1),
VillagerTrades.ItemsForEmeralds(CobblemonItems.PERSIM_BERRY, 4, 1, 16, 1),
VillagerTrades.ItemsForEmeralds(CobblemonItems.ENERGY_ROOT, 4, 1, 12, 1),
TradeOffer(ItemCost(CobblemonItems.MEDICINAL_LEEK, 24), ItemStack(Items.EMERALD, 1), 12, 2)
)),
VillagerTradeOffer(CobblemonVillagerProfessions.NURSE, 2, listOf(
TradeOffer(ItemCost(Items.EMERALD, 8), ItemStack(CobblemonItems.MEDICINAL_BREW), 8, 5, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
VillagerTrades.ItemsForEmeralds(CobblemonItems.BLUE_MINT_LEAF, 2, 1, 8, 5),
VillagerTrades.ItemsForEmeralds(CobblemonItems.CYAN_MINT_LEAF, 2, 1, 8, 5),
VillagerTrades.ItemsForEmeralds(CobblemonItems.GREEN_MINT_LEAF, 2, 1, 8, 5),
VillagerTrades.ItemsForEmeralds(CobblemonItems.PINK_MINT_LEAF, 2, 1, 8, 5),
VillagerTrades.ItemsForEmeralds(CobblemonItems.RED_MINT_LEAF, 2, 1, 8, 5),
VillagerTrades.ItemsForEmeralds(CobblemonItems.WHITE_MINT_LEAF, 2, 1, 8, 5)
)),
VillagerTradeOffer(CobblemonVillagerProfessions.NURSE, 3, listOf(
TradeOffer(ItemCost(CobblemonItems.MULCH_BASE, 4), ItemStack(Items.EMERALD, 2), 16, 20),
VillagerTrades.ItemsForEmeralds(Items.GLASS_BOTTLE, 1, 1, 16, 10)
)),
VillagerTradeOffer(CobblemonVillagerProfessions.NURSE, 4, listOf(
VillagerTrades.ItemsForEmeralds(CobblemonItems.REVIVAL_HERB, 8, 1, 16, 15),
VillagerTrades.ItemsForEmeralds(CobblemonItems.VIVICHOKE_SEEDS, 24, 1, 4, 15)
)),
VillagerTradeOffer(CobblemonVillagerProfessions.NURSE, 5, listOf(
TradeOffer(ItemCost(Items.EMERALD, 10), ItemStack(CobblemonItems.ANTIDOTE, 1), 12, 30, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
TradeOffer(ItemCost(Items.EMERALD, 10), ItemStack(CobblemonItems.AWAKENING, 1), 12, 30, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
TradeOffer(ItemCost(Items.EMERALD, 10), ItemStack(CobblemonItems.BURN_HEAL, 1), 12, 30, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
TradeOffer(ItemCost(Items.EMERALD, 10), ItemStack(CobblemonItems.ICE_HEAL, 1), 12, 30, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
TradeOffer(ItemCost(Items.EMERALD, 10), ItemStack(CobblemonItems.PARALYZE_HEAL, 1), 12, 30, Optional.of<ItemCost>(ItemCost(Items.GLASS_BOTTLE))),
TradeOffer(ItemCost(Items.EMERALD, 22), ItemStack(CobblemonItems.VIVICHOKE_DIP, 1), 4, 30, Optional.of<ItemCost>(ItemCost(Items.BOWL)))
))
)
VillagerProfession.FISHERMAN -> listOf(
VillagerTradeOffer(VillagerProfession.FISHERMAN, 5, listOf(
VillagerTrades.ItemsForEmeralds(CobblemonItems.POKEROD_SMITHING_TEMPLATE, 12, 3, 30)
VillagerTrades.ItemsForEmeralds(CobblemonItems.POKEROD_SMITHING_TEMPLATE, 12, 1, 3, 30)
))
)
else -> emptyList()
@@ -53,7 +93,7 @@ object CobblemonTradeOffers {
)
/**
* Represents a trade offer that can be attached to a villager or a wandering trader.
* Represents trade offers that can be attached to a villager or a wandering trader.
*/
interface TradeOfferHolder {
/**
@@ -63,7 +103,7 @@ object CobblemonTradeOffers {
}
/**
* Represents a trade offer from a villager.
* Represents trade offers from a villager.
*
* @property profession The target profession for this trade.
* @property requiredLevel The level required must be a possible level.
@@ -75,7 +115,7 @@ object CobblemonTradeOffers {
val profession: VillagerProfession,
val requiredLevel: Int,
override val tradeOffers: List<VillagerTrades.ItemListing>
) : TradeOfferHolder {
): TradeOfferHolder {
init {
if (this.requiredLevel < VillagerData.MIN_VILLAGER_LEVEL || this.requiredLevel > VillagerData.MAX_VILLAGER_LEVEL) {
@@ -86,7 +126,7 @@ object CobblemonTradeOffers {
}
/**
* Represents a trade offer from a wandering trader.
* Represents trade offers from a wandering trader.
*
* @property isRareTrade If this is rare or common trade.
* @property tradeOffers The list of the possible [TradeOffers.Factory].
@@ -94,6 +134,26 @@ object CobblemonTradeOffers {
data class WandererTradeOffer(
val isRareTrade: Boolean,
override val tradeOffers: List<VillagerTrades.ItemListing>
) : TradeOfferHolder
): TradeOfferHolder
/**
* Represents a trade offer from a villager.
*
* @property offeredItem The item cost offered to the villager.
* @property receivedItem The item received from the villager.
* @property maxUses How many times the trade can be used before the villager resupplies.
* @property villagerXp The experience the villager gains from the trade.
* @property optionalOfferedItem The optional, secondary item cost offered to the villager.
* @property priceMultiplier The amount multiplier of how much the item cost can rise and fall by depending on discounts and penalties
*/
class TradeOffer(
private val offeredItem: ItemCost,
private val receivedItem: ItemStack,
private val maxUses: Int,
private val villagerXp: Int = 1,
private val optionalOfferedItem: Optional<ItemCost> = Optional.empty(),
private val priceMultiplier: Float = 0.05F
): VillagerTrades.ItemListing {
override fun getOffer(entity: Entity?, randomSource: RandomSource?): MerchantOffer = MerchantOffer(offeredItem, optionalOfferedItem, receivedItem, maxUses, villagerXp, priceMultiplier)
}
}
@@ -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
import com.cobblemon.mod.common.platform.PlatformRegistry
import com.cobblemon.mod.common.util.cobblemonResource
import com.google.common.collect.ImmutableSet
import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.core.registries.Registries
import net.minecraft.resources.ResourceKey
import net.minecraft.world.entity.ai.village.poi.PoiType
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockState
object CobblemonVillagerPoiTypes: PlatformRegistry<Registry<PoiType>, ResourceKey<Registry<PoiType>>, PoiType>() {
override val registry: Registry<PoiType> = BuiltInRegistries.POINT_OF_INTEREST_TYPE
override val resourceKey: ResourceKey<Registry<PoiType>> = Registries.POINT_OF_INTEREST_TYPE
@JvmField
val NURSE_KEY: ResourceKey<PoiType> = createKey("nurse")
@JvmField
val NURSE = create(NURSE_KEY.location().path, PoiType(getBlockStates(CobblemonBlocks.HEALING_MACHINE), 1, 1))
private fun createKey(string: String): ResourceKey<PoiType> = ResourceKey.create(Registries.POINT_OF_INTEREST_TYPE, cobblemonResource(string))
private fun getBlockStates(block: Block): Set<BlockState> = ImmutableSet.copyOf(block.stateDefinition.possibleStates)
}
@@ -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
import com.cobblemon.mod.common.platform.PlatformRegistry
import com.google.common.collect.ImmutableSet
import net.minecraft.core.Holder
import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.core.registries.Registries
import net.minecraft.resources.ResourceKey
import net.minecraft.sounds.SoundEvent
import net.minecraft.world.entity.ai.village.poi.PoiType
import net.minecraft.world.entity.npc.VillagerProfession
object CobblemonVillagerProfessions: PlatformRegistry<Registry<VillagerProfession>, ResourceKey<Registry<VillagerProfession>>, VillagerProfession>() {
override val registry: Registry<VillagerProfession> = BuiltInRegistries.VILLAGER_PROFESSION
override val resourceKey: ResourceKey<Registry<VillagerProfession>> = Registries.VILLAGER_PROFESSION
@JvmField
val NURSE = profession(CobblemonVillagerPoiTypes.NURSE_KEY, CobblemonSounds.VILLAGER_WORK_NURSE)
/**
* Register a villager profession texture override for Cobblemon villagers of the given [VillagerProfession] for specified names.
*
* @param profession The Cobblemon [VillagerProfession] being overridden.
* @return The profession override texture file name and a list of names that will trigger the override, as a pair.
*/
fun getNameTagOverride(profession: VillagerProfession?): Pair<String, Array<String>>? = when (profession) {
NURSE -> Pair("nurse_joy", arrayOf("ジョーイ", "간호순", "祖兒", "喬伊", "乔伊", "האחות ג'וי", "الممرضة جوي", "Joy", "Joelle", "Joëlle", "Джой", "จอย"))
else -> null
}
private fun profession(resourceKey: ResourceKey<PoiType>, soundEvent: SoundEvent?): VillagerProfession =
create(resourceKey.location().path, VillagerProfession(
resourceKey.location().toString(),
{ holder: Holder<PoiType> -> holder.`is`(resourceKey) },
{ holder: Holder<PoiType> -> holder.`is`(resourceKey) },
ImmutableSet.of(), ImmutableSet.of(), soundEvent
))
}
@@ -29,6 +29,8 @@ object CobblemonCriteria : PlatformRegistry<Registry<CriterionTrigger<*>>, Resou
val CATCH_SHINY_POKEMON = this.create("catch_shiny_pokemon", SimpleCriterionTrigger(CountableCriterion.CODEC))
val EGG_COLLECT = this.create("eggs_collected", SimpleCriterionTrigger(CountableCriterion.CODEC))
val EGG_HATCH = this.create("eggs_hatched", SimpleCriterionTrigger(CountableCriterion.CODEC))
val EVOLVE_POKEMON = this.create("pokemon_evolved", SimpleCriterionTrigger(EvolvePokemonCriterion.CODEC))
@@ -53,9 +55,11 @@ object CobblemonCriteria : PlatformRegistry<Registry<CriterionTrigger<*>>, Resou
val CAST_POKE_ROD = this.create("cast_poke_rod", SimpleCriterionTrigger(CastPokeRodCriterionCondition.CODEC))
val REEL_IN_POKEMON = this.create("reel_in_pokemon", SimpleCriterionTrigger(ReelInPokemonCriterionCondition.CODEC))
// Advancement criteria for [grow_tumblestone.json]
val PLANT_TUMBLESTONE = this.create("plant_tumblestone", SimpleCriterionTrigger(PlantTumblestoneCriterion.CODEC))
override val registry = BuiltInRegistries.TRIGGER_TYPES
override val resourceKey = Registries.TRIGGER_TYPE
}
}
@@ -59,7 +59,7 @@ class AspectCriterion(
// pokemon = json.get("pokemon").asString.asIdentifierDefaultingNamespace()
// }
//
// override fun matches(player: ServerPlayerEntity, context: MutableMap<Identifier, MutableSet<String>>): Boolean {
// override fun matches(player: ServerPlayer, context: MutableMap<Identifier, MutableSet<String>>): Boolean {
// val caughtAspects = context.getOrDefault(pokemon, mutableSetOf())
// return this.aspects.all { it in caughtAspects }
// }
@@ -34,8 +34,7 @@ class BattleCountableCriterion(
override fun matches(player: ServerPlayer, context: BattleCountableContext): Boolean {
var typeCheck = false
val advancementData = Cobblemon.playerData.get(player).advancementData
val advancementData = Cobblemon.playerDataManager.getGenericData(player).advancementData
if (battleTypes.isEmpty() || battleTypes.contains("any")) {
typeCheck = true
}
@@ -87,7 +86,7 @@ class BattleCountableCriterion(
// json.add("battle_types", battleTypes.toJsonArray())
// }
//
// override fun matches(player: ServerPlayerEntity, context: BattleCountableContext): Boolean {
// override fun matches(player: ServerPlayer, context: BattleCountableContext): Boolean {
// var typeCheck = false
// val advancementData = Cobblemon.playerData.get(player).advancementData
// if (battleTypes.isEmpty() || battleTypes.contains("any")) {
@@ -8,26 +8,30 @@
package com.cobblemon.mod.common.advancement.criterion
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
import com.mojang.serialization.Codec
import com.mojang.serialization.codecs.PrimitiveCodec
import com.mojang.serialization.codecs.RecordCodecBuilder
import java.util.Optional
import net.minecraft.advancements.critereon.ContextAwarePredicate
import net.minecraft.advancements.critereon.EntityPredicate
import net.minecraft.server.level.ServerPlayer
import net.minecraft.resources.ResourceLocation
class CastPokeRodContext(val baitId: ResourceLocation)
class CastPokeRodCriterionCondition(
playerCtx: Optional<ContextAwarePredicate>,
val hasBait: Boolean
): SimpleCriterionCondition<Boolean>(playerCtx) {
playerCtx: Optional<ContextAwarePredicate>,
val baitId: String
): SimpleCriterionCondition<CastPokeRodContext>(playerCtx) {
companion object {
val CODEC: Codec<CastPokeRodCriterionCondition> = RecordCodecBuilder.create { it.group(
EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player").forGetter(CastPokeRodCriterionCondition::playerCtx),
PrimitiveCodec.BOOL.fieldOf("hasBait").forGetter(CastPokeRodCriterionCondition::hasBait)
).apply(it, ::CastPokeRodCriterionCondition) }
EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player").forGetter(CastPokeRodCriterionCondition::playerCtx),
Codec.STRING.optionalFieldOf("baitId", "empty_bait").forGetter(CastPokeRodCriterionCondition::baitId)
).apply(it, { playerCtx, baitId -> CastPokeRodCriterionCondition(playerCtx, baitId.ifEmpty { "empty_bait" }) }) }
}
override fun matches(player: ServerPlayer, context: Boolean): Boolean {
return hasBait == context
override fun matches(player: ServerPlayer, context: CastPokeRodContext): Boolean {
return (context.baitId == this.baitId.asIdentifierDefaultingNamespace() || this.baitId.equals("empty_bait"))
}
}
}
@@ -54,7 +54,7 @@ class CaughtPokemonCriterion(
// type = json.get("type")?.asString ?: "any"
// }
//
// override fun matches(player: ServerPlayerEntity, context: CountablePokemonTypeContext): Boolean {
// override fun matches(player: ServerPlayer, context: CountablePokemonTypeContext): Boolean {
// return super.matches(player, context) && (context.type == type || type == "any")
// }
//}
@@ -50,7 +50,7 @@ open class CountableCriterion<T : CountableContext>(
// json.addProperty("count", count)
// }
//
// override fun matches(player: ServerPlayerEntity, context: T) = context.times >= count
// override fun matches(player: ServerPlayer, context: T) = context.times >= count
//}
//
///**
@@ -64,7 +64,7 @@ open class CountableCriterion<T : CountableContext>(
// * @since November 4th, 2022
// */
//class SimpleCountableCriterionCondition(id: Identifier, predicate: LootContextPredicate) : CountableCriterionCondition<CountableContext>(id, predicate)
//fun SimpleCriterionTrigger<CountableContext, SimpleCountableCriterionCondition>.trigger(player: ServerPlayerEntity, times: Int) = trigger(player, CountableContext(times))
//fun SimpleCriterionTrigger<CountableContext, SimpleCountableCriterionCondition>.trigger(player: ServerPlayer, times: Int) = trigger(player, CountableContext(times))
//
///**
// * Some type of context that has a count associated with it, representing how many times the trigger has occurred.
@@ -55,7 +55,7 @@ class EvolvePokemonCriterion(
// evolution = json.get("evolution")?.asString ?: "any"
// }
//
// override fun matches(player: ServerPlayerEntity, context: EvolvePokemonContext): Boolean {
// override fun matches(player: ServerPlayer, context: EvolvePokemonContext): Boolean {
// return context.times >= count && (context.species == species.asIdentifierDefaultingNamespace() || species == "any") &&
// (context.evolution == evolution.asIdentifierDefaultingNamespace() || evolution == "any")
// }
@@ -57,7 +57,7 @@ class LevelUpCriterion(
evolved = json.get("has_evolved")?.asBoolean ?: true
}
override fun matches(player: ServerPlayerEntity, context: LevelUpContext): Boolean {
override fun matches(player: ServerPlayer, context: LevelUpContext): Boolean {
val preEvo = context.pokemon.preEvolution == null
val hasEvolution = !context.pokemon.evolutions.none()
var evolutionCheck = true
@@ -26,76 +26,25 @@ class PartyCheckCriterion(
companion object {
val CODEC: Codec<PartyCheckCriterion> = RecordCodecBuilder.create { it.group(
EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player").forGetter(PartyCheckCriterion::playerCtx),
ResourceLocation.CODEC.listOf().optionalFieldOf("id", listOf()).forGetter(PartyCheckCriterion::party)
ResourceLocation.CODEC.listOf().optionalFieldOf("party", listOf()).forGetter(PartyCheckCriterion::party)
).apply(it, ::PartyCheckCriterion) }
}
override fun matches(player: ServerPlayer, context: PlayerPartyStore): Boolean {
val matches = mutableListOf<ResourceLocation>()
party.forEach {
if (it == "any".asIdentifierDefaultingNamespace()) {
if (it == "any".asIdentifierDefaultingNamespace("minecraft") || it == "any".asIdentifierDefaultingNamespace()) {
matches.add(it)
}
}
val partyCount = context.count()
if (matches.containsAll(party) && party.size == partyCount && matches.size == partyCount) return true
matches.clear()
context.iterator().forEach {
if (party.contains(it.species.resourceIdentifier)) {
matches.add(it.species.resourceIdentifier)
}
}
return matches.containsAll(party) && matches.size == partyCount
return matches.containsAll(party) && matches.size == party.size
}
}
/*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)*/
@@ -57,7 +57,7 @@ class PlantTumblestoneCriterion(
// * @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 {
// override fun matches(player: ServerPlayer, context: PlantTumblestoneContext): Boolean {
// return context.tumbleStoneBlock.canGrow(context.pos, player.level())
// }
//}
@@ -21,20 +21,18 @@ class PokemonInteractContext(val type: ResourceLocation, val item: ResourceLocat
class PokemonInteractCriterion(
playerCtx: Optional<ContextAwarePredicate>,
val type: Optional<String>,
val item: Optional<String>
val type: String,
val item: String
): SimpleCriterionCondition<PokemonInteractContext>(playerCtx) {
companion object {
val CODEC: Codec<PokemonInteractCriterion> = RecordCodecBuilder.create { it.group(
EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player").forGetter(PokemonInteractCriterion::playerCtx),
Codec.STRING.optionalFieldOf("type").forGetter(PokemonInteractCriterion::type),
Codec.STRING.optionalFieldOf("item").forGetter(PokemonInteractCriterion::item)
Codec.STRING.optionalFieldOf("type", "any").forGetter(PokemonInteractCriterion::type),
Codec.STRING.optionalFieldOf("item", "any").forGetter(PokemonInteractCriterion::item)
).apply(it, ::PokemonInteractCriterion) }
}
override fun matches(player: ServerPlayer, context: PokemonInteractContext): Boolean {
val otherType = this.type.orElse("any")
val otherItem = this.item.orElse("any")
return (context.type == otherType.asIdentifierDefaultingNamespace() || otherType == "any") && (context.type == otherItem.asIdentifierDefaultingNamespace() || otherItem == "any")
return (context.type == this.type.asIdentifierDefaultingNamespace() || this.type == "any") && (context.item == this.item.asIdentifierDefaultingNamespace() || this.item == "any")
}
}
@@ -0,0 +1,39 @@
/*
* 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.mojang.serialization.Codec
import com.mojang.serialization.codecs.RecordCodecBuilder
import java.util.Optional
import net.minecraft.advancements.critereon.ContextAwarePredicate
import net.minecraft.advancements.critereon.EntityPredicate
import net.minecraft.server.level.ServerPlayer
import net.minecraft.resources.ResourceLocation
class ReelInPokemonContext(val pokemonId : ResourceLocation, val baitId: ResourceLocation)
class ReelInPokemonCriterionCondition(
playerCtx: Optional<ContextAwarePredicate>,
val pokemonId: String,
val baitId: String
) : SimpleCriterionCondition<ReelInPokemonContext>(playerCtx) {
companion object {
val CODEC: Codec<ReelInPokemonCriterionCondition> = RecordCodecBuilder.create { it.group(
EntityPredicate.ADVANCEMENT_CODEC.optionalFieldOf("player").forGetter { it.playerCtx },
Codec.STRING.optionalFieldOf("pokemonId", "any").forGetter { it.pokemonId },
Codec.STRING.optionalFieldOf("baitId", "empty_bait").forGetter { it.baitId }
).apply(it, { playerCtx, pokemonId, baitId -> ReelInPokemonCriterionCondition(playerCtx, pokemonId, baitId.ifEmpty { "empty_bait" }) }) }
}
override fun matches(player: ServerPlayer, context: ReelInPokemonContext): Boolean {
return (context.pokemonId == this.pokemonId.asIdentifierDefaultingNamespace() || this.pokemonId == "any") && (context.baitId == this.baitId.asIdentifierDefaultingNamespace() || this.baitId == "empty_bait")
}
}
@@ -80,7 +80,7 @@ class TradePokemonCriterion(
receivedHeldItem = json.get("received_held_item")?.asString ?: "minecraft:air"
}
override fun matches(player: ServerPlayerEntity, context: TradePokemonContext): Boolean {
override fun matches(player: ServerPlayer, context: TradePokemonContext): Boolean {
val heldItem1 = context.traded.heldItem().item.registryEntry.ResourceKey().value
val heldItem2 = context.received.heldItem().item.registryEntry.ResourceKey().value
return (context.traded.species.resourceIdentifier == traded.asIdentifierDefaultingNamespace() || traded == "any") &&
@@ -26,7 +26,7 @@ import net.minecraft.nbt.NbtOps
* @author Qu
* @since January 9th, 2022
*/
open class Ability internal constructor(var template: AbilityTemplate, forced: Boolean) {
open class Ability internal constructor(var template: AbilityTemplate, forced: Boolean, priority: Priority) {
val name: String
get() = template.name
@@ -57,7 +57,7 @@ open class Ability internal constructor(var template: AbilityTemplate, forced: B
*
* @see [Pokemon.updateAbility].
*/
var priority = Priority.LOWEST
var priority = priority
internal set
@Deprecated("Please use the Codec instead", ReplaceWith("Ability.CODEC"))
@@ -111,7 +111,7 @@ open class Ability internal constructor(var template: AbilityTemplate, forced: B
Codec.BOOL.optionalFieldOf(DataKeys.POKEMON_ABILITY_FORCED, false).forGetter(Ability::forced),
Codec.INT.optionalFieldOf(DataKeys.POKEMON_ABILITY_INDEX, -1).forGetter(Ability::index),
Priority.CODEC.optionalFieldOf(DataKeys.POKEMON_ABILITY_PRIORITY, Priority.LOWEST).forGetter(Ability::priority)
).apply(it) { template, forced, index, priority -> Ability(template, forced).apply {
).apply(it) { template, forced, index, priority -> Ability(template, forced, priority).apply {
this.index = index
this.priority = priority
} }
@@ -23,7 +23,7 @@ import com.cobblemon.mod.common.pokemon.Species
*/
open class AbilityPool : PrioritizedList<PotentialAbility>() {
fun select(species: Species, aspects: Set<String>): Pair<Ability, Priority> {
for (priority in Priority.values()) {
for (priority in Priority.entries) {
val potentialAbilities = priorityMap[priority]?.filter { it.isSatisfiedBy(aspects) } ?: continue
if (potentialAbilities.isNotEmpty()) {
return potentialAbilities.random().template.create() to priority
@@ -31,7 +31,7 @@ open class AbilityPool : PrioritizedList<PotentialAbility>() {
}
LOGGER.error("Unable to select an ability from the pool for $species and aspects: ${aspects.joinToString()}")
LOGGER.error("Usually this happens when a client is doing logic it shouldn't. Please show this to the Cobblemon developers!")
LOGGER.error("Please show this to the Cobblemon developers!")
Exception().printStackTrace()
return Abilities.first().create() to Priority.LOWEST
}
@@ -8,6 +8,7 @@
package com.cobblemon.mod.common.api.abilities
import com.cobblemon.mod.common.api.Priority
import com.cobblemon.mod.common.util.codec.CodecUtils
import com.google.gson.JsonObject
import com.mojang.serialization.Codec
@@ -21,14 +22,14 @@ import net.minecraft.nbt.CompoundTag
*/
class AbilityTemplate(
val name: String = "",
var builder: (AbilityTemplate, forced: Boolean) -> Ability = { template, forced -> Ability(template, forced) },
var builder: (AbilityTemplate, forced: Boolean, priority: Priority) -> Ability = { template, forced, priority -> Ability(template, forced, priority) },
val displayName: String = "cobblemon.ability.$name",
val description: String = "cobblemon.ability.$name.desc"
) {
/**
* Returns the Ability or if applicable the extension connected to this template
*/
fun create(forced: Boolean = false) = builder(this, forced)
fun create(forced: Boolean = false, priority: Priority = Priority.LOWEST) = builder(this, forced, priority)
/**
* Returns the Ability and loads the given NBT Tag into it.
@@ -0,0 +1,28 @@
/*
* 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.ai
import com.google.common.collect.ImmutableList
import com.mojang.datafixers.util.Pair
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.Mob
import net.minecraft.world.entity.ai.behavior.BehaviorControl
import net.minecraft.world.entity.schedule.Activity
class ActivityConfigurationContext(val activity: Activity) {
val tasks = mutableListOf<Pair<Int, BehaviorControl<in LivingEntity>>>()
fun addTasks(weight: Int, vararg tasks: BehaviorControl<in LivingEntity>) {
this.tasks.addAll(tasks.map { Pair.of(weight, it) })
}
fun apply(entity: LivingEntity) {
entity.brain.addActivity(activity, ImmutableList.copyOf(tasks))
}
}
@@ -0,0 +1,40 @@
/*
* 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.ai
import com.cobblemon.mod.common.api.ai.config.BrainConfig
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.schedule.Activity
import net.minecraft.world.entity.schedule.Schedule
class BrainConfigurationContext {
var defaultActivity = Activity.IDLE
var coreActivities = setOf(Activity.CORE)
val activities = mutableListOf<ActivityConfigurationContext>()
val schedule = Schedule.EMPTY
fun getOrCreateActivity(activity: Activity): ActivityConfigurationContext {
return activities.firstOrNull { it.activity == activity } ?: ActivityConfigurationContext(activity).also(activities::add)
}
fun apply(entity: LivingEntity, brainConfigs: List<BrainConfig>) {
val brain = entity.brain
// Setup the brain config
brainConfigs.forEach { it.configure(entity, this) }
// Apply the brain config
activities.forEach { it.apply(entity) }
brain.setCoreActivities(coreActivities)
brain.setDefaultActivity(defaultActivity)
brain.schedule = schedule
brain.setActiveActivityIfPossible(defaultActivity)
}
}
@@ -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.api.ai
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.ai.behavior.BehaviorControl
class WrapperLivingEntityTask<T : LivingEntity>(val task: BehaviorControl<T>, val clazz: Class<T>) : BehaviorControl<LivingEntity> {
override fun tryStart(level: ServerLevel, entity: LivingEntity, gameTime: Long): Boolean {
if (clazz.isInstance(entity)) {
return task.tryStart(level, entity as T, gameTime)
} else {
return false
}
}
override fun debugString() = task.debugString()
override fun tickOrStop(level: ServerLevel, entity: LivingEntity, gameTime: Long) {
task.tickOrStop(level, entity as T, gameTime)
}
override fun getStatus() = task.status
override fun doStop(level: ServerLevel, entity: LivingEntity, gameTime: Long) = task.doStop(level, entity as T, gameTime)
}
@@ -0,0 +1,39 @@
/*
* 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.ai.config
import com.bedrockk.molang.runtime.MoLangRuntime
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.cobblemon.mod.common.api.ai.BrainConfigurationContext
import com.cobblemon.mod.common.api.ai.config.task.TaskConfig
import com.cobblemon.mod.common.api.molang.MoLangFunctions.setup
import com.cobblemon.mod.common.entity.PosableEntity
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.resolveBoolean
import com.cobblemon.mod.common.util.withQueryValue
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.schedule.Activity
class AddTasksToActivity : BrainConfig {
val activity = Activity.IDLE
val condition = "true".asExpressionLike()
val tasksByPriority = mutableMapOf<Int, List<TaskConfig>>()
override fun configure(entity: LivingEntity, brainConfigurationContext: BrainConfigurationContext) {
val runtime = MoLangRuntime().setup()
runtime.withQueryValue("entity", (entity as? PosableEntity)?.struct ?: QueryStruct(hashMapOf()))
if (!runtime.resolveBoolean(condition)) return
val activity = brainConfigurationContext.getOrCreateActivity(activity)
tasksByPriority.forEach { (priority, taskConfigs) ->
val tasks = taskConfigs.flatMap { it.createTasks(entity, brainConfigurationContext) }
activity.addTasks(priority, *tasks.toTypedArray())
}
}
}
@@ -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.ai.config
import com.bedrockk.molang.runtime.MoLangRuntime
import com.bedrockk.molang.runtime.struct.QueryStruct
import com.cobblemon.mod.common.Cobblemon
import com.cobblemon.mod.common.CobblemonBrainConfigs
import com.cobblemon.mod.common.api.ai.BrainConfigurationContext
import com.cobblemon.mod.common.api.molang.MoLangFunctions.setup
import com.cobblemon.mod.common.entity.PosableEntity
import com.cobblemon.mod.common.util.asExpressionLike
import com.cobblemon.mod.common.util.resolveBoolean
import com.cobblemon.mod.common.util.withQueryValue
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.entity.LivingEntity
class ApplyPresets : BrainConfig {
val condition = "true".asExpressionLike()
val presets = mutableListOf<ResourceLocation>()
override fun configure(entity: LivingEntity, brainConfigurationContext: BrainConfigurationContext) {
val runtime = MoLangRuntime().setup()
runtime.withQueryValue("entity", (entity as? PosableEntity)?.struct ?: QueryStruct(hashMapOf()))
if (!runtime.resolveBoolean(condition)) return
val presetConfigs = presets.flatMap { CobblemonBrainConfigs.presets[it] ?: return Cobblemon.LOGGER.warn("Preset $it not found") }
presetConfigs.forEach { it.configure(entity, brainConfigurationContext) }
}
}
@@ -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.ai.config
import com.cobblemon.mod.common.api.ai.BrainConfigurationContext
import net.minecraft.world.entity.LivingEntity
/**
* Something that contributes to the construction of an entity's brain. Implementations are expected to make
* their changes using the provided [BrainConfigurationContext] which helps stage the details of the entity's
* brain before locking into the highly immutable structure that Mojang uses.
*
* A brain config has access to the [LivingEntity] it's for but note that this is, in most cases, an extremely
* young version of the entity that is not fully initialized and might die if you try getting exotic with it.
*
* @see BrainConfigurationContext
* @author Hiroku
* @since October 13th, 2024
*/
interface BrainConfig {
companion object {
val types = mutableMapOf<String, Class<out BrainConfig>>(
"script" to ScriptBrainConfig::class.java,
"add_tasks_to_activity" to AddTasksToActivity::class.java,
"apply_presets" to ApplyPresets::class.java,
"set_default_activity" to SetDefaultActivity::class.java,
"set_core_activities" to SetCoreActivities::class.java
)
}
// fun encode(buffer: RegistryFriendlyByteBuf)
// fun decode(buffer: RegistryFriendlyByteBuf)
fun configure(entity: LivingEntity, brainConfigurationContext: BrainConfigurationContext)
}

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