Compare commits

...
Author SHA1 Message Date
Waldleufer fde8a03c5f more cleanup [skip-ci] 2024-06-18 19:31:29 +02:00
Waldleufer df273a0075 cleanup [skip-ci] 2024-06-18 19:25:39 +02:00
Hiroku f6124d7474 Merge branch 'initiate_battle_while_recalling_bugfix' into 'main'
Fixes issue #872

Closes #872

See merge request cable-mc/cobblemon!1072
2024-06-16 08:07:16 +00:00
Notepadccino a0300ccd18 Update CHANGELOG.md 2024-06-16 08:05:22 +00:00
notepadccino 486056d7f0 Fixes issue #872 2024-06-14 16:52:12 +02:00
Hiroku 03ca6a4396 Merge branch 'tmetcalfe89/fix-energy-root-reviving' into 'main'
fixed energy root reviving

See merge request cable-mc/cobblemon!1065
2024-06-14 04:13:20 +00:00
Hiroku b2d26abc4b Merge branch 'Fixes901' into 'main'
Fix For 901

Closes #901

See merge request cable-mc/cobblemon!1069
2024-06-14 00:32:08 +00:00
JazzMcNade ebb677cc9c Don't read the current hp until you've fully calculated the max hp 2024-06-09 14:53:28 -05:00
Licious f181aabb3c Merge branch 'fix-898' into 'main'
Fix lack of side check when instancing Pokemon on PokemonEntity

Closes #898

See merge request cable-mc/cobblemon!1068
2024-06-09 17:43:34 +00:00
Licious 4df5e987c7 Fix lack of side check when instancing Pokemon on PokemonEntity 2024-06-09 17:43:33 +00:00
tmetcalfe89 3026e5c66f changelog 2024-06-09 10:39:43 -07:00
tmetcalfe89 f2310d8979 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into tmetcalfe89/fix-energy-root-reviving 2024-06-09 10:39:22 -07:00
Hiroku 65971386f2 Merge branch 'Myslippy-main-patch-82434' into 'main'
Update CHANGELOG.md

See merge request cable-mc/cobblemon!1062
2024-06-08 21:27:17 +00:00
tmetcalfe89 5b52fe5479 fixed energy root reviving 2024-06-07 08:08:19 -07:00
Hiroku 13ca5871cb Merge branch 'corals_restoration_tank_bugfix' into 'main'
Fix issue #892

Closes #892

See merge request cable-mc/cobblemon!1064
2024-06-05 21:48:10 +00:00
notepadccino 54ba99a002 Fix issue #892
The #minecraft:corals tag seems to apply to blocks, not to items. For items you'd either need to trace back the tags of whichever block is placed by the item, or just specify the items one by one. I went with the simpler option, but if needed the former solution can always be implemented.
2024-06-05 19:11:08 +02:00
Myslippy b40f47b00d Update CHANGELOG.md 2024-06-03 03:00:34 +00:00
Hiroku 800d348611 Merge branch 'mushroom_restoration_fabric_fix' into 'main'
Fix #890

Closes #890

See merge request cable-mc/cobblemon!1059
2024-06-03 00:04:49 +00:00
Hiroku d4dd48b3ff Merge branch 'implement_pokemon' into 'main'
5 new cries + bugfix

See merge request cable-mc/cobblemon!1061
2024-06-02 23:31:48 +00:00
Sterrezo 89d6bb2356 Merge branch 'main' into implement_pokemon 2024-06-02 21:48:03 +02:00
notepadccino 3a65425015 Fix mushroom tag issue
the #minecraft:mushrooms tag is a forge thing, it doesn't exist in fabric.
However I've tested out corals as well and they don't work either which is odd, since they should have a #minecraft:corals tag
2024-06-02 18:21:47 +02:00
Apion fad10da89f Merge branch 'forcespawn_cmd_fix' into 'main'
Fixes #877

Closes #877

See merge request cable-mc/cobblemon!1056
2024-06-01 15:19:06 +00:00
notepadccino 055ce8168c Fixes #877 2024-06-01 15:42:21 +02:00
Hiroku e4da05fd50 we are snapshotting thx 2024-06-01 00:24:30 +00:00
Paul 3a17a88ea2 Changelog stuff [skip-ci] 2024-06-01 09:38:50 +10:00
Hiroku 09abf30421 Merge branch 'no-middle-stage-ha-fix' into 'main'
Hidden Ability slot for cocoons.

See merge request cable-mc/cobblemon!1020
2024-05-31 23:38:18 +00:00
Hiroku 06ea4b4cec Merge branch 'berry-changes' into 'main'
Berry changes

See merge request cable-mc/cobblemon!1030
2024-05-31 23:35:59 +00:00
Hiroku 8799308800 Merge branch 'Frank's-Coding-Farm' into 'main'
Enabled Seafloor spawns & Disabled spawning in slabs

See merge request cable-mc/cobblemon!1040
2024-05-31 23:35:24 +00:00
Frank The FarmerandHiroku d727fde5b3 Enabled Seafloor spawns & Disabled spawning in slabs 2024-05-31 23:35:24 +00:00
Hiroku ce5e93b552 Merge branch 'main' into 'main'
Fixes #878

Closes #878

See merge request cable-mc/cobblemon!1052
2024-05-31 23:34:39 +00:00
Hiroku 77c0138c09 Merge branch 'get-sticked' into 'main'
Leeks are Sticks (visually)

See merge request cable-mc/cobblemon!1054
2024-05-31 23:34:25 +00:00
Sterrezo 0ded29dcad Added cries to Timburr and Golett lines. Updated the changelog with a recent Cubone sound fix. 2024-05-31 14:06:02 +02:00
Sterrezo 62fae979eb Merge branch 'main' into implement_pokemon 2024-05-31 13:40:42 +02:00
dhi_holo dc727fe56d Leeks are Sticks (visually)
Medicinal and Roasted Leeks now reference a new display setting, making them held like sticks/rods.

That's it, that's the entire change, it's a small parity thing, this is what I like doing, okay.
2024-05-31 10:19:06 +10:00
Apion 4db36ef6fa Merge branch 'tmetcalfe89/abstract-shedding' into 'main'
abstracted shedinja logic for datapackability

See merge request cable-mc/cobblemon!1014
2024-05-30 04:02:21 +00:00
Timothy MetcalfeandApion e350d920b5 abstracted shedinja logic for datapackability 2024-05-30 04:02:21 +00:00
Apion 2a0ae1a466 Merge branch 'tumbled-bricks' into 'main'
Tumbled Blocks and Bricks

See merge request cable-mc/cobblemon!1051
2024-05-30 02:58:57 +00:00
dhi_holoandApion 3b8f7f23a3 Tumbled Blocks and Bricks 2024-05-30 02:58:57 +00:00
apion 72cf161f0d Merge branch 'refs/heads/main' into berry-changes
# Conflicts:
#	CHANGELOG.md
2024-05-29 22:24:12 -04:00
apion fe3d8d3185 Changed CHANGELOG.md merge strategy 2024-05-29 22:06:53 -04:00
apion d04ed7a519 Add empty headers to CHANGELOG.md 2024-05-29 21:51:57 -04:00
Apion e6e9137cb5 Merge branch 'AmauraFetusClippingFix' into 'main'
Amaura fetus clipping fix

Closes #873

