Merge branch 'main' into side-effects

This commit is contained in:
Yoni Segal 2022-05-23 19:43:21 -04:00 committed by GitHub
commit 6505249cc3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
541 changed files with 7030 additions and 501 deletions

View file

@ -52,3 +52,5 @@ processResources {
expand buildProps
}
}
setupJar(this)

View file

@ -317,263 +317,9 @@ a415fc73fe80dc76885f4ba16ec81251bed93d15 assets/hexcasting/models/item/wand_oak.
f043370d6762b976e33dd6e9562d5e1659d32bbf assets/hexcasting/models/item/wand_old.json
59e0a112daf74023ca10248b04fb674ae03c59f9 assets/hexcasting/models/item/wand_spruce.json
0af04312fc4ca98dd5a7e65595f32cbfda0e93e8 assets/hexcasting/models/item/wand_warped.json
637e118fc7c371db684d0d831a46833b5851e582 data/forge/loot_modifiers/global_loot_modifiers.json
4d4caaea035ae4ee878843dd2455042b299b4e5e data/forge/tags/items/dusts/amethyst.json
05e86742a71afd740f47639be62f93bc9898fcde data/forge/tags/items/gems.json
b6593ea802a692c29b5032292df31beb84878ad8 data/hexcasting/advancements/aaa_wasteful_cast.json
4f4c94021adfb296e3ef3dce1acc46f724f38f92 data/hexcasting/advancements/aab_big_cast.json
2fe3543a209fca031b1eace7ea217c76142609cc data/hexcasting/advancements/enlightenment.json
eb6393ffc79966e4b5983a68157742b78cd12414 data/hexcasting/advancements/opened_eyes.json
cf0ad981bebbb79414d955fb40fbf537fe88b89d data/hexcasting/advancements/recipes/brainsweep/brainsweep/akashic_record.json
c2a362b8c19cb288187d8ff340f82198edc54378 data/hexcasting/advancements/recipes/brainsweep/brainsweep/budding_amethyst.json
c11dc4388c18dadff5d93126eb0f7ae848d627b9 data/hexcasting/advancements/recipes/brainsweep/brainsweep/directrix_redstone.json
86424d21e1bf91c128d3b0d528b813629ad962e9 data/hexcasting/advancements/recipes/brainsweep/brainsweep/impetus_look.json
5f9f0962f407062e7b6dd0e8c5f8c55ce13962a5 data/hexcasting/advancements/recipes/brainsweep/brainsweep/impetus_rightclick.json
5d4811f78feefbef0a305555143f488b3dac7ac6 data/hexcasting/advancements/recipes/brainsweep/brainsweep/impetus_storedplayer.json
3fe1fcf17e1e25aebede47c537f92888330ccf9f data/hexcasting/advancements/recipes/hexcasting/abacus.json
5a17fa9a1496f5fbedd0362f94a5231e0e5ebbfc data/hexcasting/advancements/recipes/hexcasting/ageing_scroll_paper_lantern.json
66e51300dc72c27ed8024ddf852ac9a6208a66b1 data/hexcasting/advancements/recipes/hexcasting/akashic_bookshelf.json
31f9b7d8141f67981deedf7a46894e454006bb28 data/hexcasting/advancements/recipes/hexcasting/akashic_button.json
168749d413b20bb9c05a8e7191758e0e596a319b data/hexcasting/advancements/recipes/hexcasting/akashic_connector.json
1266b263056dd15c862bff27b05a119c4bbc89ee data/hexcasting/advancements/recipes/hexcasting/akashic_door.json
149179e18b1b8db5dc3fb96e6faa6cb6ffaecb75 data/hexcasting/advancements/recipes/hexcasting/akashic_panel.json
4f852507d843f82dce1512f55abfb205b9829ed4 data/hexcasting/advancements/recipes/hexcasting/akashic_planks.json
7a535e710c96e39a17606a10bc1f153d7c57b8e7 data/hexcasting/advancements/recipes/hexcasting/akashic_pressure_plate.json
26782da27b3ce2dcab8545f672d68fe1a8549f35 data/hexcasting/advancements/recipes/hexcasting/akashic_slab.json
e0ff0fe75be853b849f84b05787c1c791fa9e208 data/hexcasting/advancements/recipes/hexcasting/akashic_stairs.json
99aae9efc13ff2b8a4612579b2f865ed2fbe8985 data/hexcasting/advancements/recipes/hexcasting/akashic_tile.json
d5122f034678cc53a2921c65f30451caf708046c data/hexcasting/advancements/recipes/hexcasting/akashic_trapdoor.json
55dded121a8dddb2ee7fb1f3ffcdcd1ada4afbd5 data/hexcasting/advancements/recipes/hexcasting/akashic_wood.json
4066f098ef104eadf6729bb372d9e643c598b477 data/hexcasting/advancements/recipes/hexcasting/akashic_wood_stripped.json
ddd7bd92b9e1586cebd2cee658315a9336a80a76 data/hexcasting/advancements/recipes/hexcasting/amethyst_dust_packing.json
e5ae652aee1567ac2e626fa0f88f160993a6f9a5 data/hexcasting/advancements/recipes/hexcasting/amethyst_dust_unpacking.json
337c4370fd24b66a6b4b3f6c296a33d9a799034e data/hexcasting/advancements/recipes/hexcasting/amethyst_sconce.json
563cb6dda9c55864f141f2ec0ecd2a2b95f57237 data/hexcasting/advancements/recipes/hexcasting/amethyst_tiles.json
b42dae604eab34ae3831fa16c063af852c175791 data/hexcasting/advancements/recipes/hexcasting/ancient_scroll_paper.json
f3e78a96f17dc5ed54047bb24be58dbf3151c8fa data/hexcasting/advancements/recipes/hexcasting/ancient_scroll_paper_lantern.json
090b54b026f6fef2502295ddde5a60f5350e2ec6 data/hexcasting/advancements/recipes/hexcasting/artifact.json
7f165b1783a871cf69db2e9978290f8993665649 data/hexcasting/advancements/recipes/hexcasting/cypher.json
29260d23193f414236b0278a5abd7fe1f7ba8b46 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_black.json
b519fd81671c9cb8d909bbfd0d4017d2005432d3 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_blue.json
310e2440f26f130c81d32d9fcd93a3384c2b1e72 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_brown.json
a27a2514fd3acb6cf0a4f2a6b176ca4c2a3ee064 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_cyan.json
0e95c5f97c4089d654334a0d58fbf2b808548bd0 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_gray.json
076dd8bb2ce1508293384fa93fa138a369d10751 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_green.json
c3aed1dbaa46e084711a116d1bb4522df9a7405a data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_light_blue.json
6837c1fe0ab23167ca8475086b28115369227e0c data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_light_gray.json
918075a87ccc30a489aa8cafa2de992dd179aeac data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_lime.json
cf855b595844c6f2522c0ad18030519279b396ad data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_magenta.json
484be1c50092772587dd18769e63ee3ab22ad971 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_orange.json
339dc062b4d8d0c4fa2d1eccd2935b4c37ec75c6 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_pink.json
d6dfd0c6e995270868cb90de818d24b8a667fd01 data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_purple.json
b0b1c5fff194b92ff8c5d6468e177271fd910abd data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_red.json
ccc33b4f1a43c8ecd3352ad36ae2dd2191317b5b data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_white.json
9c857c4aeda8a1b3d7a1b5d341871a9434b5816f data/hexcasting/advancements/recipes/hexcasting/dye_colorizer_yellow.json
7351200c8e3eb24772852c578286384c8aab61bd data/hexcasting/advancements/recipes/hexcasting/empty_directrix.json
023c32e8834eb313c4fa94a84a8f6390ee951ef0 data/hexcasting/advancements/recipes/hexcasting/empty_impetus.json
f089ab17470c5fa0065438c5533d5fafb3ee8eaf data/hexcasting/advancements/recipes/hexcasting/focus.json
874ee348cf2542696b7768049529a2001f0820e7 data/hexcasting/advancements/recipes/hexcasting/jeweler_hammer.json
fc57d15e9f9f11347a2170dd06053954345368d2 data/hexcasting/advancements/recipes/hexcasting/lens.json
82be04125e60a28701de5bb6bc7855bb46fa9d0f data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_0.json
13fc3b9e91486b3b0ca56b4ef7d5ddb8920aa7fe data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_1.json
9e8942971a3b3d0b1ec6a3add5366743429605ca data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_10.json
c30bc14629d0bc99cad10d7b6af19a331357f6a8 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_11.json
8e73ac3942a94096017e8c775724beafcbade37b data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_12.json
d0c66f50c20912aa0175aea9f97a28e59051b586 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_13.json
a78da1015ec1e17bf99ffaa75a85ed2cdf0351d2 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_2.json
fa7dcb3a4e6a6631e437fda9739cfdf40f1b8102 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_3.json
5241508316a04e9e22452f71c54beae4c75a9bad data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_4.json
3dae781adc5cbdf6e415316ab6d5ce9efa8774c4 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_5.json
c93d37c6a54b4015a073ad18189f6e721406f183 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_6.json
6ffa37736a483cef3b174cf00bfcab0b91a6f737 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_7.json
8209fd940de230393aae894c96a765c62bed4cc2 data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_8.json
9dc35c66da608913da03bc3016f127841d2414cc data/hexcasting/advancements/recipes/hexcasting/pride_colorizer_9.json
43071f2aa09fa59dd8f0211a68c842dac833be02 data/hexcasting/advancements/recipes/hexcasting/scroll.json
d7213631b2f9075c9bdef0d5a48ca28f85f5a090 data/hexcasting/advancements/recipes/hexcasting/scroll_paper.json
85fea90b80954899f236e52d3b3a25f305f8b9d5 data/hexcasting/advancements/recipes/hexcasting/scroll_paper_lantern.json
22ad2496732633bb5539a1fa761051d7add48055 data/hexcasting/advancements/recipes/hexcasting/slate.json
d72a4675ceb721ee4ac43339d8bfbbb82c2adba2 data/hexcasting/advancements/recipes/hexcasting/slate_block.json
9fcc0862c99c50a1df9d3af95b2b3c2af28afa1b data/hexcasting/advancements/recipes/hexcasting/slate_block_from_slates.json
cd3ca380294544b07e91ce85d97808c30ffa5d17 data/hexcasting/advancements/recipes/hexcasting/spellbook.json
b684bfa3755ca25996e74152d2efecbc9d6387d8 data/hexcasting/advancements/recipes/hexcasting/stonecutting/amethyst_tiles.json
59000d9f3edb942081f7d1e03d753e9cd59690cc data/hexcasting/advancements/recipes/hexcasting/sub_sandwich.json
08f14a615c6c8c0b8a08a56af000c1e1991732d3 data/hexcasting/advancements/recipes/hexcasting/trinket.json
eb17a23e7a9543f33922c056cdf0d63def176bf2 data/hexcasting/advancements/recipes/hexcasting/uuid_colorizer.json
804f0e5c6c32c7310129437ccca3ffc148bb973b data/hexcasting/advancements/recipes/hexcasting/wand_acacia.json
2d52419f3fcdc10643cdb8cef89858efc0ad4d11 data/hexcasting/advancements/recipes/hexcasting/wand_akashic.json
f32ccb2d36d773215d91dee46bec70a20af501c3 data/hexcasting/advancements/recipes/hexcasting/wand_birch.json
7c0107192c0e24ff9f23ab0f59834b6081ca5b33 data/hexcasting/advancements/recipes/hexcasting/wand_crimson.json
67d4c536be3762833a4af33cd7cdfc68eb4ad629 data/hexcasting/advancements/recipes/hexcasting/wand_dark_oak.json
318c04242e7b9c302e68b3bfe6dd11ec0fc8a863 data/hexcasting/advancements/recipes/hexcasting/wand_jungle.json
30950c6dd31102cf145f8f7d2979df0736a7ba1e data/hexcasting/advancements/recipes/hexcasting/wand_oak.json
f8d2872c4e692153049b6ae4879755a079954763 data/hexcasting/advancements/recipes/hexcasting/wand_spruce.json
3b2bcffe70bb1f732f06c2560cef66de6c273d62 data/hexcasting/advancements/recipes/hexcasting/wand_warped.json
ed0e62cb81783d8eb6323dd70609067219f163ec data/hexcasting/advancements/root.json
739cbdf7f204132f2acfab4df8d21c6197aa1456 data/hexcasting/advancements/y_u_no_cast_angy.json
70a8f77d38affa642afbfceebe129358737b09ac data/hexcasting/loot_modifiers/amethyst_cluster_charged.json
f746acc6b3e798d3b95f4ceb463c648b1f3ae8c3 data/hexcasting/loot_modifiers/amethyst_cluster_dust.json
a783e00f46a9ff0206e2495c15cea8ba57bdff31 data/hexcasting/loot_modifiers/amethyst_cluster_shard_reducer.json
e04be385fa9daa422e41a38ddd70fdd065107968 data/hexcasting/loot_modifiers/scroll_bastion.json
6569766d1579114149eb0a1154d05ec3c964b2a3 data/hexcasting/loot_modifiers/scroll_cartographer.json
afecba3144e00505977a4ab4de7940f949ab7818 data/hexcasting/loot_modifiers/scroll_dungeon.json
0e8c8a56161586a4021487b27059ca151465af67 data/hexcasting/loot_modifiers/scroll_jungle.json
50e7ad657a0ab43f3bd632120e09f109791aaf34 data/hexcasting/loot_modifiers/scroll_shipwreck.json
7ffa361bd8a108b504fe450749b42997dc898e5e data/hexcasting/loot_modifiers/scroll_stronghold_library.json
cfd72df535fe95cd2b0d800696e7b4b3429a0459 data/hexcasting/loot_tables/blocks/akashic_bookshelf.json
fc787ec13389b66afda79083f22c7b72f02d5966 data/hexcasting/loot_tables/blocks/akashic_button.json
2e5958279471fa57ae2929d9f9da46e59495f50e data/hexcasting/loot_tables/blocks/akashic_connector.json
3794453f5412af9c7307c9cd91fe2d01ffb763af data/hexcasting/loot_tables/blocks/akashic_door.json
e05da321f00ce09c6f4ad3f6da95ae3dc93e7748 data/hexcasting/loot_tables/blocks/akashic_leaves1.json
224d9bad572916bc9d5d5a749cc7261a8dad17d7 data/hexcasting/loot_tables/blocks/akashic_leaves2.json
58a8470e73b0364f033bac76d6f31c009394fcaa data/hexcasting/loot_tables/blocks/akashic_leaves3.json
4b0b1c0a353b8768c1c56d8dc4764a10c2cd7c5f data/hexcasting/loot_tables/blocks/akashic_log.json
ff25315e494e3b79667a1fa90d22a80d0eb6d208 data/hexcasting/loot_tables/blocks/akashic_log_stripped.json
7400ffa5214a5d7ed34be2ac2ffcc2b50cdf299c data/hexcasting/loot_tables/blocks/akashic_panel.json
f59f016a4fa4edaad0b2731f8f1bb2c7b9299ede data/hexcasting/loot_tables/blocks/akashic_planks.json
a8f202947467960dcc634ca7cc65b8911a5c2399 data/hexcasting/loot_tables/blocks/akashic_pressure_plate.json
22517cb8c8063a6a2752cd80f63f224c88bc2ede data/hexcasting/loot_tables/blocks/akashic_record.json
abb4c70d044fed6af763b75bdc50fe2624e83625 data/hexcasting/loot_tables/blocks/akashic_slab.json
5128da5769f0a1a9045488e32ac453069d6431f5 data/hexcasting/loot_tables/blocks/akashic_stairs.json
0ddb27503a7266d126661bad496047a069a07670 data/hexcasting/loot_tables/blocks/akashic_tile.json
659b7e6d539474357532c1207b21354e19cbd4b1 data/hexcasting/loot_tables/blocks/akashic_trapdoor.json
1590fee356080d4dd3f4e0718d87269bdd7f3519 data/hexcasting/loot_tables/blocks/akashic_wood.json
58e51963cfde913d799a89ae8e0701407c488a14 data/hexcasting/loot_tables/blocks/akashic_wood_stripped.json
41d666145104483214c0256958b14724e60a036b data/hexcasting/loot_tables/blocks/amethyst_dust_block.json
967b64670e7d98b6c46779da68c245ee539ba375 data/hexcasting/loot_tables/blocks/amethyst_sconce.json
79421f4528355837d12fbfcccb19e08a1eb40bff data/hexcasting/loot_tables/blocks/amethyst_tiles.json
558ce469f2bcbf8f0498815b6b4c1fd4f2bfbc2b data/hexcasting/loot_tables/blocks/ancient_scroll_paper.json
4ba256a96d6794214775c6ea94074f03ace6cb90 data/hexcasting/loot_tables/blocks/ancient_scroll_paper_lantern.json
e78299c1aff23248f83fff872165ae70f0e1c1a9 data/hexcasting/loot_tables/blocks/directrix_redstone.json
41834ac09febbefdca79bdbb404d42c91a4de2e5 data/hexcasting/loot_tables/blocks/empty_directrix.json
5944235a01e31fbe3f2799f667b6deb2f8a62ca6 data/hexcasting/loot_tables/blocks/empty_impetus.json
9d882c43431b33de256f2bc0acb831a393ab4740 data/hexcasting/loot_tables/blocks/impetus_look.json
c87dcdb39d1d9cb0429763bbd32631cbf15047aa data/hexcasting/loot_tables/blocks/impetus_rightclick.json
4c65e5287cefeec17703cb4959e12546b753d26b data/hexcasting/loot_tables/blocks/impetus_storedplayer.json
e66ddc68e90e5e779f273a8d081c2f63e81d6698 data/hexcasting/loot_tables/blocks/scroll_paper.json
fd662ce6977b96065bd438ff332bc5b9f62560e6 data/hexcasting/loot_tables/blocks/scroll_paper_lantern.json
17e53b980127473558a1a544e59d329a4701e7cc data/hexcasting/loot_tables/blocks/slate.json
33b4d5e6928828898fea92523f7cb81f9b4eac36 data/hexcasting/loot_tables/blocks/slate_block.json
6b4459635b3d53cc2b6836fa97d29244a65b412d data/hexcasting/recipes/abacus.json
1f0c9a98d97fb81e1f504cdb6619a3dfab52ba5f data/hexcasting/recipes/ageing_scroll_paper_lantern.json
fa04d5bc32f5646cd67bc8e8b572bdb7849b735e data/hexcasting/recipes/akashic_bookshelf.json
1d19457c9843d97d2ed59199d9077940d9e5e46a data/hexcasting/recipes/akashic_button.json
2c542a616b312e41537fb25a2362877dd50d2692 data/hexcasting/recipes/akashic_connector.json
add097a7a749bd1ebd5828216f013f6cd5b72b62 data/hexcasting/recipes/akashic_door.json
f74f8389f1e8bdb77a92ecfb8d7d7d6f4418d818 data/hexcasting/recipes/akashic_panel.json
ce9ca7b98a89540996f2ad18eea98e31df7974b5 data/hexcasting/recipes/akashic_planks.json
b107ec9af9e08d124f3d4f14d85911f55a5b905b data/hexcasting/recipes/akashic_pressure_plate.json
9a24dcdf873dc97001efb487f6e00739c2ebf15c data/hexcasting/recipes/akashic_slab.json
a92e5560c774bb81cd9f38bd9378af8695cac622 data/hexcasting/recipes/akashic_stairs.json
ac285195e958804bcbd0b87e443d2851fd3a4856 data/hexcasting/recipes/akashic_tile.json
62b120d8943a9e73778ad1468f12532b21774994 data/hexcasting/recipes/akashic_trapdoor.json
a84bf48a188d7b250db5c971a6d9b63d82279ba3 data/hexcasting/recipes/akashic_wood.json
c386a7294db6ed97f9b131cb8402ca6203092b63 data/hexcasting/recipes/akashic_wood_stripped.json
ef016ca292fa4edc7496b64e6f2931f4e7d90636 data/hexcasting/recipes/amethyst_dust_packing.json
91bb341776ce64a68e1c4200aa8f5b2fa6669820 data/hexcasting/recipes/amethyst_dust_unpacking.json
4b3f5fe572ec06feab786e3ba93b0d80b145dd69 data/hexcasting/recipes/amethyst_sconce.json
e5c835d3866e8f5ecfb03c9e7c2c134a50951d67 data/hexcasting/recipes/amethyst_tiles.json
0662d191ec9416e2c3c86962628d3bfbd11bc01f data/hexcasting/recipes/ancient_scroll_paper.json
3f9756b2c5137b285c4faa88ab43c4996b6b2bb6 data/hexcasting/recipes/ancient_scroll_paper_lantern.json
6e6e4d01097c10316892e274f33cb0faaf9dc0df data/hexcasting/recipes/artifact.json
d7f85ce9d46aacc7ec89dc7aa0f88a331ccfbae7 data/hexcasting/recipes/brainsweep/akashic_record.json
30f81e0537c625a4cafcdec75314926569291171 data/hexcasting/recipes/brainsweep/budding_amethyst.json
9f7a9ba332e1018098d21a5ec474440fca7f6c73 data/hexcasting/recipes/brainsweep/directrix_redstone.json
5861845c3cd84021c7c19ac4f5b3bcc8e1bd3916 data/hexcasting/recipes/brainsweep/impetus_look.json
ab5d271371323d93ff6eed18179ee4f7fd8c939c data/hexcasting/recipes/brainsweep/impetus_rightclick.json
34d21369f8879dd084c3215e709ae987a994372f data/hexcasting/recipes/brainsweep/impetus_storedplayer.json
bc140b6c5d999b4bc5d12c302297f56bde3b161c data/hexcasting/recipes/cypher.json
33fed8fb8e34df026e1eea0df8161c7f842a8648 data/hexcasting/recipes/dye_colorizer_black.json
c36caf44a941a4abc44a15141eba8fe634c76fb8 data/hexcasting/recipes/dye_colorizer_blue.json
91348d69c8a49eae2bbaf9fb00b9604c43716527 data/hexcasting/recipes/dye_colorizer_brown.json
e4ef73afbd13a579493f45929c3f7adb8aa86dc2 data/hexcasting/recipes/dye_colorizer_cyan.json
c471220e70ee9ecbf58a21ea1d28e653efcc4fad data/hexcasting/recipes/dye_colorizer_gray.json
fe5f10e9258f430859f1f1f87320a2b5c7b67654 data/hexcasting/recipes/dye_colorizer_green.json
06a4f3776d2bb8f294737d100143a0914342310a data/hexcasting/recipes/dye_colorizer_light_blue.json
25f5d03a6f4290bbbe86c9cac5604b1e8a49ad84 data/hexcasting/recipes/dye_colorizer_light_gray.json
4fad619e1330e938d2e2596fc8fd4e5050a8b40e data/hexcasting/recipes/dye_colorizer_lime.json
386f1b0f7676324186d0694de3c86a77fac5ce98 data/hexcasting/recipes/dye_colorizer_magenta.json
6f1c0a84236b1e3cb4352d87bf3d553eb7e1a938 data/hexcasting/recipes/dye_colorizer_orange.json
fe8a7288aa27c07932a31c64ff8fadb943b278d5 data/hexcasting/recipes/dye_colorizer_pink.json
16fd879351f390bfa980a5f4d77e32f576de2f66 data/hexcasting/recipes/dye_colorizer_purple.json
29559dc2a5c4e189ab7edfbb71fed0a84dd96d45 data/hexcasting/recipes/dye_colorizer_red.json
bc79add419b8791e68b35076355fea11dfc640c6 data/hexcasting/recipes/dye_colorizer_white.json
c5341777604a4be5a311e300a4de89967b7caad2 data/hexcasting/recipes/dye_colorizer_yellow.json
db8a00478e1c4b0f9b143b5946d1ba25e489591d data/hexcasting/recipes/dynamic/seal_focus.json
3a376402af89128dc37adaa0a72b6de66d58309d data/hexcasting/recipes/dynamic/seal_spellbook.json
a952d33cda8b805237052b602cf066683c4bf261 data/hexcasting/recipes/empty_directrix.json
b7c248d2627c2a2b398d1c50181c1e0863612424 data/hexcasting/recipes/empty_impetus.json
7eaf7ee280d1982ecbaf5175cea5c5a7c7804f98 data/hexcasting/recipes/focus.json
bbe78a0adf15bbcf5fb2d8089b24499ff7229858 data/hexcasting/recipes/jeweler_hammer.json
2397e64bd5fa2af12bb4f0f7efbc55f387c07a2b data/hexcasting/recipes/lens.json
0ea329526c81c1e4064bab61721ab4586cfcf706 data/hexcasting/recipes/pride_colorizer_0.json
c742a0a5fba2388263bfccfb49c60277d817f8cd data/hexcasting/recipes/pride_colorizer_1.json
855d1421063c24b2d1507f90f378f51261111d84 data/hexcasting/recipes/pride_colorizer_10.json
51a90058e4701f2d6ef157e1a930c203876e2447 data/hexcasting/recipes/pride_colorizer_11.json
65bb0279c70aed060a09332552a122cf993f5d2a data/hexcasting/recipes/pride_colorizer_12.json
5f1e9330dcdf927e128212678c8e262c6daa92f1 data/hexcasting/recipes/pride_colorizer_13.json
01841b89db3b16a614a098cd468b6d3b64986a34 data/hexcasting/recipes/pride_colorizer_2.json
8ef1f2fcc98c19e3ff1ccdf1c427a6458a720023 data/hexcasting/recipes/pride_colorizer_3.json
b3a23a6430b9e6c7c9e332c6ec996d9d90e7f432 data/hexcasting/recipes/pride_colorizer_4.json
c7c7fa49b7d1f0d03cd753f1ba78aa05a68135d0 data/hexcasting/recipes/pride_colorizer_5.json
5da3bff44e39ed9263f1f341d0a3851d02218018 data/hexcasting/recipes/pride_colorizer_6.json
5d6fac562dd7b7a4be0006de8b4758d5657ac054 data/hexcasting/recipes/pride_colorizer_7.json
03504ac1cc40ece1097e46a8244b7cfb4b32014c data/hexcasting/recipes/pride_colorizer_8.json
3a12c82f29953ee4131a0b49c1b35999c2779019 data/hexcasting/recipes/pride_colorizer_9.json
56d35172b3c5a58e2be4c5be20dd69417685f5d9 data/hexcasting/recipes/scroll.json
ccf4ea841ea9a66738253385c659ff86c85a73f5 data/hexcasting/recipes/scroll_paper.json
5c471f81cc168826f1652a39a71aeb85e786ea16 data/hexcasting/recipes/scroll_paper_lantern.json
f3a33396e071f3afd61eadab2aabdb9acf2ae775 data/hexcasting/recipes/slate.json
09e80537530ed51b6792f16fe8b32448e89dc334 data/hexcasting/recipes/slate_block.json
6f5c41ab9f87ec1206efaaab8d91adc766bb79fd data/hexcasting/recipes/slate_block_from_slates.json
4f06f5f4ae181c8bb6b993d7b6047cd9ca7afbce data/hexcasting/recipes/spellbook.json
ef936e73eea3be9d53c4ac5c78d1477675550375 data/hexcasting/recipes/stonecutting/amethyst_tiles.json
d14cf2f8f0895a5b6dc09b7582c0abf1c2514adf data/hexcasting/recipes/sub_sandwich.json
67b16cdb26f40234a7d4e49357724f24c197580a data/hexcasting/recipes/trinket.json
14d6be5d47b54676a349564ea32c045c76c39b45 data/hexcasting/recipes/uuid_colorizer.json
2ad42dd4a4877a23cb7f45e8b75c9f53f58d12f5 data/hexcasting/recipes/wand_acacia.json
1157a6545ece0e2b8734b8a1428f9a3c021c8b73 data/hexcasting/recipes/wand_akashic.json
f6fab3a3296d157a2b969af0c86eb0e5a9f14df4 data/hexcasting/recipes/wand_birch.json
0cd94b91d64a31a251eebbb37845d165c603452e data/hexcasting/recipes/wand_crimson.json
022dc03ce6f2915459c7bf75d44ec0b8bb3e4083 data/hexcasting/recipes/wand_dark_oak.json
2ec90cd941acad6eabfb38d21466ef8e9b9bf2c1 data/hexcasting/recipes/wand_jungle.json
f7bbc60f547a02378ddb1f23395add4822725fed data/hexcasting/recipes/wand_oak.json
196c49b203748e57a9b2b1259055b9de4b6be8d8 data/hexcasting/recipes/wand_spruce.json
db09b7fc38bdaffa15b57bd361da8529c7bc943e data/hexcasting/recipes/wand_warped.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/hexcasting/tags/blocks/akashic_logs.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data/hexcasting/tags/blocks/akashic_planks.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/hexcasting/tags/items/akashic_logs.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data/hexcasting/tags/items/akashic_planks.json
fe60c763bfe0afa0a266b7390edfc62bde8941b7 data/hexcasting/tags/items/phial_base.json
d1b8725bbfc01e2d9a02ef84c911fef89b3636a9 data/hexcasting/tags/items/wands.json
5f3e3813757d8300acad523d45ac7c4d85728399 data/minecraft/tags/blocks/buttons.json
1dc89dff5d4fadb95d9b5a2a5a910f63ea4b02bf data/minecraft/tags/blocks/crystal_sound_blocks.json
556d2e6068965e90c307a435b372ae761cd1c606 data/minecraft/tags/blocks/doors.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data/minecraft/tags/blocks/leaves.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/minecraft/tags/blocks/logs.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/minecraft/tags/blocks/logs_that_burn.json
cb5721fcb4a8f7bf14adf6ab560378a250128aba data/minecraft/tags/blocks/mineable/axe.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data/minecraft/tags/blocks/mineable/hoe.json
eb4bfbd7fc7632a5c16aa1d50d6090a1f466069b data/minecraft/tags/blocks/mineable/pickaxe.json
f55afc2c05d93b5a44bc9fd73c5e81e71b183965 data/minecraft/tags/blocks/mineable/shovel.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data/minecraft/tags/blocks/planks.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data/minecraft/tags/blocks/pressure_plates.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data/minecraft/tags/blocks/slabs.json
b8b58bbaf1ddca3514896af14db83f304e415305 data/minecraft/tags/blocks/trapdoors.json
5f3e3813757d8300acad523d45ac7c4d85728399 data/minecraft/tags/blocks/wooden_buttons.json
556d2e6068965e90c307a435b372ae761cd1c606 data/minecraft/tags/blocks/wooden_doors.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data/minecraft/tags/blocks/wooden_pressure_plates.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data/minecraft/tags/blocks/wooden_slabs.json
b8b58bbaf1ddca3514896af14db83f304e415305 data/minecraft/tags/blocks/wooden_trapdoors.json
5f3e3813757d8300acad523d45ac7c4d85728399 data/minecraft/tags/items/buttons.json
556d2e6068965e90c307a435b372ae761cd1c606 data/minecraft/tags/items/doors.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data/minecraft/tags/items/leaves.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/minecraft/tags/items/logs.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data/minecraft/tags/items/logs_that_burn.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data/minecraft/tags/items/planks.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data/minecraft/tags/items/slabs.json
b8b58bbaf1ddca3514896af14db83f304e415305 data/minecraft/tags/items/trapdoors.json
5f3e3813757d8300acad523d45ac7c4d85728399 data/minecraft/tags/items/wooden_buttons.json
556d2e6068965e90c307a435b372ae761cd1c606 data/minecraft/tags/items/wooden_doors.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data/minecraft/tags/items/wooden_pressure_plates.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data/minecraft/tags/items/wooden_slabs.json
b8b58bbaf1ddca3514896af14db83f304e415305 data/minecraft/tags/items/wooden_trapdoors.json

View file

@ -13,13 +13,11 @@ public class HexItemTags {
public static final TagKey<Item> WANDS = create("wands");
public static final TagKey<Item> PHIAL_BASE = create("phial_base");
public static final TagKey<Item> AMETHYST_DUST = create(new ResourceLocation("forge", "dusts/amethyst"));
private static TagKey<Item> create(String name) {
public static TagKey<Item> create(String name) {
return create(modLoc(name));
}
private static TagKey<Item> create(ResourceLocation id) {
public static TagKey<Item> create(ResourceLocation id) {
return TagKey.create(Registry.ITEM_REGISTRY, id);
}
}

View file

@ -123,7 +123,7 @@ class CastingHarness private constructor(
return CastResult(
continuation,
null,
ResolvedPatternType.ERROR,
ResolvedPatternType.ERRORED,
listOf(OperatorSideEffect.DoMishap(MishapError(exception), Mishap.Context(iota.payload as? HexPattern ?: HexPattern(HexDir.WEST), null)))
)
}
@ -167,7 +167,7 @@ class CastingHarness private constructor(
return CastResult(
cont2,
fd,
ResolvedPatternType.OK,
ResolvedPatternType.EVALUATED,
sideEffects,
)
} catch (mishap: Mishap) {
@ -182,7 +182,7 @@ class CastingHarness private constructor(
return CastResult(
continuation,
null,
ResolvedPatternType.ERROR,
ResolvedPatternType.ERRORED,
listOf(OperatorSideEffect.DoMishap(MishapError(exception), Mishap.Context(newPat, operatorIdPair?.second)))
)
}
@ -255,11 +255,11 @@ class CastingHarness private constructor(
this.getFunctionalData().copy(
escapeNext = false,
parenthesized = newParens
) to ResolvedPatternType.PATTERN
) to ResolvedPatternType.ESCAPED
} else if (operator == Widget.ESCAPE) {
this.getFunctionalData().copy(
escapeNext = true,
) to ResolvedPatternType.OK
) to ResolvedPatternType.EVALUATED
} else if (operator == Widget.OPEN_PAREN) {
// we have escaped the parens onto the stack; we just also record our count.
val newParens = this.parenthesized.toMutableList()
@ -267,7 +267,7 @@ class CastingHarness private constructor(
this.getFunctionalData().copy(
parenthesized = newParens,
parenCount = this.parenCount + 1
) to if (this.parenCount == 0) ResolvedPatternType.OK else ResolvedPatternType.PATTERN
) to if (this.parenCount == 0) ResolvedPatternType.EVALUATED else ResolvedPatternType.ESCAPED
} else if (operator == Widget.CLOSE_PAREN) {
val newParenCount = this.parenCount - 1
if (newParenCount == 0) {
@ -277,7 +277,7 @@ class CastingHarness private constructor(
stack = newStack,
parenCount = newParenCount,
parenthesized = listOf()
) to ResolvedPatternType.OK
) to ResolvedPatternType.EVALUATED
} else if (newParenCount < 0) {
throw MishapTooManyCloseParens()
} else {
@ -288,14 +288,14 @@ class CastingHarness private constructor(
this.getFunctionalData().copy(
parenCount = newParenCount,
parenthesized = newParens
) to ResolvedPatternType.PATTERN
) to ResolvedPatternType.ESCAPED
}
} else {
val newParens = this.parenthesized.toMutableList()
newParens.add(iota)
this.getFunctionalData().copy(
parenthesized = newParens
) to ResolvedPatternType.PATTERN
) to ResolvedPatternType.ESCAPED
}
} else if (this.escapeNext) {
val newStack = this.stack.toMutableList()
@ -303,15 +303,15 @@ class CastingHarness private constructor(
this.getFunctionalData().copy(
stack = newStack,
escapeNext = false,
) to ResolvedPatternType.PATTERN
) to ResolvedPatternType.ESCAPED
} else if (operator == Widget.ESCAPE) {
this.getFunctionalData().copy(
escapeNext = true
) to ResolvedPatternType.OK
) to ResolvedPatternType.EVALUATED
} else if (operator == Widget.OPEN_PAREN) {
this.getFunctionalData().copy(
parenCount = this.parenCount + 1
) to ResolvedPatternType.OK
) to ResolvedPatternType.EVALUATED
} else if (operator == Widget.CLOSE_PAREN) {
throw MishapTooManyCloseParens()
} else {

View file

@ -24,7 +24,7 @@ data class ResolvedPattern(val pattern: HexPattern, val origin: HexCoord, var ty
val valid = try {
ResolvedPatternType.valueOf(tag.getString("Valid").uppercase(Locale.ROOT))
} catch (e: IllegalArgumentException) {
ResolvedPatternType.UNKNOWN
ResolvedPatternType.UNRESOLVED
}
return ResolvedPattern(pattern, origin, valid)
}

View file

@ -1,9 +1,9 @@
package at.petrak.hexcasting.api.spell.casting
enum class ResolvedPatternType(val color: Int, val fadeColor: Int, val success: Boolean) {
UNKNOWN(0x7f7f7f, 0xcccccc, false),
OK(0x7385de, 0xfecbe6, true),
PATTERN(0xdddd73, 0xffffe5, true),
ERROR(0xde6262, 0xffc7a0, false),
INVALID(0xddbcbc, 0xfff0e5, false)
UNRESOLVED(0x7f7f7f, 0xcccccc, false),
EVALUATED(0x7385de, 0xfecbe6, true),
ESCAPED(0xddcc73, 0xfffae5, true),
ERRORED(0xde6262, 0xffc7a0, false),
INVALID(0xb26b6b, 0xcca88e, false)
}

View file

@ -29,7 +29,7 @@ sealed class Mishap : Throwable() {
return ParticleSpray(ctx.position.add(0.0, 0.2, 0.0), Vec3(0.0, 2.0, 0.0), 0.2, Math.PI / 4, 40)
}
open fun resolutionType(ctx: CastingContext): ResolvedPatternType = ResolvedPatternType.ERROR
open fun resolutionType(ctx: CastingContext): ResolvedPatternType = ResolvedPatternType.ERRORED
/**
* Execute the actual effect, not any sfx.

View file

@ -211,7 +211,7 @@ class GuiSpellcasting(
is PatternDrawState.Drawing -> {
val (start, _, pat) = this.drawState as PatternDrawState.Drawing
this.drawState = PatternDrawState.BetweenPatterns
this.patterns.add(ResolvedPattern(pat, start, ResolvedPatternType.UNKNOWN))
this.patterns.add(ResolvedPattern(pat, start, ResolvedPatternType.UNRESOLVED))
this.usedSpots.addAll(pat.positions(start))

View file

@ -10,7 +10,7 @@ public class HexBlockTags {
public static final TagKey<Block> AKASHIC_LOGS = create("akashic_logs");
public static final TagKey<Block> AKASHIC_PLANKS = create("akashic_planks");
private static TagKey<Block> create(String name) {
public static TagKey<Block> create(String name) {
return TagKey.create(Registry.BLOCK_REGISTRY, modLoc(name));
}
}

View file

@ -0,0 +1,13 @@
package at.petrak.hexcasting.mixin;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.tags.Tag;
import net.minecraft.tags.TagKey;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(TagsProvider.class)
public interface AccessorTagsProvider<T> {
@Invoker("getOrCreateRawBuilder")
Tag.Builder hex$getOrCreateRawBuilder(TagKey<T> p_206427_);
}

View file

@ -0,0 +1,16 @@
package at.petrak.hexcasting.mixin.accessor;
import com.google.gson.JsonObject;
import net.minecraft.data.HashCache;
import net.minecraft.data.recipes.RecipeProvider;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
import java.nio.file.Path;
@Mixin(RecipeProvider.class)
public interface AccessorRecipeProvider {
@Invoker("saveRecipe")
static void hex$SaveRecipe(HashCache $$0, JsonObject $$1, Path $$2) {
}
}

View file

@ -10,7 +10,10 @@ import at.petrak.hexcasting.api.player.Sentinel;
import at.petrak.hexcasting.api.spell.casting.CastingHarness;
import at.petrak.hexcasting.api.spell.casting.ResolvedPattern;
import at.petrak.hexcasting.common.network.IMessage;
import com.google.gson.JsonObject;
import net.minecraft.core.BlockPos;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.HashCache;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
@ -31,9 +34,11 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.Nullable;
import java.nio.file.Path;
import java.util.List;
import java.util.ServiceLoader;
import java.util.function.BiFunction;
@ -119,10 +124,20 @@ public interface IXplatAbstractions {
ResourceLocation getID(Block block);
ResourceLocation getID(Item item);
ResourceLocation getID(VillagerProfession profession);
Ingredient getUnsealedIngredient(ItemStack stack);
void saveRecipeAdvancement(DataGenerator generator, HashCache cache, JsonObject json, Path path);
IXplatTags tags();
LootItemCondition.Builder isShearsCondition();
///
IXplatAbstractions INSTANCE = find();
private static IXplatAbstractions find() {

View file

@ -0,0 +1,11 @@
package at.petrak.hexcasting.xplat;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
// https://fabricmc.net/wiki/tutorial:tags#existing_common_tags
public interface IXplatTags {
TagKey<Item> amethystDust();
TagKey<Item> gems();
}

View file

@ -1,22 +1,24 @@
package at.petrak.hexcasting.forge.datagen;
package at.petrak.hexcasting.xplat.datagen;
import at.petrak.hexcasting.api.HexAPI;
import at.petrak.hexcasting.common.lib.HexBlockTags;
import at.petrak.hexcasting.common.lib.HexBlocks;
import at.petrak.hexcasting.xplat.IXplatTags;
import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.tags.BlockTagsProvider;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.tags.BlockTags;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;
import net.minecraft.world.level.block.Block;
public class HexBlockTagProvider extends BlockTagsProvider {
public HexBlockTagProvider(DataGenerator pGenerator,
@Nullable ExistingFileHelper existingFileHelper) {
super(pGenerator, HexAPI.MOD_ID, existingFileHelper);
public class HexBlockTagProvider extends TagsProvider<Block> {
public final IXplatTags xtags;
public HexBlockTagProvider(DataGenerator pGenerator, IXplatTags xtags) {
super(pGenerator, Registry.BLOCK);
this.xtags = xtags;
}
@Override
protected void addTags() {
public void addTags() {
tag(BlockTags.MINEABLE_WITH_PICKAXE)
.add(HexBlocks.SLATE_BLOCK, HexBlocks.SLATE,
HexBlocks.EMPTY_DIRECTRIX, HexBlocks.DIRECTRIX_REDSTONE,
@ -79,4 +81,9 @@ public class HexBlockTagProvider extends BlockTagsProvider {
tag(BlockTags.WOODEN_BUTTONS)
.add(HexBlocks.AKASHIC_BUTTON);
}
@Override
public String getName() {
return "Hexcasting Block Tags";
}
}

View file

@ -1,29 +1,40 @@
package at.petrak.hexcasting.forge.datagen;
package at.petrak.hexcasting.xplat.datagen;
import at.petrak.hexcasting.api.HexAPI;
import at.petrak.hexcasting.api.mod.HexItemTags;
import at.petrak.hexcasting.common.lib.HexBlockTags;
import at.petrak.hexcasting.common.lib.HexItems;
import at.petrak.hexcasting.mixin.AccessorTagsProvider;
import at.petrak.hexcasting.xplat.IXplatTags;
import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.tags.BlockTagsProvider;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;
import net.minecraft.world.level.block.Block;
public class HexItemTagProvider extends ItemTagsProvider {
public HexItemTagProvider(DataGenerator pGenerator, BlockTagsProvider pBlockTagsProvider,
@Nullable ExistingFileHelper existingFileHelper) {
super(pGenerator, pBlockTagsProvider, HexAPI.MOD_ID, existingFileHelper);
import java.util.function.Function;
// ForgeCopy, mostly
public class HexItemTagProvider extends TagsProvider<Item> {
private final Function<TagKey<Block>, Tag.Builder> blockTags;
private final IXplatTags xtags;
public HexItemTagProvider(DataGenerator pGenerator, TagsProvider<Block> pBlockTagsProvider, IXplatTags xtags) {
super(pGenerator, Registry.ITEM);
this.blockTags = tag -> ((AccessorTagsProvider<Block>) pBlockTagsProvider).hex$getOrCreateRawBuilder(tag);
this.xtags = xtags;
}
@Override
protected void addTags() {
tag(Tags.Items.GEMS).add(HexItems.CHARGED_AMETHYST);
tag(HexItemTags.AMETHYST_DUST).add(HexItems.AMETHYST_DUST);
tag(xtags.gems()).add(HexItems.CHARGED_AMETHYST);
tag(xtags.amethystDust()).add(HexItems.AMETHYST_DUST);
tag(HexItemTags.WANDS).add(HexItems.WAND_OAK, HexItems.WAND_SPRUCE, HexItems.WAND_BIRCH,
HexItems.WAND_JUNGLE, HexItems.WAND_ACACIA, HexItems.WAND_DARK_OAK,
HexItems.WAND_CRIMSON, HexItems.WAND_WARPED, HexItems.WAND_AKASHIC);
@ -46,4 +57,15 @@ public class HexItemTagProvider extends ItemTagsProvider {
this.copy(BlockTags.BUTTONS, ItemTags.BUTTONS);
this.copy(BlockTags.WOODEN_BUTTONS, ItemTags.WOODEN_BUTTONS);
}
protected void copy(TagKey<Block> p_206422_, TagKey<Item> p_206423_) {
Tag.Builder tag$builder = this.getOrCreateRawBuilder(p_206423_);
Tag.Builder tag$builder1 = this.blockTags.apply(p_206422_);
tag$builder1.getEntries().forEach(tag$builder::add);
}
@Override
public String getName() {
return "Hexcasting Item Tags";
}
}

View file

@ -1,14 +1,21 @@
package at.petrak.hexcasting.forge.datagen;
package at.petrak.hexcasting.xplat.datagen;
import at.petrak.hexcasting.common.blocks.circles.BlockEntitySlate;
import at.petrak.hexcasting.common.lib.HexBlocks;
import at.petrak.paucal.api.forge.datagen.PaucalLootTableProvider;
import at.petrak.hexcasting.xplat.IXplatAbstractions;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.minecraft.advancements.critereon.EnchantmentPredicate;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.advancements.critereon.MinMaxBounds;
import net.minecraft.advancements.critereon.StatePropertiesPredicate;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.DataProvider;
import net.minecraft.data.HashCache;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.DoorBlock;
import net.minecraft.world.level.block.SlabBlock;
@ -16,28 +23,33 @@ import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
import net.minecraft.world.level.block.state.properties.SlabType;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.LootTables;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.functions.ApplyExplosionDecay;
import net.minecraft.world.level.storage.loot.functions.CopyNbtFunction;
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.minecraft.world.level.storage.loot.predicates.AlternativeLootItemCondition;
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition;
import net.minecraft.world.level.storage.loot.predicates.MatchTool;
import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
import net.minecraftforge.common.ToolActions;
import net.minecraftforge.common.loot.CanToolPerformAction;
import net.minecraft.world.level.storage.loot.providers.number.NumberProvider;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
// https://github.com/XuulMedia/Flint-Age/blob/4638289130ef80dafe9b6a3fdcb461a72688100f/src/main/java/xuul/flint/datagen/BaseLootTableProvider.java#L61
// auugh mojang whyyyy
public class HexLootTables extends PaucalLootTableProvider {
public class HexLootTables extends LootTableProvider {
// steal it ALL from paucal
protected final DataGenerator generator;
public HexLootTables(DataGenerator pGenerator) {
super(pGenerator);
this.generator = pGenerator;
}
@Override
protected void makeLootTables(Map<Block, LootTable.Builder> lootTables) {
dropSelf(lootTables, HexBlocks.EMPTY_IMPETUS,
HexBlocks.IMPETUS_RIGHTCLICK, HexBlocks.IMPETUS_LOOK, HexBlocks.IMPETUS_STOREDPLAYER,
@ -49,7 +61,8 @@ public class HexLootTables extends PaucalLootTableProvider {
HexBlocks.AKASHIC_LOG, HexBlocks.AKASHIC_LOG_STRIPPED, HexBlocks.AKASHIC_WOOD,
HexBlocks.AKASHIC_WOOD_STRIPPED,
HexBlocks.AKASHIC_PLANKS, HexBlocks.AKASHIC_TILE, HexBlocks.AKASHIC_PANEL,
HexBlocks.AKASHIC_TRAPDOOR, HexBlocks.AKASHIC_STAIRS, HexBlocks.AKASHIC_PRESSURE_PLATE, HexBlocks.AKASHIC_BUTTON);
HexBlocks.AKASHIC_TRAPDOOR, HexBlocks.AKASHIC_STAIRS, HexBlocks.AKASHIC_PRESSURE_PLATE,
HexBlocks.AKASHIC_BUTTON);
makeSlabTable(lootTables, HexBlocks.AKASHIC_SLAB);
@ -57,8 +70,8 @@ public class HexLootTables extends PaucalLootTableProvider {
makeLeafTable(lootTables, HexBlocks.AKASHIC_LEAVES2);
makeLeafTable(lootTables, HexBlocks.AKASHIC_LEAVES3);
var slatePool = LootPool.lootPool().name("slate").
setRolls(ConstantValue.exactly(1))
var slatePool = LootPool.lootPool()
.setRolls(ConstantValue.exactly(1))
.add(LootItem.lootTableItem(HexBlocks.SLATE)
.apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY)
.copy(BlockEntitySlate.TAG_PATTERN, "BlockEntityTag." + BlockEntitySlate.TAG_PATTERN)));
@ -74,7 +87,7 @@ public class HexLootTables extends PaucalLootTableProvider {
private void makeLeafTable(Map<Block, LootTable.Builder> lootTables, Block block) {
var leafPool = dropThisPool(block, 1)
.when(new AlternativeLootItemCondition.Builder(
CanToolPerformAction.canToolPerformAction(ToolActions.SHEARS_DIG),
IXplatAbstractions.INSTANCE.isShearsCondition(),
MatchTool.toolMatches(ItemPredicate.Builder.item()
.hasEnchantment(new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.atLeast(1))))
));
@ -90,4 +103,60 @@ public class HexLootTables extends PaucalLootTableProvider {
.apply(ApplyExplosionDecay.explosionDecay());
lootTables.put(block, LootTable.lootTable().withPool(leafPool));
}
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
protected LootPool.Builder dropThisPool(ItemLike item, int count) {
return dropThisPool(item, ConstantValue.exactly(count));
}
protected LootPool.Builder dropThisPool(ItemLike item, NumberProvider count) {
return LootPool.lootPool()
.setRolls(count)
.add(LootItem.lootTableItem(item));
}
protected void dropSelf(Map<Block, LootTable.Builder> lootTables, Block... blocks) {
for (var block : blocks) {
dropSelf(block, lootTables);
}
}
protected void dropSelf(Block block, Map<Block, LootTable.Builder> lootTables) {
var table = LootTable.lootTable().withPool(dropThisPool(block, 1));
lootTables.put(block, table);
}
protected void dropThis(Block block, ItemLike drop, Map<Block, LootTable.Builder> lootTables) {
var table = LootTable.lootTable().withPool(dropThisPool(drop, 1));
lootTables.put(block, table);
}
protected void dropThis(Block block, ItemLike drop, NumberProvider count,
Map<Block, LootTable.Builder> lootTables) {
var table = LootTable.lootTable().withPool(dropThisPool(drop, count));
lootTables.put(block, table);
}
@Override
public void run(HashCache cache) {
var lootTables = new HashMap<Block, LootTable.Builder>();
this.makeLootTables(lootTables);
var tables = new HashMap<ResourceLocation, LootTable>();
for (var entry : lootTables.entrySet()) {
tables.put(entry.getKey().getLootTable(), entry.getValue().setParamSet(LootContextParamSets.BLOCK).build());
}
var outputFolder = this.generator.getOutputFolder();
tables.forEach((key, lootTable) -> {
Path path = outputFolder.resolve("data/" + key.getNamespace() + "/loot_tables/" + key.getPath() + ".json");
try {
DataProvider.save(GSON, cache, LootTables.serialize(lootTable), path);
} catch (IOException e) {
e.printStackTrace();
}
});
}
}

View file

@ -0,0 +1,26 @@
package at.petrak.hexcasting.xplat.datagen;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.crafting.Ingredient;
import java.util.EnumMap;
public interface IXplatIngredients {
Ingredient glowstoneDust();
Ingredient leather();
Ingredient ironNugget();
Ingredient goldNugget();
Ingredient copperIngot();
Ingredient ironIngot();
Ingredient goldIngot();
EnumMap<DyeColor, Ingredient> dyes();
Ingredient stick();
}

View file

@ -1,4 +1,4 @@
package at.petrak.hexcasting.forge.datagen;
package at.petrak.hexcasting.xplat.datagen.recipe;
import at.petrak.hexcasting.api.HexAPI;
import at.petrak.hexcasting.api.advancements.OvercastTrigger;
@ -10,13 +10,19 @@ import at.petrak.hexcasting.common.recipe.SealFocusRecipe;
import at.petrak.hexcasting.common.recipe.SealSpellbookRecipe;
import at.petrak.hexcasting.common.recipe.ingredient.StateIngredientHelper;
import at.petrak.hexcasting.common.recipe.ingredient.VillagerIngredient;
import at.petrak.hexcasting.forge.datagen.recipebuilders.BrainsweepRecipeBuilder;
import at.petrak.paucal.api.forge.datagen.PaucalRecipeProvider;
import at.petrak.hexcasting.mixin.accessor.AccessorRecipeProvider;
import at.petrak.hexcasting.xplat.IXplatAbstractions;
import at.petrak.hexcasting.xplat.datagen.IXplatIngredients;
import at.petrak.hexcasting.xplat.datagen.recipe.builders.BrainsweepRecipeBuilder;
import com.google.common.collect.Sets;
import com.google.gson.JsonObject;
import net.minecraft.advancements.critereon.EntityPredicate;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.advancements.critereon.MinMaxBounds;
import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.HashCache;
import net.minecraft.data.recipes.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
@ -27,20 +33,54 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.SimpleRecipeSerializer;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.common.Tags;
import net.minecraftforge.registries.ForgeRegistries;
import org.jetbrains.annotations.Nullable;
import java.nio.file.Path;
import java.util.Set;
import java.util.function.Consumer;
import static at.petrak.hexcasting.api.HexAPI.modLoc;
public class HexRecipes extends PaucalRecipeProvider {
public HexRecipes(DataGenerator pGenerator) {
super(pGenerator, HexAPI.MOD_ID);
public class HexplatRecipes extends RecipeProvider {
public DataGenerator generator;
public IXplatIngredients ingredients;
public HexplatRecipes(DataGenerator pGenerator, IXplatIngredients ingredients) {
super(pGenerator);
this.generator = pGenerator;
this.ingredients = ingredients;
}
// [VanillaCopy] RecipeProvider
@Override
protected void buildCraftingRecipes(Consumer<FinishedRecipe> recipes) {
public void run(HashCache cache) {
Path path = this.generator.getOutputFolder();
Set<ResourceLocation> set = Sets.newHashSet();
makeRecipes((recipeJsonProvider) -> {
if (!set.add(recipeJsonProvider.getId())) {
throw new IllegalStateException("Duplicate recipe " + recipeJsonProvider.getId());
} else {
AccessorRecipeProvider.hex$SaveRecipe(cache, recipeJsonProvider.serializeRecipe(), path.resolve(
"data/" + recipeJsonProvider.getId().getNamespace() + "/recipes/" + recipeJsonProvider.getId()
.getPath() + ".json"));
JsonObject jsonObject = recipeJsonProvider.serializeAdvancement();
if (jsonObject != null) {
IXplatAbstractions.INSTANCE.saveRecipeAdvancement(this.generator, cache, jsonObject, path.resolve(
"data/"
+ recipeJsonProvider.getId().getNamespace()
+ "/advancements/" +
recipeJsonProvider.getAdvancementId().getPath()
+ ".json"));
}
}
});
}
protected void makeRecipes(Consumer<FinishedRecipe> recipes) {
specialRecipe(recipes, SealFocusRecipe.SERIALIZER);
specialRecipe(recipes, SealSpellbookRecipe.SERIALIZER);
@ -54,13 +94,13 @@ public class HexRecipes extends PaucalRecipeProvider {
wandRecipe(recipes, HexItems.WAND_WARPED, Items.WARPED_PLANKS);
wandRecipe(recipes, HexItems.WAND_AKASHIC, HexBlocks.AKASHIC_PLANKS.asItem());
ringCornered(HexItems.FOCUS, 1, Ingredient.of(Tags.Items.DUSTS_GLOWSTONE),
Ingredient.of(Tags.Items.LEATHER), Ingredient.of(HexItems.CHARGED_AMETHYST))
ringCornered(HexItems.FOCUS, 1, ingredients.glowstoneDust(),
ingredients.leather(), Ingredient.of(HexItems.CHARGED_AMETHYST))
.unlockedBy("has_item", has(HexItemTags.WANDS))
.save(recipes);
ShapedRecipeBuilder.shaped(HexItems.SPELLBOOK)
.define('N', Tags.Items.NUGGETS_GOLD)
.define('N', ingredients.goldNugget())
.define('B', Items.WRITABLE_BOOK)
.define('A', HexItems.CHARGED_AMETHYST)
.define('F', Items.CHORUS_FRUIT) // i wanna gate this behind the end SOMEHOW
@ -72,17 +112,17 @@ public class HexRecipes extends PaucalRecipeProvider {
.unlockedBy("has_chorus", has(Items.CHORUS_FRUIT)).save(recipes);
ringCornerless(HexItems.CYPHER, 1,
Ingredient.of(Tags.Items.INGOTS_COPPER),
ingredients.copperIngot(),
Ingredient.of(HexItems.AMETHYST_DUST))
.unlockedBy("has_item", has(HexItemTags.WANDS)).save(recipes);
ringCornerless(HexItems.TRINKET, 1,
Ingredient.of(Tags.Items.INGOTS_IRON),
ingredients.ironIngot(),
Ingredient.of(Items.AMETHYST_SHARD))
.unlockedBy("has_item", has(HexItemTags.WANDS)).save(recipes);
ShapedRecipeBuilder.shaped(HexItems.ARTIFACT)
.define('F', Tags.Items.INGOTS_GOLD)
.define('F', ingredients.goldIngot())
.define('A', HexItems.CHARGED_AMETHYST)
// why in god's name does minecraft have two different places for item tags
.define('D', ItemTags.MUSIC_DISCS)
@ -166,10 +206,10 @@ public class HexRecipes extends PaucalRecipeProvider {
.unlockedBy("has_item", has(HexItems.AMETHYST_DUST)).save(recipes);
ShapedRecipeBuilder.shaped(HexItems.JEWELER_HAMMER)
.define('I', Items.IRON_INGOT)
.define('N', Items.IRON_NUGGET)
.define('I', ingredients.ironIngot())
.define('N', ingredients.ironNugget())
.define('A', Items.AMETHYST_SHARD)
.define('S', Items.STICK)
.define('S', ingredients.stick())
.pattern("IAN")
.pattern(" S ")
.pattern(" S ")
@ -197,7 +237,7 @@ public class HexRecipes extends PaucalRecipeProvider {
ringAll(HexBlocks.SCROLL_PAPER, 8, Items.PAPER, Items.AMETHYST_SHARD)
.unlockedBy("has_item", has(Items.AMETHYST_SHARD)).save(recipes);
ShapelessRecipeBuilder.shapeless(HexBlocks.ANCIENT_SCROLL_PAPER, 8)
.requires(Tags.Items.DYES_BROWN)
.requires(ingredients.dyes().get(DyeColor.BROWN))
.requires(HexBlocks.SCROLL_PAPER, 8)
.unlockedBy("has_item", has(HexBlocks.SCROLL_PAPER)).save(recipes);
stack(HexBlocks.SCROLL_PAPER_LANTERN, 1, HexBlocks.SCROLL_PAPER, Items.TORCH)
@ -205,13 +245,13 @@ public class HexRecipes extends PaucalRecipeProvider {
stack(HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, 1, HexBlocks.ANCIENT_SCROLL_PAPER, Items.TORCH)
.unlockedBy("has_item", has(HexBlocks.ANCIENT_SCROLL_PAPER)).save(recipes);
ShapelessRecipeBuilder.shapeless(HexBlocks.ANCIENT_SCROLL_PAPER_LANTERN, 8)
.requires(Tags.Items.DYES_BROWN)
.requires(ingredients.dyes().get(DyeColor.BROWN))
.requires(HexBlocks.SCROLL_PAPER_LANTERN, 8)
.unlockedBy("has_item", has(HexBlocks.SCROLL_PAPER_LANTERN))
.save(recipes, modLoc("ageing_scroll_paper_lantern"));
stack(HexBlocks.SCONCE, 4, Ingredient.of(HexItems.CHARGED_AMETHYST),
Ingredient.of(Tags.Items.INGOTS_COPPER))
ingredients.copperIngot())
.unlockedBy("has_item", has(HexItems.CHARGED_AMETHYST)).save(recipes);
ShapelessRecipeBuilder.shapeless(HexBlocks.AKASHIC_PLANKS, 4)
@ -366,12 +406,156 @@ public class HexRecipes extends PaucalRecipeProvider {
}
protected void specialRecipe(Consumer<FinishedRecipe> consumer, SimpleRecipeSerializer<?> serializer) {
var name = ForgeRegistries.RECIPE_SERIALIZERS.getKey(serializer);
var name = Registry.RECIPE_SERIALIZER.getKey(serializer);
SpecialRecipeBuilder.special(serializer).save(consumer, HexAPI.MOD_ID + ":dynamic/" + name.getPath());
}
// why is this private waa
protected static InventoryChangeTrigger.TriggerInstance has(TagKey<Item> pTag) {
public static InventoryChangeTrigger.TriggerInstance has(TagKey<Item> pTag) {
return inventoryTrigger(ItemPredicate.Builder.item().of(pTag).build());
}
public static InventoryChangeTrigger.TriggerInstance has(ItemLike $$0) {
return inventoryTrigger(ItemPredicate.Builder.item().of($$0).build());
}
public static InventoryChangeTrigger.TriggerInstance inventoryTrigger(ItemPredicate... $$0) {
return new InventoryChangeTrigger.TriggerInstance(EntityPredicate.Composite.ANY, MinMaxBounds.Ints.ANY,
MinMaxBounds.Ints.ANY, MinMaxBounds.Ints.ANY, $$0);
}
// steal from paucal
protected ShapedRecipeBuilder ring(ItemLike out, int count, Ingredient outer, @Nullable Ingredient inner) {
return this.ringCornered(out, count, outer, outer, inner);
}
protected ShapedRecipeBuilder ring(ItemLike out, int count, ItemLike outer, @Nullable ItemLike inner) {
return this.ring(out, count, Ingredient.of(new ItemLike[]{outer}), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ring(ItemLike out, int count, TagKey<Item> outer, @Nullable TagKey<Item> inner) {
return this.ring(out, count, Ingredient.of(outer), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringCornerless(ItemLike out, int count, Ingredient outer,
@Nullable Ingredient inner) {
return this.ringCornered(out, count, (Ingredient) outer, (Ingredient) null, (Ingredient) inner);
}
protected ShapedRecipeBuilder ringCornerless(ItemLike out, int count, ItemLike outer, @Nullable ItemLike inner) {
return this.ringCornerless(out, count, Ingredient.of(new ItemLike[]{outer}), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringCornerless(ItemLike out, int count, TagKey<Item> outer,
@Nullable TagKey<Item> inner) {
return this.ringCornerless(out, count, Ingredient.of(outer), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringAll(ItemLike out, int count, Ingredient outer, @Nullable Ingredient inner) {
return this.ringCornered(out, count, outer, outer, inner);
}
protected ShapedRecipeBuilder ringAll(ItemLike out, int count, ItemLike outer, @Nullable ItemLike inner) {
return this.ringAll(out, count, Ingredient.of(outer), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringAll(ItemLike out, int count, TagKey<Item> outer, @Nullable TagKey<Item> inner) {
return this.ringAll(out, count, Ingredient.of(outer), this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringCornered(ItemLike out, int count, @Nullable Ingredient cardinal,
@Nullable Ingredient diagonal, @Nullable Ingredient inner) {
if (cardinal == null && diagonal == null && inner == null) {
throw new IllegalArgumentException("at least one ingredient must be non-null");
} else if (inner != null && cardinal == null && diagonal == null) {
throw new IllegalArgumentException("if inner is non-null, either cardinal or diagonal must not be");
} else {
ShapedRecipeBuilder builder = ShapedRecipeBuilder.shaped(out, count);
char C = ' ';
if (cardinal != null) {
builder.define('C', cardinal);
C = 'C';
}
char D = ' ';
if (diagonal != null) {
builder.define('D', diagonal);
D = 'D';
}
char I = ' ';
if (inner != null) {
builder.define('I', inner);
I = 'I';
}
builder.pattern(String.format("%c%c%c", D, C, D))
.pattern(String.format("%c%c%c", C, I, C))
.pattern(String.format("%c%c%c", D, C, D));
return builder;
}
}
protected ShapedRecipeBuilder ringCornered(ItemLike out, int count, @Nullable ItemLike cardinal,
@Nullable ItemLike diagonal, @Nullable ItemLike inner) {
return this.ringCornered(out, count, this.ingredientOf(cardinal), this.ingredientOf(diagonal),
this.ingredientOf(inner));
}
protected ShapedRecipeBuilder ringCornered(ItemLike out, int count, @Nullable TagKey<Item> cardinal,
@Nullable TagKey<Item> diagonal, @Nullable TagKey<Item> inner) {
return this.ringCornered(out, count, this.ingredientOf(cardinal), this.ingredientOf(diagonal),
this.ingredientOf(inner));
}
protected ShapedRecipeBuilder stack(ItemLike out, int count, Ingredient top, Ingredient bottom) {
return ShapedRecipeBuilder.shaped(out, count).define('T', top).define('B', bottom).pattern("T").pattern("B");
}
protected ShapedRecipeBuilder stack(ItemLike out, int count, ItemLike top, ItemLike bottom) {
return this.stack(out, count, Ingredient.of(top), Ingredient.of(bottom));
}
protected ShapedRecipeBuilder stack(ItemLike out, int count, TagKey<Item> top, TagKey<Item> bottom) {
return this.stack(out, count, Ingredient.of(top), Ingredient.of(bottom));
}
protected ShapedRecipeBuilder stick(ItemLike out, int count, Ingredient input) {
return this.stack(out, count, input, input);
}
protected ShapedRecipeBuilder stick(ItemLike out, int count, ItemLike input) {
return this.stick(out, count, Ingredient.of(input));
}
protected ShapedRecipeBuilder stick(ItemLike out, int count, TagKey<Item> input) {
return this.stick(out, count, Ingredient.of(input));
}
protected void packing(ItemLike free, ItemLike compressed, String freeName, boolean largeSize,
Consumer<FinishedRecipe> recipes) {
ShapedRecipeBuilder pack = ShapedRecipeBuilder.shaped(compressed).define('X', free);
if (largeSize) {
pack.pattern("XXX").pattern("XXX").pattern("XXX");
} else {
pack.pattern("XX").pattern("XX");
}
pack.unlockedBy("has_item", has(free)).save(recipes, modLoc(freeName + "_packing"));
ShapelessRecipeBuilder.shapeless(free, largeSize ? 9 : 4)
.requires(compressed)
.unlockedBy("has_item", has(free))
.save(recipes, modLoc(freeName + "_unpacking"));
}
@Nullable
protected Ingredient ingredientOf(@Nullable ItemLike item) {
return item == null ? null : Ingredient.of(new ItemLike[]{item});
}
@Nullable
protected Ingredient ingredientOf(@Nullable TagKey<Item> item) {
return item == null ? null : Ingredient.of(item);
}
}

View file

@ -1,4 +1,4 @@
package at.petrak.hexcasting.forge.datagen.recipebuilders;
package at.petrak.hexcasting.xplat.datagen.recipe.builders;
import at.petrak.hexcasting.common.recipe.HexRecipeSerializers;
import at.petrak.hexcasting.common.recipe.ingredient.StateIngredient;

View file

@ -5,12 +5,7 @@
"refmap": "hexcasting.mixins.refmap.json",
"package": "at.petrak.hexcasting.mixin",
"mixins": [
"MixinMob",
"MixinRaider",
"MixinVillager",
"MixinWitch",
"accessor.AccessorLivingEntity",
"accessor.AccessorUseOnContext",
"accessor.CriteriaTriggersAccessor"
"AccessorTagsProvider", "MixinMob", "MixinRaider", "MixinVillager", "MixinWitch", "accessor.AccessorLivingEntity",
"accessor.AccessorRecipeProvider", "accessor.AccessorUseOnContext", "accessor.CriteriaTriggersAccessor"
]
}

View file

@ -18,6 +18,12 @@ loom {
server()
setConfigName("Fabric Server")
}
datagen {
client()
vmArg "-Dfabric-api.datagen"
vmArg "-Dfabric-api.datagen.modid=${modID}"
vmArg "-Dfabric-api.datagen.output-dir=${file("src/generated/resources")}"
}
configureEach {
runDir "Fabric/run"
@ -85,4 +91,8 @@ processResources {
filesMatching("fabric.mod.json") {
expand "version": project.version
}
duplicatesStrategy 'exclude'
}
setupJar(this)

View file

@ -0,0 +1,244 @@
196c49b203748e57a9b2b1259055b9de4b6be8d8 data\hexcasting\recipes\wand_spruce.json
06a4f3776d2bb8f294737d100143a0914342310a data\hexcasting\recipes\dye_colorizer_light_blue.json
e125117befadda0785e370969a8e04eff070d057 data\hexcasting\loot_tables\blocks\amethyst_sconce.json
5f3e3813757d8300acad523d45ac7c4d85728399 data\minecraft\tags\blocks\wooden_buttons.json
26782da27b3ce2dcab8545f672d68fe1a8549f35 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_slab.json
8aa3d09d72255aa4da497ab4225654961063a496 data\hexcasting\recipes\ancient_scroll_paper.json
fe5f10e9258f430859f1f1f87320a2b5c7b67654 data\hexcasting\recipes\dye_colorizer_green.json
7a535e710c96e39a17606a10bc1f153d7c57b8e7 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_pressure_plate.json
090b54b026f6fef2502295ddde5a60f5350e2ec6 data\hexcasting\advancements\recipes\hexcasting.creative_tab\artifact.json
49b6ea97ddc55ef3d7fa47582f268a07a35cadde data\hexcasting\loot_tables\blocks\slate.json
9fcc0862c99c50a1df9d3af95b2b3c2af28afa1b data\hexcasting\advancements\recipes\hexcasting.creative_tab\slate_block_from_slates.json
4f852507d843f82dce1512f55abfb205b9829ed4 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_planks.json
2397e64bd5fa2af12bb4f0f7efbc55f387c07a2b data\hexcasting\recipes\lens.json
26e9416771d97f9c716d07c27b1b5ca4a267eea2 data\hexcasting\loot_tables\blocks\amethyst_dust_block.json
3e49b1076839e73e871faf64262f96bed22a6b1d data\hexcasting\recipes\artifact.json
a78da1015ec1e17bf99ffaa75a85ed2cdf0351d2 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_2.json
add097a7a749bd1ebd5828216f013f6cd5b72b62 data\hexcasting\recipes\akashic_door.json
8ef1f2fcc98c19e3ff1ccdf1c427a6458a720023 data\hexcasting\recipes\pride_colorizer_3.json
85fea90b80954899f236e52d3b3a25f305f8b9d5 data\hexcasting\advancements\recipes\hexcasting.creative_tab\scroll_paper_lantern.json
8e73ac3942a94096017e8c775724beafcbade37b data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_12.json
5f1e9330dcdf927e128212678c8e262c6daa92f1 data\hexcasting\recipes\pride_colorizer_13.json
7351200c8e3eb24772852c578286384c8aab61bd data\hexcasting\advancements\recipes\hexcasting.creative_tab\empty_directrix.json
eb17a23e7a9543f33922c056cdf0d63def176bf2 data\hexcasting\advancements\recipes\hexcasting.creative_tab\uuid_colorizer.json
33fed8fb8e34df026e1eea0df8161c7f842a8648 data\hexcasting\recipes\dye_colorizer_black.json
bceac44311dc2771c3744c0cda299f03fb957350 data\hexcasting\loot_tables\blocks\scroll_paper_lantern.json
4066f098ef104eadf6729bb372d9e643c598b477 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_wood_stripped.json
a27a2514fd3acb6cf0a4f2a6b176ca4c2a3ee064 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_cyan.json
d6dfd0c6e995270868cb90de818d24b8a667fd01 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_purple.json
b7c248d2627c2a2b398d1c50181c1e0863612424 data\hexcasting\recipes\empty_impetus.json
d5122f034678cc53a2921c65f30451caf708046c data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_trapdoor.json
5d4811f78feefbef0a305555143f488b3dac7ac6 data\hexcasting\advancements\recipes\brainsweep\brainsweep\impetus_storedplayer.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\hexcasting\tags\items\akashic_logs.json
6837c1fe0ab23167ca8475086b28115369227e0c data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_light_gray.json
556d2e6068965e90c307a435b372ae761cd1c606 data\minecraft\tags\items\doors.json
fe8a7288aa27c07932a31c64ff8fadb943b278d5 data\hexcasting\recipes\dye_colorizer_pink.json
43071f2aa09fa59dd8f0211a68c842dac833be02 data\hexcasting\advancements\recipes\hexcasting.creative_tab\scroll.json
5241508316a04e9e22452f71c54beae4c75a9bad data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_4.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\minecraft\tags\blocks\logs.json
e0ff0fe75be853b849f84b05787c1c791fa9e208 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_stairs.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data\minecraft\tags\items\leaves.json
310e2440f26f130c81d32d9fcd93a3384c2b1e72 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_brown.json
737ac05e20d6633abd383d654f7cd7e92564447b data\hexcasting\loot_tables\blocks\directrix_redstone.json
2ec90cd941acad6eabfb38d21466ef8e9b9bf2c1 data\hexcasting\recipes\wand_jungle.json
b8b58bbaf1ddca3514896af14db83f304e415305 data\minecraft\tags\blocks\wooden_trapdoors.json
874ee348cf2542696b7768049529a2001f0820e7 data\hexcasting\advancements\recipes\hexcasting.creative_tab\jeweler_hammer.json
5f3e3813757d8300acad523d45ac7c4d85728399 data\minecraft\tags\items\wooden_buttons.json
7077bb190244008a715eab451c80e8d489844c01 data\hexcasting\loot_tables\blocks\empty_impetus.json
cf0ad981bebbb79414d955fb40fbf537fe88b89d data\hexcasting\advancements\recipes\brainsweep\brainsweep\akashic_record.json
c742a0a5fba2388263bfccfb49c60277d817f8cd data\hexcasting\recipes\pride_colorizer_1.json
9e8942971a3b3d0b1ec6a3add5366743429605ca data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_10.json
0cd94b91d64a31a251eebbb37845d165c603452e data\hexcasting\recipes\wand_crimson.json
5d6fac562dd7b7a4be0006de8b4758d5657ac054 data\hexcasting\recipes\pride_colorizer_7.json
ce9ca7b98a89540996f2ad18eea98e31df7974b5 data\hexcasting\recipes\akashic_planks.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\minecraft\tags\items\logs.json
484be1c50092772587dd18769e63ee3ab22ad971 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_orange.json
91348d69c8a49eae2bbaf9fb00b9604c43716527 data\hexcasting\recipes\dye_colorizer_brown.json
29559dc2a5c4e189ab7edfbb71fed0a84dd96d45 data\hexcasting\recipes\dye_colorizer_red.json
b9083c4c0a7a365bdfd785a21826a89dc8d5db52 data\hexcasting\loot_tables\blocks\akashic_record.json
fa04d5bc32f5646cd67bc8e8b572bdb7849b735e data\hexcasting\recipes\akashic_bookshelf.json
3f9756b2c5137b285c4faa88ab43c4996b6b2bb6 data\hexcasting\recipes\ancient_scroll_paper_lantern.json
1157a6545ece0e2b8734b8a1428f9a3c021c8b73 data\hexcasting\recipes\wand_akashic.json
2c542a616b312e41537fb25a2362877dd50d2692 data\hexcasting\recipes\akashic_connector.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data\minecraft\tags\blocks\pressure_plates.json
1ba431aef086bb60bfe8fe01b4d2bf5dfb7593c4 data\hexcasting\loot_tables\blocks\impetus_look.json
f3e78a96f17dc5ed54047bb24be58dbf3151c8fa data\hexcasting\advancements\recipes\hexcasting.creative_tab\ancient_scroll_paper_lantern.json
fc57d15e9f9f11347a2170dd06053954345368d2 data\hexcasting\advancements\recipes\hexcasting.creative_tab\lens.json
5c471f81cc168826f1652a39a71aeb85e786ea16 data\hexcasting\recipes\scroll_paper_lantern.json
9d4704f96cc4cfa3275092fb58ff90c98449abe3 data\hexcasting\loot_tables\blocks\ancient_scroll_paper.json
ab5d271371323d93ff6eed18179ee4f7fd8c939c data\hexcasting\recipes\brainsweep\impetus_rightclick.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data\minecraft\tags\items\slabs.json
318c04242e7b9c302e68b3bfe6dd11ec0fc8a863 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_jungle.json
3a12c82f29953ee4131a0b49c1b35999c2779019 data\hexcasting\recipes\pride_colorizer_9.json
563cb6dda9c55864f141f2ec0ecd2a2b95f57237 data\hexcasting\advancements\recipes\hexcasting.creative_tab\amethyst_tiles.json
03504ac1cc40ece1097e46a8244b7cfb4b32014c data\hexcasting\recipes\pride_colorizer_8.json
7c607fdc60aac2b78394931fc39ae24a1a3dd3d2 data\hexcasting\loot_tables\blocks\empty_directrix.json
022dc03ce6f2915459c7bf75d44ec0b8bb3e4083 data\hexcasting\recipes\wand_dark_oak.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data\minecraft\tags\blocks\planks.json
1d19457c9843d97d2ed59199d9077940d9e5e46a data\hexcasting\recipes\akashic_button.json
3b566309ba10142fe73c8f32ce501592befd907e data\hexcasting\loot_tables\blocks\akashic_stairs.json
c3aed1dbaa46e084711a116d1bb4522df9a7405a data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_light_blue.json
14d6be5d47b54676a349564ea32c045c76c39b45 data\hexcasting\recipes\uuid_colorizer.json
339dc062b4d8d0c4fa2d1eccd2935b4c37ec75c6 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_pink.json
f8d2872c4e692153049b6ae4879755a079954763 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_spruce.json
c5341777604a4be5a311e300a4de89967b7caad2 data\hexcasting\recipes\dye_colorizer_yellow.json
4fad619e1330e938d2e2596fc8fd4e5050a8b40e data\hexcasting\recipes\dye_colorizer_lime.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data\minecraft\tags\blocks\wooden_pressure_plates.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data\hexcasting\tags\items\akashic_planks.json
d6355142e6edb7964c95997dc877a3652081f793 data\hexcasting\loot_tables\blocks\amethyst_tiles.json
168749d413b20bb9c05a8e7191758e0e596a319b data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_connector.json
f55afc2c05d93b5a44bc9fd73c5e81e71b183965 data\minecraft\tags\blocks\mineable\shovel.json
855d1421063c24b2d1507f90f378f51261111d84 data\hexcasting\recipes\pride_colorizer_10.json
9a24dcdf873dc97001efb487f6e00739c2ebf15c data\hexcasting\recipes\akashic_slab.json
769de6bc8862c02c3364d20e304b21cfb0bfaf31 data\hexcasting\loot_tables\blocks\akashic_log.json
1266b263056dd15c862bff27b05a119c4bbc89ee data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_door.json
9dc35c66da608913da03bc3016f127841d2414cc data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_9.json
d14cf2f8f0895a5b6dc09b7582c0abf1c2514adf data\hexcasting\recipes\sub_sandwich.json
4dc3f5865d69a604923cb59f4a3eed7b4aa175cf data\hexcasting\recipes\ageing_scroll_paper_lantern.json
f74f8389f1e8bdb77a92ecfb8d7d7d6f4418d818 data\hexcasting\recipes\akashic_panel.json
4da41a82a17f58c9342944f214e745696c1d8ed7 data\hexcasting\loot_tables\blocks\impetus_storedplayer.json
c11dc4388c18dadff5d93126eb0f7ae848d627b9 data\hexcasting\advancements\recipes\brainsweep\brainsweep\directrix_redstone.json
6f1c0a84236b1e3cb4352d87bf3d553eb7e1a938 data\hexcasting\recipes\dye_colorizer_orange.json
2ad42dd4a4877a23cb7f45e8b75c9f53f58d12f5 data\hexcasting\recipes\wand_acacia.json
2d79a41ba8697f9e1fa26b1bff48f33c824d3823 data\minecraft\tags\items\wooden_pressure_plates.json
51a90058e4701f2d6ef157e1a930c203876e2447 data\hexcasting\recipes\pride_colorizer_11.json
ce79c9e183b57bfbdb75cd074d7ff6e48894d05c data\hexcasting\loot_tables\blocks\akashic_connector.json
d7213631b2f9075c9bdef0d5a48ca28f85f5a090 data\hexcasting\advancements\recipes\hexcasting.creative_tab\scroll_paper.json
0e95c5f97c4089d654334a0d58fbf2b808548bd0 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_gray.json
72795bfbffffa8ab2a02c869f16447167f4fd179 data\hexcasting\loot_tables\blocks\akashic_pressure_plate.json
e4ef73afbd13a579493f45929c3f7adb8aa86dc2 data\hexcasting\recipes\dye_colorizer_cyan.json
31f9b7d8141f67981deedf7a46894e454006bb28 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_button.json
076dd8bb2ce1508293384fa93fa138a369d10751 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_green.json
a84bf48a188d7b250db5c971a6d9b63d82279ba3 data\hexcasting\recipes\akashic_wood.json
09e80537530ed51b6792f16fe8b32448e89dc334 data\hexcasting\recipes\slate_block.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\hexcasting\tags\blocks\akashic_logs.json
fe60c763bfe0afa0a266b7390edfc62bde8941b7 data\hexcasting\tags\items\phial_base.json
a639b071a5f4738ddf798fcac041a5002657e146 data\hexcasting\recipes\jeweler_hammer.json
d1b8725bbfc01e2d9a02ef84c911fef89b3636a9 data\hexcasting\tags\items\wands.json
6f5c41ab9f87ec1206efaaab8d91adc766bb79fd data\hexcasting\recipes\slate_block_from_slates.json
b8bc2f7ab38646e63376b23f7490a17011908496 data\hexcasting\loot_tables\blocks\akashic_leaves1.json
584bd8806ef8df5f0e623ed727d6e54a61e60dea data\hexcasting\loot_tables\blocks\slate_block.json
fa7dcb3a4e6a6631e437fda9739cfdf40f1b8102 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_3.json
3b2bcffe70bb1f732f06c2560cef66de6c273d62 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_warped.json
a92e5560c774bb81cd9f38bd9378af8695cac622 data\hexcasting\recipes\akashic_stairs.json
c2a362b8c19cb288187d8ff340f82198edc54378 data\hexcasting\advancements\recipes\brainsweep\brainsweep\budding_amethyst.json
86424d21e1bf91c128d3b0d528b813629ad962e9 data\hexcasting\advancements\recipes\brainsweep\brainsweep\impetus_look.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\minecraft\tags\blocks\logs_that_burn.json
e5c835d3866e8f5ecfb03c9e7c2c134a50951d67 data\hexcasting\recipes\amethyst_tiles.json
30f81e0537c625a4cafcdec75314926569291171 data\hexcasting\recipes\brainsweep\budding_amethyst.json
b519fd81671c9cb8d909bbfd0d4017d2005432d3 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_blue.json
ac285195e958804bcbd0b87e443d2851fd3a4856 data\hexcasting\recipes\akashic_tile.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data\minecraft\tags\blocks\mineable\hoe.json
08f14a615c6c8c0b8a08a56af000c1e1991732d3 data\hexcasting\advancements\recipes\hexcasting.creative_tab\trinket.json
13fc3b9e91486b3b0ca56b4ef7d5ddb8920aa7fe data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_1.json
811177c2ddc341f7a6d8704e1eb273f200aee3a1 data\hexcasting\loot_tables\blocks\akashic_button.json
01841b89db3b16a614a098cd468b6d3b64986a34 data\hexcasting\recipes\pride_colorizer_2.json
91bb341776ce64a68e1c4200aa8f5b2fa6669820 data\hexcasting\recipes\amethyst_dust_unpacking.json
bc79add419b8791e68b35076355fea11dfc640c6 data\hexcasting\recipes\dye_colorizer_white.json
d72a4675ceb721ee4ac43339d8bfbbb82c2adba2 data\hexcasting\advancements\recipes\hexcasting.creative_tab\slate_block.json
5f3e3813757d8300acad523d45ac7c4d85728399 data\minecraft\tags\blocks\buttons.json
5b9b1c15c7a157aa56b3caa7d43a6ad1fa8f4710 data\hexcasting\loot_tables\blocks\akashic_bookshelf.json
ef936e73eea3be9d53c4ac5c78d1477675550375 data\hexcasting\recipes\stonecutting\amethyst_tiles.json
b0b1c5fff194b92ff8c5d6468e177271fd910abd data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_red.json
7f165b1783a871cf69db2e9978290f8993665649 data\hexcasting\advancements\recipes\hexcasting.creative_tab\cypher.json
c386a7294db6ed97f9b131cb8402ca6203092b63 data\hexcasting\recipes\akashic_wood_stripped.json
66e51300dc72c27ed8024ddf852ac9a6208a66b1 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_bookshelf.json
bdf848284137f0116ddf4725b0dda6eaa0cef5fd data\hexcasting\loot_tables\blocks\akashic_wood_stripped.json
f32ccb2d36d773215d91dee46bec70a20af501c3 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_birch.json
16fd879351f390bfa980a5f4d77e32f576de2f66 data\hexcasting\recipes\dye_colorizer_purple.json
eb4bfbd7fc7632a5c16aa1d50d6090a1f466069b data\minecraft\tags\blocks\mineable\pickaxe.json
b8b58bbaf1ddca3514896af14db83f304e415305 data\minecraft\tags\items\trapdoors.json
b8b58bbaf1ddca3514896af14db83f304e415305 data\minecraft\tags\blocks\trapdoors.json
5a17fa9a1496f5fbedd0362f94a5231e0e5ebbfc data\hexcasting\advancements\recipes\hexcasting.creative_tab\ageing_scroll_paper_lantern.json
d7f85ce9d46aacc7ec89dc7aa0f88a331ccfbae7 data\hexcasting\recipes\brainsweep\akashic_record.json
5703cc53d18f6b3a14bb030b639d286981c4c754 data\hexcasting\recipes\spellbook.json
386f1b0f7676324186d0694de3c86a77fac5ce98 data\hexcasting\recipes\dye_colorizer_magenta.json
b107ec9af9e08d124f3d4f14d85911f55a5b905b data\hexcasting\recipes\akashic_pressure_plate.json
0ea329526c81c1e4064bab61721ab4586cfcf706 data\hexcasting\recipes\pride_colorizer_0.json
bb5c04fa0e6d0b3322f3b24d49d1a30a5b790889 data\hexcasting\loot_tables\blocks\akashic_slab.json
149179e18b1b8db5dc3fb96e6faa6cb6ffaecb75 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_panel.json
ccc33b4f1a43c8ecd3352ad36ae2dd2191317b5b data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_white.json
9c857c4aeda8a1b3d7a1b5d341871a9434b5816f data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_yellow.json
c471220e70ee9ecbf58a21ea1d28e653efcc4fad data\hexcasting\recipes\dye_colorizer_gray.json
59000d9f3edb942081f7d1e03d753e9cd59690cc data\hexcasting\advancements\recipes\hexcasting.creative_tab\sub_sandwich.json
b8b58bbaf1ddca3514896af14db83f304e415305 data\minecraft\tags\items\wooden_trapdoors.json
55dded121a8dddb2ee7fb1f3ffcdcd1ada4afbd5 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_wood.json
8886e95ddd696288c1f5706cbd63878a4a2bae3a data\hexcasting\loot_tables\blocks\akashic_planks.json
ccf4ea841ea9a66738253385c659ff86c85a73f5 data\hexcasting\recipes\scroll_paper.json
9ddd0b27bb747d433eef17a9f1bd4f055e444f7a data\hexcasting\loot_tables\blocks\akashic_leaves2.json
337c4370fd24b66a6b4b3f6c296a33d9a799034e data\hexcasting\advancements\recipes\hexcasting.creative_tab\amethyst_sconce.json
7cb828138a8ea2dae399011ee02bb909ca5f993e data\hexcasting\loot_tables\blocks\akashic_log_stripped.json
f089ab17470c5fa0065438c5533d5fafb3ee8eaf data\hexcasting\advancements\recipes\hexcasting.creative_tab\focus.json
8209fd940de230393aae894c96a765c62bed4cc2 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_8.json
22ad2496732633bb5539a1fa761051d7add48055 data\hexcasting\advancements\recipes\hexcasting.creative_tab\slate.json
3b1c077f88f625c0b2653324c7b94fd3f2b3a538 data\hexcasting\loot_tables\blocks\akashic_tile.json
aab3082b3303f358cc265fb10bc9bbe08c96eef0 data\hexcasting\recipes\trinket.json
65bb0279c70aed060a09332552a122cf993f5d2a data\hexcasting\recipes\pride_colorizer_12.json
d0c66f50c20912aa0175aea9f97a28e59051b586 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_13.json
1dc89dff5d4fadb95d9b5a2a5a910f63ea4b02bf data\minecraft\tags\blocks\crystal_sound_blocks.json
b3a23a6430b9e6c7c9e332c6ec996d9d90e7f432 data\hexcasting\recipes\pride_colorizer_4.json
e5ae652aee1567ac2e626fa0f88f160993a6f9a5 data\hexcasting\advancements\recipes\hexcasting.creative_tab\amethyst_dust_unpacking.json
c25784941d6416744fb2ca2d43a3203e5c3e7c8a data\minecraft\tags\blocks\leaves.json
ef016ca292fa4edc7496b64e6f2931f4e7d90636 data\hexcasting\recipes\amethyst_dust_packing.json
f7bbc60f547a02378ddb1f23395add4822725fed data\hexcasting\recipes\wand_oak.json
3fe1fcf17e1e25aebede47c537f92888330ccf9f data\hexcasting\advancements\recipes\hexcasting.creative_tab\abacus.json
b42dae604eab34ae3831fa16c063af852c175791 data\hexcasting\advancements\recipes\hexcasting.creative_tab\ancient_scroll_paper.json
c375ba3f7105d6f57ef982f6f4e9326ad88a947d data\hexcasting\loot_tables\blocks\ancient_scroll_paper_lantern.json
62b120d8943a9e73778ad1468f12532b21774994 data\hexcasting\recipes\akashic_trapdoor.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data\minecraft\tags\blocks\wooden_slabs.json
c521621c409275e219f72abf5c6089d60408e646 data\hexcasting\loot_tables\blocks\impetus_rightclick.json
a952d33cda8b805237052b602cf066683c4bf261 data\hexcasting\recipes\empty_directrix.json
f3a33396e071f3afd61eadab2aabdb9acf2ae775 data\hexcasting\recipes\slate.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data\minecraft\tags\blocks\slabs.json
05e86742a71afd740f47639be62f93bc9898fcde data\c\tags\items\gems.json
c93d37c6a54b4015a073ad18189f6e721406f183 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_6.json
918075a87ccc30a489aa8cafa2de992dd179aeac data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_lime.json
0295cb6a13069d4e211c18132a2a40d57145b45c data\hexcasting\loot_tables\blocks\scroll_paper.json
804f0e5c6c32c7310129437ccca3ffc148bb973b data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_acacia.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data\hexcasting\tags\blocks\akashic_planks.json
16705d340500a2796facb4256852fd3d8e9775f8 data\hexcasting\loot_tables\blocks\akashic_wood.json
99aae9efc13ff2b8a4612579b2f865ed2fbe8985 data\hexcasting\advancements\recipes\hexcasting.creative_tab\akashic_tile.json
5f3e3813757d8300acad523d45ac7c4d85728399 data\minecraft\tags\items\buttons.json
556d2e6068965e90c307a435b372ae761cd1c606 data\minecraft\tags\items\wooden_doors.json
a2ea936ff220d9faa168ffbc60a9823de2119ac5 data\hexcasting\recipes\cypher.json
5f9f0962f407062e7b6dd0e8c5f8c55ce13962a5 data\hexcasting\advancements\recipes\brainsweep\brainsweep\impetus_rightclick.json
3dae781adc5cbdf6e415316ab6d5ce9efa8774c4 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_5.json
779b7b9be93062e935972af1cff9c79fa5440a23 data\hexcasting\recipes\amethyst_sconce.json
f6fab3a3296d157a2b969af0c86eb0e5a9f14df4 data\hexcasting\recipes\wand_birch.json
34d21369f8879dd084c3215e709ae987a994372f data\hexcasting\recipes\brainsweep\impetus_storedplayer.json
db8a00478e1c4b0f9b143b5946d1ba25e489591d data\hexcasting\recipes\dynamic\seal_focus.json
b684bfa3755ca25996e74152d2efecbc9d6387d8 data\hexcasting\advancements\recipes\hexcasting.creative_tab\stonecutting\amethyst_tiles.json
cd63a4179aa8c6aff90b251995bc4e8e1a71a784 data\hexcasting\loot_tables\blocks\akashic_leaves3.json
67d4c536be3762833a4af33cd7cdfc68eb4ad629 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_dark_oak.json
6ffa37736a483cef3b174cf00bfcab0b91a6f737 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_7.json
48e782ce4fbd486dd0d6ceb9fdcb94d0e0c727d4 data\minecraft\tags\items\wooden_slabs.json
b596d96eebb4f7bad5930f4eebc589f292b59c98 data\minecraft\tags\items\planks.json
5da3bff44e39ed9263f1f341d0a3851d02218018 data\hexcasting\recipes\pride_colorizer_6.json
771e22cb013a2566773da73f3bd3dd48bef34830 data\hexcasting\loot_tables\blocks\akashic_trapdoor.json
30950c6dd31102cf145f8f7d2979df0736a7ba1e data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_oak.json
d4328adfccf702d2de3eb6098a47c95e429b7b28 data\hexcasting\loot_tables\blocks\akashic_door.json
0529b25d154715d6b1c030d87e59e6f9d41d91d6 data\hexcasting\recipes\focus.json
023c32e8834eb313c4fa94a84a8f6390ee951ef0 data\hexcasting\advancements\recipes\hexcasting.creative_tab\empty_impetus.json
db09b7fc38bdaffa15b57bd361da8529c7bc943e data\hexcasting\recipes\wand_warped.json
5861845c3cd84021c7c19ac4f5b3bcc8e1bd3916 data\hexcasting\recipes\brainsweep\impetus_look.json
7c08784f2de139be380b5299f8ea8b8c78126ed8 data\minecraft\tags\blocks\mineable\axe.json
6b4459635b3d53cc2b6836fa97d29244a65b412d data\hexcasting\recipes\abacus.json
29260d23193f414236b0278a5abd7fe1f7ba8b46 data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_black.json
c30bc14629d0bc99cad10d7b6af19a331357f6a8 data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_11.json
9f7a9ba332e1018098d21a5ec474440fca7f6c73 data\hexcasting\recipes\brainsweep\directrix_redstone.json
556d2e6068965e90c307a435b372ae761cd1c606 data\minecraft\tags\blocks\doors.json
25f5d03a6f4290bbbe86c9cac5604b1e8a49ad84 data\hexcasting\recipes\dye_colorizer_light_gray.json
c7c7fa49b7d1f0d03cd753f1ba78aa05a68135d0 data\hexcasting\recipes\pride_colorizer_5.json
556d2e6068965e90c307a435b372ae761cd1c606 data\minecraft\tags\blocks\wooden_doors.json
cf855b595844c6f2522c0ad18030519279b396ad data\hexcasting\advancements\recipes\hexcasting.creative_tab\dye_colorizer_magenta.json
3a376402af89128dc37adaa0a72b6de66d58309d data\hexcasting\recipes\dynamic\seal_spellbook.json
42441ca3b389ea4db8a4153ec363847f0ca6e714 data\hexcasting\loot_tables\blocks\akashic_panel.json
f3c6b6917e504e1c3d5d8875f7cce6f311e791d2 data\minecraft\tags\items\logs_that_burn.json
56d35172b3c5a58e2be4c5be20dd69417685f5d9 data\hexcasting\recipes\scroll.json
ddd7bd92b9e1586cebd2cee658315a9336a80a76 data\hexcasting\advancements\recipes\hexcasting.creative_tab\amethyst_dust_packing.json
4d4caaea035ae4ee878843dd2455042b299b4e5e data\c\tags\items\amethyst_dusts.json
2d52419f3fcdc10643cdb8cef89858efc0ad4d11 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_akashic.json
82be04125e60a28701de5bb6bc7855bb46fa9d0f data\hexcasting\advancements\recipes\hexcasting.creative_tab\pride_colorizer_0.json
cd3ca380294544b07e91ce85d97808c30ffa5d17 data\hexcasting\advancements\recipes\hexcasting.creative_tab\spellbook.json
c36caf44a941a4abc44a15141eba8fe634c76fb8 data\hexcasting\recipes\dye_colorizer_blue.json
7c0107192c0e24ff9f23ab0f59834b6081ca5b33 data\hexcasting\advancements\recipes\hexcasting.creative_tab\wand_crimson.json

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