See merge request cable-mc/cobblemon!1053
2024-05-30 00:49:20 +00:00
JazzMcNade 78f25b3f8b Corrected typo in changelog 2024-05-28 17:25:08 -05:00
JazzMcNade 631293e0cd UpdatedChangelog 2024-05-28 17:10:20 -05:00
JazzMcNade 2865b8140a Scaled down Amaura's fetus model to avoid clipping through the tank while animating 2024-05-28 17:07:46 -05:00
notepadccino be34bc4c74 Fixes #878 2024-05-28 19:12:21 +02:00
Sterrezo bae26162dd Update cubone.animation.json 2024-05-28 12:09:35 +02:00
apion 30070d35f6 Fully moved mulch into block entity 2024-05-26 11:23:47 -04:00
apion 8e3435479a Start trying to move mulch into block entity 2024-05-26 09:39:57 -04:00
FrankTheFarmer ad7a881fdc Changelog 2024-05-26 20:20:36 +10:00
FrankTheFarmer f9a2b5cc9c Fixed Budew and Lechonk sliding if they walked for too long 2024-05-26 20:17:47 +10:00
FrankTheFarmer e2cc006c7c Fixed Shedinja T posing in battle 2024-05-26 20:17:20 +10:00
FrankTheFarmer 13240d28ea Merge branch 'main' into implement_pokemon 2024-05-26 20:00:04 +10:00
FrankTheFarmer 5324b7b19e Merge branch 'main' into implement_pokemon
# Conflicts:
#	CHANGELOG.md
#	common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen3/WailordModel.kt
2024-05-24 19:37:33 +10:00
FrankTheFarmer 5bddc31cbf Seedot line hitbox fixes 2024-05-24 19:30:11 +10:00
FrankTheFarmer 72bc2221af Actually stopped Wailord in the chatbox for real this time 2024-05-24 18:56:27 +10:00
apion 37433aa0c5 CHANGELOG.md 2024-05-24 00:34:04 -04:00
apion 1a1cedb3aa Regenned berry data, added bone meal chance 2024-05-23 23:53:42 -04:00
apion b82287f258 Vera berry changes 2024-05-23 09:02:24 -04:00
FrankTheFarmer 9099cb4b5d Merge branch 'main' into implement_pokemon 2024-05-23 22:37:47 +10:00
FrankTheFarmer 99e0b7d995 Smeargle Mentioned 2024-05-23 22:34:58 +10:00
FrankTheFarmer 372f44538b Smeagol 2024-05-23 15:47:13 +10:00
FrankTheFarmer 0bec3ac851 Merge branch 'main' into implement_pokemon 2024-05-23 07:21:49 +10:00
apion c884c556cb Remove binding soil 2024-05-22 03:37:04 -04:00
apion 9a8b481fa2 Changed berry grow timers per Vera request 2024-05-22 03:26:09 -04:00
apion e2fb31fad3 Merge branch 'refs/heads/main' into berry-changes 2024-05-22 02:39:51 -04:00
FrankTheFarmer 17b8dd3532 Wailord will now stop forcing its head into the chatbox 2024-05-22 09:53:31 +10:00
FrankTheFarmer 4cf8a19d43 Tyrantrum will now stop forcing its head into the chatbox 2024-05-22 09:34:12 +10:00
FrankTheFarmer f205e7f29e CHANGELOG 2024-05-21 10:18:44 +10:00
FrankTheFarmer cec031595f Merge branch 'main' into implement_pokemon 2024-05-21 10:14:21 +10:00
FrankTheFarmer af007dad17 Added missing Chingling and Chimecho spawns near bells 2024-05-21 09:54:39 +10:00
FrankTheFarmer 8490f3a923 Fixed Cyndaquil's flame clipping when it wasn't ignited 2024-05-20 08:17:02 +10:00
FrankTheFarmer 9bf6200163 Merge branch 'main' into implement_pokemon 2024-05-20 08:11:19 +10:00
Ludichat 7e43a7424e Updated CHANGELOG.md. 2024-05-17 08:26:51 +02:00
Ludichat b718daf0f1 Gives a Hidden Ability slot to middle stage evolution and Ferroseed with a single ability. 2024-05-16 21:49:34 +02:00
apion a3122812e4 Added color to all sprouts 2024-05-15 07:47:43 -04:00
apion 19698fc0ff Merge branch 'refs/heads/main' into berry-changes 2024-05-14 16:36:34 -04:00
FrankTheFarmer 4482a4f072 Forgot to add Mismagius to model updates 2024-05-09 10:00:05 +10:00
FrankTheFarmer a92f37c740 Added Krabby's missing temporary-cry animation 2024-05-09 09:57:26 +10:00
FrankTheFarmer 4677dda922 Limited Mismagius' yaw range to prevent some clipping 2024-05-09 09:56:29 +10:00
FrankTheFarmer 81f7320e4a Mismagius asset updates 2024-05-09 09:56:01 +10:00
FrankTheFarmer 3c9cf42da4 Fixed Flabebe's broken species name. Apparently its Flabébé and not Flabébé??? 2024-05-06 08:39:34 +10:00
FrankTheFarmer 620ed73fe9 Fixed Klefki t pose when sleeping 2024-05-06 08:38:23 +10:00
FrankTheFarmer 7d09b7e2fe Fixed a broken texture on Elgyem 2024-05-04 18:48:08 +10:00
FrankTheFarmer 656cff2ab3 Made Galarian Zigzagoon use Hoenn Zigzagoon's shoulder animation 2024-05-04 18:16:59 +10:00
Tyzillion 1d8462fd63 Implemented better Krabby bubble blowing quirk animation. 2024-05-03 18:34:23 -04:00
Tyzillion e417db6a8d Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-05-03 16:39:08 -04:00
MoeBoy76 16d0d3b7e1 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon
# Conflicts:
#	CHANGELOG.md
#	common/src/main/resources/data/cobblemon/species/generation1/exeggcute.json
#	common/src/main/resources/data/cobblemon/species/generation1/pikachu.json
#	common/src/main/resources/data/cobblemon/species/generation2/cyndaquil.json
#	common/src/main/resources/data/cobblemon/species/generation2/quilava.json
#	common/src/main/resources/data/cobblemon/species/generation5/dewott.json
#	common/src/main/resources/data/cobblemon/species/generation5/oshawott.json
#	common/src/main/resources/data/cobblemon/species/generation7/dartrix.json
#	common/src/main/resources/data/cobblemon/species/generation7/rowlet.json
2024-05-02 15:49:13 +10:00
MoeBoy76 dbedc58dd9 changelog conflict fix [skip-ci] 2024-05-02 15:43:54 +10:00
FrankTheFarmer c0ea565967 Updated Changelog with recent changes 2024-05-02 14:26:10 +10:00
FrankTheFarmer 7e92f5f314 Updated Spewpa evolution and Vivillon spawn biome tags 2024-05-02 14:25:21 +10:00
FrankTheFarmer df3ed93032 Added anticondition structure requirements to evolutions 2024-05-02 14:24:45 +10:00
FrankTheFarmer 2335fd388e Updated and added time ranges 2024-05-02 14:22:26 +10:00
FrankTheFarmer e152cc9fd0 Updated Changelog with recent work 2024-05-01 21:31:00 +10:00
FrankTheFarmer 3f7e2bef40 Updated Spewpa evolutions and made sure they work. I hate evolution™ 2024-05-01 21:30:16 +10:00
FrankTheFarmer 25927c6ebe Updated Vivillon biome tags to new format and added 2 more 2024-05-01 21:28:40 +10:00
FrankTheFarmer 2f18d6b05f Created new folder for all regional evolution biome tags and moved region bias ones there 2024-05-01 20:34:48 +10:00
FrankTheFarmer 2600e23233 Removed sliggoos cross region evolutions 2024-05-01 20:33:26 +10:00
FrankTheFarmer 5c5c72d800 Updated Goomy to use new evolution biome tags for evolution 2024-05-01 20:32:15 +10:00
FrankTheFarmer 2c812344f9 Updated Petilil evo biomes and added priority evos to save a sun stone hopefully 2024-05-01 20:24:33 +10:00
FrankTheFarmer 37b4577230 Updated Hisui Starter evos to use the updated evolution biome tags 2024-05-01 19:50:51 +10:00
FrankTheFarmer fcf64b00bf Updated Pikachu and Exeggcute evolutions to prioritize cross region evos if applicable 2024-05-01 19:40:48 +10:00
FrankTheFarmer 02b8cd81a0 Updated Conkeldurr with the correct animation files 2024-04-30 21:38:54 +10:00
FrankTheFarmer def1b44f08 Fixed Conkeldurr holding too much concrete during sleep animation 2024-04-30 17:02:01 +10:00
FrankTheFarmer b28f915af9 Selected Hisui starters will now come in ancient poke balls 2024-04-30 15:07:59 +10:00
FrankTheFarmer 29ce8b584a Stopped the zoroarks cry animations from looping 2024-04-29 19:22:18 +10:00
FrankTheFarmer 84f3a44109 Found Sudowoodo and Bonsly. Hiding since July 2023 2024-04-29 15:35:20 +10:00
FrankTheFarmer 08a58eee8a Prevented and preserved Cubone's evolution to Alolan Marowak 2024-04-29 08:55:05 +10:00
FrankTheFarmer c10f48090c Added dried kelp blocks, melon, vines, and sea pickles to list of organic materials for the fossil machine 2024-04-28 11:07:16 +10:00
FrankTheFarmer 9c0e5e487a Reverted Snorlax's resize 2024-04-26 20:57:20 +10:00
FrankTheFarmer 95f2bbbf15 If for some reason you are above an Aurorus, it will no longer break its neck trying to look at you. 2024-04-26 20:37:53 +10:00
FrankTheFarmer 864d184cd9 Scaled drifloon down a bit 2024-04-26 17:53:56 +10:00
FrankTheFarmer a2256f6208 Lurantis animation file update 2024-04-26 16:44:14 +10:00
FrankTheFarmer 945d556b43 Fixed Cubone holding its bone humerusly 2024-04-26 16:18:14 +10:00
FrankTheFarmer f0def2e883 Fixed zubat's shoulder animations 2024-04-26 13:42:21 +10:00
FrankTheFarmer 79c644dad0 So the 10 and 11 bug can be fixed with underscores 👀 2024-04-26 13:37:39 +10:00
FrankTheFarmer 87e41bdb89 Fixed Kabuto animation but on implementation branch 2024-04-25 22:22:18 +10:00
FrankTheFarmer 8a8505d816 3/4 of the Galar fossils can now look at the player. 2024-04-25 21:04:04 +10:00
FrankTheFarmer 1a19c51748 Fixed Slowpoke spawning everywhere 2024-04-25 17:16:37 +10:00
FrankTheFarmer 8a66ab9235 Removed unimplemented cries from sounds json 2024-04-25 16:41:11 +10:00
Paul ee50361555 Merge remote-tracking branch 'origin/main' into implement_pokemon
# Conflicts:
#	CHANGELOG.md
2024-04-25 11:47:23 +10:00
Paul d3631f1436 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-25 10:28:21 +10:00
FrankTheFarmer 79e1f9143c Fixed Wooloo's blink and leg but in game 2024-04-25 10:07:09 +10:00
FrankTheFarmer bef0b2fb87 Updated regional bias evolution data to hopefully work as intended. I hate evolution. 2024-04-23 20:49:22 +10:00
FrankTheFarmer d7bbc05af8 Created biome tags for the regional bias evolutions. They're specific to each form's spawn data 2024-04-23 20:47:27 +10:00
FrankTheFarmer 7ca3ab5e30 Updated portrait data for the Samurotts 2024-04-23 20:43:44 +10:00
FrankTheFarmer 1bbb1201c8 Chansey animation fixes. Cry implemented but no sound file yet 2024-04-23 18:20:26 +10:00
FrankTheFarmer 8ed4fee8af Added more visual distinction for Hisui Bias Quilava in the evolution menu. Plus Cyndaquil textures 2024-04-23 17:18:07 +10:00
FrankTheFarmer a3dacc2c3d Forgot about the changelog lol 2024-04-22 20:50:03 +10:00
FrankTheFarmer c265f73308 Fixed eyes on the faints of Hitmonlee and Phantump 2024-04-22 20:40:12 +10:00
FrankTheFarmer 670dedc0e2 Grovyle shiny texture fixes 2024-04-22 14:01:59 +10:00
FrankTheFarmer 6e19ee6059 Tricko remodel 2024-04-22 09:05:52 +10:00
FrankTheFarmer a865d59b99 changelog update 2024-04-21 17:27:38 +10:00
FrankTheFarmer 8896440451 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-21 17:09:04 +10:00
FrankTheFarmer 39b27a8c17 Quick and dirty fixes for Pikachu and Exeggcute evolution data. Added new biome tag for their evolution requirements. 2024-04-21 16:41:50 +10:00
Sterrezo a0eb614f2a Kabuto now does the funny noise. Fixed Lucario's cry missing
I didn't know what to do with Kabuto's animation, ended up using a placeholder. Lucario had an incorrectly named keyframe.
2024-04-15 23:26:44 +02:00
FrankTheFarmer a6e4aeb321 The Doduo line will now bite less 2024-04-15 15:57:48 +10:00
FrankTheFarmer bb796921b5 Changelog updates. Removed duplicates and added list of new shoulder mounts 2024-04-15 10:30:11 +10:00
FrankTheFarmer 9f6f764aa1 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-15 07:59:57 +10:00
FrankTheFarmer f115a87b66 Roaming Gimmighoul can now evolve 2024-04-15 07:59:31 +10:00
Waldleufer 77c880ff2d fix: cry script - relaxing handling of all Forms, skipping non-regional forms [skip-ci] 2024-04-14 09:29:01 +02:00
FrankTheFarmer 16c64b9d8e Updated behaviour for Armaldo, Carracosta, Tirtouga, and Wimpod 2024-04-14 12:26:45 +10:00
FrankTheFarmer caeb45e9e1 Tyrantrum line kotlin poser placed in the proper generation. 2024-04-14 12:23:03 +10:00
FrankTheFarmer 6e341438e9 Goomy line updates and Steenee scale update 2024-04-14 11:38:17 +10:00
Tyzillion 7407483498 Updated Branch with latest main. Added Lucario aura in battle. 2024-04-13 16:34:44 -04:00
Tyzillion 020c728004 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-13 14:55:15 -04:00
Sterrezo 7125987c98 Fixed Hisuian Lilligant's cry missing
Asset was incorrectly named
2024-04-13 20:33:25 +02:00
Waldleufer 6448c4472e fix: cry script - handling all Forms, skipping non-regional forms [skip-ci] 2024-04-13 20:11:26 +02:00
Waldleufer eedac70d13 fix: cry script - sprinkling in some magic [skip-ci] 2024-04-13 19:07:48 +02:00
Sterrezo 025e09cd12 Couple cry fixes
Updated KrabbyModel.kt. Fixed missing or incorrect sound effect keyframes in animation.json files.
2024-04-13 18:54:55 +02:00
Waldleufer 4d2cfb63ea fix: cry script - warn about files not in the right locations [skip-ci] 2024-04-13 18:52:27 +02:00
Waldleufer 40794acdd5 fix: cry script - properly check elaborate cries [skip-ci] 2024-04-13 18:25:25 +02:00
Sterrezo 82f8855725 Fixed missing Grovyle and Sceptile cries missing 2024-04-13 17:57:21 +02:00
Waldleufer 5abcdbb837 fix: cry script - new way to implement cries does not require an import [skip-ci] 2024-04-13 17:48:01 +02:00
Waldleufer 2f817a7f9a fix: cry script - ignore commented out lines [skip-ci] 2024-04-13 17:33:35 +02:00
Waldleufer 67767fc53a fix: cry script - only log warnings for pokemon marked as "In-Game" [skip-ci] 2024-04-13 17:16:34 +02:00
Tyzillion 43cd4b8403 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-04-13 02:50:14 -04:00
Tyzillion 2660d73bb6 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-13 02:49:33 -04:00
FrankTheFarmerReal faa7ca5d19 Revoking Hisuian Visas 2024-04-13 11:48:17 +10:00
Tyzillion 0fcbe51d97 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-04-12 11:16:59 -04:00
Tyzillion b23ad62f99 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-12 11:16:44 -04:00
Sterrezo 3ca4ce8f80 Implemented 13 new cries, more changelog updates with previously undocumented cries 2024-04-12 16:47:25 +02:00
Sterrezo 446a994195 Fixed a typo in komala.animation.json 2024-04-12 16:14:12 +02:00
Sterrezo 60e7ac828d Implemented more cries, updated changelog
Added cries for Goomy, Sliggoo, Goodra, Hisui Bias Goomy, Hisuian Sliggoo, Hisuian Goodra, Klefki. Fixed Arcanine's cry misisng. Updated changelog with previously undocumented cries.
2024-04-12 13:10:18 +02:00
Sterrezo a870effd3b Added a keyframe with a cry for Lapras 2024-04-12 10:27:53 +02:00
FrankTheFarmerReal 236237a170 The simple blink of a Bouffalant shall no longer crash your game 2024-04-12 17:00:37 +10:00
FrankTheFarmerReal 0fc67ba042 Updated Goomy's hisui bias assets and added missing oinkologne cry files. 2024-04-12 13:32:48 +10:00
FrankTheFarmerReal 997ab29d91 Added a couple cries 2024-04-12 11:29:01 +10:00
FrankTheFarmerReal e74f54f1d0 Implemented Kotlin posers for Hisuian starters unique cries
Deleted Datrix
2024-04-12 00:05:12 +10:00
Sterrezo 081e368551 Merge branch 'implement_pokemon' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-04-11 14:04:44 +02:00
Sterrezo 1538f58a4a Added audio assets for previously added cries 2024-04-11 14:04:16 +02:00
FrankTheFarmerReal e5103e5d03 Separated Oinkologne models to allow for separate cries 2024-04-11 21:54:01 +10:00
FrankTheFarmerReal 1cea15c9e5 Fixed Milcery being unable to evolve properly 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 3395fe0140 Hisuian Samurott texture fixed 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 2eff8d14eb Fixed Happiny being unable to evolve 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal ed3cdf9b75 Limited the Typhlosions and Cyndaquils ability to look up to prevent bone dislocation in certain scenarios 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 6e1ba0599f Corrected egg groups for Toedscool line 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 497d5ce39b Basculegion behaviour updated. Should stop drowning. 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 660de3ea03 Dusknoir animations updated 2024-04-11 21:49:58 +10:00
FrankTheFarmerReal 5ab3d7b493 Updated Ekans texture 2024-04-11 21:49:57 +10:00
FrankTheFarmerReal 2ce0069484 Closed Scyther's mouth after it cries 2024-04-11 21:49:57 +10:00
Sterrezo d87fa57c95 Implemented a bunch of cries
Woobat, Swoobat, Lilligant, Hisuian Lilligant, Basculin, Klink (Deleted a redundant animation file as well), Klang, Klinklang, Litwick, Lampent, Chandelure, Cubchoo, Bouffalant, Larvesta, Volcarona, Fomanting, Lurantis, Gossifleur, Eldegoss, Stonjourner, Basculegion, Sneasler, Overqwil, Oinkologne
2024-04-11 13:40:36 +02:00
FrankTheFarmerReal 69947b0b32 Fixed Flabebe line T pose when sleeping 2024-04-11 09:01:02 +10:00
Tyzillion f4c3f9ae04 Merge branch 'main' of https://gitlab.com/cable-mc/cobblemon into implement_pokemon 2024-04-10 09:34:02 -04:00
FrankTheFarmerReal 04e1a6b41c Removed duplicate entry from changelog 2024-04-10 18:13:26 +10:00
FrankTheFarmerReal 6ae2adb2d0 Stopped Pumpkaboo's cry from looping 2024-04-10 17:12:44 +10:00
FrankTheFarmerReal 0bf6932fe5 Dusknoir's animations are now about 20 degrees cooler™ 2024-04-10 09:59:27 +10:00
FrankTheFarmerReal 71382a3bd1 Merge remote-tracking branch 'origin/implement_pokemon' into implement_pokemon 2024-04-09 10:27:14 +10:00
FrankTheFarmerReal 0f4f29518b Placeholder Volcarona animations 2024-04-09 10:26:37 +10:00
Sterrezo 8aeeece0a3 Fixed missing cries, updated the changelog.
Fixed missing audio files, sound effect keyframes and model.kt files. Partially updated the changelog.
2024-04-08 18:55:58 +02:00
Paul 850b418c80 Improve surface-swimmers behaviour when submerged 2024-04-08 22:51:04 +10:00
FrankTheFarmerReal 42af2898b2 Hitbox fixes and Lapras placeholder swim animation 2024-04-08 18:23:01 +10:00
apion 743da2817b Added rooted soil 2024-02-27 06:07:24 -05:00
apion ebdf69f496 Rebuilt blockstate jsons 2024-02-27 05:57:41 -05:00
apion 995364c960 Texture updates 2024-02-23 19:53:27 -05:00
apion 289b2ddc7b Berries now stick out of the ground when initially planted 2024-02-23 19:08:03 -05:00
765 changed files with 28179 additions and 1868 deletions
+1
View File
@@ -3,3 +3,4 @@
# are changed when only line endings change.
src/generated/**/.cache/cache text eol=lf
src/generated/**/*.json text eol=lf
CHANGELOG.md merge=union
+31 -1
View File
@@ -1,5 +1,35 @@
# Changelog
## [1.5.3](#1-5-3)
### Fixes
- Scaled down Amaura's fetus model to avoid clipping through the tank while animating
- Added Polished Tumblestone and Tumblestone Brick block sets from Tumblestone, Black Tumblestone, and Sky Tumblestone.
- Fixed Cubone's cry not having a sound.
- Fixed the Seafloor spawning context not being a usable context.
- Fixed Pokemon spawning in non-full blocks like slabs.
- Fixed Gilded Chests not dropping the chest itself when broken, only the contents.
- Fixed Pokémon losing their Hidden Ability through evolution if the middle stage did not have a Hidden Ability.
- Fixed Crumbling Arch not blending in with the world.
- Fixed Energy Root applying being usable on a fainted Pokemon.
- Fixed Pokémon entity not spawning when starting a battle while recalling said Pokémon
### Additions
- Added extra visuals to early berry growth stages
### Added cries to the following Pokémon
- Timburr, Gurdurr, Conkeldurr
- Golett, Golurk
### Changes
- Altered the item model for Medicinal Leeks and Roasted Leeks to be held like sticks and other rod items.
- Adjusted some berry balance values like yield and growth times
- Changes to mulch buffs/durations
### Developer
### Data Pack & Resource Pack Creators
- Added support for "shedders" similar to Shedinja's evolution logic.
## [1.5.2 (May 27th, 2024)](#1-5-2)
### Fixes
- Fixed Wooloo and Dubwool dyeing making your game start dying. Only if you do it on a server.
@@ -83,7 +113,7 @@
- Fixed a bunch of spam during world generation.
- Fixed a bug in which throwing a Poké Ball at a player owned Pokémon with the ability Illusion would reveal its true species. Hilarious meta strategy.
- Fixed root-part animations not working for JSON posed Pokémon. You didn't notice this but if we didn't fix this in this update then if you use Quick Attack a lot you'd have seen a whole lot of [this](https://cdn.discordapp.com/attachments/1076993968803434627/1242660506783715369/Minecraft__1.20.1_-_Singleplayer_2024-05-21_22-08-17.mp4?ex=66549408&is=66534288&hm=ff95ee293eb15634fd63e6546534ea279540a1c892605e8d561593ca2c5600c5&) which is damn funny but very unintended.
### Developer
- Changed SpawnAction#complete to return a nullable generic R (the spawn action result) instead of a boolean. Provides more information this way.
- Added an event that fires when a fossil is revived, with or without a player.
@@ -371,36 +371,6 @@ object Cobblemon {
BATTLE_VICTORY.subscribe { AdvancementHandler.onWinBattle(it) }
EVOLUTION_COMPLETE.subscribe(Priority.LOWEST) { event ->
AdvancementHandler.onEvolve(event)
val pokemon = event.pokemon
val ninjaskIdentifier = cobblemonResource("ninjask")
// Ensure the config option is enabled and that the result was a ninjask and that shedinja exists
if (this.config.ninjaskCreatesShedinja && pokemon.species.resourceIdentifier == ninjaskIdentifier && PokemonSpecies.getByIdentifier(Pokemon.SHEDINJA) != null) {
val player = pokemon.getOwnerPlayer() ?: return@subscribe
if (player.isCreative || player.inventory.containsAny { it.item is PokeBallItem }) {
var pokeball = Items.AIR
player.inventory.combinedInventory.forEach {
it.forEach {
itemStack -> if (itemStack.item is PokeBallItem && pokeball == Items.AIR) {
pokeball = itemStack.item as PokeBallItem
}
}
}
if (!player.isCreative) {
player.inventory.removeAmountIf(1) { it.item is PokeBallItem }
}
if (pokeball == Items.AIR) {
pokeball = CobblemonItems.POKE_BALL
}
val properties = event.evolution.result.copy()
properties.species = Pokemon.SHEDINJA.toString()
val product = pokemon.clone()
product.removeHeldItem()
properties.apply(product)
product.caughtBall = (pokeball as PokeBallItem).pokeBall
pokemon.storeCoordinates.get()?.store?.add(product)
CobblemonCriteria.EVOLVE_POKEMON.trigger(player, EvolvePokemonContext(event.pokemon.preEvolution!!.species.resourceIdentifier, product.species.resourceIdentifier, playerData.get(player).advancementData.totalEvolvedCount))
}
}
}
LEVEL_UP_EVENT.subscribe { AdvancementHandler.onLevelUp(it) }
TRADE_COMPLETED.subscribe { AdvancementHandler.onTradeCompleted(it) }
@@ -214,6 +214,213 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_TUMBLESTONE = this.create("polished_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_TUMBLESTONE_STAIRS = this.create("polished_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_TUMBLESTONE.defaultState, AbstractBlock.Settings.copy(POLISHED_TUMBLESTONE)))
@JvmField
val POLISHED_TUMBLESTONE_SLAB = this.create("polished_tumblestone_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_TUMBLESTONE_WALL = this.create("polished_tumblestone_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_POLISHED_TUMBLESTONE = this.create("chiseled_polished_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val TUMBLESTONE_BRICKS = this.create("tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val TUMBLESTONE_BRICK_STAIRS = this.create("tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(TUMBLESTONE_BRICKS.defaultState, AbstractBlock.Settings.copy(TUMBLESTONE_BRICKS)))
@JvmField
val TUMBLESTONE_BRICK_SLAB = this.create("tumblestone_brick_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val TUMBLESTONE_BRICK_WALL = this.create("tumblestone_brick_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_TUMBLESTONE_BRICKS = this.create("chiseled_tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_ORANGE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_SKY_TUMBLESTONE = this.create("polished_sky_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_SKY_TUMBLESTONE_STAIRS = this.create("polished_sky_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_SKY_TUMBLESTONE.defaultState, AbstractBlock.Settings.copy(POLISHED_SKY_TUMBLESTONE)))
@JvmField
val POLISHED_SKY_TUMBLESTONE_SLAB = this.create("polished_sky_tumblestone_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_SKY_TUMBLESTONE_WALL = this.create("polished_sky_tumblestone_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_POLISHED_SKY_TUMBLESTONE = this.create("chiseled_polished_sky_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val SKY_TUMBLESTONE_BRICKS = this.create("sky_tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val SKY_TUMBLESTONE_BRICK_STAIRS = this.create("sky_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(
SKY_TUMBLESTONE_BRICKS.defaultState, AbstractBlock.Settings.copy(SKY_TUMBLESTONE_BRICKS)))
@JvmField
val SKY_TUMBLESTONE_BRICK_SLAB = this.create("sky_tumblestone_brick_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val SKY_TUMBLESTONE_BRICK_WALL = this.create("sky_tumblestone_brick_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_SKY_TUMBLESTONE_BRICKS = this.create("chiseled_sky_tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.LIGHT_BLUE)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_BLACK_TUMBLESTONE = this.create("polished_black_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_STAIRS = this.create("polished_black_tumblestone_stairs", StairsBlockInvoker.`cobblemon$create`(POLISHED_BLACK_TUMBLESTONE.defaultState, AbstractBlock.Settings.copy(POLISHED_BLACK_TUMBLESTONE)))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_SLAB = this.create("polished_black_tumblestone_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val POLISHED_BLACK_TUMBLESTONE_WALL = this.create("polished_black_tumblestone_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_POLISHED_BLACK_TUMBLESTONE = this.create("chiseled_polished_black_tumblestone", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_TUMBLESTONE_BRICKS = this.create("black_tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_TUMBLESTONE_BRICK_STAIRS = this.create("black_tumblestone_brick_stairs", StairsBlockInvoker.`cobblemon$create`(
BLACK_TUMBLESTONE_BRICKS.defaultState, AbstractBlock.Settings.copy(BLACK_TUMBLESTONE_BRICKS)))
@JvmField
val BLACK_TUMBLESTONE_BRICK_SLAB = this.create("black_tumblestone_brick_slab", SlabBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_TUMBLESTONE_BRICK_WALL = this.create("black_tumblestone_brick_wall", WallBlock(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val CHISELED_BLACK_TUMBLESTONE_BRICKS = this.create("chiseled_black_tumblestone_bricks", Block(AbstractBlock.Settings.create()
.mapColor(MapColor.TERRACOTTA_BLACK)
.strength(1.0F)
.sounds(CobblemonSounds.TUMBLESTONE_BLOCK_SOUNDS)
.requiresTool()
.instrument(Instrument.BASEDRUM)
))
@JvmField
val BLACK_APRICORN = apricornBlock("black_apricorn", Apricorn.BLACK)
@JvmField
@@ -528,6 +735,7 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, RegistryKey<Registry<
val WEPEAR_BERRY = this.berryBlock("wepear")
val WIKI_BERRY = this.berryBlock("wiki")
val YACHE_BERRY = this.berryBlock("yache")
//val BINDING_SOIL = this.create("binding_soil", BindingSoilBlock(AbstractBlock.Settings.create()))
init {
/**
@@ -23,6 +23,7 @@ import com.cobblemon.mod.common.item.armor.CobblemonArmorTrims
import com.cobblemon.mod.common.item.battle.DireHitItem
import com.cobblemon.mod.common.item.battle.GuardSpecItem
import com.cobblemon.mod.common.item.battle.XStatItem
import com.cobblemon.mod.common.item.berry.BerryItem
import com.cobblemon.mod.common.item.berry.FriendshipRaisingBerryItem
import com.cobblemon.mod.common.item.berry.HealingBerryItem
import com.cobblemon.mod.common.item.berry.PPRestoringBerryItem
@@ -932,6 +933,67 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
@JvmField
val BLACK_TUMBLESTONE_BLOCK = blockItem("black_tumblestone_block", CobblemonBlocks.BLACK_TUMBLESTONE_BLOCK)
@JvmField
val POLISHED_TUMBLESTONE = blockItem("polished_tumblestone", CobblemonBlocks.POLISHED_TUMBLESTONE)
@JvmField
val POLISHED_TUMBLESTONE_STAIRS = blockItem("polished_tumblestone_stairs", CobblemonBlocks.POLISHED_TUMBLESTONE_STAIRS)
@JvmField
val POLISHED_TUMBLESTONE_SLAB = blockItem("polished_tumblestone_slab", CobblemonBlocks.POLISHED_TUMBLESTONE_SLAB)
@JvmField
val POLISHED_TUMBLESTONE_WALL = blockItem("polished_tumblestone_wall", CobblemonBlocks.POLISHED_TUMBLESTONE_WALL)
@JvmField
val CHISELED_POLISHED_TUMBLESTONE = blockItem("chiseled_polished_tumblestone", CobblemonBlocks.CHISELED_POLISHED_TUMBLESTONE)
@JvmField
val TUMBLESTONE_BRICKS = blockItem("tumblestone_bricks", CobblemonBlocks.TUMBLESTONE_BRICKS)
@JvmField
val TUMBLESTONE_BRICK_STAIRS = blockItem("tumblestone_brick_stairs", CobblemonBlocks.TUMBLESTONE_BRICK_STAIRS)
@JvmField
val TUMBLESTONE_BRICK_SLAB = blockItem("tumblestone_brick_slab", CobblemonBlocks.TUMBLESTONE_BRICK_SLAB)
@JvmField
val TUMBLESTONE_BRICK_WALL = blockItem("tumblestone_brick_wall", CobblemonBlocks.TUMBLESTONE_BRICK_WALL)
@JvmField
val CHISELED_TUMBLESTONE_BRICKS = blockItem("chiseled_tumblestone_bricks", CobblemonBlocks.CHISELED_TUMBLESTONE_BRICKS)
@JvmField
val POLISHED_SKY_TUMBLESTONE = blockItem("polished_sky_tumblestone", CobblemonBlocks.POLISHED_SKY_TUMBLESTONE)
@JvmField
val POLISHED_SKY_TUMBLESTONE_STAIRS = blockItem("polished_sky_tumblestone_stairs", CobblemonBlocks.POLISHED_SKY_TUMBLESTONE_STAIRS)
@JvmField
val POLISHED_SKY_TUMBLESTONE_SLAB = blockItem("polished_sky_tumblestone_slab", CobblemonBlocks.POLISHED_SKY_TUMBLESTONE_SLAB)
@JvmField
val POLISHED_SKY_TUMBLESTONE_WALL = blockItem("polished_sky_tumblestone_wall", CobblemonBlocks.POLISHED_SKY_TUMBLESTONE_WALL)
@JvmField
val CHISELED_POLISHED_SKY_TUMBLESTONE = blockItem("chiseled_polished_sky_tumblestone", CobblemonBlocks.CHISELED_POLISHED_SKY_TUMBLESTONE)
@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)
@JvmField
val SKY_TUMBLESTONE_BRICK_SLAB = blockItem("sky_tumblestone_brick_slab", CobblemonBlocks.SKY_TUMBLESTONE_BRICK_SLAB)
@JvmField
val SKY_TUMBLESTONE_BRICK_WALL = blockItem("sky_tumblestone_brick_wall", CobblemonBlocks.SKY_TUMBLESTONE_BRICK_WALL)
@JvmField
val CHISELED_SKY_TUMBLESTONE_BRICKS = blockItem("chiseled_sky_tumblestone_bricks", CobblemonBlocks.CHISELED_SKY_TUMBLESTONE_BRICKS)
@JvmField
val POLISHED_BLACK_TUMBLESTONE = blockItem("polished_black_tumblestone", CobblemonBlocks.POLISHED_BLACK_TUMBLESTONE)
@JvmField
val POLISHED_BLACK_TUMBLESTONE_STAIRS = blockItem("polished_black_tumblestone_stairs", CobblemonBlocks.POLISHED_BLACK_TUMBLESTONE_STAIRS)
@JvmField
val POLISHED_BLACK_TUMBLESTONE_SLAB = blockItem("polished_black_tumblestone_slab", CobblemonBlocks.POLISHED_BLACK_TUMBLESTONE_SLAB)
@JvmField
val POLISHED_BLACK_TUMBLESTONE_WALL = blockItem("polished_black_tumblestone_wall", CobblemonBlocks.POLISHED_BLACK_TUMBLESTONE_WALL)
@JvmField
val CHISELED_POLISHED_BLACK_TUMBLESTONE = blockItem("chiseled_polished_black_tumblestone", CobblemonBlocks.CHISELED_POLISHED_BLACK_TUMBLESTONE)
@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)
@JvmField
val BLACK_TUMBLESTONE_BRICK_SLAB = blockItem("black_tumblestone_brick_slab", CobblemonBlocks.BLACK_TUMBLESTONE_BRICK_SLAB)
@JvmField
val BLACK_TUMBLESTONE_BRICK_WALL = blockItem("black_tumblestone_brick_wall", CobblemonBlocks.BLACK_TUMBLESTONE_BRICK_WALL)
@JvmField
val CHISELED_BLACK_TUMBLESTONE_BRICKS = blockItem("chiseled_black_tumblestone_bricks", CobblemonBlocks.CHISELED_BLACK_TUMBLESTONE_BRICKS)
@JvmField
val AUTOMATON_ARMOR_TRIM_SMITHING_TEMPLATE: SmithingTemplateItem = this.create(
"automaton_armor_trim_smithing_template",
@@ -985,6 +1047,8 @@ object CobblemonItems : PlatformRegistry<Registry<Item>, RegistryKey<Registry<It
val STEEL_GEM = noSettingsItem("steel_gem")
@JvmField
val FAIRY_GEM = noSettingsItem("fairy_gem")
//@JvmField
//val BINDING_SOIL = blockItem("binding_soil", CobblemonBlocks.BINDING_SOIL)
private fun blockItem(name: String, block: Block): BlockItem = this.create(name, BlockItem(block, Item.Settings()))
@@ -16,7 +16,7 @@ import com.cobblemon.mod.common.api.events.berry.BerryYieldCalculationEvent
import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.block.entity.BerryBlockEntity
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.berry.BerryItem
import com.cobblemon.mod.common.pokemon.Nature
import com.cobblemon.mod.common.util.readBox
import com.cobblemon.mod.common.util.writeBox
@@ -45,9 +45,8 @@ import net.minecraft.world.biome.Biome
* @property identifier The [Identifier] of this berry.
* @property baseYield The [IntRange] possible for the berry tree before [bonusYield] is calculated.
* @property preferredBiomeTags The [TagKey]s of the berries preffered biomes. Determines spawning and yield
* @property growthTime The [IntRange] possible in minutes for how long the berry tree takes to grow.
* @property refreshRate The [IntRange] possible in minutes for how long the berry tree takes to regrow its berries once it has been harvested.
* @depreciated @property lifeCycles The [IntRange] possible for the berry to live for between harvests.
* @property growthTime The [IntRange] possible in minutes for how long the berry tree takes to grow frome age 0 to age 3
* @property refreshRate The [IntRange] possible in minutes for how long the berry tree takes to grow from age 3 to age 5
* @property favoriteMulches The types of mulches that benefit this berries yield
* @property growthFactors An array of [GrowthFactor]s that will affect this berry. The client is not aware of these.
* @property mutations A map of the partner berry as the key and the value as the resulting mutation with this berry.
@@ -60,6 +59,7 @@ import net.minecraft.world.biome.Biome
* @property flowerTexture The [Identifier] for the texture of the berry in flower form. This is resolved into a [ModelPart] on the client.
* @property fruitModelIdentifier The [Identifier] for the model of the berry in flower form. This is resolved into a [ModelPart] on the client.
* @property fruitTexture The [Identifier] for the texture of the berry in flower form.
* @property stageOnePositioning Transformation of the berry model for age 0
*
* @throws IllegalArgumentException if the any yield range argument is not a positive range.
*/
@@ -69,7 +69,6 @@ class Berry(
val preferredBiomeTags: List<TagKey<Biome>>,
val growthTime: IntRange,
val refreshRate: IntRange,
//val lifeCycles: IntRange,
val favoriteMulches: EnumSet<MulchVariant>,
val growthFactors: Collection<GrowthFactor>,
val spawnConditions: List<BerrySpawnCondition>,
@@ -88,7 +87,9 @@ class Berry(
@SerializedName("fruitModel")
val fruitModelIdentifier: Identifier,
val fruitTexture: Identifier,
val weight: Float
val stageOnePositioning: GrowthPoint,
val weight: Float,
val boneMealChance: Float
) {
@Transient
@@ -161,8 +162,9 @@ class Berry(
val bonus = this.bonusYield(world, state, pos)
var yield = base + bonus.first
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
if (BerryBlock.getMulch(state) == MulchVariant.RICH) {
yield = min(yield + 1, maxYield())
if (BerryBlock.getMulch(treeEntity) == MulchVariant.RICH) {
//I hope the upper bound isnt exclusive, especially when there's a method called nextBetweenExclusive
yield += world.random.nextBetween(1, 3)
treeEntity.decrementMulchDuration(world, pos, state)
}
val event = BerryYieldCalculationEvent(this, world, state, pos, placer, yield, bonus.second)
@@ -279,6 +281,13 @@ class Berry(
buffer.writeIdentifier(this.flowerTexture)
buffer.writeIdentifier(this.fruitModelIdentifier)
buffer.writeIdentifier(this.fruitTexture)
buffer.writeDouble(stageOnePositioning.position.x)
buffer.writeDouble(stageOnePositioning.position.y)
buffer.writeDouble(stageOnePositioning.position.z)
buffer.writeDouble(stageOnePositioning.rotation.x)
buffer.writeDouble(stageOnePositioning.rotation.y)
buffer.writeDouble(stageOnePositioning.rotation.z)
buffer.writeFloat(boneMealChance)
}
/**
@@ -292,7 +301,8 @@ class Berry(
private fun bonusYield(world: World, state: BlockState, pos: BlockPos): Pair<Int, Collection<GrowthFactor>> {
var bonus = 0
val passed = arrayListOf<GrowthFactor>()
val mulchVariant = BerryBlock.getMulch(state)
val treeEntity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return 0 to passed
val mulchVariant = BerryBlock.getMulch(treeEntity)
val hasBiomeMulch = mulchVariant in favoriteMulches
this.growthFactors.forEach { factor ->
if (factor.isValid(world, state, pos)) {
@@ -339,7 +349,9 @@ class Berry(
val flowerTexture = buffer.readIdentifier()
val fruitModelIdentifier = buffer.readIdentifier()
val fruitTexture = buffer.readIdentifier()
return Berry(identifier, baseYield, emptyList(), growthTime, refreshRate, favMulchs, emptySet(), emptyList(), growthPoints, randomizedGrowthPoints, mutations, sproutShapeBoxes, matureShapeBoxes, flavors, tintIndexes, flowerModelIdentifier, flowerTexture, fruitModelIdentifier, fruitTexture, 0F)
val stageOneYPos = GrowthPoint(Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()), Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()))
val boneMealChance = buffer.readFloat()
return Berry(identifier, baseYield, emptyList(), growthTime, refreshRate, favMulchs, emptySet(), emptyList(), growthPoints, randomizedGrowthPoints, mutations, sproutShapeBoxes, matureShapeBoxes, flavors, tintIndexes, flowerModelIdentifier, flowerTexture, fruitModelIdentifier, fruitTexture, stageOneYPos, 0F, boneMealChance)
}
}
@@ -8,24 +8,30 @@
package com.cobblemon.mod.common.api.mulch
import com.cobblemon.mod.common.BakingOverride
import com.cobblemon.mod.common.client.CobblemonBakingOverrides
import net.minecraft.util.StringIdentifiable
/**
* Represents the different types of Mulch implemented in the mod.
*
*/
enum class MulchVariant(val duration: Int = -1) : StringIdentifiable {
COARSE,
GROWTH(3),
HUMID,
LOAMY,
PEAT,
RICH(3),
SANDY,
SURPRISE(3),
NONE;
enum class MulchVariant(val model: BakingOverride?, val duration: Int = -1) : StringIdentifiable {
COARSE(CobblemonBakingOverrides.COARSE_MULCH),
GROWTH(CobblemonBakingOverrides.GROWTH_MULCH, 5),
HUMID(CobblemonBakingOverrides.HUMID_MULCH),
LOAMY(CobblemonBakingOverrides.LOAMY_MULCH),
PEAT(CobblemonBakingOverrides.PEAT_MULCH),
RICH(CobblemonBakingOverrides.RICH_MULCH, 5),
SANDY(CobblemonBakingOverrides.SANDY_MULCH),
SURPRISE(CobblemonBakingOverrides.SURPRISE_MULCH, 3),
NONE(null);
override fun asString(): String {
return name.lowercase()
}
companion object {
const val GROWTH_TIME_MULTIPLIER = 0.5
}
}
@@ -8,7 +8,11 @@
package com.cobblemon.mod.common.api.pokemon.evolution
import com.cobblemon.mod.common.Cobblemon.playerData
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.advancement.CobblemonCriteria
import com.cobblemon.mod.common.advancement.criterion.EvolvePokemonContext
import com.cobblemon.mod.common.api.events.CobblemonEvents
import com.cobblemon.mod.common.api.events.pokemon.evolution.EvolutionCompleteEvent
import com.cobblemon.mod.common.api.events.pokemon.evolution.EvolutionTestedEvent
@@ -17,7 +21,9 @@ import com.cobblemon.mod.common.api.moves.MoveTemplate
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
import com.cobblemon.mod.common.api.pokemon.evolution.requirement.EvolutionRequirement
import com.cobblemon.mod.common.api.scheduling.afterOnServer
import com.cobblemon.mod.common.api.tags.CobblemonItemTags
import com.cobblemon.mod.common.entity.generic.GenericBedrockEntity
import com.cobblemon.mod.common.item.PokeBallItem
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.pokemon.activestate.ShoulderedState
import com.cobblemon.mod.common.pokemon.evolution.variants.ItemInteractionEvolution
@@ -25,6 +31,7 @@ import com.cobblemon.mod.common.pokemon.evolution.variants.LevelUpEvolution
import com.cobblemon.mod.common.pokemon.evolution.variants.TradeEvolution
import com.cobblemon.mod.common.util.cobblemonResource
import com.cobblemon.mod.common.util.lang
import com.cobblemon.mod.common.util.party
import net.minecraft.item.ItemStack
import net.minecraft.sound.SoundCategory
@@ -44,6 +51,11 @@ interface Evolution : EvolutionLike {
*/
val result: PokemonProperties
/**
* The shed result of this evolution.
*/
val shedder: PokemonProperties?
/**
* If this evolution allows the user to choose when to start it or not.
*/
@@ -95,6 +107,36 @@ interface Evolution : EvolutionLike {
return true
}
fun shed(pokemon: Pokemon): Boolean {
val innerShedder = shedder ?: return false
val owner = pokemon.getOwnerPlayer() ?: return false
// If the player has at least one Pokeball in their inventory.
var pokeballStack: ItemStack? = null
if (!owner.isCreative) {
for (i in 0 until owner.inventory.size()) {
val stackI = owner.inventory.getStack(i)
if (stackI.isIn(CobblemonItemTags.POKE_BALLS)) {
pokeballStack = stackI
}
}
if (pokeballStack == null) return false
}
// If the player has at least one empty spot in their party.
val emptySlot = owner.party().getFirstAvailablePosition() ?: return false
// Add shed Pokemon to player's party
val shedPokemon = pokemon.clone()
shedPokemon.removeHeldItem()
innerShedder.apply(shedPokemon)
shedPokemon.caughtBall = ((pokeballStack?.item ?: CobblemonItems.POKE_BALL) as PokeBallItem).pokeBall
pokemon.storeCoordinates.get()?.store?.add(shedPokemon)
CobblemonCriteria.EVOLVE_POKEMON.trigger(owner, EvolvePokemonContext(pokemon.preEvolution!!.species.resourceIdentifier, shedPokemon.species.resourceIdentifier, playerData.get(owner).advancementData.totalEvolvedCount))
// Consume one of the balls
pokeballStack?.decrement(1)
return true
}
/**
* Starts this evolution as soon as possible.
@@ -155,6 +197,7 @@ interface Evolution : EvolutionLike {
// we want to instantly tick for example you might only evolve your Bulbasaur at level 34 so Venusaur should be immediately available
pokemon.lockedEvolutions.filterIsInstance<PassiveEvolution>().forEach { evolution -> evolution.attemptEvolution(pokemon) }
pokemon.getOwnerPlayer()?.playSound(CobblemonSounds.EVOLVING, SoundCategory.NEUTRAL, 1F, 1F)
this.shed(pokemon)
CobblemonEvents.EVOLUTION_COMPLETE.post(EvolutionCompleteEvent(pokemon, this))
}
@@ -10,12 +10,7 @@ package com.cobblemon.mod.common.api.spawning
import com.cobblemon.mod.common.Cobblemon.LOGGER
import com.cobblemon.mod.common.api.entity.Despawner
import com.cobblemon.mod.common.api.spawning.condition.AreaSpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.BasicSpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.GroundedSpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.SpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.SubmergedSpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.SurfaceSpawningCondition
import com.cobblemon.mod.common.api.spawning.condition.*
import com.cobblemon.mod.common.api.spawning.context.AreaContextResolver
import com.cobblemon.mod.common.api.spawning.context.GroundedSpawningContext
import com.cobblemon.mod.common.api.spawning.context.LavafloorSpawningContext
@@ -91,6 +86,7 @@ object BestSpawner {
SpawningCondition.register(SubmergedSpawningCondition.NAME, SubmergedSpawningCondition::class.java)
SpawningCondition.register(GroundedSpawningCondition.NAME, GroundedSpawningCondition::class.java)
SpawningCondition.register(SurfaceSpawningCondition.NAME, SurfaceSpawningCondition::class.java)
SpawningCondition.register(SeafloorSpawningCondition.NAME, SeafloorSpawningCondition::class.java)
LOGGER.info("Loaded ${SpawningCondition.conditionTypes.size} spawning condition types.")
SpawningContextCalculator.register(GroundedSpawningContextCalculator)
@@ -100,7 +96,7 @@ object BestSpawner {
SpawningContextCalculator.register(SurfaceSpawningContextCalculator)
SpawningContext.register(name = "grounded", clazz = GroundedSpawningContext::class.java, defaultCondition = GroundedSpawningCondition.NAME)
SpawningContext.register(name = "seafloor", clazz = SeafloorSpawningContext::class.java, defaultCondition = GroundedSpawningCondition.NAME)
SpawningContext.register(name = "seafloor", clazz = SeafloorSpawningContext::class.java, defaultCondition = SeafloorSpawningCondition.NAME)
SpawningContext.register(name = "lavafloor", clazz = LavafloorSpawningContext::class.java, defaultCondition = GroundedSpawningCondition.NAME)
SpawningContext.register(name = "submerged", clazz = SubmergedSpawningContext::class.java, defaultCondition = SubmergedSpawningCondition.NAME)
SpawningContext.register(name = "surface", clazz = SurfaceSpawningContext::class.java, defaultCondition = SurfaceSpawningCondition.NAME)
@@ -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.api.spawning.condition
import com.cobblemon.mod.common.api.conditional.RegistryLikeCondition
import com.cobblemon.mod.common.api.spawning.context.SeafloorSpawningContext
import com.cobblemon.mod.common.util.Merger
import net.minecraft.block.Block
/**
* Base type for a spawning condition that applies to some kind of [SeafloorSpawningContext]. This
* can be extended for subclasses of [SeafloorSpawningContext].
*
* Borrowed the Grounded context code since it was unintentionally spawning Pokémon on the sea floor
* already. Seems to be working fine /shrug
*
* @author FrankTheFarmer
* @since May 22nd, 2024
*/
abstract class SeafloorTypeSpawningCondition<T : SeafloorSpawningContext> : AreaTypeSpawningCondition<T>() {
var neededBaseBlocks: MutableList<RegistryLikeCondition<Block>>? = null
override fun fits(ctx: T): Boolean {
return if (!super.fits(ctx)) {
false
} else if (minHeight != null && ctx.height < minHeight!!) {
return false
} else if (maxHeight != null && ctx.height > maxHeight!!) {
return false
} else !(neededBaseBlocks != null && neededBaseBlocks!!.none { it.fits(ctx.baseBlock.block, ctx.blockRegistry) })
}
override fun copyFrom(other: SpawningCondition<*>, merger: Merger) {
super.copyFrom(other, merger)
if (other is SeafloorTypeSpawningCondition) {
neededBaseBlocks = merger.merge(neededBaseBlocks, other.neededBaseBlocks)?.toMutableList()
}
}
}
/**
* A spawning condition for a [SeafloorSpawningContext].
*
* @author FrankTheFarmer
* @since May 22nd, 2024
*/
open class SeafloorSpawningCondition : SeafloorTypeSpawningCondition<SeafloorSpawningContext>() {
override fun contextClass() = SeafloorSpawningContext::class.java
companion object {
const val NAME = "seafloor"
}
}
@@ -49,7 +49,7 @@ open class AreaSpawningContext(
* This is not considering the provided state as what the entity would be on top of,
* but rather the space its hitbox would fill.
*/
open fun isSafeSpace(world: ServerWorld, pos: BlockPos, state: BlockState): Boolean = !state.isFullCube(world, pos)
open fun isSafeSpace(world: ServerWorld, pos: BlockPos, state: BlockState): Boolean = !state.isSolid
override fun postFilter(detail: SpawnDetail): Boolean {
if (!super.postFilter(detail)) {
@@ -34,7 +34,8 @@ class BestSpawnerConfig {
val contextWeights = mutableMapOf(
"grounded" to 1F,
"submerged" to 0.99F,
"surface" to 0.01F
"surface" to 0.01F,
"seafloor" to 1F
)
val buckets = mutableListOf(
SpawnBucket("common", 93.8F),
@@ -47,7 +47,16 @@ class SwitchInstruction(val instructionSet: InstructionSet, val battleActor: Bat
if (!battle.started) {
activePokemon.battlePokemon = pokemon
activePokemon.illusion = illusion
val pokemonEntity = pokemon.entity
val pokemonEntity = pokemon.entity?.let {
// If a Pokémon entity is being recalled with an animation,
// wrap up the animation and recall the Pokémon immediately.
if (it.beamMode == 3) {
pokemon.effectedPokemon.recall()
return@let null
}
pokemon.entity
}
if (pokemonEntity == null && entity != null) {
val targetPos = battleActor.getSide().getOppositeSide().actors.filterIsInstance<EntityBackedBattleActor<*>>().firstOrNull()?.entity?.pos?.let { pos ->
val offset = pos.subtract(entity.pos)
@@ -19,6 +19,7 @@ import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.api.mulch.Mulchable
import com.cobblemon.mod.common.api.tags.CobblemonBlockTags
import com.cobblemon.mod.common.block.entity.BerryBlockEntity
import dev.lambdaurora.lambdynlights.util.SodiumDynamicLightHandler.pos
import net.minecraft.block.Block
import net.minecraft.block.BlockRenderType
import net.minecraft.block.BlockState
@@ -87,22 +88,31 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
init {
defaultState = this.stateManager.defaultState
.with(WAS_GENERATED, false)
.with(AGE, 0)
.with(MULCH, MulchVariant.NONE)
.with(AGE, 0)
.with(IS_ROOTED, false)
}
override fun grow(world: ServerWorld, random: Random, pos: BlockPos, state: BlockState) {
growHelper(world, random, pos, state, true)
}
//grow, but cooler
fun growHelper(world: ServerWorld, random: Random, pos: BlockPos, state: BlockState, boneMealed: Boolean = false) {
val berry = berry() ?: return
if (boneMealed && random.nextFloat() > berry.boneMealChance) return
val curAge = state.get(AGE)
val newAge = curAge + 1
if (newAge > FRUIT_AGE) return
val newState = state.with(AGE, newAge)
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
if (curAge == MATURE_AGE) {
treeEntity.generateGrowthPoints(world, state, pos, null)
determineMutation(world, random, pos, state)
treeEntity.generateGrowthPoints(world, newState, pos, null)
determineMutation(world, random, pos, newState)
}
world.setBlockState(pos, newState, Block.NOTIFY_LISTENERS)
convertMulchToEntity(world, newState, pos)
treeEntity.goToNextStageTimer(FRUIT_AGE - curAge)
treeEntity.markDirty()
}
@@ -122,7 +132,7 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
CobblemonEvents.BERRY_MUTATION_OFFER.post(BerryMutationOfferEvent(berry, world, state, pos, mutations)) { berryMutationOffer ->
if (berryMutationOffer.mutations.isNotEmpty()) {
var mutateChance = 125
if (getMulch(state) == MulchVariant.SURPRISE) {
if (getMulch(treeEntity) == MulchVariant.SURPRISE) {
mutateChance *= 4
treeEntity.decrementMulchDuration(world, pos, state)
}
@@ -143,7 +153,10 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
state: BlockState,
variant: MulchVariant
): Boolean {
return getMulch(state) == MulchVariant.NONE && state.get(AGE) < FLOWER_AGE && world.getBlockState(pos.down()).isOf(Blocks.FARMLAND)
val underBlockState = world.getBlockState(pos.down())
val validSoil = state.get(IS_ROOTED) || underBlockState.isIn(CobblemonBlockTags.BERRY_SOIL)
val treeEntity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return false
return getMulch(treeEntity) == MulchVariant.NONE && state.get(AGE) < FLOWER_AGE && validSoil
}
override fun applyMulch(
@@ -154,18 +167,15 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
variant: MulchVariant
) {
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
setMulch(world, pos, state, variant)
treeEntity.mulchDuration = variant.duration
treeEntity.setMulch(variant, world, state, pos)
world.playSound(null, pos, CobblemonSounds.MULCH_PLACE, SoundCategory.BLOCKS, 0.6F, 1F)
treeEntity.refreshTimers(pos)
}
@Deprecated("Deprecated in Java")
override fun onUse(state: BlockState, world: World, pos: BlockPos, player: PlayerEntity, hand: Hand, hit: BlockHitResult): ActionResult {
val treeEntity = world.getBlockEntity(pos) as BerryBlockEntity
if (player.getStackInHand(hand).item is ShovelItem && getMulch(state) != MulchVariant.NONE) {
setMulch(world, pos, state, MulchVariant.NONE)
treeEntity.markDirty()
if (player.getStackInHand(hand).item is ShovelItem && getMulch(treeEntity) != MulchVariant.NONE) {
treeEntity.setMulch(MulchVariant.NONE, world, state, pos)
world.playSound(null, pos, CobblemonSounds.MULCH_REMOVE, SoundCategory.BLOCKS, 0.6F, 1F)
this.spawnBreakParticles(world, player, pos, state.with(AGE, 0))
return ActionResult.SUCCESS
@@ -189,7 +199,7 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
val below = world.getBlockState(pos.down())
return (state.get(WAS_GENERATED) && below.isIn(CobblemonBlockTags.BERRY_WILD_SOIL))
|| below.isIn(CobblemonBlockTags.BERRY_SOIL)
|| below.block is FarmlandBlock
|| state.get(IS_ROOTED)
}
@Deprecated("Deprecated in Java")
@@ -208,6 +218,7 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
builder.add(AGE)
builder.add(WAS_GENERATED)
builder.add(MULCH)
builder.add(IS_ROOTED)
}
override fun getPickStack(world: BlockView?, pos: BlockPos?, state: BlockState?): ItemStack {
@@ -239,6 +250,7 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
val AGE: IntProperty = IntProperty.of("age", 0, FRUIT_AGE)
val MULCH: EnumProperty<MulchVariant> = EnumProperty.of("mulch", MulchVariant::class.java)
val WAS_GENERATED: BooleanProperty = BooleanProperty.of("generated")
val IS_ROOTED: BooleanProperty = BooleanProperty.of("rooted")
// val PLANTED_SHAPE = VoxelShapes.union(
// VoxelShapes.cuboid(0.3125, -0.0625, 0.3125, 0.6875, 0.0, 0.6875),
// VoxelShapes.cuboid(0.375, 0.0, 0.375, 0.625, 0.0625, 0.625)
@@ -301,15 +313,14 @@ class BerryBlock(private val berryIdentifier: Identifier, settings: Settings) :
val TALL_MATURE = listOf(Box(0.0, -1.0, 0.0, 16.0, 24.0, 16.0))
fun getMulch(state: BlockState): MulchVariant {
if (!state.contains(MULCH)) {
return MulchVariant.NONE
}
return state.get(MULCH)
}
fun getMulch(entity: BerryBlockEntity) = entity.mulchVariant
fun setMulch(world: World, pos: BlockPos, state: BlockState, mulch: MulchVariant) {
world.setBlockState(pos, state.with(MULCH, mulch))
fun convertMulchToEntity(world: ServerWorld, state: BlockState, pos: BlockPos) {
val entity = world.getBlockEntity(pos) as? BerryBlockEntity ?: return
if (state.get(MULCH) != MulchVariant.NONE && state.get(MULCH) != entity.mulchVariant) {
entity.mulchVariant = state.get(MULCH)
world.setBlockState(pos, state.with(MULCH, MulchVariant.NONE))
}
}
}
}
@@ -0,0 +1,49 @@
/*
* Copyright (C) 2023 Cobblemon Contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.block
import com.cobblemon.mod.common.block.entity.BerryBlockEntity
import com.cobblemon.mod.common.item.berry.BerryItem
import net.minecraft.block.AbstractBlock
import net.minecraft.block.Block
import net.minecraft.block.BlockState
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.util.ActionResult
import net.minecraft.util.Hand
import net.minecraft.util.hit.BlockHitResult
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World
/**
* @author Apion
* @since February 27, 2024
*/
class BindingSoilBlock(settings: Settings) : Block(settings) {
@Deprecated("Deprecated in Java")
override fun onUse(
state: BlockState,
world: World,
pos: BlockPos,
player: PlayerEntity,
hand: Hand,
hit: BlockHitResult
): ActionResult {
if (!world.isClient) {
val itemStack = player.getStackInHand(hand)
val item = itemStack.item
if (item is BerryItem) {
world.setBlockState(pos, item.block.defaultState.with(BerryBlock.IS_ROOTED, true))
if (!player.isCreative) {
itemStack.decrement(1)
}
}
}
return ActionResult.SUCCESS
}
}
@@ -131,7 +131,6 @@ class GildedChestBlock(settings: Settings, val type: Type = Type.RED) : BlockWit
if (isFake() && (player is ServerPlayerEntity)) {
spawnPokemon(world, pos, state, player)
}
world.setBlockState(pos, if (state.fluidState.isOf(Fluids.WATER)) Blocks.WATER.defaultState else Blocks.AIR.defaultState)
val bEntity = world.getBlockEntity(pos) as? GildedChestBlockEntity
bEntity?.markRemoved()
} else super.onBreak(world, pos, state, player)
@@ -17,7 +17,6 @@ import com.cobblemon.mod.common.api.events.berry.BerryHarvestEvent
import com.cobblemon.mod.common.api.mulch.MulchVariant
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.block.BerryBlock.Companion.getMulch
import com.cobblemon.mod.common.block.BerryBlock.Companion.setMulch
import net.minecraft.block.Block
import net.minecraft.block.BlockState
import net.minecraft.block.entity.BlockEntity
@@ -43,8 +42,8 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
lateinit var berryIdentifier: Identifier
private val ticksPerMinute = 1200
var renderState: RenderState? = null
//The time left for the tree to grow to stage 5
var growthTimer: Int = 72000
//The time left for the tree until its either age 3 or age 5 (check block state, if we are at age 0<x<3 unti 3 otherwise until 5)
var growthTimer: Int = 0
set(value) {
if (value < 0) {
throw IllegalArgumentException("You cannot set the growth time to less than zero")
@@ -55,7 +54,7 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
field = value
}
//The time left for the tree to grow to the next stage
var stageTimer: Int = growthTimer / BerryBlock.MATURE_AGE
var stageTimer: Int = 0
set(value) {
if (field != value) {
this.markDirty()
@@ -63,6 +62,7 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
field = value
}
private val growthPoints = arrayListOf<Identifier>()
var mulchVariant = MulchVariant.NONE
/**
* The idea behind the growth point sequence is it's a 16-long string of
@@ -85,20 +85,6 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
markDirty()
}
fun decrementMulchDuration(world: World, pos: BlockPos, state: BlockState) {
val currentMulch = getMulch(state)
if (currentMulch == MulchVariant.NONE || currentMulch.duration == -1) {
return
}
val newDuration = mulchDuration - 1
mulchDuration = if (newDuration <= 0) {
setMulch(world, pos, state, MulchVariant.NONE)
0
} else {
newDuration
}
}
constructor(pos: BlockPos, state: BlockState, berryIdentifier: Identifier): this(pos, state) {
this.berryIdentifier = berryIdentifier
resetGrowTimers(pos, state)
@@ -107,6 +93,31 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
}
}
fun decrementMulchDuration(world: World, pos: BlockPos, state: BlockState) {
if (mulchVariant == MulchVariant.NONE || mulchVariant.duration == -1) {
return
}
val newDuration = mulchDuration - 1
mulchDuration = if (newDuration <= 0) {
mulchVariant = MulchVariant.NONE
this.markDirty()
world.updateListeners(pos, state, state, Block.NOTIFY_LISTENERS)
0
} else {
newDuration
}
}
fun setMulch(mulch: MulchVariant, world: World, state: BlockState, pos: BlockPos) {
this.mulchVariant = mulch
this.mulchDuration = mulch.duration
refreshTimers(pos)
world.updateListeners(pos, state, state, Block.NOTIFY_LISTENERS)
this.markDirty()
}
//This function basically runs twice when the berry tree is growing, once when it starts, once when it hits age 3
//Why dont we just go 0-5? Design thinks its annoying to balance the numbers using 0-5 and 3-5
fun resetGrowTimers(pos: BlockPos, state: BlockState) {
val curAge = state.get(BerryBlock.AGE)
if (curAge == 5) {
@@ -119,12 +130,15 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
val upperGrowthLimit = (if (curAge == 0) berry.growthTime.last else berry.refreshRate.last) * multiplier / 10
val growthRange = lowerGrowthLimit..upperGrowthLimit
this.growthTimer = this.applyMulchModifier(pos, growthRange.random() * ticksPerMinute)
this.goToNextStageTimer(BerryBlock.FRUIT_AGE - curAge)
this.growthTimer = this.applyMulchModifier(pos, growthRange.random() * ticksPerMinute, true)
val stagesLeft = if (curAge < 3) BerryBlock.MATURE_AGE - curAge else BerryBlock.FRUIT_AGE - curAge
this.goToNextStageTimer(stagesLeft)
}
fun goToNextStageTimer(stagesLeft: Int) {
val avgStageTime = growthTimer / stagesLeft
//A number between 80% and 100% the average stage time
//So stages have some variance
stageTimer = this.world?.random?.nextBetween((avgStageTime * 8) / 10, avgStageTime) ?:
(((Math.random() * 0.2) + 0.8) * avgStageTime).toInt()
growthTimer -= stageTimer
@@ -137,7 +151,7 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
* @param timer Timer to be modified
* @return The modified timer
*/
private fun applyMulchModifier(pos: BlockPos, timer: Int): Int {
private fun applyMulchModifier(pos: BlockPos, timer: Int, decrementMulch: Boolean = false): Int {
val state = world?.getBlockState(pos) ?: return timer
val curAge = state.get(BerryBlock.AGE)
@@ -145,11 +159,15 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
return timer
}
if (getMulch(state) != MulchVariant.GROWTH) {
if (mulchVariant != MulchVariant.GROWTH) {
return timer
}
return (timer * 0.66).toInt()
if (decrementMulch) {
world?.let {
decrementMulchDuration(it, pos, state)
}
}
return (timer * MulchVariant.GROWTH_TIME_MULTIPLIER).toInt()
}
/**
@@ -157,8 +175,8 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
* @param pos The position of the block
*/
fun refreshTimers(pos: BlockPos) {
this.growthTimer = this.applyMulchModifier(pos, growthTimer)
this.stageTimer = this.applyMulchModifier(pos, stageTimer)
this.growthTimer = this.applyMulchModifier(pos, growthTimer, false)
this.stageTimer = this.applyMulchModifier(pos, stageTimer, false)
}
/**
@@ -248,6 +266,9 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
if (nbt.contains(GROWTH_POINTS_SEQUENCE)) {
growthPointSequence = nbt.getString(GROWTH_POINTS_SEQUENCE)
}
if (nbt.contains(MULCH_VARIANT)) {
mulchVariant = MulchVariant.valueOf(nbt.getString(MULCH_VARIANT))
}
this.renderState?.needsRebuild = true
}
@@ -260,6 +281,7 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
nbt.putString(BERRY, berryIdentifier.toString())
nbt.putInt(MULCH_DURATION, mulchDuration)
nbt.putString(GROWTH_POINTS_SEQUENCE, growthPointSequence)
nbt.putString(MULCH_VARIANT, mulchVariant.toString())
}
override fun markDirty() {
@@ -323,11 +345,12 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
companion object {
internal val TICKER = BlockEntityTicker<BerryBlockEntity> { world, pos, state, blockEntity ->
if (world.isClient) return@BlockEntityTicker
if (state.get(BerryBlock.IS_ROOTED)) return@BlockEntityTicker
if (blockEntity.stageTimer >= 0) {
blockEntity.stageTimer--
}
if (blockEntity.stageTimer == 0) {
(state.block as BerryBlock).grow(world as ServerWorld, world.random, pos, state)
(state.block as BerryBlock).growHelper(world as ServerWorld, world.random, pos, state)
}
}
//private const val LIFE_CYCLES = "life_cycles"
@@ -337,6 +360,7 @@ class BerryBlockEntity(pos: BlockPos, state: BlockState) : BlockEntity(Cobblemon
private const val STAGE_TIMER = "StageTimer"
private const val BERRY = "Berry"
private const val MULCH_DURATION = "MulchDuration"
private const val MULCH_VARIANT = "MulchVariant"
}
}
@@ -62,6 +62,46 @@ object CobblemonBakingOverrides {
cobblemonModel("restoration_tank_connector", "none")
)
val COARSE_MULCH = registerOverride(
cobblemonResource("block/coarse_mulch"),
cobblemonModel("coarse_mulch", "none")
)
val GROWTH_MULCH = registerOverride(
cobblemonResource("block/growth_mulch"),
cobblemonModel("growth_mulch", "none")
)
val HUMID_MULCH = registerOverride(
cobblemonResource("block/humid_mulch"),
cobblemonModel("humid_mulch", "none")
)
val LOAMY_MULCH = registerOverride(
cobblemonResource("block/loamy_mulch"),
cobblemonModel("loamy_mulch", "none")
)
val PEAT_MULCH = registerOverride(
cobblemonResource("block/peat_mulch"),
cobblemonModel("peat_mulch", "none")
)
val RICH_MULCH = registerOverride(
cobblemonResource("block/rich_mulch"),
cobblemonModel("rich_mulch", "none")
)
val SANDY_MULCH = registerOverride(
cobblemonResource("block/sandy_mulch"),
cobblemonModel("sandy_mulch", "none")
)
val SURPRISE_MULCH = registerOverride(
cobblemonResource("block/surprise_mulch"),
cobblemonModel("surprise_mulch", "none")
)
fun registerOverride(modelLocation: Identifier, modelIdentifier: ModelIdentifier): BakingOverride {
val result = BakingOverride(modelLocation, modelIdentifier)
models.add(result)
@@ -16,6 +16,7 @@ class BerryBlockEntityRenderState : BerryBlockEntity.RenderState {
override var needsRebuild = true
val vbo: VertexBuffer = VertexBuffer(VertexBuffer.Usage.STATIC)
var vboLightLevel: Int = 0
var drawVbo: Boolean = false
override fun close() {
vbo.close()
@@ -23,6 +23,7 @@ import net.minecraft.client.gl.ShaderProgram
import net.minecraft.client.gl.VertexBuffer
import net.minecraft.client.render.GameRenderer
import net.minecraft.client.render.LightmapTextureManager
import net.minecraft.client.render.RenderLayer
import net.minecraft.client.render.Tessellator
import net.minecraft.client.render.VertexConsumerProvider
import net.minecraft.client.render.VertexFormat
@@ -33,6 +34,7 @@ import net.minecraft.client.util.math.MatrixStack
import net.minecraft.util.math.Box
import net.minecraft.util.math.Vec3d
import org.joml.Matrix4f
import org.joml.Vector3f
class BerryBlockRenderer(private val context: BlockEntityRendererFactory.Context) : BlockEntityRenderer<BerryBlockEntity> {
@@ -45,33 +47,88 @@ class BerryBlockRenderer(private val context: BlockEntityRendererFactory.Context
override fun render(entity: BerryBlockEntity, tickDelta: Float, matrices: MatrixStack, vertexConsumers: VertexConsumerProvider, light: Int, overlay: Int) {
if (!isInRenderDistance(entity, entity.pos.toVec3d())) return
val blockState = entity.cachedState
val age = blockState.get(BerryBlock.AGE)
if (age <= BerryBlock.MATURE_AGE) {
return
}
if (entity.renderState == null) {
entity.renderState = BerryBlockEntityRenderState()
}
val renderState = entity.renderState as BerryBlockEntityRenderState
if (renderState.needsRebuild || renderState.vboLightLevel != light) {
renderToBuffer(entity, light, overlay, renderState.vbo)
renderToBuffer(entity, light, overlay, renderState)
renderState.vboLightLevel = light
(entity.renderState as BerryBlockEntityRenderState).needsRebuild = false
}
if (renderState.drawVbo) {
matrices.push()
CobblemonRenderLayers.BERRY_LAYER.startDrawing()
renderState.vbo.bind()
renderState.vbo.draw(
matrices.peek().positionMatrix.mul(RenderSystem.getModelViewMatrix()),
RenderSystem.getProjectionMatrix(),
GameRenderer.getRenderTypeCutoutProgram()
)
VertexBuffer.unbind()
CobblemonRenderLayers.BERRY_LAYER.endDrawing()
matrices.pop()
}
drawMulch(matrices, vertexConsumers, entity, light, overlay)
}
private fun drawMulch(
matrices: MatrixStack,
vertexConsumers: VertexConsumerProvider,
entity: BerryBlockEntity,
light: Int,
overlay: Int
) {
matrices.push()
CobblemonRenderLayers.BERRY_LAYER.startDrawing()
renderState.vbo.bind()
renderState.vbo.draw(
matrices.peek().positionMatrix.mul(RenderSystem.getModelViewMatrix()),
RenderSystem.getProjectionMatrix(),
GameRenderer.getRenderTypeCutoutProgram()
)
VertexBuffer.unbind()
CobblemonRenderLayers.BERRY_LAYER.endDrawing()
//Mulch is rendered on a different layer than the actual berries so
val mulchBuf = vertexConsumers.getBuffer(RenderLayer.getCutout())
val model = entity.mulchVariant.model
model?.let {
it.getModel().getQuads(entity.cachedState, null, entity.world?.random).forEach { quad ->
mulchBuf.quad(matrices.peek(), quad, 1F, 1F, 1F, light, overlay)
}
}
matrices.pop()
}
fun renderToBuffer(entity: BerryBlockEntity, light: Int, overlay: Int, buffer: VertexBuffer) {
fun renderToBuffer(entity: BerryBlockEntity, light: Int, overlay: Int, renderState: BerryBlockEntityRenderState) {
if (entity.cachedState.get(BerryBlock.AGE) == 0) {
renderBabyToBuffer(entity, light, overlay, renderState.vbo)
renderState.drawVbo = true
}
else if (entity.cachedState.get(BerryBlock.AGE) > BerryBlock.MATURE_AGE){
renderAdultToBuffer(entity, light, overlay, renderState.vbo)
renderState.drawVbo = true
}
else {
renderState.drawVbo = false
}
}
fun renderBabyToBuffer(entity: BerryBlockEntity, light: Int, overlay: Int, buffer: VertexBuffer) {
val bufferBuilder = Tessellator.getInstance().buffer
bufferBuilder.begin(CobblemonRenderLayers.BERRY_LAYER.drawMode, CobblemonRenderLayers.BERRY_LAYER.vertexFormat)
val berry = entity.berry() ?: return
val model = BerryModelRepository.modelOf(berry.fruitModelIdentifier) ?: return
val pos = berry.stageOnePositioning.position
model.setPosition(Axis.X_AXIS.ordinal, pos.x.toFloat())
model.setPosition(Axis.Y_AXIS.ordinal, pos.y.toFloat())
model.setPosition(Axis.Z_AXIS.ordinal, pos.z.toFloat())
val rot = berry.stageOnePositioning.rotation
model.setAngles(
Math.toRadians(180 - rot.x).toFloat(),
Math.toRadians(180 + rot.y).toFloat(),
Math.toRadians(rot.z).toFloat()
)
model.render(MatrixStack(), bufferBuilder, light, overlay)
val bufferBuilderFinal = bufferBuilder.end()
buffer.bind()
buffer.upload(bufferBuilderFinal)
VertexBuffer.unbind()
}
fun renderAdultToBuffer(entity: BerryBlockEntity, light: Int, overlay: Int, buffer: VertexBuffer) {
val blockState = entity.cachedState
val age = blockState.get(BerryBlock.AGE)
if (age <= BerryBlock.MATURE_AGE) {
@@ -36,6 +36,7 @@ class ConkeldurrModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame, B
lateinit var battleidle: PokemonPose
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("conkeldurr", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("conkeldurr", "blink") }
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFr
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.ModelFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
@@ -40,6 +41,8 @@ class GolettModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame, Biped
lateinit var walk: PokemonPose
lateinit var sleep: PokemonPose
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("golett", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("golett", "blink") }
standing = registerPose(
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.PoseableEntitySt
import com.cobblemon.mod.common.client.render.models.blockbench.animation.StatefulAnimation
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
import com.cobblemon.mod.common.client.render.models.blockbench.frame.ModelFrame
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPose
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPoseableModel
import com.cobblemon.mod.common.entity.PoseType
@@ -33,6 +34,8 @@ class GolurkModel (root: ModelPart) : PokemonPoseableModel(), HeadedFrame {
lateinit var walk: PokemonPose
lateinit var sleep: PokemonPose
override val cryAnimation = CryProvider { _, _ -> bedrockStateful("golurk", "cry") }
override fun registerPoses() {
val blink = quirk { bedrockStateful("golurk", "blink") }
@@ -24,7 +24,6 @@ import com.mojang.brigadier.context.CommandContext
import net.minecraft.server.command.CommandManager
import net.minecraft.server.command.CommandManager.literal
import net.minecraft.server.command.ServerCommandSource
import net.minecraft.text.Text
/**
* Spawn Pokemon From Surrounding Pool
@@ -84,14 +83,15 @@ object SpawnPokemonFromPool {
val spawnAction = result.second.doSpawn(ctx = result.first)
spawnAction.future.thenApply {
if (it is EntitySpawnResult) {
for (entity in it.entities) {
player.sendMessage(commandLang("spawnpokemonfrompool.success", entity.displayName).green())
spawnAction.future
.thenApply {
if (it is EntitySpawnResult) {
for (entity in it.entities) {
player.sendMessage(commandLang("spawnpokemonfrompool", entity.displayName).green())
}
}
}
}
spawnAction.complete()
spawnsTriggered++
}
@@ -171,9 +171,6 @@ class CobblemonConfig {
@NodeCategory(Category.Spawning)
var baseApricornTreeGenerationChance = 0.1F
@NodeCategory(Category.Pokemon)
var ninjaskCreatesShedinja = true
@NodeCategory(Category.Pokemon)
var displayEntityLevelLabel = true
@@ -20,7 +20,6 @@ import com.cobblemon.mod.common.api.events.pokemon.ShoulderMountEvent
import com.cobblemon.mod.common.api.interaction.PokemonEntityInteraction
import com.cobblemon.mod.common.api.net.serializers.PoseTypeDataSerializer
import com.cobblemon.mod.common.api.net.serializers.StringSetDataSerializer
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
import com.cobblemon.mod.common.api.pokemon.feature.ChoiceSpeciesFeatureProvider
import com.cobblemon.mod.common.api.pokemon.feature.FlagSpeciesFeature
import com.cobblemon.mod.common.api.pokemon.feature.SpeciesFeatures
@@ -105,11 +104,8 @@ import net.minecraft.sound.SoundEvents
import net.minecraft.text.Text
import net.minecraft.text.TextContent
import net.minecraft.util.ActionResult
import net.minecraft.util.Colors
import net.minecraft.util.DyeColor
import net.minecraft.util.Hand
import net.minecraft.util.Identifier
import net.minecraft.util.Util
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Box
import net.minecraft.util.math.Vec3d
@@ -121,7 +117,7 @@ import java.util.*
@Suppress("unused")
open class PokemonEntity(
world: World,
pokemon: Pokemon = Pokemon(),
pokemon: Pokemon = Pokemon().apply { isClient = world.isClient },
type: EntityType<out PokemonEntity> = CobblemonEntities.POKEMON,
) : TameableShoulderEntity(type, world), Poseable, Shearable, Schedulable {
companion object {
@@ -163,6 +159,7 @@ open class PokemonEntity(
var pokemon: Pokemon = pokemon
set(value) {
value.isClient = this.world.isClient
field = value
delegate.changePokemon(value)
stepHeight = behaviour.moving.stepHeight
@@ -497,15 +494,15 @@ open class PokemonEntity(
entityId = id // Doesn't really matter on the entity
)
} else {
pokemon = Pokemon()
pokemon = this.createSidedPokemon()
health = 0F
}
} else {
pokemon = try {
Pokemon().loadFromNBT(nbt.getCompound(DataKeys.POKEMON))
this.createSidedPokemon().loadFromNBT(nbt.getCompound(DataKeys.POKEMON))
} catch (_: InvalidSpeciesException) {
health = 0F
Pokemon()
this.createSidedPokemon()
}
}
@@ -1220,8 +1217,6 @@ open class PokemonEntity(
return !this.isBusy && !this.pokemon.isFainted() && !feature.enabled
}
override fun canUsePortals() = false
override fun setAir(air: Int) {
@@ -1256,4 +1251,11 @@ open class PokemonEntity(
/** Retrieves the battle theme associated with this Pokemon's Species/Form, or the default PVW theme if not found. */
fun getBattleTheme() = Registries.SOUND_EVENT.get(this.form.battleTheme) ?: CobblemonSounds.PVW_BATTLE
/**
* A utility method to instance a [Pokemon] aware if the [world] is client sided or not.
*
* @return The side safe [Pokemon] with the [Pokemon.isClient] set.
*/
private fun createSidedPokemon(): Pokemon = Pokemon().apply { isClient = this@PokemonEntity.world.isClient }
}
@@ -10,10 +10,9 @@ package com.cobblemon.mod.common.integration.jei.berry
import com.cobblemon.mod.common.CobblemonItems
import com.cobblemon.mod.common.integration.jei.CobblemonJeiProvider
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.berry.BerryItem
import mezz.jei.api.registration.IRecipeCategoryRegistration
import mezz.jei.api.registration.IRecipeRegistration
import net.minecraft.item.ItemStack
class BerryMutationProvider : CobblemonJeiProvider {
override fun registerCategory(registration: IRecipeCategoryRegistration) {
@@ -8,7 +8,7 @@
package com.cobblemon.mod.common.integration.jei.berry
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.berry.BerryItem
//Dont make these ItemStacks, they do not have consistent hash codes, breaks stuff
data class BerryMutationRecipe(
@@ -6,7 +6,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
package com.cobblemon.mod.common.item
package com.cobblemon.mod.common.item.berry
import com.cobblemon.mod.common.block.BerryBlock
import net.minecraft.item.AliasedBlockItem
@@ -14,7 +14,6 @@ import com.cobblemon.mod.common.CobblemonSounds
import com.cobblemon.mod.common.api.item.PokemonSelectingItem
import com.cobblemon.mod.common.api.pokemon.stats.Stat
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.genericRuntime
import com.cobblemon.mod.common.util.resolveInt
@@ -15,7 +15,6 @@ import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.item.PokemonSelectingItem
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.battle.BagItem
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.genericRuntime
@@ -16,7 +16,6 @@ import com.cobblemon.mod.common.api.item.PokemonAndMoveSelectingItem
import com.cobblemon.mod.common.api.moves.Move
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.battle.BagItem
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.genericRuntime
@@ -15,7 +15,6 @@ import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.item.PokemonSelectingItem
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.battle.BagItem
import com.cobblemon.mod.common.pokemon.Pokemon
import com.cobblemon.mod.common.util.genericRuntime
@@ -15,7 +15,6 @@ import com.cobblemon.mod.common.api.item.PokemonSelectingItem
import com.cobblemon.mod.common.api.pokemon.status.Status
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.battle.BagItem
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.entity.player.PlayerEntity
@@ -14,7 +14,6 @@ import com.cobblemon.mod.common.api.battles.model.actor.BattleActor
import com.cobblemon.mod.common.api.item.PokemonSelectingItem
import com.cobblemon.mod.common.battles.pokemon.BattlePokemon
import com.cobblemon.mod.common.block.BerryBlock
import com.cobblemon.mod.common.item.BerryItem
import com.cobblemon.mod.common.item.battle.BagItem
import com.cobblemon.mod.common.pokemon.Pokemon
import net.minecraft.item.ItemStack
@@ -253,6 +253,37 @@ object CobblemonItemGroups {
entries.add(CobblemonItems.BLACK_TUMBLESTONE_BLOCK)
entries.add(CobblemonItems.SKY_TUMBLESTONE_BLOCK)
entries.add(CobblemonItems.POLISHED_TUMBLESTONE)
entries.add(CobblemonItems.POLISHED_TUMBLESTONE_STAIRS)
entries.add(CobblemonItems.POLISHED_TUMBLESTONE_SLAB)
entries.add(CobblemonItems.POLISHED_TUMBLESTONE_WALL)
entries.add(CobblemonItems.CHISELED_POLISHED_TUMBLESTONE)
entries.add(CobblemonItems.TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.TUMBLESTONE_BRICK_STAIRS)
entries.add(CobblemonItems.TUMBLESTONE_BRICK_SLAB)
entries.add(CobblemonItems.TUMBLESTONE_BRICK_WALL)
entries.add(CobblemonItems.CHISELED_TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.POLISHED_BLACK_TUMBLESTONE)
entries.add(CobblemonItems.POLISHED_BLACK_TUMBLESTONE_STAIRS)
entries.add(CobblemonItems.POLISHED_BLACK_TUMBLESTONE_SLAB)
entries.add(CobblemonItems.POLISHED_BLACK_TUMBLESTONE_WALL)
entries.add(CobblemonItems.CHISELED_POLISHED_BLACK_TUMBLESTONE)
entries.add(CobblemonItems.BLACK_TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.BLACK_TUMBLESTONE_BRICK_STAIRS)
entries.add(CobblemonItems.BLACK_TUMBLESTONE_BRICK_SLAB)
entries.add(CobblemonItems.BLACK_TUMBLESTONE_BRICK_WALL)
entries.add(CobblemonItems.CHISELED_BLACK_TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.POLISHED_SKY_TUMBLESTONE)
entries.add(CobblemonItems.POLISHED_SKY_TUMBLESTONE_STAIRS)
entries.add(CobblemonItems.POLISHED_SKY_TUMBLESTONE_SLAB)
entries.add(CobblemonItems.POLISHED_SKY_TUMBLESTONE_WALL)
entries.add(CobblemonItems.CHISELED_POLISHED_SKY_TUMBLESTONE)
entries.add(CobblemonItems.SKY_TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.SKY_TUMBLESTONE_BRICK_STAIRS)
entries.add(CobblemonItems.SKY_TUMBLESTONE_BRICK_SLAB)
entries.add(CobblemonItems.SKY_TUMBLESTONE_BRICK_WALL)
entries.add(CobblemonItems.CHISELED_SKY_TUMBLESTONE_BRICKS)
entries.add(CobblemonItems.DAWN_STONE_ORE)
entries.add(CobblemonItems.DEEPSLATE_DAWN_STONE_ORE)
entries.add(CobblemonItems.DUSK_STONE_ORE)
@@ -43,7 +43,7 @@ class EnergyRootItem(block: EnergyRootBlock, settings: Settings) : AliasedBlockI
fun getHealAmount() = CobblemonMechanics.remedies.getHealingAmount("root", runtime, 150)
override fun canUseOnPokemon(pokemon: Pokemon) = !pokemon.isFullHealth()
override fun canUseOnPokemon(pokemon: Pokemon) = !pokemon.isFullHealth() && !pokemon.isFainted()
override fun applyToPokemon(player: ServerPlayerEntity, stack: ItemStack, pokemon: Pokemon): TypedActionResult<ItemStack> {
return if (this.canUseOnPokemon(pokemon)) {
@@ -835,9 +835,9 @@ open class Pokemon : ShowdownIdentifiable {
experience = nbt.getInt(DataKeys.POKEMON_EXPERIENCE).takeIf { experienceGroup.getLevel(it) == level } ?: experienceGroup.getExperience(level)
friendship = nbt.getShort(DataKeys.POKEMON_FRIENDSHIP).toInt().coerceIn(0, if (this.isClient) Int.MAX_VALUE else Cobblemon.config.maxPokemonFriendship)
gender = Gender.valueOf(nbt.getString(DataKeys.POKEMON_GENDER).takeIf { it.isNotBlank() } ?: Gender.MALE.name)
currentHealth = nbt.getShort(DataKeys.POKEMON_HEALTH).toInt()
ivs.loadFromNBT(nbt.getCompound(DataKeys.POKEMON_IVS))
evs.loadFromNBT(nbt.getCompound(DataKeys.POKEMON_EVS))
currentHealth = nbt.getShort(DataKeys.POKEMON_HEALTH).toInt()
moveSet.loadFromNBT(nbt)
scaleModifier = nbt.getFloat(DataKeys.POKEMON_SCALE_MODIFIER)
if (nbt.contains(DataKeys.POKEMON_ABILITY, COMPOUND_TYPE.toInt())) {
@@ -31,6 +31,7 @@ import net.minecraft.world.World
open class BlockClickEvolution(
override val id: String,
override val result: PokemonProperties,
override val shedder: PokemonProperties?,
override val requiredContext: RegistryLikeCondition<Block>,
override var optional: Boolean,
override var consumeHeldItem: Boolean,
@@ -40,6 +41,7 @@ open class BlockClickEvolution(
constructor(): this(
id = "id",
result = PokemonProperties(),
shedder = null,
requiredContext = BlockIdentifierCondition(Identifier("minecraft", "dirt")),
optional = true,
consumeHeldItem = true,
@@ -19,6 +19,7 @@ internal class DummyEvolution : Evolution {
override val id = "dummy"
override val result: PokemonProperties = PokemonProperties()
override val shedder: PokemonProperties? = null
override var optional = false
override var consumeHeldItem = false
override val requirements: MutableSet<EvolutionRequirement> = mutableSetOf()
@@ -32,6 +32,7 @@ import net.minecraft.world.World
open class ItemInteractionEvolution(
override val id: String,
override val result: PokemonProperties,
override val shedder: PokemonProperties?,
override val requiredContext: NbtItemPredicate,
override var optional: Boolean,
override var consumeHeldItem: Boolean,
@@ -41,6 +42,7 @@ open class ItemInteractionEvolution(
constructor(): this(
id = "id",
result = PokemonProperties(),
shedder = null,
requiredContext = NbtItemPredicate(ItemIdentifierCondition(Identifier("minecraft", "fish")), NbtPredicate.ANY),
optional = true,
consumeHeldItem = true,
@@ -25,6 +25,7 @@ import com.cobblemon.mod.common.pokemon.Pokemon
open class LevelUpEvolution(
override val id: String,
override val result: PokemonProperties,
override val shedder: PokemonProperties?,
override var optional: Boolean,
override var consumeHeldItem: Boolean,
override val requirements: MutableSet<EvolutionRequirement>,
@@ -36,6 +37,7 @@ open class LevelUpEvolution(
constructor(): this(
id = "id",
result = PokemonProperties(),
shedder = null,
optional = true,
consumeHeldItem = true,
requirements = mutableSetOf(),
@@ -26,6 +26,7 @@ import com.cobblemon.mod.common.pokemon.Pokemon
open class TradeEvolution(
override val id: String,
override val result: PokemonProperties,
override val shedder: PokemonProperties?,
override val requiredContext: PokemonProperties,
override var optional: Boolean,
override var consumeHeldItem: Boolean,
@@ -35,6 +36,7 @@ open class TradeEvolution(
constructor(): this(
id = "id",
result = PokemonProperties(),
shedder = null,
requiredContext = PokemonProperties(),
optional = true,
consumeHeldItem = true,
@@ -1,5 +1,5 @@
{
"maxScale": 1.0,
"maxScale": 0.8,
"yTranslation": 0.1,
"yGrowthPoint": 0.5625,
"animations": [
@@ -169,6 +169,11 @@
},
"animation.cubone.cry": {
"animation_length": 1.16667,
"sound_effects": {
"0.04": {
"effect": "pokemon.cubone.cry"
}
},
"bones": {
"upper_torso": {
"rotation": {
@@ -445,6 +445,11 @@
},
"animation.golett.cry": {
"animation_length": 1.5,
"sound_effects": {
"0.0417": {
"effect": "pokemon.golett.cry"
}
},
"bones": {
"neck": {
"rotation": {
@@ -782,6 +782,11 @@
},
"animation.golurk.cry": {
"animation_length": 1.5,
"sound_effects": {
"0.0417": {
"effect": "pokemon.golurk.cry"
}
},
"bones": {
"neck": {
"rotation": {
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aguav_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/apicot_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/aspear_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/babiri_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/belue_mature",
@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "cobblemon:block/black_tumblestone_brick_slab"
},
"type=double": {
"model": "cobblemon:block/black_tumblestone_bricks"
},
"type=top": {
"model": "cobblemon:block/black_tumblestone_brick_slab_top"
}
}
}
@@ -0,0 +1,209 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "cobblemon:block/black_tumblestone_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "cobblemon:block/black_tumblestone_brick_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}
@@ -0,0 +1,90 @@
{
"multipart": [
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_post"
},
"when": {
"up": "true"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side",
"uvlock": true
},
"when": {
"north": "low"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side",
"uvlock": true,
"y": 90
},
"when": {
"east": "low"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side",
"uvlock": true,
"y": 180
},
"when": {
"south": "low"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side",
"uvlock": true,
"y": 270
},
"when": {
"west": "low"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side_tall",
"uvlock": true
},
"when": {
"north": "tall"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side_tall",
"uvlock": true,
"y": 90
},
"when": {
"east": "tall"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side_tall",
"uvlock": true,
"y": 180
},
"when": {
"south": "tall"
}
},
{
"apply": {
"model": "cobblemon:block/black_tumblestone_brick_wall_side_tall",
"uvlock": true,
"y": 270
},
"when": {
"west": "tall"
}
}
]
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/black_tumblestone_bricks"
}
}
}
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/bluk_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/charti_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cheri_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chesto_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chilan_mature",
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_black_tumblestone_bricks"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_polished_black_tumblestone"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_polished_sky_tumblestone"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_polished_tumblestone"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_sky_tumblestone_bricks"
}
}
}
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "cobblemon:block/chiseled_tumblestone_bricks"
}
}
}
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/chople_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/coba_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/colbur_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/cornn_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/custap_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/durin_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/enigma_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/figy_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/ganlon_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/grepa_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/haban_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hondew_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/hopo_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/iapapa_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/jaboca_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kasib_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kebia_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kee_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/kelpsy_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lansat_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/leppa_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/liechi_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/lum_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/mago_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/magost_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/maranga_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/micle_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nanab_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/nomel_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/occa_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/oran_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/pamtre_mature",
@@ -2,7 +2,14 @@
"multipart": [
{
"when": {
"age": "0"
"AND": [
{
"age": 0
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/planted",
@@ -11,16 +18,62 @@
},
{
"when": {
"age": "1"
"AND": [
{
"age": 0
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/sprout",
"model": "cobblemon:block/berries/planted_bound",
"uvlock": false
}
},
{
"when": {
"age": "2"
"AND": [
{
"age": 1
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 1
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_sprout",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 2
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_young",
@@ -29,7 +82,30 @@
},
{
"when": {
"age": "3"
"AND": [
{
"age": 2
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_young",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 3
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",
@@ -38,7 +114,14 @@
},
{
"when": {
"age": "4"
"AND": [
{
"age": 3
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",
@@ -47,7 +130,62 @@
},
{
"when": {
"age": "5"
"AND": [
{
"age": 4
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 4
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": false
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",
"uvlock": false
}
},
{
"when": {
"AND": [
{
"age": 5
},
{
"rooted": true
}
]
},
"apply": {
"model": "cobblemon:block/berries/passho_mature",

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