From 577894b436354c4131229259cc9f28e186578dd5 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Sat, 1 Nov 2025 17:30:41 +0100 Subject: [PATCH 01/43] switch to multiloader setup --- .gitignore | 2 + build.gradle.kts | 339 ++---------------- common/build.gradle.kts | 9 + common/src/generated/.gitignore | 1 + .../blockstates/amber_vigil_candle.json | 0 .../blockstates/aqua_vigil_candle.json | 0 .../blockstates/beige_vigil_candle.json | 0 .../blockstates/black_vigil_candle.json | 0 .../blockstates/blue_vigil_candle.json | 0 .../doom_and_gloom/blockstates/bone_pile.json | 0 .../blockstates/brown_vigil_candle.json | 0 .../blockstates/burial_dirt.json | 0 .../blockstates/coral_vigil_candle.json | 0 .../blockstates/cracked_stone_tablet.json | 0 .../blockstates/cyan_vigil_candle.json | 0 .../blockstates/engraved_stone_tablet.json | 0 .../blockstates/forest_vigil_candle.json | 0 .../blockstates/ginger_vigil_candle.json | 0 .../blockstates/gray_vigil_candle.json | 0 .../blockstates/green_vigil_candle.json | 0 .../blockstates/indigo_vigil_candle.json | 0 .../blockstates/light_blue_vigil_candle.json | 0 .../blockstates/light_gray_vigil_candle.json | 0 .../blockstates/lime_vigil_candle.json | 0 .../blockstates/magenta_vigil_candle.json | 0 .../blockstates/maroon_vigil_candle.json | 0 .../blockstates/mint_vigil_candle.json | 0 .../blockstates/navy_vigil_candle.json | 0 .../blockstates/olive_vigil_candle.json | 0 .../blockstates/orange_vigil_candle.json | 0 .../blockstates/pink_vigil_candle.json | 0 .../blockstates/purple_vigil_candle.json | 0 .../blockstates/red_vigil_candle.json | 0 .../blockstates/rose_vigil_candle.json | 0 .../blockstates/rotting_flesh.json | 0 .../doom_and_gloom/blockstates/sepulcher.json | 0 .../blockstates/slate_vigil_candle.json | 0 .../blockstates/stone_tablet.json | 0 .../blockstates/tan_vigil_candle.json | 0 .../blockstates/teal_vigil_candle.json | 0 .../blockstates/verdant_vigil_candle.json | 0 .../blockstates/vigil_candle.json | 0 .../blockstates/white_vigil_candle.json | 0 .../blockstates/yellow_vigil_candle.json | 0 .../assets/doom_and_gloom/lang/en_us.json | 0 .../block/amber_vigil_candle_double.json | 0 .../amber_vigil_candle_double_ceiling.json | 0 ...amber_vigil_candle_double_ceiling_lit.json | 0 .../block/amber_vigil_candle_double_lit.json | 0 .../block/amber_vigil_candle_quadruple.json | 0 .../amber_vigil_candle_quadruple_ceiling.json | 0 ...er_vigil_candle_quadruple_ceiling_lit.json | 0 .../amber_vigil_candle_quadruple_lit.json | 0 .../block/amber_vigil_candle_single.json | 0 .../amber_vigil_candle_single_ceiling.json | 0 ...amber_vigil_candle_single_ceiling_lit.json | 0 .../block/amber_vigil_candle_single_lit.json | 0 .../block/amber_vigil_candle_triple.json | 0 .../amber_vigil_candle_triple_ceiling.json | 0 ...amber_vigil_candle_triple_ceiling_lit.json | 0 .../block/amber_vigil_candle_triple_lit.json | 0 .../block/aqua_vigil_candle_double.json | 0 .../aqua_vigil_candle_double_ceiling.json | 0 .../aqua_vigil_candle_double_ceiling_lit.json | 0 .../block/aqua_vigil_candle_double_lit.json | 0 .../block/aqua_vigil_candle_quadruple.json | 0 .../aqua_vigil_candle_quadruple_ceiling.json | 0 ...ua_vigil_candle_quadruple_ceiling_lit.json | 0 .../aqua_vigil_candle_quadruple_lit.json | 0 .../block/aqua_vigil_candle_single.json | 0 .../aqua_vigil_candle_single_ceiling.json | 0 .../aqua_vigil_candle_single_ceiling_lit.json | 0 .../block/aqua_vigil_candle_single_lit.json | 0 .../block/aqua_vigil_candle_triple.json | 0 .../aqua_vigil_candle_triple_ceiling.json | 0 .../aqua_vigil_candle_triple_ceiling_lit.json | 0 .../block/aqua_vigil_candle_triple_lit.json | 0 .../block/beige_vigil_candle_double.json | 0 .../beige_vigil_candle_double_ceiling.json | 0 ...beige_vigil_candle_double_ceiling_lit.json | 0 .../block/beige_vigil_candle_double_lit.json | 0 .../block/beige_vigil_candle_quadruple.json | 0 .../beige_vigil_candle_quadruple_ceiling.json | 0 ...ge_vigil_candle_quadruple_ceiling_lit.json | 0 .../beige_vigil_candle_quadruple_lit.json | 0 .../block/beige_vigil_candle_single.json | 0 .../beige_vigil_candle_single_ceiling.json | 0 ...beige_vigil_candle_single_ceiling_lit.json | 0 .../block/beige_vigil_candle_single_lit.json | 0 .../block/beige_vigil_candle_triple.json | 0 .../beige_vigil_candle_triple_ceiling.json | 0 ...beige_vigil_candle_triple_ceiling_lit.json | 0 .../block/beige_vigil_candle_triple_lit.json | 0 .../block/black_vigil_candle_double.json | 0 .../black_vigil_candle_double_ceiling.json | 0 ...black_vigil_candle_double_ceiling_lit.json | 0 .../block/black_vigil_candle_double_lit.json | 0 .../block/black_vigil_candle_quadruple.json | 0 .../black_vigil_candle_quadruple_ceiling.json | 0 ...ck_vigil_candle_quadruple_ceiling_lit.json | 0 .../black_vigil_candle_quadruple_lit.json | 0 .../block/black_vigil_candle_single.json | 0 .../black_vigil_candle_single_ceiling.json | 0 ...black_vigil_candle_single_ceiling_lit.json | 0 .../block/black_vigil_candle_single_lit.json | 0 .../block/black_vigil_candle_triple.json | 0 .../black_vigil_candle_triple_ceiling.json | 0 ...black_vigil_candle_triple_ceiling_lit.json | 0 .../block/black_vigil_candle_triple_lit.json | 0 .../block/blue_vigil_candle_double.json | 0 .../blue_vigil_candle_double_ceiling.json | 0 .../blue_vigil_candle_double_ceiling_lit.json | 0 .../block/blue_vigil_candle_double_lit.json | 0 .../block/blue_vigil_candle_quadruple.json | 0 .../blue_vigil_candle_quadruple_ceiling.json | 0 ...ue_vigil_candle_quadruple_ceiling_lit.json | 0 .../blue_vigil_candle_quadruple_lit.json | 0 .../block/blue_vigil_candle_single.json | 0 .../blue_vigil_candle_single_ceiling.json | 0 .../blue_vigil_candle_single_ceiling_lit.json | 0 .../block/blue_vigil_candle_single_lit.json | 0 .../block/blue_vigil_candle_triple.json | 0 .../blue_vigil_candle_triple_ceiling.json | 0 .../blue_vigil_candle_triple_ceiling_lit.json | 0 .../block/blue_vigil_candle_triple_lit.json | 0 .../models/block/bone_pile.json | 0 .../block/brown_vigil_candle_double.json | 0 .../brown_vigil_candle_double_ceiling.json | 0 ...brown_vigil_candle_double_ceiling_lit.json | 0 .../block/brown_vigil_candle_double_lit.json | 0 .../block/brown_vigil_candle_quadruple.json | 0 .../brown_vigil_candle_quadruple_ceiling.json | 0 ...wn_vigil_candle_quadruple_ceiling_lit.json | 0 .../brown_vigil_candle_quadruple_lit.json | 0 .../block/brown_vigil_candle_single.json | 0 .../brown_vigil_candle_single_ceiling.json | 0 ...brown_vigil_candle_single_ceiling_lit.json | 0 .../block/brown_vigil_candle_single_lit.json | 0 .../block/brown_vigil_candle_triple.json | 0 .../brown_vigil_candle_triple_ceiling.json | 0 ...brown_vigil_candle_triple_ceiling_lit.json | 0 .../block/brown_vigil_candle_triple_lit.json | 0 .../models/block/burial_dirt.json | 0 .../block/coral_vigil_candle_double.json | 0 .../coral_vigil_candle_double_ceiling.json | 0 ...coral_vigil_candle_double_ceiling_lit.json | 0 .../block/coral_vigil_candle_double_lit.json | 0 .../block/coral_vigil_candle_quadruple.json | 0 .../coral_vigil_candle_quadruple_ceiling.json | 0 ...al_vigil_candle_quadruple_ceiling_lit.json | 0 .../coral_vigil_candle_quadruple_lit.json | 0 .../block/coral_vigil_candle_single.json | 0 .../coral_vigil_candle_single_ceiling.json | 0 ...coral_vigil_candle_single_ceiling_lit.json | 0 .../block/coral_vigil_candle_single_lit.json | 0 .../block/coral_vigil_candle_triple.json | 0 .../coral_vigil_candle_triple_ceiling.json | 0 ...coral_vigil_candle_triple_ceiling_lit.json | 0 .../block/coral_vigil_candle_triple_lit.json | 0 .../models/block/cracked_stone_tablet.json | 0 .../block/cracked_stone_tablet_floor.json | 0 .../block/cracked_stone_tablet_wall.json | 0 .../block/cyan_vigil_candle_double.json | 0 .../cyan_vigil_candle_double_ceiling.json | 0 .../cyan_vigil_candle_double_ceiling_lit.json | 0 .../block/cyan_vigil_candle_double_lit.json | 0 .../block/cyan_vigil_candle_quadruple.json | 0 .../cyan_vigil_candle_quadruple_ceiling.json | 0 ...an_vigil_candle_quadruple_ceiling_lit.json | 0 .../cyan_vigil_candle_quadruple_lit.json | 0 .../block/cyan_vigil_candle_single.json | 0 .../cyan_vigil_candle_single_ceiling.json | 0 .../cyan_vigil_candle_single_ceiling_lit.json | 0 .../block/cyan_vigil_candle_single_lit.json | 0 .../block/cyan_vigil_candle_triple.json | 0 .../cyan_vigil_candle_triple_ceiling.json | 0 .../cyan_vigil_candle_triple_ceiling_lit.json | 0 .../block/cyan_vigil_candle_triple_lit.json | 0 .../block/defaultvigil_candle_double.json | 0 .../defaultvigil_candle_double_ceiling.json | 0 ...efaultvigil_candle_double_ceiling_lit.json | 0 .../block/defaultvigil_candle_double_lit.json | 0 .../block/defaultvigil_candle_quadruple.json | 0 ...defaultvigil_candle_quadruple_ceiling.json | 0 ...ultvigil_candle_quadruple_ceiling_lit.json | 0 .../defaultvigil_candle_quadruple_lit.json | 0 .../block/defaultvigil_candle_single.json | 0 .../defaultvigil_candle_single_ceiling.json | 0 ...efaultvigil_candle_single_ceiling_lit.json | 0 .../block/defaultvigil_candle_single_lit.json | 0 .../block/defaultvigil_candle_triple.json | 0 .../defaultvigil_candle_triple_ceiling.json | 0 ...efaultvigil_candle_triple_ceiling_lit.json | 0 .../block/defaultvigil_candle_triple_lit.json | 0 .../models/block/engraved_stone_tablet.json | 0 .../block/engraved_stone_tablet_floor.json | 0 .../block/engraved_stone_tablet_wall.json | 0 .../block/forest_vigil_candle_double.json | 0 .../forest_vigil_candle_double_ceiling.json | 0 ...orest_vigil_candle_double_ceiling_lit.json | 0 .../block/forest_vigil_candle_double_lit.json | 0 .../block/forest_vigil_candle_quadruple.json | 0 ...forest_vigil_candle_quadruple_ceiling.json | 0 ...st_vigil_candle_quadruple_ceiling_lit.json | 0 .../forest_vigil_candle_quadruple_lit.json | 0 .../block/forest_vigil_candle_single.json | 0 .../forest_vigil_candle_single_ceiling.json | 0 ...orest_vigil_candle_single_ceiling_lit.json | 0 .../block/forest_vigil_candle_single_lit.json | 0 .../block/forest_vigil_candle_triple.json | 0 .../forest_vigil_candle_triple_ceiling.json | 0 ...orest_vigil_candle_triple_ceiling_lit.json | 0 .../block/forest_vigil_candle_triple_lit.json | 0 .../block/ginger_vigil_candle_double.json | 0 .../ginger_vigil_candle_double_ceiling.json | 0 ...inger_vigil_candle_double_ceiling_lit.json | 0 .../block/ginger_vigil_candle_double_lit.json | 0 .../block/ginger_vigil_candle_quadruple.json | 0 ...ginger_vigil_candle_quadruple_ceiling.json | 0 ...er_vigil_candle_quadruple_ceiling_lit.json | 0 .../ginger_vigil_candle_quadruple_lit.json | 0 .../block/ginger_vigil_candle_single.json | 0 .../ginger_vigil_candle_single_ceiling.json | 0 ...inger_vigil_candle_single_ceiling_lit.json | 0 .../block/ginger_vigil_candle_single_lit.json | 0 .../block/ginger_vigil_candle_triple.json | 0 .../ginger_vigil_candle_triple_ceiling.json | 0 ...inger_vigil_candle_triple_ceiling_lit.json | 0 .../block/ginger_vigil_candle_triple_lit.json | 0 .../block/gray_vigil_candle_double.json | 0 .../gray_vigil_candle_double_ceiling.json | 0 .../gray_vigil_candle_double_ceiling_lit.json | 0 .../block/gray_vigil_candle_double_lit.json | 0 .../block/gray_vigil_candle_quadruple.json | 0 .../gray_vigil_candle_quadruple_ceiling.json | 0 ...ay_vigil_candle_quadruple_ceiling_lit.json | 0 .../gray_vigil_candle_quadruple_lit.json | 0 .../block/gray_vigil_candle_single.json | 0 .../gray_vigil_candle_single_ceiling.json | 0 .../gray_vigil_candle_single_ceiling_lit.json | 0 .../block/gray_vigil_candle_single_lit.json | 0 .../block/gray_vigil_candle_triple.json | 0 .../gray_vigil_candle_triple_ceiling.json | 0 .../gray_vigil_candle_triple_ceiling_lit.json | 0 .../block/gray_vigil_candle_triple_lit.json | 0 .../block/green_vigil_candle_double.json | 0 .../green_vigil_candle_double_ceiling.json | 0 ...green_vigil_candle_double_ceiling_lit.json | 0 .../block/green_vigil_candle_double_lit.json | 0 .../block/green_vigil_candle_quadruple.json | 0 .../green_vigil_candle_quadruple_ceiling.json | 0 ...en_vigil_candle_quadruple_ceiling_lit.json | 0 .../green_vigil_candle_quadruple_lit.json | 0 .../block/green_vigil_candle_single.json | 0 .../green_vigil_candle_single_ceiling.json | 0 ...green_vigil_candle_single_ceiling_lit.json | 0 .../block/green_vigil_candle_single_lit.json | 0 .../block/green_vigil_candle_triple.json | 0 .../green_vigil_candle_triple_ceiling.json | 0 ...green_vigil_candle_triple_ceiling_lit.json | 0 .../block/green_vigil_candle_triple_lit.json | 0 .../block/indigo_vigil_candle_double.json | 0 .../indigo_vigil_candle_double_ceiling.json | 0 ...ndigo_vigil_candle_double_ceiling_lit.json | 0 .../block/indigo_vigil_candle_double_lit.json | 0 .../block/indigo_vigil_candle_quadruple.json | 0 ...indigo_vigil_candle_quadruple_ceiling.json | 0 ...go_vigil_candle_quadruple_ceiling_lit.json | 0 .../indigo_vigil_candle_quadruple_lit.json | 0 .../block/indigo_vigil_candle_single.json | 0 .../indigo_vigil_candle_single_ceiling.json | 0 ...ndigo_vigil_candle_single_ceiling_lit.json | 0 .../block/indigo_vigil_candle_single_lit.json | 0 .../block/indigo_vigil_candle_triple.json | 0 .../indigo_vigil_candle_triple_ceiling.json | 0 ...ndigo_vigil_candle_triple_ceiling_lit.json | 0 .../block/indigo_vigil_candle_triple_lit.json | 0 .../block/light_blue_vigil_candle_double.json | 0 ...ight_blue_vigil_candle_double_ceiling.json | 0 ..._blue_vigil_candle_double_ceiling_lit.json | 0 .../light_blue_vigil_candle_double_lit.json | 0 .../light_blue_vigil_candle_quadruple.json | 0 ...t_blue_vigil_candle_quadruple_ceiling.json | 0 ...ue_vigil_candle_quadruple_ceiling_lit.json | 0 ...light_blue_vigil_candle_quadruple_lit.json | 0 .../block/light_blue_vigil_candle_single.json | 0 ...ight_blue_vigil_candle_single_ceiling.json | 0 ..._blue_vigil_candle_single_ceiling_lit.json | 0 .../light_blue_vigil_candle_single_lit.json | 0 .../block/light_blue_vigil_candle_triple.json | 0 ...ight_blue_vigil_candle_triple_ceiling.json | 0 ..._blue_vigil_candle_triple_ceiling_lit.json | 0 .../light_blue_vigil_candle_triple_lit.json | 0 .../block/light_gray_vigil_candle_double.json | 0 ...ight_gray_vigil_candle_double_ceiling.json | 0 ..._gray_vigil_candle_double_ceiling_lit.json | 0 .../light_gray_vigil_candle_double_lit.json | 0 .../light_gray_vigil_candle_quadruple.json | 0 ...t_gray_vigil_candle_quadruple_ceiling.json | 0 ...ay_vigil_candle_quadruple_ceiling_lit.json | 0 ...light_gray_vigil_candle_quadruple_lit.json | 0 .../block/light_gray_vigil_candle_single.json | 0 ...ight_gray_vigil_candle_single_ceiling.json | 0 ..._gray_vigil_candle_single_ceiling_lit.json | 0 .../light_gray_vigil_candle_single_lit.json | 0 .../block/light_gray_vigil_candle_triple.json | 0 ...ight_gray_vigil_candle_triple_ceiling.json | 0 ..._gray_vigil_candle_triple_ceiling_lit.json | 0 .../light_gray_vigil_candle_triple_lit.json | 0 .../block/lime_vigil_candle_double.json | 0 .../lime_vigil_candle_double_ceiling.json | 0 .../lime_vigil_candle_double_ceiling_lit.json | 0 .../block/lime_vigil_candle_double_lit.json | 0 .../block/lime_vigil_candle_quadruple.json | 0 .../lime_vigil_candle_quadruple_ceiling.json | 0 ...me_vigil_candle_quadruple_ceiling_lit.json | 0 .../lime_vigil_candle_quadruple_lit.json | 0 .../block/lime_vigil_candle_single.json | 0 .../lime_vigil_candle_single_ceiling.json | 0 .../lime_vigil_candle_single_ceiling_lit.json | 0 .../block/lime_vigil_candle_single_lit.json | 0 .../block/lime_vigil_candle_triple.json | 0 .../lime_vigil_candle_triple_ceiling.json | 0 .../lime_vigil_candle_triple_ceiling_lit.json | 0 .../block/lime_vigil_candle_triple_lit.json | 0 .../block/magenta_vigil_candle_double.json | 0 .../magenta_vigil_candle_double_ceiling.json | 0 ...genta_vigil_candle_double_ceiling_lit.json | 0 .../magenta_vigil_candle_double_lit.json | 0 .../block/magenta_vigil_candle_quadruple.json | 0 ...agenta_vigil_candle_quadruple_ceiling.json | 0 ...ta_vigil_candle_quadruple_ceiling_lit.json | 0 .../magenta_vigil_candle_quadruple_lit.json | 0 .../block/magenta_vigil_candle_single.json | 0 .../magenta_vigil_candle_single_ceiling.json | 0 ...genta_vigil_candle_single_ceiling_lit.json | 0 .../magenta_vigil_candle_single_lit.json | 0 .../block/magenta_vigil_candle_triple.json | 0 .../magenta_vigil_candle_triple_ceiling.json | 0 ...genta_vigil_candle_triple_ceiling_lit.json | 0 .../magenta_vigil_candle_triple_lit.json | 0 .../block/maroon_vigil_candle_double.json | 0 .../maroon_vigil_candle_double_ceiling.json | 0 ...aroon_vigil_candle_double_ceiling_lit.json | 0 .../block/maroon_vigil_candle_double_lit.json | 0 .../block/maroon_vigil_candle_quadruple.json | 0 ...maroon_vigil_candle_quadruple_ceiling.json | 0 ...on_vigil_candle_quadruple_ceiling_lit.json | 0 .../maroon_vigil_candle_quadruple_lit.json | 0 .../block/maroon_vigil_candle_single.json | 0 .../maroon_vigil_candle_single_ceiling.json | 0 ...aroon_vigil_candle_single_ceiling_lit.json | 0 .../block/maroon_vigil_candle_single_lit.json | 0 .../block/maroon_vigil_candle_triple.json | 0 .../maroon_vigil_candle_triple_ceiling.json | 0 ...aroon_vigil_candle_triple_ceiling_lit.json | 0 .../block/maroon_vigil_candle_triple_lit.json | 0 .../block/mint_vigil_candle_double.json | 0 .../mint_vigil_candle_double_ceiling.json | 0 .../mint_vigil_candle_double_ceiling_lit.json | 0 .../block/mint_vigil_candle_double_lit.json | 0 .../block/mint_vigil_candle_quadruple.json | 0 .../mint_vigil_candle_quadruple_ceiling.json | 0 ...nt_vigil_candle_quadruple_ceiling_lit.json | 0 .../mint_vigil_candle_quadruple_lit.json | 0 .../block/mint_vigil_candle_single.json | 0 .../mint_vigil_candle_single_ceiling.json | 0 .../mint_vigil_candle_single_ceiling_lit.json | 0 .../block/mint_vigil_candle_single_lit.json | 0 .../block/mint_vigil_candle_triple.json | 0 .../mint_vigil_candle_triple_ceiling.json | 0 .../mint_vigil_candle_triple_ceiling_lit.json | 0 .../block/mint_vigil_candle_triple_lit.json | 0 .../block/navy_vigil_candle_double.json | 0 .../navy_vigil_candle_double_ceiling.json | 0 .../navy_vigil_candle_double_ceiling_lit.json | 0 .../block/navy_vigil_candle_double_lit.json | 0 .../block/navy_vigil_candle_quadruple.json | 0 .../navy_vigil_candle_quadruple_ceiling.json | 0 ...vy_vigil_candle_quadruple_ceiling_lit.json | 0 .../navy_vigil_candle_quadruple_lit.json | 0 .../block/navy_vigil_candle_single.json | 0 .../navy_vigil_candle_single_ceiling.json | 0 .../navy_vigil_candle_single_ceiling_lit.json | 0 .../block/navy_vigil_candle_single_lit.json | 0 .../block/navy_vigil_candle_triple.json | 0 .../navy_vigil_candle_triple_ceiling.json | 0 .../navy_vigil_candle_triple_ceiling_lit.json | 0 .../block/navy_vigil_candle_triple_lit.json | 0 .../block/olive_vigil_candle_double.json | 0 .../olive_vigil_candle_double_ceiling.json | 0 ...olive_vigil_candle_double_ceiling_lit.json | 0 .../block/olive_vigil_candle_double_lit.json | 0 .../block/olive_vigil_candle_quadruple.json | 0 .../olive_vigil_candle_quadruple_ceiling.json | 0 ...ve_vigil_candle_quadruple_ceiling_lit.json | 0 .../olive_vigil_candle_quadruple_lit.json | 0 .../block/olive_vigil_candle_single.json | 0 .../olive_vigil_candle_single_ceiling.json | 0 ...olive_vigil_candle_single_ceiling_lit.json | 0 .../block/olive_vigil_candle_single_lit.json | 0 .../block/olive_vigil_candle_triple.json | 0 .../olive_vigil_candle_triple_ceiling.json | 0 ...olive_vigil_candle_triple_ceiling_lit.json | 0 .../block/olive_vigil_candle_triple_lit.json | 0 .../block/orange_vigil_candle_double.json | 0 .../orange_vigil_candle_double_ceiling.json | 0 ...range_vigil_candle_double_ceiling_lit.json | 0 .../block/orange_vigil_candle_double_lit.json | 0 .../block/orange_vigil_candle_quadruple.json | 0 ...orange_vigil_candle_quadruple_ceiling.json | 0 ...ge_vigil_candle_quadruple_ceiling_lit.json | 0 .../orange_vigil_candle_quadruple_lit.json | 0 .../block/orange_vigil_candle_single.json | 0 .../orange_vigil_candle_single_ceiling.json | 0 ...range_vigil_candle_single_ceiling_lit.json | 0 .../block/orange_vigil_candle_single_lit.json | 0 .../block/orange_vigil_candle_triple.json | 0 .../orange_vigil_candle_triple_ceiling.json | 0 ...range_vigil_candle_triple_ceiling_lit.json | 0 .../block/orange_vigil_candle_triple_lit.json | 0 .../block/pink_vigil_candle_double.json | 0 .../pink_vigil_candle_double_ceiling.json | 0 .../pink_vigil_candle_double_ceiling_lit.json | 0 .../block/pink_vigil_candle_double_lit.json | 0 .../block/pink_vigil_candle_quadruple.json | 0 .../pink_vigil_candle_quadruple_ceiling.json | 0 ...nk_vigil_candle_quadruple_ceiling_lit.json | 0 .../pink_vigil_candle_quadruple_lit.json | 0 .../block/pink_vigil_candle_single.json | 0 .../pink_vigil_candle_single_ceiling.json | 0 .../pink_vigil_candle_single_ceiling_lit.json | 0 .../block/pink_vigil_candle_single_lit.json | 0 .../block/pink_vigil_candle_triple.json | 0 .../pink_vigil_candle_triple_ceiling.json | 0 .../pink_vigil_candle_triple_ceiling_lit.json | 0 .../block/pink_vigil_candle_triple_lit.json | 0 .../block/purple_vigil_candle_double.json | 0 .../purple_vigil_candle_double_ceiling.json | 0 ...urple_vigil_candle_double_ceiling_lit.json | 0 .../block/purple_vigil_candle_double_lit.json | 0 .../block/purple_vigil_candle_quadruple.json | 0 ...purple_vigil_candle_quadruple_ceiling.json | 0 ...le_vigil_candle_quadruple_ceiling_lit.json | 0 .../purple_vigil_candle_quadruple_lit.json | 0 .../block/purple_vigil_candle_single.json | 0 .../purple_vigil_candle_single_ceiling.json | 0 ...urple_vigil_candle_single_ceiling_lit.json | 0 .../block/purple_vigil_candle_single_lit.json | 0 .../block/purple_vigil_candle_triple.json | 0 .../purple_vigil_candle_triple_ceiling.json | 0 ...urple_vigil_candle_triple_ceiling_lit.json | 0 .../block/purple_vigil_candle_triple_lit.json | 0 .../models/block/red_vigil_candle_double.json | 0 .../red_vigil_candle_double_ceiling.json | 0 .../red_vigil_candle_double_ceiling_lit.json | 0 .../block/red_vigil_candle_double_lit.json | 0 .../block/red_vigil_candle_quadruple.json | 0 .../red_vigil_candle_quadruple_ceiling.json | 0 ...ed_vigil_candle_quadruple_ceiling_lit.json | 0 .../block/red_vigil_candle_quadruple_lit.json | 0 .../models/block/red_vigil_candle_single.json | 0 .../red_vigil_candle_single_ceiling.json | 0 .../red_vigil_candle_single_ceiling_lit.json | 0 .../block/red_vigil_candle_single_lit.json | 0 .../models/block/red_vigil_candle_triple.json | 0 .../red_vigil_candle_triple_ceiling.json | 0 .../red_vigil_candle_triple_ceiling_lit.json | 0 .../block/red_vigil_candle_triple_lit.json | 0 .../block/rose_vigil_candle_double.json | 0 .../rose_vigil_candle_double_ceiling.json | 0 .../rose_vigil_candle_double_ceiling_lit.json | 0 .../block/rose_vigil_candle_double_lit.json | 0 .../block/rose_vigil_candle_quadruple.json | 0 .../rose_vigil_candle_quadruple_ceiling.json | 0 ...se_vigil_candle_quadruple_ceiling_lit.json | 0 .../rose_vigil_candle_quadruple_lit.json | 0 .../block/rose_vigil_candle_single.json | 0 .../rose_vigil_candle_single_ceiling.json | 0 .../rose_vigil_candle_single_ceiling_lit.json | 0 .../block/rose_vigil_candle_single_lit.json | 0 .../block/rose_vigil_candle_triple.json | 0 .../rose_vigil_candle_triple_ceiling.json | 0 .../rose_vigil_candle_triple_ceiling_lit.json | 0 .../block/rose_vigil_candle_triple_lit.json | 0 .../models/block/rotting_flesh.json | 0 .../models/block/sepulcher_bones.json | 0 .../models/block/sepulcher_filled_1.json | 0 .../models/block/sepulcher_filled_10.json | 0 .../models/block/sepulcher_filled_11.json | 0 .../models/block/sepulcher_filled_12.json | 0 .../models/block/sepulcher_filled_13.json | 0 .../models/block/sepulcher_filled_2.json | 0 .../models/block/sepulcher_filled_3.json | 0 .../models/block/sepulcher_filled_4.json | 0 .../models/block/sepulcher_filled_5.json | 0 .../models/block/sepulcher_filled_6.json | 0 .../models/block/sepulcher_filled_7.json | 0 .../models/block/sepulcher_filled_8.json | 0 .../models/block/sepulcher_filled_9.json | 0 .../models/block/sepulcher_rotting_1.json | 0 .../models/block/sepulcher_rotting_2.json | 0 .../models/block/sepulcher_rotting_3.json | 0 .../models/block/sepulcher_rotting_4.json | 0 .../block/slate_vigil_candle_double.json | 0 .../slate_vigil_candle_double_ceiling.json | 0 ...slate_vigil_candle_double_ceiling_lit.json | 0 .../block/slate_vigil_candle_double_lit.json | 0 .../block/slate_vigil_candle_quadruple.json | 0 .../slate_vigil_candle_quadruple_ceiling.json | 0 ...te_vigil_candle_quadruple_ceiling_lit.json | 0 .../slate_vigil_candle_quadruple_lit.json | 0 .../block/slate_vigil_candle_single.json | 0 .../slate_vigil_candle_single_ceiling.json | 0 ...slate_vigil_candle_single_ceiling_lit.json | 0 .../block/slate_vigil_candle_single_lit.json | 0 .../block/slate_vigil_candle_triple.json | 0 .../slate_vigil_candle_triple_ceiling.json | 0 ...slate_vigil_candle_triple_ceiling_lit.json | 0 .../block/slate_vigil_candle_triple_lit.json | 0 .../models/block/stone_tablet.json | 0 .../models/block/stone_tablet_floor.json | 0 .../models/block/stone_tablet_wall.json | 0 .../models/block/tan_vigil_candle_double.json | 0 .../tan_vigil_candle_double_ceiling.json | 0 .../tan_vigil_candle_double_ceiling_lit.json | 0 .../block/tan_vigil_candle_double_lit.json | 0 .../block/tan_vigil_candle_quadruple.json | 0 .../tan_vigil_candle_quadruple_ceiling.json | 0 ...an_vigil_candle_quadruple_ceiling_lit.json | 0 .../block/tan_vigil_candle_quadruple_lit.json | 0 .../models/block/tan_vigil_candle_single.json | 0 .../tan_vigil_candle_single_ceiling.json | 0 .../tan_vigil_candle_single_ceiling_lit.json | 0 .../block/tan_vigil_candle_single_lit.json | 0 .../models/block/tan_vigil_candle_triple.json | 0 .../tan_vigil_candle_triple_ceiling.json | 0 .../tan_vigil_candle_triple_ceiling_lit.json | 0 .../block/tan_vigil_candle_triple_lit.json | 0 .../block/teal_vigil_candle_double.json | 0 .../teal_vigil_candle_double_ceiling.json | 0 .../teal_vigil_candle_double_ceiling_lit.json | 0 .../block/teal_vigil_candle_double_lit.json | 0 .../block/teal_vigil_candle_quadruple.json | 0 .../teal_vigil_candle_quadruple_ceiling.json | 0 ...al_vigil_candle_quadruple_ceiling_lit.json | 0 .../teal_vigil_candle_quadruple_lit.json | 0 .../block/teal_vigil_candle_single.json | 0 .../teal_vigil_candle_single_ceiling.json | 0 .../teal_vigil_candle_single_ceiling_lit.json | 0 .../block/teal_vigil_candle_single_lit.json | 0 .../block/teal_vigil_candle_triple.json | 0 .../teal_vigil_candle_triple_ceiling.json | 0 .../teal_vigil_candle_triple_ceiling_lit.json | 0 .../block/teal_vigil_candle_triple_lit.json | 0 .../block/verdant_vigil_candle_double.json | 0 .../verdant_vigil_candle_double_ceiling.json | 0 ...rdant_vigil_candle_double_ceiling_lit.json | 0 .../verdant_vigil_candle_double_lit.json | 0 .../block/verdant_vigil_candle_quadruple.json | 0 ...erdant_vigil_candle_quadruple_ceiling.json | 0 ...nt_vigil_candle_quadruple_ceiling_lit.json | 0 .../verdant_vigil_candle_quadruple_lit.json | 0 .../block/verdant_vigil_candle_single.json | 0 .../verdant_vigil_candle_single_ceiling.json | 0 ...rdant_vigil_candle_single_ceiling_lit.json | 0 .../verdant_vigil_candle_single_lit.json | 0 .../block/verdant_vigil_candle_triple.json | 0 .../verdant_vigil_candle_triple_ceiling.json | 0 ...rdant_vigil_candle_triple_ceiling_lit.json | 0 .../verdant_vigil_candle_triple_lit.json | 0 .../block/white_vigil_candle_double.json | 0 .../white_vigil_candle_double_ceiling.json | 0 ...white_vigil_candle_double_ceiling_lit.json | 0 .../block/white_vigil_candle_double_lit.json | 0 .../block/white_vigil_candle_quadruple.json | 0 .../white_vigil_candle_quadruple_ceiling.json | 0 ...te_vigil_candle_quadruple_ceiling_lit.json | 0 .../white_vigil_candle_quadruple_lit.json | 0 .../block/white_vigil_candle_single.json | 0 .../white_vigil_candle_single_ceiling.json | 0 ...white_vigil_candle_single_ceiling_lit.json | 0 .../block/white_vigil_candle_single_lit.json | 0 .../block/white_vigil_candle_triple.json | 0 .../white_vigil_candle_triple_ceiling.json | 0 ...white_vigil_candle_triple_ceiling_lit.json | 0 .../block/white_vigil_candle_triple_lit.json | 0 .../block/yellow_vigil_candle_double.json | 0 .../yellow_vigil_candle_double_ceiling.json | 0 ...ellow_vigil_candle_double_ceiling_lit.json | 0 .../block/yellow_vigil_candle_double_lit.json | 0 .../block/yellow_vigil_candle_quadruple.json | 0 ...yellow_vigil_candle_quadruple_ceiling.json | 0 ...ow_vigil_candle_quadruple_ceiling_lit.json | 0 .../yellow_vigil_candle_quadruple_lit.json | 0 .../block/yellow_vigil_candle_single.json | 0 .../yellow_vigil_candle_single_ceiling.json | 0 ...ellow_vigil_candle_single_ceiling_lit.json | 0 .../block/yellow_vigil_candle_single_lit.json | 0 .../block/yellow_vigil_candle_triple.json | 0 .../yellow_vigil_candle_triple_ceiling.json | 0 ...ellow_vigil_candle_triple_ceiling_lit.json | 0 .../block/yellow_vigil_candle_triple_lit.json | 0 .../models/item/amber_vigil_candle.json | 0 .../models/item/aqua_vigil_candle.json | 0 .../models/item/beige_vigil_candle.json | 0 .../models/item/black_vigil_candle.json | 0 .../models/item/blue_vigil_candle.json | 0 .../doom_and_gloom/models/item/bone_pile.json | 0 .../models/item/brown_vigil_candle.json | 0 .../models/item/burial_dirt.json | 0 .../models/item/bush_hammer.json | 0 .../models/item/coral_vigil_candle.json | 0 .../models/item/cracked_stone_tablet.json | 0 .../models/item/cyan_vigil_candle.json | 0 .../models/item/engraved_stone_tablet.json | 0 .../models/item/forest_vigil_candle.json | 0 .../models/item/ginger_vigil_candle.json | 0 .../models/item/gray_vigil_candle.json | 0 .../models/item/green_vigil_candle.json | 0 .../models/item/hammer_and_chisel.json | 0 .../models/item/holler_spawn_egg.json | 0 .../models/item/indigo_vigil_candle.json | 0 .../models/item/light_blue_vigil_candle.json | 0 .../models/item/light_gray_vigil_candle.json | 0 .../models/item/lime_vigil_candle.json | 0 .../models/item/magenta_vigil_candle.json | 0 .../models/item/maroon_vigil_candle.json | 0 .../models/item/mint_vigil_candle.json | 0 .../models/item/music_disc_afterlife.json | 0 .../models/item/navy_vigil_candle.json | 0 .../models/item/olive_vigil_candle.json | 0 .../models/item/orange_vigil_candle.json | 0 .../models/item/pink_vigil_candle.json | 0 .../models/item/purple_vigil_candle.json | 0 .../models/item/red_vigil_candle.json | 0 .../models/item/rose_vigil_candle.json | 0 .../doom_and_gloom/models/item/sepulcher.json | 0 .../models/item/slate_vigil_candle.json | 0 .../models/item/stone_tablet.json | 0 .../models/item/tan_vigil_candle.json | 0 .../models/item/teal_vigil_candle.json | 0 .../models/item/verdant_vigil_candle.json | 0 .../models/item/vigil_candle.json | 0 .../models/item/white_vigil_candle.json | 0 .../models/item/yellow_vigil_candle.json | 0 .../assets/doom_and_gloom/sounds.json | 0 .../building_blocks/amber_vigil_candle.json | 0 .../amber_vigil_candle_dyeing.json | 0 .../building_blocks/aqua_vigil_candle.json | 0 .../aqua_vigil_candle_dyeing.json | 0 .../building_blocks/beige_vigil_candle.json | 0 .../beige_vigil_candle_dyeing.json | 0 .../building_blocks/black_vigil_candle.json | 0 .../black_vigil_candle_dyeing.json | 0 .../building_blocks/blue_vigil_candle.json | 0 .../blue_vigil_candle_dyeing.json | 0 .../recipes/building_blocks/bone_pile.json | 0 .../building_blocks/brown_vigil_candle.json | 0 .../brown_vigil_candle_dyeing.json | 0 .../building_blocks/coral_vigil_candle.json | 0 .../coral_vigil_candle_dyeing.json | 0 .../building_blocks/cyan_vigil_candle.json | 0 .../cyan_vigil_candle_dyeing.json | 0 .../building_blocks/forest_vigil_candle.json | 0 .../forest_vigil_candle_dyeing.json | 0 .../building_blocks/ginger_vigil_candle.json | 0 .../ginger_vigil_candle_dyeing.json | 0 .../building_blocks/gray_vigil_candle.json | 0 .../gray_vigil_candle_dyeing.json | 0 .../building_blocks/green_vigil_candle.json | 0 .../green_vigil_candle_dyeing.json | 0 .../building_blocks/indigo_vigil_candle.json | 0 .../indigo_vigil_candle_dyeing.json | 0 .../light_blue_vigil_candle.json | 0 .../light_blue_vigil_candle_dyeing.json | 0 .../light_gray_vigil_candle.json | 0 .../light_gray_vigil_candle_dyeing.json | 0 .../building_blocks/lime_vigil_candle.json | 0 .../lime_vigil_candle_dyeing.json | 0 .../building_blocks/magenta_vigil_candle.json | 0 .../magenta_vigil_candle_dyeing.json | 0 .../building_blocks/maroon_vigil_candle.json | 0 .../maroon_vigil_candle_dyeing.json | 0 .../building_blocks/mint_vigil_candle.json | 0 .../mint_vigil_candle_dyeing.json | 0 .../building_blocks/navy_vigil_candle.json | 0 .../navy_vigil_candle_dyeing.json | 0 .../building_blocks/olive_vigil_candle.json | 0 .../olive_vigil_candle_dyeing.json | 0 .../building_blocks/orange_vigil_candle.json | 0 .../orange_vigil_candle_dyeing.json | 0 .../building_blocks/pink_vigil_candle.json | 0 .../pink_vigil_candle_dyeing.json | 0 .../building_blocks/purple_vigil_candle.json | 0 .../purple_vigil_candle_dyeing.json | 0 .../building_blocks/red_vigil_candle.json | 0 .../red_vigil_candle_dyeing.json | 0 .../building_blocks/rose_vigil_candle.json | 0 .../rose_vigil_candle_dyeing.json | 0 .../building_blocks/slate_vigil_candle.json | 0 .../slate_vigil_candle_dyeing.json | 0 .../building_blocks/tan_vigil_candle.json | 0 .../tan_vigil_candle_dyeing.json | 0 .../building_blocks/teal_vigil_candle.json | 0 .../teal_vigil_candle_dyeing.json | 0 .../building_blocks/verdant_vigil_candle.json | 0 .../verdant_vigil_candle_dyeing.json | 0 .../recipes/building_blocks/vigil_candle.json | 0 .../building_blocks/white_vigil_candle.json | 0 .../white_vigil_candle_dyeing.json | 0 .../building_blocks/yellow_vigil_candle.json | 0 .../yellow_vigil_candle_dyeing.json | 0 .../advancements/recipes/sepulcher.json | 0 .../recipes/sepulcher_fallback.json | 0 .../blocks/amber_vigil_candle.json | 0 .../loot_tables/blocks/aqua_vigil_candle.json | 0 .../blocks/beige_vigil_candle.json | 0 .../blocks/black_vigil_candle.json | 0 .../loot_tables/blocks/blue_vigil_candle.json | 0 .../loot_tables/blocks/bone_pile.json | 0 .../blocks/brown_vigil_candle.json | 0 .../loot_tables/blocks/burial_dirt.json | 0 .../blocks/coral_vigil_candle.json | 0 .../blocks/cracked_stone_tablet.json | 0 .../loot_tables/blocks/cyan_vigil_candle.json | 0 .../blocks/engraved_stone_tablet.json | 0 .../blocks/forest_vigil_candle.json | 0 .../blocks/ginger_vigil_candle.json | 0 .../loot_tables/blocks/gray_vigil_candle.json | 0 .../blocks/green_vigil_candle.json | 0 .../blocks/indigo_vigil_candle.json | 0 .../blocks/light_blue_vigil_candle.json | 0 .../blocks/light_gray_vigil_candle.json | 0 .../loot_tables/blocks/lime_vigil_candle.json | 0 .../blocks/magenta_vigil_candle.json | 0 .../blocks/maroon_vigil_candle.json | 0 .../loot_tables/blocks/mint_vigil_candle.json | 0 .../loot_tables/blocks/navy_vigil_candle.json | 0 .../blocks/olive_vigil_candle.json | 0 .../blocks/orange_vigil_candle.json | 0 .../loot_tables/blocks/pink_vigil_candle.json | 0 .../blocks/purple_vigil_candle.json | 0 .../loot_tables/blocks/red_vigil_candle.json | 0 .../loot_tables/blocks/rose_vigil_candle.json | 0 .../loot_tables/blocks/rotting_flesh.json | 0 .../loot_tables/blocks/sepulcher.json | 0 .../blocks/slate_vigil_candle.json | 0 .../loot_tables/blocks/stone_tablet.json | 0 .../loot_tables/blocks/tan_vigil_candle.json | 0 .../loot_tables/blocks/teal_vigil_candle.json | 0 .../blocks/verdant_vigil_candle.json | 0 .../loot_tables/blocks/vigil_candle.json | 0 .../blocks/white_vigil_candle.json | 0 .../blocks/yellow_vigil_candle.json | 0 .../loot_tables/entities/holler.json | 0 .../recipes/amber_vigil_candle.json | 0 .../recipes/amber_vigil_candle_dyeing.json | 0 .../recipes/aqua_vigil_candle.json | 0 .../recipes/aqua_vigil_candle_dyeing.json | 0 .../recipes/beige_vigil_candle.json | 0 .../recipes/beige_vigil_candle_dyeing.json | 0 .../recipes/black_vigil_candle.json | 0 .../recipes/black_vigil_candle_dyeing.json | 0 .../recipes/blue_vigil_candle.json | 0 .../recipes/blue_vigil_candle_dyeing.json | 0 .../doom_and_gloom/recipes/bone_pile.json | 0 .../recipes/brown_vigil_candle.json | 0 .../recipes/brown_vigil_candle_dyeing.json | 0 .../recipes/coral_vigil_candle.json | 0 .../recipes/coral_vigil_candle_dyeing.json | 0 .../recipes/cyan_vigil_candle.json | 0 .../recipes/cyan_vigil_candle_dyeing.json | 0 .../recipes/forest_vigil_candle.json | 0 .../recipes/forest_vigil_candle_dyeing.json | 0 .../recipes/ginger_vigil_candle.json | 0 .../recipes/ginger_vigil_candle_dyeing.json | 0 .../recipes/gray_vigil_candle.json | 0 .../recipes/gray_vigil_candle_dyeing.json | 0 .../recipes/green_vigil_candle.json | 0 .../recipes/green_vigil_candle_dyeing.json | 0 .../recipes/indigo_vigil_candle.json | 0 .../recipes/indigo_vigil_candle_dyeing.json | 0 .../recipes/light_blue_vigil_candle.json | 0 .../light_blue_vigil_candle_dyeing.json | 0 .../recipes/light_gray_vigil_candle.json | 0 .../light_gray_vigil_candle_dyeing.json | 0 .../recipes/lime_vigil_candle.json | 0 .../recipes/lime_vigil_candle_dyeing.json | 0 .../recipes/magenta_vigil_candle.json | 0 .../recipes/magenta_vigil_candle_dyeing.json | 0 .../recipes/maroon_vigil_candle.json | 0 .../recipes/maroon_vigil_candle_dyeing.json | 0 .../recipes/mint_vigil_candle.json | 0 .../recipes/mint_vigil_candle_dyeing.json | 0 .../recipes/navy_vigil_candle.json | 0 .../recipes/navy_vigil_candle_dyeing.json | 0 .../recipes/olive_vigil_candle.json | 0 .../recipes/olive_vigil_candle_dyeing.json | 0 .../recipes/orange_vigil_candle.json | 0 .../recipes/orange_vigil_candle_dyeing.json | 0 .../recipes/pink_vigil_candle.json | 0 .../recipes/pink_vigil_candle_dyeing.json | 0 .../recipes/purple_vigil_candle.json | 0 .../recipes/purple_vigil_candle_dyeing.json | 0 .../recipes/red_vigil_candle.json | 0 .../recipes/red_vigil_candle_dyeing.json | 0 .../recipes/rose_vigil_candle.json | 0 .../recipes/rose_vigil_candle_dyeing.json | 0 .../doom_and_gloom/recipes/sepulcher.json | 0 .../recipes/sepulcher_fallback.json | 0 .../recipes/slate_vigil_candle.json | 0 .../recipes/slate_vigil_candle_dyeing.json | 0 .../recipes/tan_vigil_candle.json | 0 .../recipes/tan_vigil_candle_dyeing.json | 0 .../recipes/teal_vigil_candle.json | 0 .../recipes/teal_vigil_candle_dyeing.json | 0 .../recipes/verdant_vigil_candle.json | 0 .../recipes/verdant_vigil_candle_dyeing.json | 0 .../doom_and_gloom/recipes/vigil_candle.json | 0 .../recipes/white_vigil_candle.json | 0 .../recipes/white_vigil_candle_dyeing.json | 0 .../recipes/yellow_vigil_candle.json | 0 .../recipes/yellow_vigil_candle_dyeing.json | 0 .../tags/blocks/burial_dirt_convertible.json | 0 .../tags/blocks/gravetender_lightables.json | 0 .../tags/blocks/vigil_candles.json | 0 .../tags/entity_types/fills_sepulcher.json | 0 .../tags/items/vigil_candles.json | 0 .../mob_effect/cleared_by_vigil_candle.json | 0 .../forge/tags/items/tools/bush_hammer.json | 0 .../recipes/building_blocks/bone.json | 0 .../data/minecraft/recipes/bone.json | 0 .../data/minecraft/tags/blocks/candles.json | 0 .../data/minecraft/tags/blocks/dirt.json | 0 .../tags/blocks/mineable/pickaxe.json | 0 .../minecraft/tags/items/music_discs.json | 0 .../oreganized/tags/blocks/fire_source.json | 0 .../src}/generated/resources/pack.mcmeta | 0 .../java/galena/doom_and_gloom/DGConfig.java | 16 +- .../galena/doom_and_gloom/DoomAndGloom.java | 46 +++ .../client/DGReloadListener.java | 2 +- .../client/DoomAndGloomClient.java | 40 +++ .../client/FogAmbientSoundHandler.java | 8 +- .../doom_and_gloom/client/FogRendering.java | 81 +++++ .../doom_and_gloom/client/OModelLayers.java | 4 +- .../doom_and_gloom/client/ORenderTypes.java | 11 +- .../client/model/DirtMoundModel.java | 0 .../client/model/HollerModel.java | 0 .../client/particle/BoneFragmentParticle.java | 0 .../client/particle/FogParticle.java | 7 +- .../render/entity/DirtMoundRenderer.java | 3 - .../client/render/entity/HollerRender.java | 3 - .../client/screen/StoneTabletScreen.java | 12 +- .../doom_and_gloom/compat/CompatMods.java | 8 + .../doom_and_gloom/compat}/DyeColors.java | 12 +- .../compat/moonlight/CandleSensor.java | 8 +- .../compat/moonlight/LightUpCandles.java | 4 +- .../compat/moonlight/MoonlightCompat.java | 4 +- .../compat/moonlight/TurnOffCandles.java | 5 +- .../content/block/BonePileBlock.java | 12 +- .../content/block/BurialDirtBlock.java | 0 .../content/block/SepulcherBlock.java | 20 +- .../content/block/StoneTabletBlock.java | 29 +- .../content/block/StoneTabletBlockEntity.java | 4 +- .../content/block/StoneTabletText.java | 0 .../content/block/TickingEntityBlock.java | 0 .../content/block/VigilCandleBlock.java | 4 +- .../content/effect/FogEffect.java | 0 .../content/effect/WardingEffect.java | 0 .../content/entity/DirtMound.java | 4 +- .../content/entity/SepulcherBlockEntity.java | 68 +--- .../content/entity/Ticking.java | 0 .../entity/VigilCandleBlockEntity.java | 14 +- .../content/entity/holler/Holler.java | 30 +- .../entity/holler/HollerAvoidGoal.java | 4 +- .../entity/holler/HollerFollowGoal.java | 4 +- .../entity/holler/HollerPanicGoal.java | 4 +- .../entity/holler/HollerStrollGoal.java | 0 .../content/item/BushHammerItem.java | 4 +- .../content/item/HammerAndChiselItem.java | 4 +- .../gen/VillageStructureModifier.java | 2 +- .../doom_and_gloom/index/DGBlockEntities.java | 33 ++ .../galena/doom_and_gloom/index/DGBlocks.java | 78 ++++ .../doom_and_gloom/index/DGEffects.java | 20 ++ .../doom_and_gloom/index/DGEntityTypes.java | 32 ++ .../doom_and_gloom/index/DGItemTiers.java | 7 +- .../galena/doom_and_gloom/index/DGItems.java | 35 ++ .../doom_and_gloom/index/DGParticleTypes.java | 20 ++ .../galena/doom_and_gloom/index/DGPoi.java | 25 ++ .../doom_and_gloom/index/DGSoundEvents.java | 47 +++ .../doom_and_gloom/index/DGSoundTypes.java | 11 + .../galena/doom_and_gloom/index/DGTags.java | 23 +- .../index/DGVillagerTrades.java | 11 +- .../doom_and_gloom/index/DGVillagerTypes.java | 32 ++ .../doom_and_gloom/mixin/EntityMixin.java | 4 +- .../mixin/client/LevelRendererMixin.java | 10 +- .../mixin/client/LocalPlayerAccessor.java | 0 .../mixin/client/LocalPlayerMixin.java | 0 .../doom_and_gloom/network/DGNetwork.java | 25 ++ .../packet/EngraveStoneTabletPacket.java | 26 ++ .../packet/SepulcherConsumesDeathPacket.java | 26 ++ .../network/packet/SepulcherRotsPacket.java | 26 ++ .../packet/StoneTabletUpdatePacket.java | 48 ++- .../assets/doom_and_gloom/lang/de_de.json | 0 .../assets/doom_and_gloom/lang/pt_br.json | 0 .../resources/assets/doom_and_gloom/logo.png | Bin .../models/block/sepulcher.json | 0 .../models/block/sepulcher_seal.json | 0 .../models/block/template/stone_tablet.json | 0 .../block/template/stone_tablet_floor.json | 0 .../block/template/stone_tablet_wall.json | 0 .../models/block/vigil_candle_double.json | 0 .../block/vigil_candle_double_ceiling.json | 0 .../models/block/vigil_candle_quadruple.json | 0 .../block/vigil_candle_quadruple_ceiling.json | 0 .../models/block/vigil_candle_single.json | 0 .../block/vigil_candle_single_ceiling.json | 0 .../models/block/vigil_candle_triple.json | 0 .../block/vigil_candle_triple_ceiling.json | 0 .../particles/bone_fragment.json | 0 .../assets/doom_and_gloom/particles/fog.json | 0 .../doom_and_gloom/particles/fog_water.json | 0 .../particles/hollering_soul.json | 0 ...rendertype_entity_translucent_additive.fsh | 0 ...endertype_entity_translucent_additive.json | 0 .../sounds/ambient/fog_ambience.ogg | 0 .../sounds/block/bone_pile_break_0.ogg | 0 .../sounds/block/bone_pile_break_1.ogg | 0 .../sounds/block/bone_pile_break_2.ogg | 0 .../sounds/block/bone_pile_break_3.ogg | 0 .../sounds/block/bone_pile_break_4.ogg | 0 .../sounds/block/bone_pile_step_0.ogg | 0 .../sounds/block/bone_pile_step_1.ogg | 0 .../sounds/block/bone_pile_step_2.ogg | 0 .../sounds/block/bone_pile_step_3.ogg | 0 .../sounds/block/sepulcher_break_0.ogg | 0 .../sounds/block/sepulcher_break_1.ogg | 0 .../sounds/block/sepulcher_break_2.ogg | 0 .../sounds/block/sepulcher_break_3.ogg | 0 .../block/sepulcher_corpse_stuffed_0.ogg | 0 .../block/sepulcher_corpse_stuffed_1.ogg | 0 .../sounds/block/sepulcher_filled_0.ogg | 0 .../sounds/block/sepulcher_filled_1.ogg | 0 .../sounds/block/sepulcher_filled_2.ogg | 0 .../sounds/block/sepulcher_filled_3.ogg | 0 .../sounds/block/sepulcher_harvest_0.ogg | 0 .../sounds/block/sepulcher_harvest_1.ogg | 0 .../sounds/block/sepulcher_harvest_2.ogg | 0 .../sounds/block/sepulcher_rotting_0.ogg | 0 .../sounds/block/sepulcher_rotting_1.ogg | 0 .../sounds/block/sepulcher_rotting_2.ogg | 0 .../sounds/block/sepulcher_rotting_3.ogg | 0 .../sounds/block/sepulcher_sealing.ogg | 0 .../sounds/block/sepulcher_step_0.ogg | 0 .../sounds/block/sepulcher_step_1.ogg | 0 .../sounds/block/sepulcher_step_2.ogg | 0 .../sounds/block/sepulcher_step_3.ogg | 0 .../sounds/block/sepulcher_step_4.ogg | 0 .../sounds/block/sepulcher_unsealing.ogg | 0 .../sounds/entity/holler_dies_0.ogg | 0 .../sounds/entity/holler_dies_1.ogg | 0 .../sounds/entity/holler_hollers_0.ogg | 0 .../sounds/entity/holler_hollers_1.ogg | 0 .../sounds/entity/holler_hollers_2.ogg | 0 .../sounds/entity/holler_hollers_3.ogg | 0 .../sounds/entity/holler_hurts_0.ogg | 0 .../sounds/entity/holler_hurts_1.ogg | 0 .../sounds/entity/holler_shrieks_0.ogg | 0 .../sounds/entity/holler_shrieks_1.ogg | 0 .../sounds/entity/holler_shrieks_2.ogg | 0 .../sounds/music/disc/afterlife.ogg | 0 .../textures/block/amber_vigil_candle.png | Bin .../textures/block/amber_vigil_candle_lit.png | Bin .../block/amber_vigil_candle_lit.png.mcmeta | 0 .../textures/block/aqua_vigil_candle.png | Bin .../textures/block/aqua_vigil_candle_lit.png | Bin .../block/aqua_vigil_candle_lit.png.mcmeta | 0 .../textures/block/beige_vigil_candle.png | Bin .../textures/block/beige_vigil_candle_lit.png | Bin .../block/beige_vigil_candle_lit.png.mcmeta | 0 .../textures/block/black_vigil_candle.png | Bin .../textures/block/black_vigil_candle_lit.png | Bin .../block/black_vigil_candle_lit.png.mcmeta | 0 .../textures/block/blue_vigil_candle.png | Bin .../textures/block/blue_vigil_candle_lit.png | Bin .../block/blue_vigil_candle_lit.png.mcmeta | 0 .../textures/block/bone_pile_side.png | Bin .../textures/block/brown_vigil_candle.png | Bin .../textures/block/brown_vigil_candle_lit.png | Bin .../block/brown_vigil_candle_lit.png.mcmeta | 0 .../textures/block/burial_dirt.png | Bin .../textures/block/coral_vigil_candle.png | Bin .../textures/block/coral_vigil_candle_lit.png | Bin .../block/coral_vigil_candle_lit.png.mcmeta | 0 .../textures/block/cyan_vigil_candle.png | Bin .../textures/block/cyan_vigil_candle_lit.png | Bin .../block/cyan_vigil_candle_lit.png.mcmeta | 0 .../textures/block/engraved/bricks.png | Bin .../block/engraved/engraved_cut_copper.png | Bin .../engraved/engraved_deepslate_bricks.png | Bin .../engraved/engraved_end_stone_bricks.png | Bin .../engraved/engraved_exposed_cut_copper.png | Bin .../block/engraved/engraved_glance_bricks.png | Bin .../block/engraved/engraved_nether_bricks.png | Bin .../engraved/engraved_oxidized_cut_copper.png | Bin .../engraved_polished_blackstone_bricks.png | Bin .../engraved/engraved_prismarine_bricks.png | Bin .../block/engraved/engraved_quartz_bricks.png | Bin .../engraved/engraved_red_nether_bricks.png | Bin .../block/engraved/engraved_stone_bricks.png | Bin .../engraved/engraved_waxed_cut_copper.png | Bin .../engraved_waxed_exposed_cut_copper.png | Bin .../engraved_waxed_oxidized_cut_copper.png | Bin .../engraved_waxed_weathered_cut_copper.png | Bin .../engraved_weathered_cut_copper.png | Bin .../textures/block/engraved_cut_silver.png | Bin .../textures/block/forest_vigil_candle.png | Bin .../block/forest_vigil_candle_lit.png | Bin .../block/forest_vigil_candle_lit.png.mcmeta | 0 .../textures/block/ginger_vigil_candle.png | Bin .../block/ginger_vigil_candle_lit.png | Bin .../block/ginger_vigil_candle_lit.png.mcmeta | 0 .../textures/block/gray_vigil_candle.png | Bin .../textures/block/gray_vigil_candle_lit.png | Bin .../block/gray_vigil_candle_lit.png.mcmeta | 0 .../textures/block/green_vigil_candle.png | Bin .../textures/block/green_vigil_candle_lit.png | Bin .../block/green_vigil_candle_lit.png.mcmeta | 0 .../textures/block/indigo_vigil_candle.png | Bin .../block/indigo_vigil_candle_lit.png | Bin .../block/indigo_vigil_candle_lit.png.mcmeta | 0 .../block/light_blue_vigil_candle.png | Bin .../block/light_blue_vigil_candle_lit.png | Bin .../light_blue_vigil_candle_lit.png.mcmeta | 0 .../block/light_gray_vigil_candle.png | Bin .../block/light_gray_vigil_candle_lit.png | Bin .../light_gray_vigil_candle_lit.png.mcmeta | 0 .../textures/block/lime_vigil_candle.png | Bin .../textures/block/lime_vigil_candle_lit.png | Bin .../block/lime_vigil_candle_lit.png.mcmeta | 0 .../textures/block/magenta_vigil_candle.png | Bin .../block/magenta_vigil_candle_lit.png | Bin .../block/magenta_vigil_candle_lit.png.mcmeta | 0 .../textures/block/maroon_vigil_candle.png | Bin .../block/maroon_vigil_candle_lit.png | Bin .../block/maroon_vigil_candle_lit.png.mcmeta | 0 .../textures/block/mint_vigil_candle.png | Bin .../textures/block/mint_vigil_candle_lit.png | Bin .../block/mint_vigil_candle_lit.png.mcmeta | 0 .../textures/block/navy_vigil_candle.png | Bin .../textures/block/navy_vigil_candle_lit.png | Bin .../block/navy_vigil_candle_lit.png.mcmeta | 0 .../textures/block/olive_vigil_candle.png | Bin .../textures/block/olive_vigil_candle_lit.png | Bin .../block/olive_vigil_candle_lit.png.mcmeta | 0 .../textures/block/orange_vigil_candle.png | Bin .../block/orange_vigil_candle_lit.png | Bin .../block/orange_vigil_candle_lit.png.mcmeta | 0 .../textures/block/pink_vigil_candle.png | Bin .../textures/block/pink_vigil_candle_lit.png | Bin .../block/pink_vigil_candle_lit.png.mcmeta | 0 .../textures/block/purple_vigil_candle.png | Bin .../block/purple_vigil_candle_lit.png | Bin .../block/purple_vigil_candle_lit.png.mcmeta | 0 .../textures/block/red_vigil_candle.png | Bin .../textures/block/red_vigil_candle_lit.png | Bin .../block/red_vigil_candle_lit.png.mcmeta | 0 .../textures/block/rose_vigil_candle.png | Bin .../textures/block/rose_vigil_candle_lit.png | Bin .../block/rose_vigil_candle_lit.png.mcmeta | 0 .../textures/block/sepulcher.png | Bin .../textures/block/sepulcher_rot_1.png | Bin .../textures/block/sepulcher_rot_2.png | Bin .../textures/block/sepulcher_rot_3.png | Bin .../textures/block/sepulcher_rot_4.png | Bin .../textures/block/sepulcher_rot_5.png | Bin .../textures/block/slate_vigil_candle.png | Bin .../textures/block/slate_vigil_candle_lit.png | Bin .../block/slate_vigil_candle_lit.png.mcmeta | 0 .../textures/block/stone_tablet.png | Bin .../textures/block/stone_tablet_cracked.png | Bin .../textures/block/stone_tablet_engraved.png | Bin .../textures/block/stone_tablet_old.png | Bin .../textures/block/tan_vigil_candle.png | Bin .../textures/block/tan_vigil_candle_lit.png | Bin .../block/tan_vigil_candle_lit.png.mcmeta | 0 .../textures/block/teal_vigil_candle.png | Bin .../textures/block/teal_vigil_candle_lit.png | Bin .../block/teal_vigil_candle_lit.png.mcmeta | 0 .../textures/block/verdant_vigil_candle.png | Bin .../block/verdant_vigil_candle_lit.png | Bin .../block/verdant_vigil_candle_lit.png.mcmeta | 0 .../textures/block/vigil_candle.png | Bin .../textures/block/vigil_candle_lit.png | Bin .../block/vigil_candle_lit.png.mcmeta | 0 .../textures/block/white_vigil_candle.png | Bin .../textures/block/white_vigil_candle_lit.png | Bin .../block/white_vigil_candle_lit.png.mcmeta | 0 .../textures/block/yellow_vigil_candle.png | Bin .../block/yellow_vigil_candle_lit.png | Bin .../block/yellow_vigil_candle_lit.png.mcmeta | 0 .../textures/entity/dirt_mound.bbmodel | 0 .../textures/entity/dirt_mound.png | Bin .../textures/entity/holler.bbmodel | 0 .../doom_and_gloom/textures/entity/holler.png | Bin .../villager/profession/gravetender.png | Bin .../profession/gravetender.png | Bin .../textures/environment/moon_phases_fog.png | Bin .../textures/environment/sun_fog.png | Bin .../doom_and_gloom/textures/gui/tablet.png | Bin .../textures/gui/tablet_vertical.png | Bin .../textures/item/amber_vigil_candle.png | Bin .../textures/item/aqua_vigil_candle.png | Bin .../textures/item/beige_vigil_candle.png | Bin .../textures/item/black_vigil_candle.png | Bin .../textures/item/blue_vigil_candle.png | Bin .../textures/item/brown_vigil_candle.png | Bin .../textures/item/bush_hammer.png | Bin .../textures/item/coral_vigil_candle.png | Bin .../textures/item/cracked_stone_tablet.png | Bin .../textures/item/cyan_vigil_candle.png | Bin .../textures/item/engraved_stone_tablet.png | Bin .../textures/item/forest_vigil_candle.png | Bin .../textures/item/ginger_vigil_candle.png | Bin .../textures/item/gray_vigil_candle.png | Bin .../textures/item/green_vigil_candle.png | Bin .../textures/item/hammer_and_chisel.png | Bin .../textures/item/indigo_vigil_candle.png | Bin .../textures/item/light_blue_vigil_candle.png | Bin .../textures/item/light_gray_vigil_candle.png | Bin .../textures/item/lime_vigil_candle.png | Bin .../textures/item/magenta_vigil_candle.png | Bin .../textures/item/maroon_vigil_candle.png | Bin .../textures/item/mint_vigil_candle.png | Bin .../textures/item/music_disc_afterlife.png | Bin .../textures/item/navy_vigil_candle.png | Bin .../textures/item/olive_vigil_candle.png | Bin .../textures/item/orange_vigil_candle.png | Bin .../textures/item/pink_vigil_candle.png | Bin .../textures/item/purple_vigil_candle.png | Bin .../textures/item/red_vigil_candle.png | Bin .../textures/item/rose_vigil_candle.png | Bin .../textures/item/slate_vigil_candle.png | Bin .../textures/item/stone_tablet.png | Bin .../textures/item/tan_vigil_candle.png | Bin .../textures/item/teal_vigil_candle.png | Bin .../textures/item/verdant_vigil_candle.png | Bin .../textures/item/vigil_candle.png | Bin .../textures/item/white_vigil_candle.png | Bin .../textures/item/yellow_vigil_candle.png | Bin .../misc/stone_tablet_text_colors.png | Bin .../textures/mob_effect/fog.png | Bin .../textures/mob_effect/warding.png | Bin .../textures/particle/bone_fragment_0.png | Bin .../textures/particle/bone_fragment_1.png | Bin .../textures/particle/bone_fragment_2.png | Bin .../textures/particle/bone_fragment_3.png | Bin .../textures/particle/bone_fragment_4.png | Bin .../textures/particle/fog_cloud_0.png | Bin .../textures/particle/fog_cloud_1.png | Bin .../textures/particle/fog_cloud_10.png | Bin .../textures/particle/fog_cloud_11.png | Bin .../textures/particle/fog_cloud_12.png | Bin .../textures/particle/fog_cloud_13.png | Bin .../textures/particle/fog_cloud_14.png | Bin .../textures/particle/fog_cloud_15.png | Bin .../textures/particle/fog_cloud_16.png | Bin .../textures/particle/fog_cloud_17.png | Bin .../textures/particle/fog_cloud_18.png | Bin .../textures/particle/fog_cloud_19.png | Bin .../textures/particle/fog_cloud_2.png | Bin .../textures/particle/fog_cloud_20.png | Bin .../textures/particle/fog_cloud_21.png | Bin .../textures/particle/fog_cloud_22.png | Bin .../textures/particle/fog_cloud_23.png | Bin .../textures/particle/fog_cloud_3.png | Bin .../textures/particle/fog_cloud_4.png | Bin .../textures/particle/fog_cloud_5.png | Bin .../textures/particle/fog_cloud_6.png | Bin .../textures/particle/fog_cloud_7.png | Bin .../textures/particle/fog_cloud_8.png | Bin .../textures/particle/fog_cloud_9.png | Bin .../textures/particle/fog_water_cloud_0.png | Bin .../textures/particle/fog_water_cloud_1.png | Bin .../textures/particle/fog_water_cloud_10.png | Bin .../textures/particle/fog_water_cloud_11.png | Bin .../textures/particle/fog_water_cloud_2.png | Bin .../textures/particle/fog_water_cloud_3.png | Bin .../textures/particle/fog_water_cloud_4.png | Bin .../textures/particle/fog_water_cloud_5.png | Bin .../textures/particle/fog_water_cloud_6.png | Bin .../textures/particle/fog_water_cloud_7.png | Bin .../textures/particle/fog_water_cloud_8.png | Bin .../textures/particle/fog_water_cloud_9.png | Bin .../textures/particle/hollering_soul_0.png | Bin .../textures/particle/hollering_soul_1.png | Bin .../textures/particle/hollering_soul_10.png | Bin .../textures/particle/hollering_soul_2.png | Bin .../textures/particle/hollering_soul_3.png | Bin .../textures/particle/hollering_soul_4.png | Bin .../textures/particle/hollering_soul_5.png | Bin .../textures/particle/hollering_soul_6.png | Bin .../textures/particle/hollering_soul_7.png | Bin .../textures/particle/hollering_soul_8.png | Bin .../textures/particle/hollering_soul_9.png | Bin fabric/build.gradle.kts | 19 + fabric/pack/.gitattributes | 1 + fabric/pack/index.toml | 16 + fabric/pack/mods/amendments.pw.toml | 13 + fabric/pack/mods/moonlight.pw.toml | 13 + fabric/pack/mods/supplementaries.pw.toml | 13 + fabric/pack/pack.toml | 11 + .../fabric/FabricClientEntrypoint.java | 13 + .../fabric/FabricEntrypoint.java | 22 ++ .../main/resources/doom_and_gloom.mixins.json | 3 +- .../src}/main/resources/doom_and_gloom.png | Bin fabric/src/main/resources/fabric.mod.json | 34 ++ forge/build.gradle.kts | 35 ++ forge/pack/index.toml | 16 + forge/pack/mods/amendments.pw.toml | 13 + forge/pack/mods/moonlight.pw.toml | 13 + forge/pack/mods/supplementaries.pw.toml | 13 + forge/pack/pack.toml | 11 + .../data/ForgeDataEntrypoint.java | 57 +++ .../doom_and_gloom/data/OBlockStates.java | 34 ++ .../doom_and_gloom/data/OBlockTags.java | 14 +- .../doom_and_gloom/data/ODamageTags.java | 0 .../doom_and_gloom/data/OEntityTags.java | 4 +- .../doom_and_gloom/data/OItemModels.java | 36 ++ .../galena/doom_and_gloom/data/OItemTags.java | 12 +- .../galena/doom_and_gloom/data/OLang.java | 18 +- .../doom_and_gloom/data/OLootTables.java | 34 +- .../doom_and_gloom/data/OMobEffectTags.java | 4 +- .../galena/doom_and_gloom/data/ORecipes.java | 23 +- .../data/OSoundDefinitions.java | 46 +-- .../data/provider/OBlockLootProvider.java | 13 + .../data/provider/OBlockStateProvider.java | 0 .../data/provider/OItemModelProvider.java | 4 +- .../data/provider/OLangProvider.java | 0 .../data/provider/ORecipeProvider.java | 6 +- .../forge}/AddItemLootModifier.java | 2 +- .../forge/ForgeClientEntrypoint.java | 90 +++++ .../doom_and_gloom/forge/ForgeEntrypoint.java | 128 +++++++ .../forge/compat}/AmendmentsCompat.java | 3 +- .../mixin/SepulcherBlockEntityMixin.java | 51 +++ .../resources/META-INF/accesstransformer.cfg | 0 .../src}/main/resources/META-INF/mods.toml | 4 +- .../forge/biome_modifier/spawn_holler.json | 0 .../bone_piles_in_desert_temples.json | 0 .../loot_tables/stone_tablet.json | 0 .../cutting/cracked_stone_tablet.json | 0 .../data/doom_and_gloom/recipes/jeed/fog.json | 0 .../village/graveyard/desert_large.nbt | Bin .../village/graveyard/desert_medium.nbt | Bin .../village/graveyard/desert_small.nbt | Bin .../village/graveyard/desert_tomb.nbt | Bin .../village/graveyard/plains_large.nbt | Bin .../village/graveyard/plains_mausuleum.nbt | Bin .../village/graveyard/plains_medium.nbt | Bin .../village/graveyard/plains_small.nbt | Bin .../village/graveyard/savanna_large.nbt | Bin .../village/graveyard/savanna_medium.nbt | Bin .../village/graveyard/savanna_small.nbt | Bin .../village/graveyard/snowy_burial_mound.nbt | Bin .../village/graveyard/snowy_large.nbt | Bin .../village/graveyard/snowy_medium.nbt | Bin .../village/graveyard/snowy_small.nbt | Bin .../village/graveyard/taiga_large.nbt | Bin .../village/graveyard/taiga_medium.nbt | Bin .../village/graveyard/taiga_small.nbt | Bin .../loot_modifiers/global_loot_modifiers.json | 0 .../acquirable_job_site.json | 0 .../doom_and_gloom.forge.mixins.json | 13 + gradle.properties | 11 +- gradle/libs.versions.toml | 24 ++ gradle/wrapper/gradle-wrapper.jar | Bin 43583 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 6 +- gradlew.bat | 4 +- settings.gradle.kts | 22 +- .../5bb646c3cee204f41a1b59a2c0d9083b5f7155b0 | 8 - .../735031f3addf80804addae5e3f53249900116f1e | 2 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 139 ------- .../f43e2426f2370abaef549e24a3723585e9b3c47e | 2 - .../galena/doom_and_gloom/DoomAndGloom.java | 199 ---------- .../client/DoomAndGloomClient.java | 141 -------- .../doom_and_gloom/compat/CompatHandler.java | 10 - .../doom_and_gloom/data/OBlockStates.java | 34 -- .../doom_and_gloom/data/OItemModels.java | 36 -- .../doom_and_gloom/index/OBlockEntities.java | 22 -- .../galena/doom_and_gloom/index/OBlocks.java | 74 ---- .../galena/doom_and_gloom/index/OEffects.java | 18 - .../doom_and_gloom/index/OEntityTypes.java | 19 - .../galena/doom_and_gloom/index/OItems.java | 26 -- .../doom_and_gloom/index/OParticleTypes.java | 39 -- .../galena/doom_and_gloom/index/OPoi.java | 21 -- .../doom_and_gloom/index/OSoundEvents.java | 44 --- .../doom_and_gloom/index/OSoundTypes.java | 9 - .../doom_and_gloom/index/OVillagerTypes.java | 30 -- .../doom_and_gloom/network/DGNetwork.java | 28 -- .../packet/EngraveStoneTabletPacket.java | 29 -- .../packet/SepulcherConsumesDeathPacket.java | 29 -- .../network/packet/SepulcherRotsPacket.java | 30 -- .../world/event/PlayerEvents.java | 21 -- .../create/textures/item/crushed_raw_lead.png | Bin 289 -> 0 bytes .../textures/item/crushed_raw_silver.png | Bin 260 -> 0 bytes .../oreganized_compat/pack.mcmeta | 6 - .../resourcepacks/oreganized_compat/pack.png | Bin 54283 -> 0 bytes 1309 files changed, 1641 insertions(+), 1670 deletions(-) create mode 100644 common/build.gradle.kts create mode 100644 common/src/generated/.gitignore rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/amber_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/aqua_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/beige_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/black_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/bone_pile.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/brown_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/burial_dirt.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/coral_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/cracked_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/cyan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/engraved_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/forest_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/ginger_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/green_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/indigo_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/light_blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/light_gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/lime_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/magenta_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/maroon_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/mint_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/navy_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/olive_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/orange_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/pink_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/purple_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/red_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/rose_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/rotting_flesh.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/sepulcher.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/slate_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/tan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/teal_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/verdant_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/white_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/blockstates/yellow_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/lang/en_us.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/bone_pile.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/burial_dirt.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_floor.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_wall.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_floor.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_wall.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/rotting_flesh.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_bones.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_1.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_10.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_11.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_12.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_13.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_2.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_3.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_4.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_5.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_6.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_7.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_8.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_9.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_1.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_2.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_3.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_4.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_floor.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_wall.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_lit.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/amber_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/aqua_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/beige_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/black_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/bone_pile.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/brown_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/burial_dirt.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/bush_hammer.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/coral_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/cracked_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/cyan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/engraved_stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/forest_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/ginger_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/green_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/hammer_and_chisel.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/holler_spawn_egg.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/indigo_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/light_blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/light_gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/lime_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/magenta_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/maroon_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/mint_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/music_disc_afterlife.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/navy_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/olive_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/orange_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/pink_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/purple_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/red_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/rose_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/sepulcher.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/slate_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/tan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/teal_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/verdant_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/white_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/models/item/yellow_vigil_candle.json (100%) rename {src => common/src}/generated/resources/assets/doom_and_gloom/sounds.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/amber_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/aqua_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/beige_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/black_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/bone_pile.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/brown_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/burial_dirt.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/coral_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/cracked_stone_tablet.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/cyan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/engraved_stone_tablet.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/forest_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/ginger_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/green_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/indigo_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/lime_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/magenta_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/maroon_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/mint_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/navy_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/olive_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/orange_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/pink_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/purple_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/red_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/rose_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/rotting_flesh.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/sepulcher.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/slate_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/tan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/teal_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/verdant_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/white_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/blocks/yellow_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/loot_tables/entities/holler.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/bone_pile.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/sepulcher.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/blocks/gravetender_lightables.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/blocks/vigil_candles.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/entity_types/fills_sepulcher.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/items/vigil_candles.json (100%) rename {src => common/src}/generated/resources/data/doom_and_gloom/tags/mob_effect/cleared_by_vigil_candle.json (100%) rename {src => common/src}/generated/resources/data/forge/tags/items/tools/bush_hammer.json (100%) rename {src => common/src}/generated/resources/data/minecraft/advancements/recipes/building_blocks/bone.json (100%) rename {src => common/src}/generated/resources/data/minecraft/recipes/bone.json (100%) rename {src => common/src}/generated/resources/data/minecraft/tags/blocks/candles.json (100%) rename {src => common/src}/generated/resources/data/minecraft/tags/blocks/dirt.json (100%) rename {src => common/src}/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json (100%) rename {src => common/src}/generated/resources/data/minecraft/tags/items/music_discs.json (100%) rename {src => common/src}/generated/resources/data/oreganized/tags/blocks/fire_source.json (100%) rename {src => common/src}/generated/resources/pack.mcmeta (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/DGConfig.java (69%) create mode 100644 common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java rename src/main/java/galena/doom_and_gloom/client/OReloadListener.java => common/src/main/java/galena/doom_and_gloom/client/DGReloadListener.java (97%) create mode 100644 common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java rename {src => common/src}/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java (86%) create mode 100644 common/src/main/java/galena/doom_and_gloom/client/FogRendering.java rename {src => common/src}/main/java/galena/doom_and_gloom/client/OModelLayers.java (81%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/ORenderTypes.java (89%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/model/DirtMoundModel.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/model/HollerModel.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/particle/BoneFragmentParticle.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/particle/FogParticle.java (90%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java (93%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java (90%) rename {src => common/src}/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java (96%) create mode 100644 common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java rename {src/main/java/galena/doom_and_gloom => common/src/main/java/galena/doom_and_gloom/compat}/DyeColors.java (53%) rename {src => common/src}/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java (88%) rename {src => common/src}/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java (97%) rename {src => common/src}/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java (95%) rename {src => common/src}/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java (97%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java (85%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/BurialDirtBlock.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java (90%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java (91%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java (98%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/StoneTabletText.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/TickingEntityBlock.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java (98%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/effect/FogEffect.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/effect/WardingEffect.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/DirtMound.java (95%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java (74%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/Ticking.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java (70%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java (89%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java (94%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java (95%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java (93%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/entity/holler/HollerStrollGoal.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java (63%) rename {src => common/src}/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java (93%) rename {src/main/java/galena/doom_and_gloom/world => common/src/main/java/galena/doom_and_gloom}/gen/VillageStructureModifier.java (99%) create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGBlockEntities.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGEffects.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java rename src/main/java/galena/doom_and_gloom/index/OItemTiers.java => common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java (77%) create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGItems.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGParticleTypes.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGPoi.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGSoundEvents.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java rename src/main/java/galena/doom_and_gloom/index/OTags.java => common/src/main/java/galena/doom_and_gloom/index/DGTags.java (69%) rename src/main/java/galena/doom_and_gloom/index/OVillagerTrades.java => common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java (92%) create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java rename {src => common/src}/main/java/galena/doom_and_gloom/mixin/EntityMixin.java (91%) rename {src => common/src}/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java (88%) rename {src => common/src}/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerAccessor.java (100%) rename {src => common/src}/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java (100%) create mode 100644 common/src/main/java/galena/doom_and_gloom/network/DGNetwork.java create mode 100644 common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java create mode 100644 common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java create mode 100644 common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java rename {src => common/src}/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java (61%) rename {src => common/src}/main/resources/assets/doom_and_gloom/lang/de_de.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/lang/pt_br.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/logo.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/sepulcher.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/sepulcher_seal.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_floor.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_wall.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double_ceiling.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple_ceiling.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single_ceiling.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple_ceiling.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/particles/bone_fragment.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/particles/fog.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/particles/fog_water.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/particles/hollering_soul.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.fsh (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.json (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/ambient/fog_ambience.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_4.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_sealing.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_4.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_unsealing.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_3.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_0.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_1.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_2.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/sounds/music/disc/afterlife.ogg (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/bone_pile_side.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/burial_dirt.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_deepslate_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_end_stone_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_exposed_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_glance_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_nether_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_oxidized_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_polished_blackstone_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_prismarine_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_quartz_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_red_nether_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_stone_bricks.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_exposed_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_oxidized_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_weathered_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_weathered_cut_copper.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/engraved_cut_silver.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_1.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_2.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_3.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_4.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_5.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/stone_tablet.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_cracked.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_engraved.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_old.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png.mcmeta (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.bbmodel (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/holler.bbmodel (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/holler.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/villager/profession/gravetender.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/entity/zombie_villager/profession/gravetender.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/environment/moon_phases_fog.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/environment/sun_fog.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/gui/tablet.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/gui/tablet_vertical.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/amber_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/aqua_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/beige_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/black_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/blue_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/brown_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/bush_hammer.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/coral_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/cracked_stone_tablet.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/cyan_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/engraved_stone_tablet.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/forest_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/ginger_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/gray_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/green_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/hammer_and_chisel.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/indigo_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/light_blue_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/light_gray_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/lime_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/magenta_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/maroon_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/mint_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/music_disc_afterlife.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/navy_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/olive_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/orange_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/pink_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/purple_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/red_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/rose_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/slate_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/stone_tablet.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/tan_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/teal_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/verdant_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/white_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/item/yellow_vigil_candle.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/misc/stone_tablet_text_colors.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/mob_effect/fog.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/mob_effect/warding.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_0.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_1.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_2.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_3.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_4.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_0.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_1.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_10.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_11.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_12.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_13.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_14.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_15.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_16.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_17.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_18.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_19.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_2.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_20.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_21.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_22.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_23.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_3.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_4.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_5.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_6.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_7.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_8.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_9.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_0.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_1.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_10.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_11.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_2.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_3.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_4.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_5.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_6.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_7.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_8.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_9.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_0.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_1.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_10.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_2.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_3.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_4.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_5.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_6.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_7.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_8.png (100%) rename {src => common/src}/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_9.png (100%) create mode 100644 fabric/build.gradle.kts create mode 100644 fabric/pack/.gitattributes create mode 100644 fabric/pack/index.toml create mode 100644 fabric/pack/mods/amendments.pw.toml create mode 100644 fabric/pack/mods/moonlight.pw.toml create mode 100644 fabric/pack/mods/supplementaries.pw.toml create mode 100644 fabric/pack/pack.toml create mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java create mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java rename {src => fabric/src}/main/resources/doom_and_gloom.mixins.json (89%) rename {src => fabric/src}/main/resources/doom_and_gloom.png (100%) create mode 100644 fabric/src/main/resources/fabric.mod.json create mode 100644 forge/build.gradle.kts create mode 100644 forge/pack/index.toml create mode 100644 forge/pack/mods/amendments.pw.toml create mode 100644 forge/pack/mods/moonlight.pw.toml create mode 100644 forge/pack/mods/supplementaries.pw.toml create mode 100644 forge/pack/pack.toml create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OBlockTags.java (84%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/ODamageTags.java (100%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OEntityTags.java (91%) create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OItemTags.java (71%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OLang.java (82%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OLootTables.java (68%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OMobEffectTags.java (85%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/ORecipes.java (85%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java (71%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java (83%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java (100%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java (91%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java (100%) rename {src => forge/src}/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java (90%) rename {src/main/java/galena/doom_and_gloom/world => forge/src/main/java/galena/doom_and_gloom/forge}/AddItemLootModifier.java (97%) create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java rename {src/main/java/galena/doom_and_gloom/compat/amendments => forge/src/main/java/galena/doom_and_gloom/forge/compat}/AmendmentsCompat.java (96%) create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java rename {src => forge/src}/main/resources/META-INF/accesstransformer.cfg (100%) rename {src => forge/src}/main/resources/META-INF/mods.toml (95%) rename {src => forge/src}/main/resources/data/doom_and_gloom/forge/biome_modifier/spawn_holler.json (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/recipes/jeed/fog.json (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt (100%) rename {src => forge/src}/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt (100%) rename {src => forge/src}/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json (100%) rename {src => forge/src}/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json (100%) create mode 100644 forge/src/main/resources/doom_and_gloom.forge.mixins.json create mode 100644 gradle/libs.versions.toml delete mode 100644 src/generated/resources/.cache/5bb646c3cee204f41a1b59a2c0d9083b5f7155b0 delete mode 100644 src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e delete mode 100644 src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e delete mode 100644 src/generated/resources/.cache/f43e2426f2370abaef549e24a3723585e9b3c47e delete mode 100644 src/main/java/galena/doom_and_gloom/DoomAndGloom.java delete mode 100644 src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java delete mode 100644 src/main/java/galena/doom_and_gloom/compat/CompatHandler.java delete mode 100644 src/main/java/galena/doom_and_gloom/data/OBlockStates.java delete mode 100644 src/main/java/galena/doom_and_gloom/data/OItemModels.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OBlockEntities.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OBlocks.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OEffects.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OEntityTypes.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OItems.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OParticleTypes.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OPoi.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OSoundEvents.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OSoundTypes.java delete mode 100644 src/main/java/galena/doom_and_gloom/index/OVillagerTypes.java delete mode 100644 src/main/java/galena/doom_and_gloom/network/DGNetwork.java delete mode 100644 src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java delete mode 100644 src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java delete mode 100644 src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java delete mode 100644 src/main/java/galena/doom_and_gloom/world/event/PlayerEvents.java delete mode 100644 src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_lead.png delete mode 100644 src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_silver.png delete mode 100644 src/main/resources/resourcepacks/oreganized_compat/pack.mcmeta delete mode 100644 src/main/resources/resourcepacks/oreganized_compat/pack.png diff --git a/.gitignore b/.gitignore index 08a84962..372ca995 100644 --- a/.gitignore +++ b/.gitignore @@ -16,10 +16,12 @@ out # gradle build .gradle +.kotlin # other eclipse run +runs # Files from Forge MDK forge*changelog.txt diff --git a/build.gradle.kts b/build.gradle.kts index 68ae580e..ed3648aa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,322 +1,53 @@ -import net.darkhax.curseforgegradle.Constants -import net.darkhax.curseforgegradle.TaskPublishCurseForge -import java.time.LocalDateTime - -val mod_id: String by extra -val mod_name: String by extra -val mod_author: String by extra -val release_type: String by extra - -val repository: String by extra -val maven_group: String by extra -val modrinth_project: String by extra -val curseforge_project: String by extra - -val minecraft_version: String by extra -val forge_version: String by extra -val blueprint_version: String by extra -val mixin_version: String by extra -val mixin_extras_version: String by extra -val supplementaries_version: String by extra -val amendments_version: String by extra -val moonlight_lib_version: String by extra -val oreganized_version: String by extra -val dye_depot_version: String by extra -val jei_version: String by extra -val galena_hats_version: String by extra - -val mod_version = System.getenv("RELEASE_VERSION") ?: extra["mod_version"] as String - plugins { - java - `maven-publish` - id("net.minecraftforge.gradle") version "[6.0,6.2)" - id("org.spongepowered.mixin") version "0.7-SNAPSHOT" - id("org.parchmentmc.librarian.forgegradle") version "1.+" - id("com.diffplug.spotless") version "7.0.4" - id("org.sonarqube") version "6.2.0.5505" - id("com.modrinth.minotaur") version "2.+" - id("net.darkhax.curseforgegradle") version "1.1.15" -} - -base { - archivesName.set("$mod_name $minecraft_version") -} - -mixin { - add(sourceSets.main.get(), "${mod_id}.refmap.json") - config("${mod_id}.mixins.json") -} - -java { - toolchain.languageVersion = JavaLanguageVersion.of(17) - withSourcesJar() + id("com.possible-triangle.core") + id("com.possible-triangle.architectury") apply false + id("com.possible-triangle.forge") apply false + id("com.possible-triangle.fabric") apply false } -minecraft { - mappings("parchment", "2023.09.03-1.20.1") +subprojects { + apply(plugin = "com.possible-triangle.core") - accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) - - runs { - create("client") { - taskName("Client") - } - - create("server") { - taskName("Server") - } - - create("data") { - args( - "--mod", - mod_id, - "--all", - "--output", - project.file("src/generated/resources/"), - "--existing", - project.file("src/main/resources/"), - "--existing-mod", - "blueprint" - ) - taskName("Data") - } - - forEach { - it.workingDirectory(project.file("run")) - it.args("-mixin.config=${mod_id}.mixins.json") - it.mods.create(mod_id) { - source(sourceSets.main.get()) + repositories { + maven { + url = uri("https://maven.blamejared.com/") + content { + includeGroup("mezz.jei") } } - } -} - -sourceSets.main.get().resources { - srcDir("src/generated/resources") -} - -repositories { - mavenLocal() - - maven { - url = uri("https://maven.teamabnormals.com/") - content { - includeGroup("com.teamabnormals") - } - } - maven { - url = uri("https://modmaven.dev") - content { - includeGroup("mezz.jei") - } - } - maven { - url = uri("https://api.modrinth.com/maven") - content { - includeGroup("maven.modrinth") + nexus { + content { + includeGroup("com.possible-triangle") + includeGroup("dev.galena") + includeGroup("net.mehvahdjukaar") + includeGroup("com.ninni.dye_depot") + } } - } - maven { - url = uri("https://registry.somethingcatchy.net/repository/maven-releases/") - content { - includeGroup("dev.galena") + maven { + url = uri("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/") + content { + includeGroup("net.minecraftforge") + includeGroup("fuzs.forgeconfigapiport") + } } } -} - -dependencies { - minecraft("net.minecraftforge:forge:${minecraft_version}-${forge_version}") - implementation(fg.deobf("com.teamabnormals:blueprint:${minecraft_version}-${blueprint_version}")) - annotationProcessor("org.spongepowered:mixin:${mixin_version}:processor") - compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixin_extras_version}")!!) - implementation(jarJar("io.github.llamalad7:mixinextras-forge:${mixin_extras_version}")) { - jarJar.ranged(this, "[${mixin_extras_version},)") - } - - val hatsVersion = "${minecraft_version}-${galena_hats_version}" - implementation(fg.deobf(jarJar("dev.galena:hats-forge:${hatsVersion}") { - version { - strictly("[${hatsVersion},)") - prefer(hatsVersion) + upload { + maven { + nexus() } - })) - - // Compatibilities - implementation(fg.deobf("maven.modrinth:supplementaries:${supplementaries_version}")) - implementation(fg.deobf("maven.modrinth:amendments:${amendments_version}")) - implementation(fg.deobf("maven.modrinth:moonlight:${moonlight_lib_version}")) - - // For dev testing - runtimeOnly(fg.deobf("dev.galena:oreganized:${oreganized_version}:slim")) - runtimeOnly(fg.deobf("maven.modrinth:dye-depot:${dye_depot_version}")) - - compileOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}")) - compileOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}")) - runtimeOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}")) -} - - -tasks.jar { - archiveClassifier.set("slim") - finalizedBy("reobfJar") - val now = LocalDateTime.now().toString() - - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - from(rootProject.file("LICENSE")) { - rename { "${it}_${mod_name}" } - } - - manifest { - attributes( - mapOf( - "Specification-Title" to mod_name, - "Specification-Vendor" to mod_author, - "Specification-Version" to mod_version, - "Implementation-Title" to mod_name, - "Implementation-Version" to mod_version, - "Implementation-Vendor" to mod_author, - "Implementation-Timestamp" to now, - ) - ) - } -} - -tasks.withType { - // this will ensure that this task is redone when the versions change. - inputs.property("version", mod_version) - - filesMatching( - listOf( - "META-INF/mods.toml", - "META-INF/neoforge.mods.toml", - "pack.mcmeta", - "fabric.mod.json", - "${mod_id}*.mixins.json", - ) - ) { - expand( - mapOf( - "mod_version" to mod_version, - "mod_name" to mod_name, - "mod_id" to mod_id, - "mod_author" to mod_author, - "repository" to repository, - ) - ) - } -} - - -jarJar.enable() -tasks.jarJar { - archiveClassifier.set("") -} - -tasks.jar { - archiveClassifier.set("raw") - finalizedBy("reobfJar") -} - -publishing { - publications { - create("maven") { - groupId = maven_group - artifactId = mod_id - version = mod_version - - artifact(tasks.getByName("sourcesJar")) - artifact(tasks.jar) - artifact(tasks.jarJar) - - pom.withXml { - val node = asNode() - val list = node.get("dependencies") as groovy.util.NodeList - list.forEach { node.remove(it as groovy.util.Node) } - } - } - } - repositories { - mavenLocal() + forEach { + // TODO required? + includeKotlinDependency = false - val nexusToken = System.getenv("NEXUS_TOKEN") - val nexusUser = System.getenv("NEXUS_USER") - if (nexusToken != null && nexusUser != null) { - maven { - url = uri("https://registry.somethingcatchy.net/repository/maven-releases/") - credentials { - username = nexusUser - password = nexusToken - } + dependencies { + required("moonlight") + optional("oreganized") } } } } -tasks.withType { - enabled = false -} - -spotless { - java { - importOrder() - removeUnusedImports() - } - - kotlinGradle { - ktlint() - suppressLintsFor { shortCode = "standard:property-naming" } - } - - json { - target("src/main/**/*.json") - gson().indentWithSpaces(2) - } -} - -sonar { - properties { - property("sonar.projectKey", mod_id) - property("sonar.gradle.skipCompile", "true") - property("sonar.links.scm", "https://github.com/${repository}") - } -} - -val outputJar = tasks.jarJar.get().archiveFile.get() -val changelogMarkdown = System.getenv("CHANGELOG") - -modrinth { - token = System.getenv("MODRINTH_TOKEN") - projectId = modrinth_project - versionNumber = mod_version - versionType = release_type - versionName = "$mod_name $mod_version" - uploadFile = outputJar - gameVersions = listOf(minecraft_version) - loaders = listOf("forge") - changelog = changelogMarkdown - - dependencies { - required.project("blueprint") - optional.project("oreganized") - } -} - -tasks.register("curseforge") { - group = "publishing" - - apiToken = System.getenv("CURSEFORGE_TOKEN") - upload(curseforge_project, outputJar).apply { - changelogType = Constants.CHANGELOG_MARKDOWN - changelog = changelogMarkdown - releaseType = release_type - addModLoader("forge") - addGameVersion(minecraft_version) - displayName = "$mod_name $mod_version" - - addRelation("382216", Constants.RELATION_REQUIRED) - addRelation("769203", Constants.RELATION_OPTIONAL) - } -} +enableSpotless() +enableSonarQube() diff --git a/common/build.gradle.kts b/common/build.gradle.kts new file mode 100644 index 00000000..a1812350 --- /dev/null +++ b/common/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("com.possible-triangle.architectury") +} + +dependencies { + // TODO switch out with actual common module + modApi(pack.forge.modrinth.moonlight) + modApi(libs.forge.config.api.common) +} diff --git a/common/src/generated/.gitignore b/common/src/generated/.gitignore new file mode 100644 index 00000000..1998c294 --- /dev/null +++ b/common/src/generated/.gitignore @@ -0,0 +1 @@ +.cache \ No newline at end of file diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/amber_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/amber_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/amber_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/amber_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/aqua_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/aqua_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/aqua_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/aqua_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/beige_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/beige_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/beige_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/beige_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/black_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/black_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/black_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/black_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/blue_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/blue_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/blue_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/blue_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/bone_pile.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/bone_pile.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/bone_pile.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/bone_pile.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/brown_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/brown_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/brown_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/brown_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/burial_dirt.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/burial_dirt.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/burial_dirt.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/burial_dirt.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/coral_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/coral_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/coral_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/coral_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/cracked_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/cracked_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/cracked_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/cracked_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/cyan_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/cyan_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/cyan_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/cyan_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/engraved_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/engraved_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/engraved_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/engraved_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/forest_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/forest_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/forest_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/forest_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/ginger_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/ginger_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/ginger_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/ginger_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/gray_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/gray_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/gray_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/gray_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/green_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/green_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/green_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/green_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/indigo_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/indigo_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/indigo_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/indigo_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/light_blue_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/light_blue_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/light_blue_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/light_blue_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/light_gray_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/light_gray_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/light_gray_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/light_gray_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/lime_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/lime_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/lime_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/lime_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/magenta_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/magenta_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/magenta_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/magenta_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/maroon_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/maroon_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/maroon_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/maroon_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/mint_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/mint_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/mint_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/mint_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/navy_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/navy_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/navy_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/navy_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/olive_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/olive_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/olive_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/olive_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/orange_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/orange_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/orange_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/orange_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/pink_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/pink_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/pink_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/pink_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/purple_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/purple_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/purple_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/purple_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/red_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/red_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/red_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/red_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/rose_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/rose_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/rose_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/rose_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/rotting_flesh.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/rotting_flesh.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/rotting_flesh.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/rotting_flesh.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/sepulcher.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/sepulcher.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/sepulcher.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/sepulcher.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/slate_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/slate_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/slate_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/slate_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/tan_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/tan_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/tan_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/tan_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/teal_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/teal_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/teal_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/teal_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/verdant_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/verdant_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/verdant_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/verdant_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/white_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/white_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/white_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/white_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/blockstates/yellow_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/blockstates/yellow_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/blockstates/yellow_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/blockstates/yellow_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/lang/en_us.json b/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/lang/en_us.json rename to common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/amber_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/aqua_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/beige_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/black_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/blue_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/bone_pile.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/bone_pile.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/bone_pile.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/bone_pile.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/brown_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/burial_dirt.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/burial_dirt.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/burial_dirt.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/burial_dirt.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/coral_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_floor.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_floor.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_floor.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_floor.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_wall.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_wall.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_wall.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cracked_stone_tablet_wall.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/cyan_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/defaultvigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_floor.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_floor.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_floor.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_floor.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_wall.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_wall.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_wall.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/engraved_stone_tablet_wall.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/forest_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/ginger_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/gray_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/green_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/indigo_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_blue_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/light_gray_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/lime_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/magenta_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/maroon_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/mint_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/navy_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/olive_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/orange_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/pink_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/purple_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/red_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rose_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/rotting_flesh.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/rotting_flesh.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/rotting_flesh.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/rotting_flesh.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_bones.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_bones.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_bones.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_bones.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_1.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_1.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_1.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_1.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_10.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_10.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_10.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_10.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_11.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_11.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_11.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_11.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_12.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_12.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_12.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_12.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_13.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_13.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_13.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_13.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_2.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_2.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_2.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_2.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_3.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_3.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_3.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_3.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_4.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_4.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_4.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_4.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_5.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_5.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_5.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_5.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_6.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_6.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_6.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_6.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_7.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_7.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_7.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_7.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_8.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_8.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_8.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_8.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_9.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_9.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_9.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_filled_9.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_1.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_1.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_1.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_1.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_2.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_2.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_2.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_2.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_3.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_3.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_3.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_3.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_4.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_4.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_4.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/sepulcher_rotting_4.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/slate_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_floor.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_floor.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_floor.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_floor.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_wall.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_wall.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_wall.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/stone_tablet_wall.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/tan_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/teal_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/verdant_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/white_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_double_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_quadruple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_single_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_ceiling_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_lit.json b/common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_lit.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_lit.json rename to common/src/generated/resources/assets/doom_and_gloom/models/block/yellow_vigil_candle_triple_lit.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/amber_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/amber_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/amber_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/amber_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/aqua_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/aqua_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/aqua_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/aqua_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/beige_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/beige_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/beige_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/beige_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/black_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/black_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/black_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/black_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/blue_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/blue_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/blue_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/blue_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/bone_pile.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/bone_pile.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/bone_pile.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/bone_pile.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/brown_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/brown_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/brown_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/brown_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/burial_dirt.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/burial_dirt.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/burial_dirt.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/burial_dirt.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/bush_hammer.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/bush_hammer.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/bush_hammer.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/bush_hammer.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/coral_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/coral_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/coral_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/coral_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/cracked_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/cracked_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/cracked_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/cracked_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/cyan_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/cyan_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/cyan_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/cyan_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/engraved_stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/engraved_stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/engraved_stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/engraved_stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/forest_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/forest_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/forest_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/forest_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/ginger_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/ginger_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/ginger_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/ginger_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/gray_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/gray_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/gray_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/gray_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/green_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/green_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/green_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/green_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/hammer_and_chisel.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/hammer_and_chisel.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/hammer_and_chisel.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/hammer_and_chisel.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/holler_spawn_egg.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/holler_spawn_egg.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/holler_spawn_egg.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/holler_spawn_egg.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/indigo_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/indigo_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/indigo_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/indigo_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/light_blue_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/light_blue_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/light_blue_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/light_blue_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/light_gray_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/light_gray_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/light_gray_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/light_gray_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/lime_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/lime_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/lime_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/lime_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/magenta_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/magenta_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/magenta_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/magenta_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/maroon_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/maroon_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/maroon_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/maroon_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/mint_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/mint_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/mint_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/mint_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/music_disc_afterlife.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/music_disc_afterlife.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/music_disc_afterlife.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/music_disc_afterlife.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/navy_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/navy_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/navy_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/navy_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/olive_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/olive_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/olive_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/olive_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/orange_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/orange_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/orange_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/orange_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/pink_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/pink_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/pink_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/pink_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/purple_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/purple_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/purple_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/purple_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/red_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/red_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/red_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/red_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/rose_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/rose_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/rose_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/rose_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/sepulcher.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/sepulcher.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/sepulcher.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/sepulcher.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/slate_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/slate_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/slate_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/slate_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/tan_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/tan_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/tan_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/tan_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/teal_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/teal_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/teal_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/teal_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/verdant_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/verdant_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/verdant_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/verdant_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/white_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/white_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/white_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/white_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/models/item/yellow_vigil_candle.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/yellow_vigil_candle.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/models/item/yellow_vigil_candle.json rename to common/src/generated/resources/assets/doom_and_gloom/models/item/yellow_vigil_candle.json diff --git a/src/generated/resources/assets/doom_and_gloom/sounds.json b/common/src/generated/resources/assets/doom_and_gloom/sounds.json similarity index 100% rename from src/generated/resources/assets/doom_and_gloom/sounds.json rename to common/src/generated/resources/assets/doom_and_gloom/sounds.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json diff --git a/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json rename to common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/amber_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/amber_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/amber_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/aqua_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/aqua_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/aqua_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/beige_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/beige_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/beige_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/black_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/black_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/black_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/black_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/bone_pile.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/bone_pile.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/bone_pile.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/bone_pile.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/brown_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/brown_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/brown_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/brown_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/burial_dirt.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/burial_dirt.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/burial_dirt.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/burial_dirt.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/coral_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/coral_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/coral_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cracked_stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cracked_stone_tablet.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cracked_stone_tablet.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cracked_stone_tablet.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cyan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cyan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cyan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/cyan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/engraved_stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/engraved_stone_tablet.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/engraved_stone_tablet.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/engraved_stone_tablet.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/forest_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/forest_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/forest_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/ginger_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/ginger_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/ginger_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/green_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/green_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/green_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/green_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/indigo_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/indigo_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/indigo_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/light_gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/lime_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/lime_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/lime_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/lime_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/magenta_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/magenta_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/magenta_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/magenta_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/maroon_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/maroon_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/maroon_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/mint_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/mint_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/mint_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/navy_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/navy_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/navy_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/olive_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/olive_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/olive_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/orange_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/orange_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/orange_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/orange_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/pink_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/pink_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/pink_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/pink_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/purple_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/purple_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/purple_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/purple_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/red_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/red_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/red_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/red_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rose_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rose_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rose_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rotting_flesh.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rotting_flesh.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rotting_flesh.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/rotting_flesh.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/sepulcher.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/sepulcher.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/sepulcher.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/slate_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/slate_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/slate_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/tan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/tan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/tan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/teal_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/teal_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/teal_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/verdant_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/verdant_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/verdant_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/white_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/white_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/white_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/white_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/yellow_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/yellow_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/blocks/yellow_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/yellow_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/loot_tables/entities/holler.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/entities/holler.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/loot_tables/entities/holler.json rename to common/src/generated/resources/data/doom_and_gloom/loot_tables/entities/holler.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/bone_pile.json b/common/src/generated/resources/data/doom_and_gloom/recipes/bone_pile.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/bone_pile.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/bone_pile.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json diff --git a/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json b/common/src/generated/resources/data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json rename to common/src/generated/resources/data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/blocks/gravetender_lightables.json b/common/src/generated/resources/data/doom_and_gloom/tags/blocks/gravetender_lightables.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/blocks/gravetender_lightables.json rename to common/src/generated/resources/data/doom_and_gloom/tags/blocks/gravetender_lightables.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/blocks/vigil_candles.json b/common/src/generated/resources/data/doom_and_gloom/tags/blocks/vigil_candles.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/blocks/vigil_candles.json rename to common/src/generated/resources/data/doom_and_gloom/tags/blocks/vigil_candles.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/entity_types/fills_sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/tags/entity_types/fills_sepulcher.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/entity_types/fills_sepulcher.json rename to common/src/generated/resources/data/doom_and_gloom/tags/entity_types/fills_sepulcher.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/items/vigil_candles.json b/common/src/generated/resources/data/doom_and_gloom/tags/items/vigil_candles.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/items/vigil_candles.json rename to common/src/generated/resources/data/doom_and_gloom/tags/items/vigil_candles.json diff --git a/src/generated/resources/data/doom_and_gloom/tags/mob_effect/cleared_by_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/tags/mob_effect/cleared_by_vigil_candle.json similarity index 100% rename from src/generated/resources/data/doom_and_gloom/tags/mob_effect/cleared_by_vigil_candle.json rename to common/src/generated/resources/data/doom_and_gloom/tags/mob_effect/cleared_by_vigil_candle.json diff --git a/src/generated/resources/data/forge/tags/items/tools/bush_hammer.json b/common/src/generated/resources/data/forge/tags/items/tools/bush_hammer.json similarity index 100% rename from src/generated/resources/data/forge/tags/items/tools/bush_hammer.json rename to common/src/generated/resources/data/forge/tags/items/tools/bush_hammer.json diff --git a/src/generated/resources/data/minecraft/advancements/recipes/building_blocks/bone.json b/common/src/generated/resources/data/minecraft/advancements/recipes/building_blocks/bone.json similarity index 100% rename from src/generated/resources/data/minecraft/advancements/recipes/building_blocks/bone.json rename to common/src/generated/resources/data/minecraft/advancements/recipes/building_blocks/bone.json diff --git a/src/generated/resources/data/minecraft/recipes/bone.json b/common/src/generated/resources/data/minecraft/recipes/bone.json similarity index 100% rename from src/generated/resources/data/minecraft/recipes/bone.json rename to common/src/generated/resources/data/minecraft/recipes/bone.json diff --git a/src/generated/resources/data/minecraft/tags/blocks/candles.json b/common/src/generated/resources/data/minecraft/tags/blocks/candles.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/blocks/candles.json rename to common/src/generated/resources/data/minecraft/tags/blocks/candles.json diff --git a/src/generated/resources/data/minecraft/tags/blocks/dirt.json b/common/src/generated/resources/data/minecraft/tags/blocks/dirt.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/blocks/dirt.json rename to common/src/generated/resources/data/minecraft/tags/blocks/dirt.json diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/common/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json rename to common/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json diff --git a/src/generated/resources/data/minecraft/tags/items/music_discs.json b/common/src/generated/resources/data/minecraft/tags/items/music_discs.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/items/music_discs.json rename to common/src/generated/resources/data/minecraft/tags/items/music_discs.json diff --git a/src/generated/resources/data/oreganized/tags/blocks/fire_source.json b/common/src/generated/resources/data/oreganized/tags/blocks/fire_source.json similarity index 100% rename from src/generated/resources/data/oreganized/tags/blocks/fire_source.json rename to common/src/generated/resources/data/oreganized/tags/blocks/fire_source.json diff --git a/src/generated/resources/pack.mcmeta b/common/src/generated/resources/pack.mcmeta similarity index 100% rename from src/generated/resources/pack.mcmeta rename to common/src/generated/resources/pack.mcmeta diff --git a/src/main/java/galena/doom_and_gloom/DGConfig.java b/common/src/main/java/galena/doom_and_gloom/DGConfig.java similarity index 69% rename from src/main/java/galena/doom_and_gloom/DGConfig.java rename to common/src/main/java/galena/doom_and_gloom/DGConfig.java index ab7b8319..06346f0e 100644 --- a/src/main/java/galena/doom_and_gloom/DGConfig.java +++ b/common/src/main/java/galena/doom_and_gloom/DGConfig.java @@ -1,13 +1,10 @@ package galena.doom_and_gloom; +import java.util.function.BiConsumer; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.config.ModConfig; -import org.apache.commons.lang3.tuple.Pair; -@EventBusSubscriber(modid = DoomAndGloom.MOD_ID) public class DGConfig { public static final Common COMMON; private static final ForgeConfigSpec COMMON_SPEC; @@ -43,20 +40,19 @@ private Client(ForgeConfigSpec.Builder builder) { } static { - final Pair commonSpecPair = new ForgeConfigSpec.Builder().configure(Common::new); + var commonSpecPair = new ForgeConfigSpec.Builder().configure(Common::new); COMMON = commonSpecPair.getLeft(); COMMON_SPEC = commonSpecPair.getRight(); - final Pair clientSpecPair = new ForgeConfigSpec.Builder().configure(Client::new); + var clientSpecPair = new ForgeConfigSpec.Builder().configure(Client::new); CLIENT = clientSpecPair.getLeft(); CLIENT_SPEC = clientSpecPair.getRight(); } - public static void register() { - var context = ModLoadingContext.get(); - context.registerConfig(ModConfig.Type.COMMON, COMMON_SPEC); - context.registerConfig(ModConfig.Type.CLIENT, CLIENT_SPEC); + public static void register(BiConsumer registry) { + registry.accept(ModConfig.Type.COMMON, DGConfig.COMMON_SPEC); + registry.accept(ModConfig.Type.CLIENT, DGConfig.CLIENT_SPEC); } } diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java new file mode 100644 index 00000000..cdaf3805 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -0,0 +1,46 @@ +package galena.doom_and_gloom; + +import galena.doom_and_gloom.compat.CompatMods; +import galena.doom_and_gloom.compat.moonlight.MoonlightCompat; +import galena.doom_and_gloom.index.DGBlockEntities; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGEntityTypes; +import galena.doom_and_gloom.index.DGItems; +import galena.doom_and_gloom.index.DGParticleTypes; +import galena.doom_and_gloom.index.DGPoi; +import galena.doom_and_gloom.index.DGSoundEvents; +import galena.doom_and_gloom.index.DGVillagerTypes; +import galena.doom_and_gloom.network.DGNetwork; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.minecraft.resources.ResourceLocation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DoomAndGloom { + public static final Logger LOGGER = LogManager.getLogger(); + public static final String MOD_ID = "doom_and_gloom"; + + public static ResourceLocation modLoc(String location) { + return new ResourceLocation(MOD_ID, location); + } + + public static void init() { + DGBlockEntities.init(); + DGBlocks.init(); + DGEffects.init(); + DGEntityTypes.init(); + DGItems.init(); + DGParticleTypes.init(); + DGPoi.init(); + DGSoundEvents.init(); + DGVillagerTypes.init(); + + DGNetwork.register(); + + if (PlatHelper.isModLoaded(CompatMods.MOONLIGHT)) { + MoonlightCompat.init(); + } + } + +} diff --git a/src/main/java/galena/doom_and_gloom/client/OReloadListener.java b/common/src/main/java/galena/doom_and_gloom/client/DGReloadListener.java similarity index 97% rename from src/main/java/galena/doom_and_gloom/client/OReloadListener.java rename to common/src/main/java/galena/doom_and_gloom/client/DGReloadListener.java index d2d69fb8..3fa796ca 100644 --- a/src/main/java/galena/doom_and_gloom/client/OReloadListener.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DGReloadListener.java @@ -11,7 +11,7 @@ import net.minecraft.server.packs.resources.SimplePreparableReloadListener; import net.minecraft.util.profiling.ProfilerFiller; -public class OReloadListener extends SimplePreparableReloadListener> { +public class DGReloadListener extends SimplePreparableReloadListener> { public static final List STONE_TABLET_TEXT_COLORS = new ArrayList<>(); diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java new file mode 100644 index 00000000..e85cf67c --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -0,0 +1,40 @@ +package galena.doom_and_gloom.client; + +import galena.doom_and_gloom.client.particle.BoneFragmentParticle; +import galena.doom_and_gloom.client.particle.FogParticle; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGParticleTypes; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.function.Supplier; +import net.minecraft.client.particle.ParticleProvider; +import net.minecraft.client.particle.SoulParticle; +import net.minecraft.client.particle.SpriteSet; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.world.level.block.Block; + +public class DoomAndGloomClient { + + private static void render(Supplier block, RenderType render) { + // TODO try to handle in model? + // ItemBlockRenderTypes.setRenderLayer(block.get(), render); + } + + public static void init() { + DoomAndGloomClient.registerBlockRenderers(); + } + + private static void registerBlockRenderers() { + render(DGBlocks.SEPULCHER, RenderType.cutout()); + DGBlocks.vigilCandles().forEach(block -> render(block, RenderType.cutout())); + } + + public static void registerParticleFactories(BiConsumer>> event) { + event.accept(DGParticleTypes.BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); + event.accept(DGParticleTypes.FOG.get(), sprites -> new FogParticle.Provider(sprites, 200)); + event.accept(DGParticleTypes.FOG_WATER.get(), sprites -> new FogParticle.Provider(sprites, 100)); + event.accept(DGParticleTypes.HOLLERING_SOUL.get(), SoulParticle.Provider::new); + } + +} diff --git a/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java b/common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java similarity index 86% rename from src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java rename to common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java index e681a005..98776c33 100644 --- a/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java +++ b/common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.client; -import galena.doom_and_gloom.index.OEffects; -import galena.doom_and_gloom.index.OSoundEvents; +import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGSoundEvents; import net.minecraft.client.resources.sounds.AmbientSoundHandler; import net.minecraft.client.resources.sounds.BiomeAmbientSoundsHandler; import net.minecraft.client.sounds.SoundManager; @@ -21,7 +21,7 @@ public FogAmbientSoundHandler(Player player, SoundManager soundManager) { private void startPlaying() { if (sound != null) return; - sound = new BiomeAmbientSoundsHandler.LoopSoundInstance(OSoundEvents.FOG_AMBIENCE.get()); + sound = new BiomeAmbientSoundsHandler.LoopSoundInstance(DGSoundEvents.FOG_AMBIENCE.get()); soundManager.play(sound); sound.fadeIn(); @@ -38,7 +38,7 @@ public void tick() { sound = null; } - if (player.hasEffect(OEffects.FOG.get())) { + if (player.hasEffect(DGEffects.FOG.get())) { startPlaying(); } else { stopPlaying(); diff --git a/common/src/main/java/galena/doom_and_gloom/client/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/FogRendering.java new file mode 100644 index 00000000..377fb147 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/client/FogRendering.java @@ -0,0 +1,81 @@ +package galena.doom_and_gloom.client; + +import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGParticleTypes; +import java.awt.*; +import java.util.Optional; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; + +public class FogRendering { + + @Nullable + private static MobEffectInstance fogEffect; + + public static Optional activeEffect() { + return Optional.ofNullable(fogEffect); + } + + public static void clientTick() { + if (!(Minecraft.getInstance().gameRenderer.getMainCamera().getEntity() instanceof Player player)) return; + fogEffect = player.getEffect(DGEffects.FOG.get()); + + if (fogEffect == null) return; + if (Minecraft.getInstance().isPaused()) return; + var level = Minecraft.getInstance().level; + if (level == null) return; + + var range = 24; + var at = player.position().add((level.random.nextDouble() - 0.5) * range, level.random.nextDouble() * 4 - 2, (level.random.nextDouble() - 0.5) * range); + var blockAt = BlockPos.containing(at.x, at.y, at.z); + var stateAt = level.getBlockState(blockAt); + + if (!stateAt.canBeReplaced() || !stateAt.getFluidState().isEmpty()) return; + + var below = level.getBlockState(blockAt.below()); + + if (below.getFluidState().is(FluidTags.WATER)) { + addFogGroup(level, DGParticleTypes.FOG_WATER.get(), blockAt, 3, 0); + } else if (!below.canBeReplaced()) { + addFogGroup(level, DGParticleTypes.FOG.get(), blockAt, 5, 1); + } + } + + private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, int amount, double yRange) { + if (level.random.nextInt(amount * 2) != 0) return; + + var realAmount = amount - level.random.nextInt(2); + + for (int i = 0; i < realAmount; i++) { + level.addParticle(type, + at.getX() + level.random.nextDouble() * 2 - 1, at.getY() + 0.5 + level.random.nextDouble() * yRange, at.getZ() + level.random.nextDouble() * 2 - 1, + level.random.nextFloat() + 0.5F, 0.0, 0.0 + ); + } + } + + public static Optional fogEffectColor(Color from, float partialTicks) { + return activeEffect() + .flatMap(MobEffectInstance::getFactorData) + .map(factorData -> { + var color = new Color(0x697180); + LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + float factor = factorData.getFactor(entity, partialTicks); + float inverseFactor = 1 - factor; + + var red = (color.getRed() / 255F * factor + from.getRed() * inverseFactor); + var green = (color.getGreen() / 255F * factor + from.getGreen() * inverseFactor); + var blue = (color.getBlue() / 255F * factor + from.getBlue() * inverseFactor); + + return new Color(red, green, blue); + }); + } + +} diff --git a/src/main/java/galena/doom_and_gloom/client/OModelLayers.java b/common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java similarity index 81% rename from src/main/java/galena/doom_and_gloom/client/OModelLayers.java rename to common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java index 25d25811..598b61fb 100644 --- a/src/main/java/galena/doom_and_gloom/client/OModelLayers.java +++ b/common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java @@ -3,12 +3,10 @@ import galena.doom_and_gloom.DoomAndGloom; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) public class OModelLayers { public static final ModelLayerLocation HOLLER = new ModelLayerLocation(new ResourceLocation(DoomAndGloom.MOD_ID, "holler"), "main"); public static final ModelLayerLocation DIRT_MOUND = new ModelLayerLocation(new ResourceLocation(DoomAndGloom.MOD_ID, "dirt_mound"), "main"); + } diff --git a/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java b/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java similarity index 89% rename from src/main/java/galena/doom_and_gloom/client/ORenderTypes.java rename to common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java index 36a78c1c..4dc47683 100644 --- a/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java @@ -12,12 +12,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RegisterShadersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public abstract class ORenderTypes extends RenderType { //TODO: check if iris is on. If on use default render type private static final AtomicReference NO_ALPHA_CUTOFF_SHADER = new AtomicReference<>(); @@ -58,22 +53,18 @@ public abstract class ORenderTypes extends RenderType { return create("doom_and_gloom_entity_translucent_no_alpha_cutoff", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, rendertype$compositestate); }); - - public ORenderTypes(String pName, VertexFormat pFormat, VertexFormat.Mode pMode, int pBufferSize, boolean pAffectsCrumbling, boolean pSortOnUpload, Runnable pSetupState, Runnable pClearState) { super(pName, pFormat, pMode, pBufferSize, pAffectsCrumbling, pSortOnUpload, pSetupState, pClearState); } - @SubscribeEvent public static void registerShaders(RegisterShadersEvent event) { try { - ShaderInstance shader = new ShaderInstance(event.getResourceProvider(), + var shader = new ShaderInstance(event.getResourceProvider(), DoomAndGloom.modLoc("rendertype_entity_translucent_additive"), DefaultVertexFormat.NEW_ENTITY); event.registerShader(shader, NO_ALPHA_CUTOFF_SHADER::set); } catch (Exception e) { DoomAndGloom.LOGGER.error("Failed to register shader", e); } - } } diff --git a/src/main/java/galena/doom_and_gloom/client/model/DirtMoundModel.java b/common/src/main/java/galena/doom_and_gloom/client/model/DirtMoundModel.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/client/model/DirtMoundModel.java rename to common/src/main/java/galena/doom_and_gloom/client/model/DirtMoundModel.java diff --git a/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java b/common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/client/model/HollerModel.java rename to common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java diff --git a/src/main/java/galena/doom_and_gloom/client/particle/BoneFragmentParticle.java b/common/src/main/java/galena/doom_and_gloom/client/particle/BoneFragmentParticle.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/client/particle/BoneFragmentParticle.java rename to common/src/main/java/galena/doom_and_gloom/client/particle/BoneFragmentParticle.java diff --git a/src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java b/common/src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java similarity index 90% rename from src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java rename to common/src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java index 3ff177c7..08f55a78 100644 --- a/src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java +++ b/common/src/main/java/galena/doom_and_gloom/client/particle/FogParticle.java @@ -3,7 +3,6 @@ import java.util.List; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.SpriteSet; @@ -70,15 +69,11 @@ public void tick() { } } - public static ParticleEngine.SpriteParticleRegistration provider(int lifetime) { - return sprites -> new Provider(sprites, lifetime); - } - public static class Provider implements ParticleProvider { private final SpriteSet sprites; private final int lifetime; - private Provider(SpriteSet sprites, int lifetime) { + public Provider(SpriteSet sprites, int lifetime) { this.sprites = sprites; this.lifetime = lifetime; } diff --git a/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java b/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java similarity index 93% rename from src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java rename to common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java index 261ff67b..c7659c47 100644 --- a/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java +++ b/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java @@ -12,10 +12,7 @@ import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) public class DirtMoundRenderer extends EntityRenderer { private static final ResourceLocation TEXTURE = new ResourceLocation(DoomAndGloom.MOD_ID, "textures/entity/dirt_mound.png"); diff --git a/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java b/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java similarity index 90% rename from src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java rename to common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java index 4c68f017..45ce289c 100644 --- a/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java +++ b/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java @@ -8,10 +8,7 @@ import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) public class HollerRender extends MobRenderer> { private static final ResourceLocation HOLLER_TEXTURE = DoomAndGloom.modLoc( "textures/entity/holler.png"); diff --git a/src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java b/common/src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java similarity index 96% rename from src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java rename to common/src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java index 4b74cd76..13cc45ee 100644 --- a/src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java +++ b/common/src/main/java/galena/doom_and_gloom/client/screen/StoneTabletScreen.java @@ -3,11 +3,11 @@ import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.vertex.PoseStack; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.OReloadListener; +import galena.doom_and_gloom.client.DGReloadListener; import galena.doom_and_gloom.content.block.StoneTabletBlock; import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; import galena.doom_and_gloom.content.block.StoneTabletText; -import galena.doom_and_gloom.index.OItems; +import galena.doom_and_gloom.index.DGItems; import galena.doom_and_gloom.network.DGNetwork; import galena.doom_and_gloom.network.packet.StoneTabletUpdatePacket; import java.util.stream.IntStream; @@ -56,7 +56,7 @@ public StoneTabletScreen(StoneTabletBlockEntity tablet, ItemStack stack, boolean .mapToObj(i -> this.text.getMessage(i, isFiltered)) .map(Component::getString).toArray(String[]::new); - this.canEdit = tablet.type == StoneTabletBlock.Type.DEFAULT && stack.is(OItems.BUSH_HAMMER.get()); + this.canEdit = tablet.type == StoneTabletBlock.Type.DEFAULT && stack.is(DGItems.BUSH_HAMMER.get()); } @Override @@ -167,9 +167,9 @@ private void renderSign(GuiGraphics guiGraphics) { private void renderText(GuiGraphics guiGraphics) { guiGraphics.pose().translate(0.0F, -5.0F, 4.0F); - int color = OReloadListener.getColor(); - int darkColor2 = OReloadListener.getLightColor(); - int darkColor = OReloadListener.getDarkColor(); + int color = DGReloadListener.getColor(); + int darkColor2 = DGReloadListener.getLightColor(); + int darkColor = DGReloadListener.getDarkColor(); boolean showCursor = this.frame / 6 % 2 == 0 && canEdit; int j = this.signField.getCursorPos(); int k = this.signField.getSelectionPos(); diff --git a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java new file mode 100644 index 00000000..af43ea3e --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java @@ -0,0 +1,8 @@ +package galena.doom_and_gloom.compat; + +public class CompatMods { + + public static final String DYE_DEPOT = "dye_depot"; + public static final String MOONLIGHT = "moonlight"; + public static final String AMENDMENTS = "amendments"; +} diff --git a/src/main/java/galena/doom_and_gloom/DyeColors.java b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java similarity index 53% rename from src/main/java/galena/doom_and_gloom/DyeColors.java rename to common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java index 2652afea..cdbb625a 100644 --- a/src/main/java/galena/doom_and_gloom/DyeColors.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java @@ -1,10 +1,11 @@ -package galena.doom_and_gloom; +package galena.doom_and_gloom.compat; import java.util.Objects; +import java.util.Optional; import java.util.function.Function; import java.util.stream.Stream; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.item.DyeColor; -import net.minecraftforge.fml.ModList; public class DyeColors { private static Stream vanillaColors() { @@ -12,7 +13,12 @@ private static Stream vanillaColors() { } private static Stream depotColors() { - return !ModList.get().isLoaded("dye_depot") ? Stream.empty() : Stream.of("amber", "aqua", "beige", "coral", "forest", "ginger", "indigo", "maroon", "mint", "navy", "olive", "rose", "slate", "tan", "teal", "verdant").map((it) -> DyeColor.byName(it, (DyeColor)null)).filter(Objects::nonNull); + return !PlatHelper.isModLoaded(CompatMods.DYE_DEPOT) ? Stream.empty() : Stream.of("amber", "aqua", "beige", "coral", "forest", "ginger", "indigo", "maroon", "mint", "navy", "olive", "rose", "slate", "tan", "teal", "verdant").map((it) -> DyeColor.byName(it, (DyeColor) null)).filter(Objects::nonNull); + } + + public static Optional modNamespace(DyeColor color) { + if (color.getId() > 15) return Optional.of(CompatMods.DYE_DEPOT); + return Optional.empty(); } public static Stream supported() { diff --git a/src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java similarity index 88% rename from src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java rename to common/src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java index 8d8e5f04..398d822f 100644 --- a/src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/CandleSensor.java @@ -1,8 +1,8 @@ package galena.doom_and_gloom.compat.moonlight; import com.google.common.collect.ImmutableSet; -import galena.doom_and_gloom.index.OTags; -import galena.doom_and_gloom.index.OVillagerTypes; +import galena.doom_and_gloom.index.DGTags; +import galena.doom_and_gloom.index.DGVillagerTypes; import java.util.Set; import net.minecraft.core.BlockPos; import net.minecraft.core.GlobalPos; @@ -22,7 +22,7 @@ public CandleSensor() { @Override protected void doTick(ServerLevel pLevel, Villager pEntity) { - if (!pEntity.isBaby() && pEntity.getVillagerData().getProfession() == OVillagerTypes.GRAVETENDER.get()) { + if (!pEntity.isBaby() && pEntity.getVillagerData().getProfession() == DGVillagerTypes.GRAVETENDER.get()) { ResourceKey resourcekey = pLevel.dimension(); BlockPos blockpos = pEntity.blockPosition(); GlobalPos found = null; @@ -32,7 +32,7 @@ protected void doTick(ServerLevel pLevel, Villager pEntity) { for (int k = -2; k <= 2; ++k) { for (int l = -rad; l <= rad; ++l) { BlockPos blockpos1 = blockpos.offset(j, k, l); - if (pLevel.getBlockState(blockpos1).is(OTags.Blocks.GRAVETENDER_LIGHTABLE)) { + if (pLevel.getBlockState(blockpos1).is(DGTags.Blocks.GRAVETENDER_LIGHTABLE)) { found = (GlobalPos.of(resourcekey, blockpos1)); break; } diff --git a/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java similarity index 97% rename from src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java rename to common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java index 0b2a7931..8a42f684 100644 --- a/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableMap; import com.mojang.authlib.GameProfile; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.UUID; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.core.BlockPos; @@ -91,7 +91,7 @@ protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { this.ticksSinceReached++; BlockState state = pLevel.getBlockState(pos); - if (!state.is(OTags.Blocks.GRAVETENDER_LIGHTABLE)) { + if (!state.is(DGTags.Blocks.GRAVETENDER_LIGHTABLE)) { pOwner.getBrain().eraseMemory(MoonlightCompat.NEAREST_UNLIT_CANDLE.get()); } else { //breaking animation. same as fodder lol. might have the same issues diff --git a/src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java similarity index 95% rename from src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java rename to common/src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java index 749b8c47..6a7129bf 100644 --- a/src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/MoonlightCompat.java @@ -2,7 +2,7 @@ import com.mojang.datafixers.util.Pair; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OVillagerTypes; +import galena.doom_and_gloom.index.DGVillagerTypes; import java.util.List; import java.util.Optional; import java.util.function.Supplier; @@ -43,7 +43,7 @@ public static void init() { public static void onVillagerBrainInitialize(IVillagerBrainEvent event) { Villager villager = event.getVillager(); - if (!villager.isBaby() && villager.getVillagerData().getProfession() == OVillagerTypes.GRAVETENDER.get()) { + if (!villager.isBaby() && villager.getVillagerData().getProfession() == DGVillagerTypes.GRAVETENDER.get()) { event.addTaskToActivity(Activity.WORK, Pair.of(3, new LightUpCandles(0.5f))); event.addTaskToActivity(Activity.IDLE, Pair.of(3, new TurnOffCandles(0.5f))); event.addSensor(CANDLES_SENSOR.get()); diff --git a/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java similarity index 97% rename from src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java rename to common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java index 5b3b3abc..6bf1b2e6 100644 --- a/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableMap; import com.mojang.authlib.GameProfile; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -24,7 +24,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.FakePlayerFactory; import org.jetbrains.annotations.Nullable; //TODO: this isnt working! villagers arent persisting their added memory! @@ -112,7 +111,7 @@ protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { this.ticksSinceReached++; BlockState state = pLevel.getBlockState(pos); - if (!state.is(OTags.Blocks.GRAVETENDER_LIGHTABLE)) { + if (!state.is(DGTags.Blocks.GRAVETENDER_LIGHTABLE)) { var list = pOwner.getBrain().getMemory(MoonlightCompat.CANDLES_I_LIT.get()); if (list.isPresent()) { list.get().remove(targetPos); diff --git a/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java similarity index 85% rename from src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java index d0681a3f..495b270d 100644 --- a/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.content.block; -import galena.doom_and_gloom.index.OParticleTypes; -import galena.doom_and_gloom.index.OSoundEvents; +import galena.doom_and_gloom.index.DGParticleTypes; +import galena.doom_and_gloom.index.DGSoundEvents; import java.util.function.Consumer; import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.BlockPos; @@ -50,7 +50,7 @@ public VoxelShape getVisualShape(BlockState state, BlockGetter level, BlockPos p public void onLand(Level level, BlockPos pos, BlockState state, BlockState other, FallingBlockEntity entity) { super.onLand(level, pos, state, other, entity); if (!entity.isSilent()) - level.playSound(null, pos, OSoundEvents.BONE_PILE_FALL.get(), SoundSource.BLOCKS, 1F, 1F); + level.playSound(null, pos, DGSoundEvents.BONE_PILE_FALL.get(), SoundSource.BLOCKS, 1F, 1F); particles(level, Vec3.atCenterOf(pos), 20); } @@ -65,7 +65,7 @@ public boolean addRunningEffects(BlockState state, Level level, BlockPos pos, En var vec = entity.position().add(0, 0.2, 0.0); var speed = entity.isSprinting() ? 0.5F : 0.2F; var halfSpeed = speed / 2; - level.addParticle(OParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed); + level.addParticle(DGParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed); return true; } @@ -76,9 +76,9 @@ public void initializeClient(Consumer consumer) { private void particles(Level level, Vec3 vec, int numberOfParticles) { if (level instanceof ServerLevel serverLevel) { - serverLevel.sendParticles(OParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, numberOfParticles, 0.35, 0.35, 0.35, 0.1); + serverLevel.sendParticles(DGParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, numberOfParticles, 0.35, 0.35, 0.35, 0.1); } else for (int i = 0; i < numberOfParticles; i++) { - level.addParticle(OParticleTypes.BONE_FRAGMENT.get(), + level.addParticle(DGParticleTypes.BONE_FRAGMENT.get(), vec.x + level.random.nextDouble() - 0.5, vec.y + level.random.nextDouble() - 0.5, vec.z + level.random.nextDouble() - 0.5, level.random.nextDouble() * 0.3 - 0.15, level.random.nextDouble() * 0.3 - 0.15, level.random.nextDouble() * 0.3 - 0.15 ); diff --git a/src/main/java/galena/doom_and_gloom/content/block/BurialDirtBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/BurialDirtBlock.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/block/BurialDirtBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/BurialDirtBlock.java diff --git a/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java similarity index 90% rename from src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java index 6aa72a5d..2c067960 100644 --- a/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java @@ -1,9 +1,9 @@ package galena.doom_and_gloom.content.block; import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; -import galena.doom_and_gloom.index.OBlockEntities; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OSoundEvents; +import galena.doom_and_gloom.index.DGBlockEntities; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGSoundEvents; import java.awt.*; import net.minecraft.Util; import net.minecraft.client.Minecraft; @@ -34,8 +34,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.Nullable; public class SepulcherBlock extends Block implements TickingEntityBlock { @@ -107,13 +105,13 @@ public static void insert(@Nullable Entity user, BlockState state, Level level, serverLevel.sendParticles(ParticleTypes.COMPOSTER, vec.x, vec.y, vec.z, 10, 0.3, 0.3, 0.3, 0.0); } - level.playSound(null, pos, OSoundEvents.SEPULCHER_FILLED.get(), SoundSource.BLOCKS, 0.5F, 1.0F); + level.playSound(null, pos, DGSoundEvents.SEPULCHER_FILLED.get(), SoundSource.BLOCKS, 0.5F, 1.0F); } public static void extract(@Nullable Entity user, BlockState state, Level level, BlockPos pos) { if (!level.isClientSide()) { Vec3 vec = Vec3.atLowerCornerWithOffset(pos, 0.5, 1.01, 0.5).offsetRandom(level.random, 0.7F); - ItemEntity item = new ItemEntity(level, vec.x(), vec.y(), vec.z(), new ItemStack(OBlocks.BONE_PILE.get())); + ItemEntity item = new ItemEntity(level, vec.x(), vec.y(), vec.z(), new ItemStack(DGBlocks.BONE_PILE.get())); item.setDefaultPickUpDelay(); level.addFreshEntity(item); } @@ -121,20 +119,18 @@ public static void extract(@Nullable Entity user, BlockState state, Level level, clear(user, state, level, pos); } - @OnlyIn(Dist.CLIENT) public static void spawnConsumeParticles(Vec3 at) { var level = Minecraft.getInstance().level; if (level == null) return; var particles = Minecraft.getInstance().particleEngine; - var state = OBlocks.ROTTING_FLESH.get().defaultBlockState(); + var state = DGBlocks.ROTTING_FLESH.get().defaultBlockState(); for (int i = 0; i < 20; i++) { var vec = at.add(level.random.nextDouble() - 0.5, level.random.nextDouble() * 2, level.random.nextDouble() - 0.5); particles.add(new TerrainParticle(level, vec.x, vec.y, vec.z, 0.0, 0.0, 0.0, state)); } } - @OnlyIn(Dist.CLIENT) public static void spawnRottingParticles(BlockPos at) { var level = Minecraft.getInstance().level; if (level == null) return; @@ -151,7 +147,7 @@ public static void clear(@Nullable Entity user, BlockState state, Level level, B level.setBlockAndUpdate(pos, empty); level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(user, empty)); - level.playSound(null, pos, OSoundEvents.SEPULCHER_HARVEST.get(), SoundSource.BLOCKS, 1.0F, 1.0F); + level.playSound(null, pos, DGSoundEvents.SEPULCHER_HARVEST.get(), SoundSource.BLOCKS, 1.0F, 1.0F); } @Override @@ -169,7 +165,7 @@ public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, Co @Override public BlockEntityType getType() { - return OBlockEntities.SEPULCHER.get(); + return DGBlockEntities.SEPULCHER.get(); } } diff --git a/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java similarity index 91% rename from src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java index c8534dcc..b0e30ca2 100644 --- a/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java @@ -1,8 +1,8 @@ package galena.doom_and_gloom.content.block; import galena.doom_and_gloom.client.screen.StoneTabletScreen; -import galena.doom_and_gloom.index.OBlockEntities; -import galena.doom_and_gloom.index.OBlocks; +import galena.doom_and_gloom.index.DGBlockEntities; +import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.network.DGNetwork; import galena.doom_and_gloom.network.packet.EngraveStoneTabletPacket; import java.util.Arrays; @@ -37,12 +37,8 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.network.PacketDistributor; import org.jetbrains.annotations.Nullable; public class StoneTabletBlock extends Block implements SimpleWaterloggedBlock, TickingEntityBlock { @@ -180,7 +176,7 @@ private boolean clear(Level level, BlockPos pos, ServerPlayer player, Interactio if (!held.is(ItemTags.PICKAXES)) return false; if (type != Type.ENGRAVED) return false; - var tablet = level.random.nextInt(5) == 0 ? OBlocks.CRACKED_STONE_TABLET : OBlocks.STONE_TABLET; + var tablet = level.random.nextInt(5) == 0 ? DGBlocks.CRACKED_STONE_TABLET : DGBlocks.STONE_TABLET; level.setBlockAndUpdate(pos, tablet.get().withPropertiesOf(state)); @@ -201,17 +197,17 @@ public FluidState getFluidState(BlockState state) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { if (level.getBlockEntity(pos) instanceof StoneTabletBlockEntity tile) { - ItemStack stack = this.asItem().getDefaultInstance(); - CompoundTag tag = new CompoundTag(); + var stack = this.asItem().getDefaultInstance(); + var tag = new CompoundTag(); tag.put("BlockEntityTag", tile.saveWithoutMetadata()); - CompoundTag c = new CompoundTag(); - tag.put("BlockStateTag", c); + var stateTag = new CompoundTag(); + tag.put("BlockStateTag", stateTag); stack.setTag(tag); return stack; } - return super.getCloneItemStack(state, target, level, pos, player); + return super.getCloneItemStack(level, pos, state); } public boolean openTextEdit(ServerPlayer player, StoneTabletBlockEntity blockEntity) { @@ -220,9 +216,7 @@ public boolean openTextEdit(ServerPlayer player, StoneTabletBlockEntity blockEnt if (!hasEditableText(player, blockEntity)) return false; blockEntity.setAllowedPlayerEditor(player.getUUID()); - DGNetwork.CHANNEL.send( - PacketDistributor.PLAYER.with(() -> player), - new EngraveStoneTabletPacket(blockEntity.getBlockPos())); + DGNetwork.CHANNEL.sendToClientPlayer(player, new EngraveStoneTabletPacket(blockEntity.getBlockPos())); return true; } @@ -232,7 +226,6 @@ private boolean otherPlayerIsEditingSign(Player player, StoneTabletBlockEntity s return id != null && !id.equals(player.getUUID()); } - @OnlyIn(Dist.CLIENT) public static void openScreen(BlockPos pos) { Minecraft mc = Minecraft.getInstance(); var level = mc.level; @@ -245,7 +238,7 @@ public static void openScreen(BlockPos pos) { @Override public BlockEntityType getType() { - return OBlockEntities.STONE_TABLET.get(); + return DGBlockEntities.STONE_TABLET.get(); } public enum Type implements StringRepresentable { diff --git a/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java similarity index 98% rename from src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java rename to common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java index 91420181..1c56ce58 100644 --- a/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlockEntity.java @@ -3,7 +3,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.content.entity.Ticking; -import galena.doom_and_gloom.index.OBlockEntities; +import galena.doom_and_gloom.index.DGBlockEntities; import java.util.List; import java.util.UUID; import java.util.function.UnaryOperator; @@ -37,7 +37,7 @@ public class StoneTabletBlockEntity extends BlockEntity implements Ticking { public final StoneTabletBlock.Type type; public StoneTabletBlockEntity(BlockPos pos, BlockState blockState) { - super(OBlockEntities.STONE_TABLET.get(), pos, blockState); + super(DGBlockEntities.STONE_TABLET.get(), pos, blockState); this.type = ((StoneTabletBlock) blockState.getBlock()).type; } diff --git a/src/main/java/galena/doom_and_gloom/content/block/StoneTabletText.java b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletText.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/block/StoneTabletText.java rename to common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletText.java diff --git a/src/main/java/galena/doom_and_gloom/content/block/TickingEntityBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/TickingEntityBlock.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/block/TickingEntityBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/TickingEntityBlock.java diff --git a/src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java similarity index 98% rename from src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java rename to common/src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java index 8fc70a17..a1302da2 100644 --- a/src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/VigilCandleBlock.java @@ -6,7 +6,7 @@ import static net.minecraft.world.level.block.state.properties.BlockStateProperties.CANDLES; import galena.doom_and_gloom.content.entity.VigilCandleBlockEntity; -import galena.doom_and_gloom.index.OBlockEntities; +import galena.doom_and_gloom.index.DGBlockEntities; import java.util.Optional; import java.util.function.ToIntFunction; import net.minecraft.core.BlockPos; @@ -132,7 +132,7 @@ public boolean placeLiquid(LevelAccessor level, BlockPos pos, BlockState state, @Override public BlockEntityType getType() { - return OBlockEntities.VIGIL_CANDLE.get(); + return DGBlockEntities.VIGIL_CANDLE.get(); } @Override diff --git a/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java b/common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java rename to common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java diff --git a/src/main/java/galena/doom_and_gloom/content/effect/WardingEffect.java b/common/src/main/java/galena/doom_and_gloom/content/effect/WardingEffect.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/effect/WardingEffect.java rename to common/src/main/java/galena/doom_and_gloom/content/effect/WardingEffect.java diff --git a/src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java b/common/src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java similarity index 95% rename from src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java index c1bc49ef..df60e979 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/DirtMound.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.content.entity; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; @@ -43,7 +43,7 @@ public void tick() { var pos = blockPosition(); if(tickCount % 10 != 0) return; - if (!level.getBlockState(pos).isAir() || !level.getBlockState(pos.below()).is(OTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT)) { + if (!level.getBlockState(pos).isAir() || !level.getBlockState(pos.below()).is(DGTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT)) { spawnMonster(level, pos); discard(); return; diff --git a/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java similarity index 74% rename from src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java index 9f760944..e4b9ef41 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java @@ -3,16 +3,15 @@ import galena.doom_and_gloom.DGConfig; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.content.block.SepulcherBlock; -import galena.doom_and_gloom.index.OBlockEntities; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OSoundEvents; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGBlockEntities; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGSoundEvents; +import galena.doom_and_gloom.index.DGTags; import galena.doom_and_gloom.network.DGNetwork; import galena.doom_and_gloom.network.packet.SepulcherConsumesDeathPacket; import galena.doom_and_gloom.network.packet.SepulcherRotsPacket; import java.util.function.Supplier; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; @@ -31,24 +30,16 @@ import net.minecraft.world.level.gameevent.GameEventListener; import net.minecraft.world.level.gameevent.PositionSource; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.wrapper.InvWrapper; -import net.minecraftforge.network.PacketDistributor; -import org.jetbrains.annotations.NotNull; public class SepulcherBlockEntity extends BlockEntity implements Ticking, Container, GameEventListener.Holder { private final DeathListener listener; - private LazyOptional itemHandler; private int progress = 0; private boolean heated = false; public SepulcherBlockEntity(BlockPos pos, BlockState state) { - super(OBlockEntities.SEPULCHER.get(), pos, state); + super(DGBlockEntities.SEPULCHER.get(), pos, state); this.listener = new DeathListener(); - this.itemHandler = createItemHandler(); } private int progressNeeded(int fillLevel) { @@ -76,18 +67,15 @@ public void tick(BlockState state, Level level, BlockPos pos) { progress = 0; if (fillLevel == SepulcherBlock.MAX_LEVEL) { - sound(OSoundEvents.SEPULCHER_SEALING, 1F); + sound(DGSoundEvents.SEPULCHER_SEALING, 1F); } else if (nextLevel == SepulcherBlock.READY) { - sound(OSoundEvents.SEPULCHER_UNSEALING, 1F); + sound(DGSoundEvents.SEPULCHER_UNSEALING, 1F); } else { - sound(OSoundEvents.SEPULCHER_ROTTING, 0.5F); + sound(DGSoundEvents.SEPULCHER_ROTTING, 0.5F); } - if(!level.isClientSide()) { - DGNetwork.CHANNEL.send( - PacketDistributor.NEAR.with(PacketDistributor.TargetPoint.p(pos.getX(), pos.getY(), pos.getZ(), 16.0, level.dimension())), - new SepulcherRotsPacket(pos) - ); + if (!level.isClientSide()) { + DGNetwork.CHANNEL.sendToAllClientPlayersInRange(level, pos, 16.0, new SepulcherRotsPacket(pos)); } } @@ -99,7 +87,7 @@ private void sound(Supplier sound, float volume) { private void checkHeatSource(Level level, BlockPos pos) { var below = pos.below(); var belowState = level.getBlockState(below); - heated = belowState.is(OTags.Blocks.HEAT_SOURCE); + heated = belowState.is(DGTags.Blocks.HEAT_SOURCE); } @Override @@ -151,7 +139,7 @@ public boolean handleGameEvent(ServerLevel level, GameEvent event, GameEvent.Con if (entity == null) return false; if (wasConsumerBySepulcher(entity)) return false; - if (!entity.getType().is(OTags.Entities.FILLS_SEPULCHER)) return false; + if (!entity.getType().is(DGTags.Entities.FILLS_SEPULCHER)) return false; var state = getBlockState(); var fillLevel = state.getValue(SepulcherBlock.LEVEL); @@ -166,11 +154,9 @@ public boolean handleGameEvent(ServerLevel level, GameEvent event, GameEvent.Con SepulcherBlock.insert(null, state, level, getBlockPos(), level.random.nextIntBetweenInclusive(3, 4)); - sound(OSoundEvents.SEPULCHER_CORPSE_STUFFED, 1F); + sound(DGSoundEvents.SEPULCHER_CORPSE_STUFFED, 1F); - DGNetwork.CHANNEL.send( - PacketDistributor.NEAR.with(PacketDistributor.TargetPoint.p(vec.x, vec.y, vec.z, 16.0, entity.level().dimension())), - new SepulcherConsumesDeathPacket(vec) + DGNetwork.CHANNEL.sendToAllClientPlayersInRange(entity.level(), BlockPos.containing(vec), 16.0, new SepulcherConsumesDeathPacket(vec) ); entity.setPos(Vec3.atCenterOf(getBlockPos())); @@ -180,22 +166,6 @@ public boolean handleGameEvent(ServerLevel level, GameEvent event, GameEvent.Con } } - @Override - public void invalidateCaps() { - super.invalidateCaps(); - itemHandler.invalidate(); - } - - @Override - public void reviveCaps() { - super.reviveCaps(); - itemHandler = createItemHandler(); - } - - private LazyOptional createItemHandler() { - return LazyOptional.of(() -> new InvWrapper(this)); - } - @Override public int getContainerSize() { return 1; @@ -210,7 +180,7 @@ public boolean isEmpty() { @Override public ItemStack getItem(int slot) { var fillLevel = getBlockState().getValue(SepulcherBlock.LEVEL); - if (fillLevel == SepulcherBlock.READY) return new ItemStack(OBlocks.BONE_PILE.get()); + if (fillLevel == SepulcherBlock.READY) return new ItemStack(DGBlocks.BONE_PILE.get()); return ItemStack.EMPTY; } @@ -251,12 +221,4 @@ public void clearContent() { SepulcherBlock.clear(null, getBlockState(), getLevel(), getBlockPos()); } - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability capability, Direction facing) { - if (capability == ForgeCapabilities.ITEM_HANDLER && facing != null && !this.remove) { - return itemHandler.cast(); - } else { - return super.getCapability(capability, facing); - } - } } diff --git a/src/main/java/galena/doom_and_gloom/content/entity/Ticking.java b/common/src/main/java/galena/doom_and_gloom/content/entity/Ticking.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/entity/Ticking.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/Ticking.java diff --git a/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java similarity index 70% rename from src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java index 247421e8..a09c458e 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java @@ -1,8 +1,8 @@ package galena.doom_and_gloom.content.entity; -import galena.doom_and_gloom.index.OBlockEntities; -import galena.doom_and_gloom.index.OEffects; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGBlockEntities; +import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGTags; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.world.effect.MobEffectInstance; @@ -16,7 +16,7 @@ public class VigilCandleBlockEntity extends BlockEntity implements Ticking { public VigilCandleBlockEntity(BlockPos pos, BlockState state) { - super(OBlockEntities.VIGIL_CANDLE.get(), pos, state); + super(DGBlockEntities.VIGIL_CANDLE.get(), pos, state); } @Override @@ -28,7 +28,7 @@ public void tick(BlockState state, Level level, BlockPos pos) { var entities = level.getEntitiesOfClass(LivingEntity.class, new AABB(pos).inflate(range)); var effects = level.registryAccess().registryOrThrow(Registries.MOB_EFFECT); - var shouldClear = effects.getTagOrEmpty(OTags.Effects.VIGIL_CANDLE_CLEARS); + var shouldClear = effects.getTagOrEmpty(DGTags.Effects.VIGIL_CANDLE_CLEARS); entities.forEach(entity -> { shouldClear.forEach(effect -> { @@ -36,8 +36,8 @@ public void tick(BlockState state, Level level, BlockPos pos) { }); var duration = 20 * 5; - if (!entity.hasEffect(OEffects.WARDING.get()) || entity.getEffect(OEffects.WARDING.get()).endsWithin(duration - 1)) { - entity.addEffect(new MobEffectInstance(OEffects.WARDING.get(), duration, 0, false, false, false)); + if (!entity.hasEffect(DGEffects.WARDING.get()) || entity.getEffect(DGEffects.WARDING.get()).endsWithin(duration - 1)) { + entity.addEffect(new MobEffectInstance(DGEffects.WARDING.get(), duration, 0, false, false, false)); } }); } diff --git a/src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java similarity index 89% rename from src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java index 036f5cb1..55b301fc 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/Holler.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.content.entity.holler; import galena.doom_and_gloom.index.*; -import galena.doom_and_gloom.index.OBlocks; +import galena.doom_and_gloom.index.DGBlocks; import java.time.LocalDate; import java.time.temporal.ChronoField; import java.util.List; @@ -77,7 +77,7 @@ protected void registerGoals() { goalSelector.addGoal(4, new LookAtPlayerGoal(this, Player.class, 16.0F)); goalSelector.addGoal(9, new HollerStrollGoal(this, 1F)); - targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, false, it -> !it.hasEffect(OEffects.WARDING.get()))); + targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, false, it -> !it.hasEffect(DGEffects.WARDING.get()))); } @Override @@ -99,13 +99,13 @@ public static void applyFogAround(ServerLevel level, Vec3 pos, Entity source, in var applied = level.getPlayers(player -> player.gameMode.isSurvival() && pos.closerThan(player.position(), radius) - && (!player.hasEffect(OEffects.FOG.get()) || player.getEffect(OEffects.FOG.get()).endsWithin(duration - 1)) - && !player.hasEffect(OEffects.WARDING.get()) + && (!player.hasEffect(DGEffects.FOG.get()) || player.getEffect(DGEffects.FOG.get()).endsWithin(duration - 1)) + && !player.hasEffect(DGEffects.WARDING.get()) ); applied.forEach(it -> { - it.addEffect(new MobEffectInstance(OEffects.FOG.get(), 260, 0, false, false), source); - level.playSound(it, source, OSoundEvents.HOLLER_SHRIEKS.get(), source.getSoundSource(), 1F, 1F); + it.addEffect(new MobEffectInstance(DGEffects.FOG.get(), 260, 0, false, false), source); + level.playSound(it, source, DGSoundEvents.HOLLER_SHRIEKS.get(), source.getSoundSource(), 1F, 1F); }); } @@ -214,17 +214,17 @@ protected void checkFallDamage(double p_218316_, boolean p_218317_, BlockState s @Override protected SoundEvent getAmbientSound() { - return OSoundEvents.HOLLER_HOLLERS.get(); + return DGSoundEvents.HOLLER_HOLLERS.get(); } @Override public SoundEvent getHurtSound(DamageSource damageSource) { - return OSoundEvents.HOLLER_HURTS.get(); + return DGSoundEvents.HOLLER_HURTS.get(); } @Override protected SoundEvent getDeathSound() { - return OSoundEvents.HOLLER_DEATH.get(); + return DGSoundEvents.HOLLER_DEATH.get(); } @Override @@ -233,7 +233,7 @@ protected float getSoundVolume() { } void disappear() { - playSound(OSoundEvents.HOLLER_SHRIEKS.get(), 1F, 1F); + playSound(DGSoundEvents.HOLLER_SHRIEKS.get(), 1F, 1F); discard(); } @@ -250,11 +250,11 @@ public void panicFinish(Vec3 target) { for (int i = 0; i < 6; i++) { var vec = Vec3.atCenterOf(blockPosition()).add(Math.random() * 1 - 0.5, Math.random() * 1 - 0.5, Math.random() * 1 - 0.5); - level.sendParticles(OParticleTypes.HOLLERING_SOUL.get(), vec.x, vec.y, vec.z, 1, 0, 0, 0, 0); + level.sendParticles(DGParticleTypes.HOLLERING_SOUL.get(), vec.x, vec.y, vec.z, 1, 0, 0, 0, 0); } level.getBlockEntity(blockPosition(), BlockEntityType.JUKEBOX).ifPresent(jukebox -> { - var stack = new ItemStack(OItems.MUSIC_DISC_AFTERLIFE.get()); + var stack = new ItemStack(DGItems.MUSIC_DISC_AFTERLIFE.get()); jukebox.setFirstItem(stack); }); } else { @@ -267,7 +267,7 @@ private void curseBlock(ServerLevel level, BlockPos pos) { if (level.random.nextDouble() > 0.3) return; if (level.random.nextBoolean()) { - level.setBlockAndUpdate(pos, OBlocks.BURIAL_DIRT.get().defaultBlockState()); + level.setBlockAndUpdate(pos, DGBlocks.BURIAL_DIRT.get().defaultBlockState()); } else if (level.random.nextBoolean()) { level.setBlockAndUpdate(pos, Blocks.DIRT.defaultBlockState()); } else { @@ -275,7 +275,7 @@ private void curseBlock(ServerLevel level, BlockPos pos) { } var vec = Vec3.atCenterOf(pos.above()); - level.sendParticles(OParticleTypes.HOLLERING_SOUL.get(), vec.x, vec.y, vec.z, 4, 0.5, 0.5, 0.5, 0.01); + level.sendParticles(DGParticleTypes.HOLLERING_SOUL.get(), vec.x, vec.y, vec.z, 4, 0.5, 0.5, 0.5, 0.01); } private void curseGround(ServerLevel level, BlockPos center) { @@ -283,7 +283,7 @@ private void curseGround(ServerLevel level, BlockPos center) { BlockPos.betweenClosedStream(aabb).forEach(pos -> { var state = level.getBlockState(pos); var above = level.getBlockState(pos.above()); - if (state.is(OTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT) && above.canBeReplaced()) { + if (state.is(DGTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT) && above.canBeReplaced()) { curseBlock(level, pos); } }); diff --git a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java similarity index 94% rename from src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java index 53cffe75..24f4bbbf 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerAvoidGoal.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.content.entity.holler; -import galena.doom_and_gloom.index.OEffects; +import galena.doom_and_gloom.index.DGEffects; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.ai.goal.Goal; import net.minecraft.world.entity.ai.targeting.TargetingConditions; @@ -42,7 +42,7 @@ public boolean canUse() { } if (avoid != null) { - disapearAfterwards = avoid.hasEffect(OEffects.WARDING.get()); + disapearAfterwards = avoid.hasEffect(DGEffects.WARDING.get()); var target = mob.position().subtract(avoid.position()); var radius = disapearAfterwards ? 24 : 4; var away = AirRandomPos.getPosTowards(mob, radius, 1, 0, target, 1F); diff --git a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java similarity index 95% rename from src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java index 7573f028..40475424 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerFollowGoal.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.content.entity.holler; -import galena.doom_and_gloom.index.OEffects; +import galena.doom_and_gloom.index.DGEffects; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.ai.behavior.EntityTracker; import net.minecraft.world.entity.ai.goal.Goal; @@ -38,7 +38,7 @@ private boolean tooClose() { if(target == null) return false; var distanceSquared = mob.distanceToSqr(target); - if(target.hasEffect(OEffects.FOG.get())) { + if(target.hasEffect(DGEffects.FOG.get())) { return false; } diff --git a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java similarity index 93% rename from src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java index 738a7da8..e16b7ac9 100644 --- a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerPanicGoal.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.content.entity.holler; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.Optional; import java.util.function.Predicate; import net.minecraft.core.BlockPos; @@ -59,6 +59,6 @@ private Optional findPos(Predicate filter) { private Optional findTargetPos() { return findPos(state -> state.is(Blocks.JUKEBOX) && !state.getValue(JukeboxBlock.HAS_RECORD)) - .or(() -> findPos(state -> state.is(OTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT))); + .or(() -> findPos(state -> state.is(DGTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT))); } } diff --git a/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerStrollGoal.java b/common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerStrollGoal.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/content/entity/holler/HollerStrollGoal.java rename to common/src/main/java/galena/doom_and_gloom/content/entity/holler/HollerStrollGoal.java diff --git a/src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java b/common/src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java similarity index 63% rename from src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java rename to common/src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java index b6426e61..98f736dd 100644 --- a/src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java +++ b/common/src/main/java/galena/doom_and_gloom/content/item/BushHammerItem.java @@ -1,12 +1,12 @@ package galena.doom_and_gloom.content.item; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import net.minecraft.world.item.*; public class BushHammerItem extends DiggerItem { public BushHammerItem(Tier tier, float attack, float modifier, Item.Properties properties) { - super(attack, modifier, tier, OTags.Blocks.MINEABLE_WITH_BUSH_HAMMER, properties); + super(attack, modifier, tier, DGTags.Blocks.MINEABLE_WITH_BUSH_HAMMER, properties); } } diff --git a/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java b/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java similarity index 93% rename from src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java rename to common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java index 929dc0df..14d34cdd 100644 --- a/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java +++ b/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java @@ -2,7 +2,7 @@ import galena.doom_and_gloom.content.block.StoneTabletBlock; import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; -import galena.doom_and_gloom.index.OItems; +import galena.doom_and_gloom.index.DGItems; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -26,7 +26,7 @@ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullabl if (!updated && player instanceof ServerPlayer serverPlayer) { if (level.getBlockEntity(pos) instanceof StoneTabletBlockEntity blockEntity && state.getBlock() instanceof StoneTabletBlock block) { if(!serverPlayer.getAbilities().instabuild) { - serverPlayer.setItemInHand(serverPlayer.getUsedItemHand(), new ItemStack(OItems.BUSH_HAMMER.get())); + serverPlayer.setItemInHand(serverPlayer.getUsedItemHand(), new ItemStack(DGItems.BUSH_HAMMER.get())); } block.openTextEdit(serverPlayer, blockEntity); } diff --git a/src/main/java/galena/doom_and_gloom/world/gen/VillageStructureModifier.java b/common/src/main/java/galena/doom_and_gloom/gen/VillageStructureModifier.java similarity index 99% rename from src/main/java/galena/doom_and_gloom/world/gen/VillageStructureModifier.java rename to common/src/main/java/galena/doom_and_gloom/gen/VillageStructureModifier.java index 9e470bf0..f5d4bff4 100644 --- a/src/main/java/galena/doom_and_gloom/world/gen/VillageStructureModifier.java +++ b/common/src/main/java/galena/doom_and_gloom/gen/VillageStructureModifier.java @@ -1,4 +1,4 @@ -package galena.doom_and_gloom.world.gen; +package galena.doom_and_gloom.gen; import com.mojang.datafixers.util.Pair; import galena.doom_and_gloom.DoomAndGloom; diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlockEntities.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlockEntities.java new file mode 100644 index 00000000..812b09b2 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlockEntities.java @@ -0,0 +1,33 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + +import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; +import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; +import galena.doom_and_gloom.content.entity.VigilCandleBlockEntity; +import java.util.function.BiFunction; +import java.util.function.Supplier; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public class DGBlockEntities { + + public static final RegSupplier> VIGIL_CANDLE = register("vigil_candle", VigilCandleBlockEntity::new, DGBlocks.vigilCandles().toArray(Supplier[]::new)); + public static final RegSupplier> SEPULCHER = register("sepulcher", SepulcherBlockEntity::new, DGBlocks.SEPULCHER); + public static final RegSupplier> STONE_TABLET = register("stone_tablet", StoneTabletBlockEntity::new, DGBlocks.STONE_TABLET); + + @SafeVarargs + private static RegSupplier> register(String name, BiFunction factory, Supplier... blocks) { + return RegHelper.registerBlockEntityType(modLoc(name), factory, blocks); + } + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java new file mode 100644 index 00000000..7cf07d81 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -0,0 +1,78 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerBlock; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerItem; + +import galena.doom_and_gloom.compat.DyeColors; +import galena.doom_and_gloom.content.block.BonePileBlock; +import galena.doom_and_gloom.content.block.BurialDirtBlock; +import galena.doom_and_gloom.content.block.SepulcherBlock; +import galena.doom_and_gloom.content.block.StoneTabletBlock; +import galena.doom_and_gloom.content.block.VigilCandleBlock; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.PushReaction; + +public class DGBlocks { + + public static final RegSupplier SEPULCHER = register("sepulcher", () -> new SepulcherBlock(BlockBehaviour.Properties.copy(Blocks.CAULDRON).sound(DGSoundTypes.SEPULCHER))); + public static final RegSupplier BONE_PILE = register("bone_pile", () -> new BonePileBlock(BlockBehaviour.Properties.copy(Blocks.BONE_BLOCK).sound(DGSoundTypes.BONE_PILE).strength(1F))); + public static final RegSupplier ROTTING_FLESH = registerBlock(modLoc("rotting_flesh"), () -> new Block(BlockBehaviour.Properties.copy(Blocks.DIRT))); + public static final RegSupplier STONE_TABLET = register("stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.DEFAULT)); + public static final RegSupplier ENGRAVED_STONE_TABLET = register("engraved_stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.ENGRAVED)); + public static final RegSupplier CRACKED_STONE_TABLET = register("cracked_stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.ENGRAVED)); + + private static final Supplier VIGIL_CANDLE_PROPERTIES = () -> BlockBehaviour.Properties.of().noOcclusion().lightLevel(VigilCandleBlock.LIGHT_EMISSION).sound(SoundType.METAL).pushReaction(PushReaction.DESTROY); + public static final RegSupplier VIGIL_CANDLE = register("vigil_candle", () -> new VigilCandleBlock(VIGIL_CANDLE_PROPERTIES.get())); + public static final Map> COLORED_VIGIL_CANDLES = registerColored("vigil_candle", color -> new VigilCandleBlock(VIGIL_CANDLE_PROPERTIES.get().mapColor(color))); + + public static final RegSupplier BURIAL_DIRT = register("burial_dirt", () -> new BurialDirtBlock(BlockBehaviour.Properties.copy(Blocks.DIRT))); + + public static Stream> vigilCandles() { + return Stream.of( + Stream.of(VIGIL_CANDLE), + COLORED_VIGIL_CANDLES.entrySet().stream() + .sorted(Map.Entry.comparingByKey()) + .map(Map.Entry::getValue) + ).flatMap(Function.identity()); + } + + public static Map> registerColored(String baseName, Function factory) { + return DyeColors.supported().collect(Collectors.toMap( + it -> it, + color -> register(color.getSerializedName() + "_" + baseName, () -> factory.apply(color)) + )); + } + + public static RegSupplier register(String name, Supplier block, Function item) { + RegSupplier register = registerBlock(modLoc(name), block); + registerItem(modLoc(name), () -> item.apply(register.get())); + return register; + } + + public static RegSupplier register(String name, Supplier block) { + return register(name, block, DGBlocks::createBlockItem); + } + + private static BlockItem createBlockItem(final Block block) { + return new BlockItem(Objects.requireNonNull(block), new Item.Properties()); + } + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGEffects.java b/common/src/main/java/galena/doom_and_gloom/index/DGEffects.java new file mode 100644 index 00000000..e1bebe10 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGEffects.java @@ -0,0 +1,20 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerEffect; + +import galena.doom_and_gloom.content.effect.FogEffect; +import galena.doom_and_gloom.content.effect.WardingEffect; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.minecraft.world.effect.MobEffect; + +public class DGEffects { + + public static final RegSupplier FOG = registerEffect(modLoc("fog"), FogEffect::new); + public static final RegSupplier WARDING = registerEffect(modLoc("warding"), WardingEffect::new); + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java new file mode 100644 index 00000000..ba3e9cd9 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java @@ -0,0 +1,32 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + +import galena.doom_and_gloom.content.entity.DirtMound; +import galena.doom_and_gloom.content.entity.holler.Holler; +import java.util.function.Supplier; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; + +public class DGEntityTypes { + + public static final RegSupplier> HOLLER = register("holler", () -> + EntityType.Builder.of(Holler::new, MobCategory.MONSTER).sized(0.4F, 0.8F).clientTrackingRange(8).updateInterval(2) + ); + + public static final RegSupplier> DIRT_MOUND = register("dirt_mound", () -> + EntityType.Builder.of(DirtMound::new, MobCategory.MISC).sized(0.8F, 0.25F) + ); + + private static RegSupplier> register(String name, Supplier> type) { + return RegHelper.registerEntityType(modLoc(name), () -> type.get().build(name)); + } + + public static void init() { + // Loads this class + } + +} diff --git a/src/main/java/galena/doom_and_gloom/index/OItemTiers.java b/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java similarity index 77% rename from src/main/java/galena/doom_and_gloom/index/OItemTiers.java rename to common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java index 21244ae2..94df123e 100644 --- a/src/main/java/galena/doom_and_gloom/index/OItemTiers.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java @@ -5,8 +5,9 @@ import net.minecraft.world.item.crafting.Ingredient; import org.jetbrains.annotations.NotNull; -public enum OItemTiers implements Tier { - LEAD(0, 150, 7.0F, 1.5F, 8, () -> Ingredient.of(OTags.Items.INGOTS_LEAD)); +// TODO remove and reference oreganized's lead item tier with a fallback? +public enum DGItemTiers implements Tier { + LEAD(0, 150, 7.0F, 1.5F, 8, () -> Ingredient.of(DGTags.Items.INGOTS_LEAD)); private final int level; private final int durability; @@ -15,7 +16,7 @@ public enum OItemTiers implements Tier { private final int enchantmentValue; private final Supplier repairIngredient; - OItemTiers(int level, int durability, float speed, float damage, int enchantmentValue, Supplier repairIngredient) { + DGItemTiers(int level, int durability, float speed, float damage, int enchantmentValue, Supplier repairIngredient) { this.level = level; this.durability = durability; this.speed = speed; diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java new file mode 100644 index 00000000..b3480500 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -0,0 +1,35 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + +import galena.doom_and_gloom.content.item.BushHammerItem; +import galena.doom_and_gloom.content.item.HammerAndChiselItem; + +import java.util.function.Supplier; + +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.world.item.*; + +public class DGItems { + + // Discs + public static final RegSupplier MUSIC_DISC_AFTERLIFE = register("music_disc_afterlife", () -> PlatHelper.newMusicDisc(13, DGSoundEvents.MUSIC_DISC_AFTERLIFE, new Item.Properties().stacksTo(1).rarity(Rarity.RARE), 155)); + + // Crafting Materials + public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> new BushHammerItem(DGItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); + public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); + + // Misc + public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new SpawnEggItem(DGEntityTypes.HOLLER.get(), 0x84EED2, 0x24352F, new Item.Properties())); + + private static RegSupplier register(String name, Supplier factory) { + return RegHelper.registerItem(modLoc(name), factory); + } + + public static void init() { + // Loads this class + } + +} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGParticleTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGParticleTypes.java new file mode 100644 index 00000000..1c9bd6b3 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGParticleTypes.java @@ -0,0 +1,20 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerParticle; + +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.minecraft.core.particles.SimpleParticleType; + +public class DGParticleTypes { + + public static final RegSupplier BONE_FRAGMENT = registerParticle(modLoc("bone_fragment")); + public static final RegSupplier FOG = registerParticle(modLoc("fog")); + public static final RegSupplier FOG_WATER = registerParticle(modLoc("fog_water")); + public static final RegSupplier HOLLERING_SOUL = registerParticle(modLoc("hollering_soul")); + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java new file mode 100644 index 00000000..33e45464 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java @@ -0,0 +1,25 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + +import java.util.HashSet; +import java.util.function.Supplier; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.ai.village.poi.PoiType; + +public class DGPoi { + + public static final ResourceKey GRAVETENDER_POI_KEY = ResourceKey.create(Registries.POINT_OF_INTEREST_TYPE, + modLoc("gravetender")); + + public static final Supplier GRAVETENDER_POI = RegHelper.registerPOI(modLoc("gravetender"), + () -> new PoiType(new HashSet<>(DGBlocks.SEPULCHER.get().getStateDefinition().getPossibleStates()), + 1, 1)); + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGSoundEvents.java b/common/src/main/java/galena/doom_and_gloom/index/DGSoundEvents.java new file mode 100644 index 00000000..41fd65f3 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGSoundEvents.java @@ -0,0 +1,47 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerSound; + +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.minecraft.sounds.SoundEvent; + +public class DGSoundEvents { + + public static final RegSupplier MUSIC_DISC_AFTERLIFE = registerSound(modLoc("music.disc.afterlife")); + + public static final RegSupplier BONE_PILE_BREAK = registerSound(modLoc("block.bone_pile.break")); + public static final RegSupplier BONE_PILE_STEP = registerSound(modLoc("block.bone_pile.step")); + public static final RegSupplier BONE_PILE_FALL = registerSound(modLoc("block.bone_pile.fall")); + public static final RegSupplier BONE_PILE_HIT = registerSound(modLoc("block.bone_pile.hit")); + public static final RegSupplier BONE_PILE_PLACE = registerSound(modLoc("block.bone_pile.place")); + + public static final RegSupplier SEPULCHER_BREAK = registerSound(modLoc("block.sepulcher.break")); + public static final RegSupplier SEPULCHER_STEP = registerSound(modLoc("block.sepulcher.step")); + public static final RegSupplier SEPULCHER_FALL = registerSound(modLoc("block.sepulcher.fall")); + public static final RegSupplier SEPULCHER_HIT = registerSound(modLoc("block.sepulcher.hit")); + public static final RegSupplier SEPULCHER_PLACE = registerSound(modLoc("block.sepulcher.place")); + public static final RegSupplier SEPULCHER_CORPSE_STUFFED = registerSound(modLoc("block.sepulcher.corpse_stuffed")); + public static final RegSupplier SEPULCHER_FILLED = registerSound(modLoc("block.sepulcher.filled")); + public static final RegSupplier SEPULCHER_ROTTING = registerSound(modLoc("block.sepulcher.rotting")); + public static final RegSupplier SEPULCHER_SEALING = registerSound(modLoc("block.sepulcher.sealing")); + public static final RegSupplier SEPULCHER_UNSEALING = registerSound(modLoc("block.sepulcher.unsealing")); + public static final RegSupplier SEPULCHER_HARVEST = registerSound(modLoc("block.sepulcher.harvest")); + + //TODO: add these 2 + public static final RegSupplier GRAVETENDER_WORK = registerSound(modLoc("entity.villager.work_gravetender")); + + public static final RegSupplier STONE_TABLET_ENGRAVE = registerSound(modLoc("block.stone_tablet.engrave")); + + public static final RegSupplier HOLLER_DEATH = registerSound(modLoc("entity.holler_death")); + public static final RegSupplier HOLLER_HURTS = registerSound(modLoc("entity.holler_hurts")); + public static final RegSupplier HOLLER_HOLLERS = registerSound(modLoc("entity.holler_hollers")); + public static final RegSupplier HOLLER_SHRIEKS = registerSound(modLoc("entity.holler_shrieks")); + + public static final RegSupplier FOG_AMBIENCE = registerSound(modLoc("ambient.fog")); + + public static void init() { + // Loads this class + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java new file mode 100644 index 00000000..f508e2cc --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java @@ -0,0 +1,11 @@ +package galena.doom_and_gloom.index; + +import net.minecraft.world.level.block.SoundType; +import net.minecraftforge.common.util.ForgeSoundType; + +public class DGSoundTypes { + + public static final SoundType BONE_PILE = new ForgeSoundType(1.5F, 1.0F, DGSoundEvents.BONE_PILE_BREAK, DGSoundEvents.BONE_PILE_STEP, DGSoundEvents.BONE_PILE_PLACE, DGSoundEvents.BONE_PILE_HIT, DGSoundEvents.BONE_PILE_FALL); + public static final SoundType SEPULCHER = new ForgeSoundType(1.0F, 1.0F, DGSoundEvents.SEPULCHER_BREAK, DGSoundEvents.SEPULCHER_STEP, DGSoundEvents.SEPULCHER_PLACE, DGSoundEvents.SEPULCHER_HIT, DGSoundEvents.SEPULCHER_FALL); + +} diff --git a/src/main/java/galena/doom_and_gloom/index/OTags.java b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java similarity index 69% rename from src/main/java/galena/doom_and_gloom/index/OTags.java rename to common/src/main/java/galena/doom_and_gloom/index/DGTags.java index 1491b7ea..942503ac 100644 --- a/src/main/java/galena/doom_and_gloom/index/OTags.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java @@ -10,22 +10,24 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.versions.forge.ForgeVersion; -public class OTags { +public class DGTags { public static class Items { - public static final TagKey INGOTS_SILVER = forgeTag("ingots/silver"); - public static final TagKey INGOTS_LEAD = forgeTag("ingots/lead"); + public static final TagKey INGOTS_SILVER = loaderTag("ingots/silver"); + public static final TagKey INGOTS_LEAD = loaderTag("ingots/lead"); - public static final TagKey TOOLS_BUSH_HAMMER = forgeTag("tools/bush_hammer"); + public static final TagKey TOOLS_BUSH_HAMMER = tag("tools/bush_hammer"); public static final TagKey VIGIL_CANDLES = tag("vigil_candles"); private static TagKey tag(String name) { - return ItemTags.create(DoomAndGloom.modLoc(name)); + return TagKey.create(Registries.ITEM, DoomAndGloom.modLoc(name)); } - private static TagKey forgeTag(String name) { - return ItemTags.create(new ResourceLocation(ForgeVersion.MOD_ID, name)); + + private static TagKey loaderTag(String name) { + // TODO move to c space and reflect forge tags + return TagKey.create(Registries.ITEM, new ResourceLocation("forge", name)); } } @@ -34,16 +36,13 @@ public static class Blocks { public static final TagKey MINEABLE_WITH_BUSH_HAMMER = tag("mineable/bush_hammer"); public static final TagKey ENGRAVABLE = tag("engravable"); public static final TagKey ENGRAVABLE_NEEDS_PLATE = tag("engravable/needs_plate"); - public static final TagKey HEAT_SOURCE = BlockTags.create(new ResourceLocation("oreganized", "fire_source")); + public static final TagKey HEAT_SOURCE = TagKey.create(Registries.BLOCK, new ResourceLocation("oreganized", "fire_source")); public static final TagKey VIGIL_CANDLES = tag("vigil_candles"); public static final TagKey CAN_TURN_INTO_BURIAL_DIRT = tag("burial_dirt_convertible"); public static final TagKey GRAVETENDER_LIGHTABLE = tag("gravetender_lightables"); private static TagKey tag(String name) { - return BlockTags.create(DoomAndGloom.modLoc(name)); - } - private static TagKey forgeTag(String name) { - return BlockTags.create(new ResourceLocation(ForgeVersion.MOD_ID, name)); + return TagKey.create(Registries.BLOCK, DoomAndGloom.modLoc(name)); } } diff --git a/src/main/java/galena/doom_and_gloom/index/OVillagerTrades.java b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java similarity index 92% rename from src/main/java/galena/doom_and_gloom/index/OVillagerTrades.java rename to common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java index ef764485..64b20ad6 100644 --- a/src/main/java/galena/doom_and_gloom/index/OVillagerTrades.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java @@ -20,18 +20,17 @@ import net.minecraftforge.common.BasicItemListing; import net.minecraftforge.event.village.VillagerTradesEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import org.jetbrains.annotations.Nullable; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) -public class OVillagerTrades { +@EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = EventBusSubscriber.Bus.FORGE) +public class DGVillagerTrades { @SubscribeEvent public static void tadeEvent(VillagerTradesEvent event) { VillagerProfession type = event.getType(); - if (type == OVillagerTypes.GRAVETENDER.get()) { + if (type == DGVillagerTypes.GRAVETENDER.get()) { addGravetenderTrades(event); } } @@ -72,7 +71,7 @@ private static void addGravetenderTrades(VillagerTradesEvent event) { trades.put(2, List.of( new ItemsForEmeralds(Items.GOLD_NUGGET, 1, 5, 8, 5), - new TagForEmeralds(OTags.Items.VIGIL_CANDLES, 2, 1, 12, 10, 2F), + new TagForEmeralds(DGTags.Items.VIGIL_CANDLES, 2, 1, 12, 10, 2F), new ItemsForEmeralds(Items.FLOWER_POT, 2, 1, 12, 5) )); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java new file mode 100644 index 00000000..92cf7c3a --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java @@ -0,0 +1,32 @@ +package galena.doom_and_gloom.index; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + +import com.google.common.collect.ImmutableSet; +import java.util.function.Supplier; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.VillagerProfession; + +public class DGVillagerTypes { + + public static final RegSupplier GRAVETENDER = register("gravetender", DGPoi.GRAVETENDER_POI_KEY, DGSoundEvents.GRAVETENDER_WORK); + + private static RegSupplier register(String name, ResourceKey jobSite, Supplier workSound) { + Supplier factory = () -> new VillagerProfession(name, + (holder) -> holder.is(jobSite), + (holder) -> holder.is(jobSite), + ImmutableSet.of(), ImmutableSet.of(), workSound.get()); + + return RegHelper.register(modLoc(name), factory, Registries.VILLAGER_PROFESSION); + } + + public static void init() { + // Loads this class + } + +} diff --git a/src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java b/common/src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java similarity index 91% rename from src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java rename to common/src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java index 364e4776..45d280ea 100644 --- a/src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java +++ b/common/src/main/java/galena/doom_and_gloom/mixin/EntityMixin.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.mixin; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import galena.doom_and_gloom.index.OBlocks; +import galena.doom_and_gloom.index.DGBlocks; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; @@ -25,7 +25,7 @@ public abstract class EntityMixin { ) public boolean isSprinting(boolean original) { return original || ( - this.level.getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).is(OBlocks.BONE_PILE.get()) + this.level.getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).is(DGBlocks.BONE_PILE.get()) && (this.getDeltaMovement().x != 0.0 || this.getDeltaMovement().z != 0.0) ); } diff --git a/src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java b/common/src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java similarity index 88% rename from src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java rename to common/src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java index 486a016a..35d817eb 100644 --- a/src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java +++ b/common/src/main/java/galena/doom_and_gloom/mixin/client/LevelRendererMixin.java @@ -3,7 +3,7 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.mojang.blaze3d.vertex.PoseStack; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OEffects; +import galena.doom_and_gloom.index.DGEffects; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.resources.ResourceLocation; @@ -30,7 +30,7 @@ public class LevelRendererMixin { ) private void disableClouds(PoseStack pose, Matrix4f matrix, float p_254364_, double p_253843_, double p_253663_, double p_253795_, CallbackInfo ci) { var player = Minecraft.getInstance().player; - if (player != null && player.hasEffect(OEffects.FOG.get())) { + if (player != null && player.hasEffect(DGEffects.FOG.get())) { ci.cancel(); } } @@ -41,7 +41,7 @@ private void disableClouds(PoseStack pose, Matrix4f matrix, float p_254364_, dou ) private ResourceLocation replaceSun(ResourceLocation original) { var player = Minecraft.getInstance().player; - if (player != null && player.hasEffect(OEffects.FOG.get())) return SUN_LOCATION; + if (player != null && player.hasEffect(DGEffects.FOG.get())) return SUN_LOCATION; else return original; } @@ -51,7 +51,7 @@ private ResourceLocation replaceSun(ResourceLocation original) { ) private ResourceLocation replaceMoon(ResourceLocation original) { var player = Minecraft.getInstance().player; - if (player != null && player.hasEffect(OEffects.FOG.get())) return MOON_LOCATION; + if (player != null && player.hasEffect(DGEffects.FOG.get())) return MOON_LOCATION; else return original; } @@ -61,7 +61,7 @@ private ResourceLocation replaceMoon(ResourceLocation original) { ) private float hideStars(float original) { var player = Minecraft.getInstance().player; - if (player != null && player.hasEffect(OEffects.FOG.get())) return 0F; + if (player != null && player.hasEffect(DGEffects.FOG.get())) return 0F; else return original; } diff --git a/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerAccessor.java b/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerAccessor.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerAccessor.java rename to common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerAccessor.java diff --git a/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java b/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java rename to common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java diff --git a/common/src/main/java/galena/doom_and_gloom/network/DGNetwork.java b/common/src/main/java/galena/doom_and_gloom/network/DGNetwork.java new file mode 100644 index 00000000..188fb446 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/network/DGNetwork.java @@ -0,0 +1,25 @@ +package galena.doom_and_gloom.network; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.network.packet.EngraveStoneTabletPacket; +import galena.doom_and_gloom.network.packet.SepulcherConsumesDeathPacket; +import galena.doom_and_gloom.network.packet.SepulcherRotsPacket; +import galena.doom_and_gloom.network.packet.StoneTabletUpdatePacket; +import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; +import net.mehvahdjukaar.moonlight.api.platform.network.NetworkDir; + +public class DGNetwork { + + public static final ChannelHandler CHANNEL = ChannelHandler.builder(DoomAndGloom.MOD_ID) + .version(2) + .register(NetworkDir.PLAY_TO_CLIENT, SepulcherConsumesDeathPacket.class, SepulcherConsumesDeathPacket::from) + .register(NetworkDir.PLAY_TO_CLIENT, SepulcherRotsPacket.class, SepulcherRotsPacket::from) + .register(NetworkDir.PLAY_TO_SERVER, StoneTabletUpdatePacket.class, StoneTabletUpdatePacket::from) + .register(NetworkDir.PLAY_TO_CLIENT, EngraveStoneTabletPacket.class, EngraveStoneTabletPacket::from) + .build(); + + public static void register() { + // Loads this class + } + +} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java new file mode 100644 index 00000000..bd8eb811 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java @@ -0,0 +1,26 @@ +package galena.doom_and_gloom.network.packet; + +import galena.doom_and_gloom.content.block.StoneTabletBlock; +import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; +import net.mehvahdjukaar.moonlight.api.platform.network.Message; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; + +public record EngraveStoneTabletPacket(BlockPos pos) implements Message { + + @Override + public void writeToBuffer(FriendlyByteBuf buffer) { + buffer.writeBlockPos(pos); + } + + @Override + public void handle(ChannelHandler.Context context) { + StoneTabletBlock.openScreen(pos); + } + + public static EngraveStoneTabletPacket from(FriendlyByteBuf buffer) { + var pos = buffer.readBlockPos(); + return new EngraveStoneTabletPacket(pos); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java new file mode 100644 index 00000000..c9c752b1 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java @@ -0,0 +1,26 @@ +package galena.doom_and_gloom.network.packet; + +import galena.doom_and_gloom.content.block.SepulcherBlock; +import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; +import net.mehvahdjukaar.moonlight.api.platform.network.Message; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.phys.Vec3; + +public record SepulcherConsumesDeathPacket(Vec3 at) implements Message { + + @Override + public void writeToBuffer(FriendlyByteBuf buffer) { + buffer.writeVector3f(at.toVector3f()); + } + + @Override + public void handle(ChannelHandler.Context context) { + SepulcherBlock.spawnConsumeParticles(at); + } + + public static SepulcherConsumesDeathPacket from(FriendlyByteBuf buffer) { + var at = new Vec3(buffer.readVector3f()); + return new SepulcherConsumesDeathPacket(at); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java new file mode 100644 index 00000000..43f4abc8 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java @@ -0,0 +1,26 @@ +package galena.doom_and_gloom.network.packet; + +import galena.doom_and_gloom.content.block.SepulcherBlock; +import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; +import net.mehvahdjukaar.moonlight.api.platform.network.Message; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; + +public record SepulcherRotsPacket(BlockPos at) implements Message { + + @Override + public void writeToBuffer(FriendlyByteBuf buffer) { + buffer.writeBlockPos(at); + } + + @Override + public void handle(ChannelHandler.Context context) { + SepulcherBlock.spawnRottingParticles(at); + } + + public static SepulcherRotsPacket from(FriendlyByteBuf buffer) { + var at = buffer.readBlockPos(); + return new SepulcherRotsPacket(at); + } + +} diff --git a/src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java similarity index 61% rename from src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java rename to common/src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java index 2b60a3af..2cccc2c6 100644 --- a/src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/StoneTabletUpdatePacket.java @@ -1,12 +1,13 @@ package galena.doom_and_gloom.network.packet; import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OSoundEvents; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGSoundEvents; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.function.Supplier; import java.util.stream.Stream; +import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; +import net.mehvahdjukaar.moonlight.api.platform.network.Message; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; @@ -16,11 +17,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraftforge.network.NetworkEvent; -public record StoneTabletUpdatePacket(BlockPos pos, String[] lines) { +public record StoneTabletUpdatePacket(BlockPos pos, String[] lines) implements Message { - public void write(FriendlyByteBuf buffer) { + @Override + public void writeToBuffer(FriendlyByteBuf buffer) { buffer.writeBlockPos(pos); buffer.writeVarInt(lines.length); for (var line : lines) { @@ -28,24 +29,21 @@ public void write(FriendlyByteBuf buffer) { } } - public void handle(Supplier contextSupplier) { - var context = contextSupplier.get(); - context.enqueueWork(() -> { - // text filtering yay - var sender = context.getSender(); - CompletableFuture.supplyAsync(() -> - Stream.of(lines) - .map(ChatFormatting::stripFormatting) - .map(innerList -> - sender.connection.filterTextPacket(innerList)) - .map(CompletableFuture::join) - .toList() - ).thenAcceptAsync((l) -> { - this.updateSignText(sender, l); - }, sender.server); - }); + @Override + public void handle(ChannelHandler.Context context) { + if (!(context.getSender() instanceof ServerPlayer sender)) return; - context.setPacketHandled(true); + // text filtering yay + CompletableFuture.supplyAsync(() -> + Stream.of(lines) + .map(ChatFormatting::stripFormatting) + .map(innerList -> + sender.connection.filterTextPacket(innerList)) + .map(CompletableFuture::join) + .toList() + ).thenAcceptAsync((l) -> { + this.updateSignText(sender, l); + }, sender.server); } private void updateSignText(ServerPlayer player, List filteredText) { @@ -57,8 +55,8 @@ private void updateSignText(ServerPlayer player, List filteredText te.updateStoneTabletText(player, filteredText); if (engraved) { - level.setBlockAndUpdate(pos, OBlocks.ENGRAVED_STONE_TABLET.get().withPropertiesOf(level.getBlockState(pos))); - level.playSound(null, pos, OSoundEvents.STONE_TABLET_ENGRAVE.get(), + level.setBlockAndUpdate(pos, DGBlocks.ENGRAVED_STONE_TABLET.get().withPropertiesOf(level.getBlockState(pos))); + level.playSound(null, pos, DGSoundEvents.STONE_TABLET_ENGRAVE.get(), SoundSource.BLOCKS, 1.0f, 1.0f); level.gameEvent(player, GameEvent.BLOCK_CHANGE, pos); diff --git a/src/main/resources/assets/doom_and_gloom/lang/de_de.json b/common/src/main/resources/assets/doom_and_gloom/lang/de_de.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/lang/de_de.json rename to common/src/main/resources/assets/doom_and_gloom/lang/de_de.json diff --git a/src/main/resources/assets/doom_and_gloom/lang/pt_br.json b/common/src/main/resources/assets/doom_and_gloom/lang/pt_br.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/lang/pt_br.json rename to common/src/main/resources/assets/doom_and_gloom/lang/pt_br.json diff --git a/src/main/resources/assets/doom_and_gloom/logo.png b/common/src/main/resources/assets/doom_and_gloom/logo.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/logo.png rename to common/src/main/resources/assets/doom_and_gloom/logo.png diff --git a/src/main/resources/assets/doom_and_gloom/models/block/sepulcher.json b/common/src/main/resources/assets/doom_and_gloom/models/block/sepulcher.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/sepulcher.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/sepulcher.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/sepulcher_seal.json b/common/src/main/resources/assets/doom_and_gloom/models/block/sepulcher_seal.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/sepulcher_seal.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/sepulcher_seal.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet.json b/common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_floor.json b/common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_floor.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_floor.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_floor.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_wall.json b/common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_wall.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_wall.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/template/stone_tablet_wall.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double_ceiling.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double_ceiling.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double_ceiling.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_double_ceiling.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple_ceiling.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple_ceiling.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple_ceiling.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_quadruple_ceiling.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single_ceiling.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single_ceiling.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single_ceiling.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_single_ceiling.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple.json diff --git a/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple_ceiling.json b/common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple_ceiling.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple_ceiling.json rename to common/src/main/resources/assets/doom_and_gloom/models/block/vigil_candle_triple_ceiling.json diff --git a/src/main/resources/assets/doom_and_gloom/particles/bone_fragment.json b/common/src/main/resources/assets/doom_and_gloom/particles/bone_fragment.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/particles/bone_fragment.json rename to common/src/main/resources/assets/doom_and_gloom/particles/bone_fragment.json diff --git a/src/main/resources/assets/doom_and_gloom/particles/fog.json b/common/src/main/resources/assets/doom_and_gloom/particles/fog.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/particles/fog.json rename to common/src/main/resources/assets/doom_and_gloom/particles/fog.json diff --git a/src/main/resources/assets/doom_and_gloom/particles/fog_water.json b/common/src/main/resources/assets/doom_and_gloom/particles/fog_water.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/particles/fog_water.json rename to common/src/main/resources/assets/doom_and_gloom/particles/fog_water.json diff --git a/src/main/resources/assets/doom_and_gloom/particles/hollering_soul.json b/common/src/main/resources/assets/doom_and_gloom/particles/hollering_soul.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/particles/hollering_soul.json rename to common/src/main/resources/assets/doom_and_gloom/particles/hollering_soul.json diff --git a/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.fsh b/common/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.fsh similarity index 100% rename from src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.fsh rename to common/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.fsh diff --git a/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.json b/common/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.json similarity index 100% rename from src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.json rename to common/src/main/resources/assets/doom_and_gloom/shaders/core/rendertype_entity_translucent_additive.json diff --git a/src/main/resources/assets/doom_and_gloom/sounds/ambient/fog_ambience.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/ambient/fog_ambience.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/ambient/fog_ambience.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/ambient/fog_ambience.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_4.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_4.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_4.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_break_4.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/bone_pile_step_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_break_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_corpse_stuffed_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_filled_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_harvest_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_rotting_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_sealing.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_sealing.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_sealing.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_sealing.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_4.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_4.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_4.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_step_4.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_unsealing.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_unsealing.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_unsealing.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/block/sepulcher_unsealing.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_dies_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_3.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_3.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_3.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hollers_3.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_hurts_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_0.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_0.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_0.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_0.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_1.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_1.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_1.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_1.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_2.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_2.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_2.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/entity/holler_shrieks_2.ogg diff --git a/src/main/resources/assets/doom_and_gloom/sounds/music/disc/afterlife.ogg b/common/src/main/resources/assets/doom_and_gloom/sounds/music/disc/afterlife.ogg similarity index 100% rename from src/main/resources/assets/doom_and_gloom/sounds/music/disc/afterlife.ogg rename to common/src/main/resources/assets/doom_and_gloom/sounds/music/disc/afterlife.ogg diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/amber_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/aqua_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/beige_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/black_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/blue_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/bone_pile_side.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/bone_pile_side.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/bone_pile_side.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/bone_pile_side.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/brown_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/burial_dirt.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/burial_dirt.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/burial_dirt.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/burial_dirt.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/coral_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/cyan_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_deepslate_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_deepslate_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_deepslate_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_deepslate_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_end_stone_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_end_stone_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_end_stone_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_end_stone_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_exposed_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_exposed_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_exposed_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_exposed_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_glance_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_glance_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_glance_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_glance_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_nether_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_nether_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_nether_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_nether_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_oxidized_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_oxidized_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_oxidized_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_oxidized_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_polished_blackstone_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_polished_blackstone_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_polished_blackstone_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_polished_blackstone_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_prismarine_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_prismarine_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_prismarine_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_prismarine_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_quartz_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_quartz_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_quartz_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_quartz_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_red_nether_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_red_nether_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_red_nether_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_red_nether_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_stone_bricks.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_stone_bricks.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_stone_bricks.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_stone_bricks.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_exposed_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_exposed_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_exposed_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_exposed_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_oxidized_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_oxidized_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_oxidized_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_oxidized_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_weathered_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_weathered_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_weathered_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_waxed_weathered_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_weathered_cut_copper.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_weathered_cut_copper.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_weathered_cut_copper.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved/engraved_weathered_cut_copper.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/engraved_cut_silver.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/engraved_cut_silver.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/engraved_cut_silver.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/engraved_cut_silver.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/forest_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/ginger_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/gray_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/green_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/indigo_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_blue_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/light_gray_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/lime_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/magenta_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/maroon_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/mint_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/navy_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/olive_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/orange_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/pink_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/purple_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/red_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/rose_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_1.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_1.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_1.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_1.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_2.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_2.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_2.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_2.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_3.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_3.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_3.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_3.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_4.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_4.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_4.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_4.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_5.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_5.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_5.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/sepulcher_rot_5.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/slate_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_cracked.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_cracked.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_cracked.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_cracked.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_engraved.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_engraved.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_engraved.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_engraved.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_old.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_old.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_old.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/stone_tablet_old.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/tan_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/teal_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/verdant_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/white_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png b/common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png rename to common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png.mcmeta b/common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png.mcmeta similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png.mcmeta rename to common/src/main/resources/assets/doom_and_gloom/textures/block/yellow_vigil_candle_lit.png.mcmeta diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.bbmodel b/common/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.bbmodel similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.bbmodel rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.bbmodel diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.png b/common/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.png rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/dirt_mound.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/holler.bbmodel b/common/src/main/resources/assets/doom_and_gloom/textures/entity/holler.bbmodel similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/holler.bbmodel rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/holler.bbmodel diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/holler.png b/common/src/main/resources/assets/doom_and_gloom/textures/entity/holler.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/holler.png rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/holler.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/villager/profession/gravetender.png b/common/src/main/resources/assets/doom_and_gloom/textures/entity/villager/profession/gravetender.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/villager/profession/gravetender.png rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/villager/profession/gravetender.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/entity/zombie_villager/profession/gravetender.png b/common/src/main/resources/assets/doom_and_gloom/textures/entity/zombie_villager/profession/gravetender.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/entity/zombie_villager/profession/gravetender.png rename to common/src/main/resources/assets/doom_and_gloom/textures/entity/zombie_villager/profession/gravetender.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/environment/moon_phases_fog.png b/common/src/main/resources/assets/doom_and_gloom/textures/environment/moon_phases_fog.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/environment/moon_phases_fog.png rename to common/src/main/resources/assets/doom_and_gloom/textures/environment/moon_phases_fog.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/environment/sun_fog.png b/common/src/main/resources/assets/doom_and_gloom/textures/environment/sun_fog.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/environment/sun_fog.png rename to common/src/main/resources/assets/doom_and_gloom/textures/environment/sun_fog.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/gui/tablet.png b/common/src/main/resources/assets/doom_and_gloom/textures/gui/tablet.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/gui/tablet.png rename to common/src/main/resources/assets/doom_and_gloom/textures/gui/tablet.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/gui/tablet_vertical.png b/common/src/main/resources/assets/doom_and_gloom/textures/gui/tablet_vertical.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/gui/tablet_vertical.png rename to common/src/main/resources/assets/doom_and_gloom/textures/gui/tablet_vertical.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/amber_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/amber_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/amber_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/amber_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/aqua_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/aqua_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/aqua_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/aqua_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/beige_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/beige_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/beige_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/beige_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/black_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/black_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/black_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/black_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/blue_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/blue_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/blue_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/blue_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/brown_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/brown_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/brown_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/brown_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/bush_hammer.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/bush_hammer.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/bush_hammer.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/bush_hammer.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/coral_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/coral_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/coral_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/coral_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/cracked_stone_tablet.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/cracked_stone_tablet.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/cracked_stone_tablet.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/cracked_stone_tablet.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/cyan_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/cyan_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/cyan_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/cyan_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/engraved_stone_tablet.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/engraved_stone_tablet.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/engraved_stone_tablet.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/engraved_stone_tablet.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/forest_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/forest_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/forest_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/forest_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/ginger_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/ginger_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/ginger_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/ginger_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/gray_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/gray_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/gray_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/gray_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/green_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/green_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/green_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/green_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/hammer_and_chisel.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/hammer_and_chisel.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/hammer_and_chisel.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/hammer_and_chisel.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/indigo_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/indigo_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/indigo_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/indigo_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/light_blue_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/light_blue_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/light_blue_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/light_blue_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/light_gray_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/light_gray_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/light_gray_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/light_gray_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/lime_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/lime_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/lime_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/lime_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/magenta_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/magenta_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/magenta_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/magenta_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/maroon_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/maroon_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/maroon_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/maroon_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/mint_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/mint_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/mint_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/mint_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/music_disc_afterlife.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/music_disc_afterlife.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/music_disc_afterlife.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/music_disc_afterlife.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/navy_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/navy_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/navy_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/navy_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/olive_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/olive_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/olive_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/olive_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/orange_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/orange_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/orange_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/orange_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/pink_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/pink_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/pink_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/pink_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/purple_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/purple_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/purple_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/purple_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/red_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/red_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/red_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/red_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/rose_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/rose_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/rose_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/rose_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/slate_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/slate_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/slate_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/slate_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/stone_tablet.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/stone_tablet.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/stone_tablet.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/stone_tablet.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/tan_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/tan_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/tan_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/tan_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/teal_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/teal_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/teal_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/teal_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/verdant_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/verdant_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/verdant_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/verdant_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/white_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/white_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/white_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/white_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/item/yellow_vigil_candle.png b/common/src/main/resources/assets/doom_and_gloom/textures/item/yellow_vigil_candle.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/item/yellow_vigil_candle.png rename to common/src/main/resources/assets/doom_and_gloom/textures/item/yellow_vigil_candle.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/misc/stone_tablet_text_colors.png b/common/src/main/resources/assets/doom_and_gloom/textures/misc/stone_tablet_text_colors.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/misc/stone_tablet_text_colors.png rename to common/src/main/resources/assets/doom_and_gloom/textures/misc/stone_tablet_text_colors.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/mob_effect/fog.png b/common/src/main/resources/assets/doom_and_gloom/textures/mob_effect/fog.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/mob_effect/fog.png rename to common/src/main/resources/assets/doom_and_gloom/textures/mob_effect/fog.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/mob_effect/warding.png b/common/src/main/resources/assets/doom_and_gloom/textures/mob_effect/warding.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/mob_effect/warding.png rename to common/src/main/resources/assets/doom_and_gloom/textures/mob_effect/warding.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_0.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_0.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_0.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_0.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_1.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_1.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_1.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_1.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_2.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_2.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_2.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_2.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_3.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_3.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_3.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_3.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_4.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_4.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_4.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/bone_fragment_4.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_0.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_0.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_0.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_0.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_1.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_1.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_1.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_1.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_10.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_10.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_10.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_10.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_11.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_11.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_11.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_11.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_12.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_12.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_12.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_12.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_13.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_13.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_13.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_13.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_14.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_14.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_14.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_14.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_15.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_15.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_15.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_15.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_16.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_16.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_16.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_16.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_17.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_17.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_17.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_17.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_18.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_18.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_18.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_18.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_19.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_19.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_19.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_19.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_2.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_2.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_2.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_2.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_20.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_20.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_20.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_20.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_21.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_21.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_21.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_21.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_22.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_22.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_22.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_22.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_23.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_23.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_23.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_23.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_3.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_3.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_3.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_3.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_4.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_4.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_4.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_4.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_5.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_5.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_5.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_5.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_6.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_6.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_6.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_6.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_7.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_7.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_7.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_7.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_8.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_8.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_8.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_8.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_9.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_9.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_9.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_cloud_9.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_0.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_0.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_0.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_0.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_1.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_1.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_1.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_1.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_10.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_10.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_10.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_10.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_11.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_11.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_11.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_11.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_2.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_2.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_2.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_2.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_3.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_3.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_3.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_3.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_4.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_4.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_4.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_4.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_5.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_5.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_5.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_5.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_6.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_6.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_6.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_6.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_7.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_7.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_7.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_7.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_8.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_8.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_8.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_8.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_9.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_9.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_9.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/fog_water_cloud_9.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_0.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_0.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_0.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_0.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_1.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_1.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_1.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_1.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_10.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_10.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_10.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_10.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_2.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_2.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_2.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_2.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_3.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_3.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_3.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_3.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_4.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_4.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_4.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_4.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_5.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_5.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_5.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_5.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_6.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_6.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_6.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_6.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_7.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_7.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_7.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_7.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_8.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_8.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_8.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_8.png diff --git a/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_9.png b/common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_9.png similarity index 100% rename from src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_9.png rename to common/src/main/resources/assets/doom_and_gloom/textures/particle/hollering_soul_9.png diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts new file mode 100644 index 00000000..8801d95a --- /dev/null +++ b/fabric/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("com.possible-triangle.fabric") +} + +mod { + mods.include(libs.forge.config.api.fabric) +} + +fabric { + dependOn(project(":common")) +} + +dependencies { + modApi(pack.fabric.modrinth.moonlight) + + if (!env.isCI) { + modRuntimeOnly(libs.jei.fabric) + } +} diff --git a/fabric/pack/.gitattributes b/fabric/pack/.gitattributes new file mode 100644 index 00000000..b6dd0bbb --- /dev/null +++ b/fabric/pack/.gitattributes @@ -0,0 +1 @@ +*.ogg filter=lfs diff=lfs merge=lfs -text diff --git a/fabric/pack/index.toml b/fabric/pack/index.toml new file mode 100644 index 00000000..4504767b --- /dev/null +++ b/fabric/pack/index.toml @@ -0,0 +1,16 @@ +hash-format = "sha256" + +[[files]] +file = "mods/amendments.pw.toml" +hash = "deba8bfb9a55d3a857079d3da87b24ece7223eeb3934e5cc028df48c1a7123c7" +metafile = true + +[[files]] +file = "mods/moonlight.pw.toml" +hash = "9830d4b93e2fea7e398078143efdb7a271b04a4f23565dd9b02744f2aca23647" +metafile = true + +[[files]] +file = "mods/supplementaries.pw.toml" +hash = "3135bb6ec401e951d248de79dbdf40608e362e64b89fe9e7d2e74399f3b49375" +metafile = true diff --git a/fabric/pack/mods/amendments.pw.toml b/fabric/pack/mods/amendments.pw.toml new file mode 100644 index 00000000..f561283f --- /dev/null +++ b/fabric/pack/mods/amendments.pw.toml @@ -0,0 +1,13 @@ +name = "Amendments" +filename = "amendments-1.20-2.2.3-fabric.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/6iTJugQR/versions/JjsSf9MI/amendments-1.20-2.2.3-fabric.jar" +hash-format = "sha512" +hash = "580191ef9b27e0ee4472e3163af8b4a38c89a00500a2c0e7813777859989f6f24648d26383346ea18a8112be661f2dcb5c1e9088f8996079714d5cc66cc3bd60" + +[update] +[update.modrinth] +mod-id = "6iTJugQR" +version = "JjsSf9MI" diff --git a/fabric/pack/mods/moonlight.pw.toml b/fabric/pack/mods/moonlight.pw.toml new file mode 100644 index 00000000..6297eeae --- /dev/null +++ b/fabric/pack/mods/moonlight.pw.toml @@ -0,0 +1,13 @@ +name = "Moonlight Lib" +filename = "moonlight-1.20-2.16.15-fabric.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/twkfQtEc/versions/kD8s6Jem/moonlight-1.20-2.16.15-fabric.jar" +hash-format = "sha512" +hash = "51a3114127357226fc62d36c9ceee3d2d12a2f46ce5f2f648cb0bbb3954f1e07246b38ac6aaa4002f3c85501be4f8b74290f12596dbc322b7e440cf2158042fd" + +[update] +[update.modrinth] +mod-id = "twkfQtEc" +version = "kD8s6Jem" diff --git a/fabric/pack/mods/supplementaries.pw.toml b/fabric/pack/mods/supplementaries.pw.toml new file mode 100644 index 00000000..5f44e59d --- /dev/null +++ b/fabric/pack/mods/supplementaries.pw.toml @@ -0,0 +1,13 @@ +name = "Supplementaries" +filename = "supplementaries-1.20-3.1.41-fabric.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/fFEIiSDQ/versions/RWLHsKXP/supplementaries-1.20-3.1.41-fabric.jar" +hash-format = "sha512" +hash = "63f31edea9eadb7af4a1a221ad950128c91a1c642b1418531d5fb98dd1360216b71e9183f4ccb76e9d0fcde0f5b8fd6a1432b3af103e1c5b44798e2b35acf4ff" + +[update] +[update.modrinth] +mod-id = "fFEIiSDQ" +version = "RWLHsKXP" diff --git a/fabric/pack/pack.toml b/fabric/pack/pack.toml new file mode 100644 index 00000000..3d498f4d --- /dev/null +++ b/fabric/pack/pack.toml @@ -0,0 +1,11 @@ +name = "doom-gloom" +pack-format = "packwiz:1.1.0" + +[index] +file = "index.toml" +hash-format = "sha256" +hash = "104c0c7cb8cf13484e3c911dd8ca9537c67f53f5f14463d3ca4f0b5b4e5d55c2" + +[versions] +fabric = "0.17.3" +minecraft = "1.20.1" diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java new file mode 100644 index 00000000..2f04b972 --- /dev/null +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -0,0 +1,13 @@ +package galena.doom_and_gloom.fabric; + +import galena.doom_and_gloom.client.DoomAndGloomClient; +import net.fabricmc.api.ClientModInitializer; + +public class FabricClientEntrypoint implements ClientModInitializer { + + @Override + public void onInitializeClient() { + DoomAndGloomClient.init(); + } + +} diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java new file mode 100644 index 00000000..76794b53 --- /dev/null +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java @@ -0,0 +1,22 @@ +package galena.doom_and_gloom.fabric; + +import fuzs.forgeconfigapiport.api.config.v2.ForgeConfigRegistry; +import galena.doom_and_gloom.DGConfig; +import galena.doom_and_gloom.DoomAndGloom; +import net.fabricmc.api.ModInitializer; + +public class FabricEntrypoint implements ModInitializer { + + @Override + public void onInitialize() { + DoomAndGloom.init(); + registerConfigs(); + } + + private void registerConfigs() { + DGConfig.register((type, spec) -> + ForgeConfigRegistry.INSTANCE.register(DoomAndGloom.MOD_ID, type, spec) + ); + } + +} diff --git a/src/main/resources/doom_and_gloom.mixins.json b/fabric/src/main/resources/doom_and_gloom.mixins.json similarity index 89% rename from src/main/resources/doom_and_gloom.mixins.json rename to fabric/src/main/resources/doom_and_gloom.mixins.json index 2d20838d..619da953 100644 --- a/src/main/resources/doom_and_gloom.mixins.json +++ b/fabric/src/main/resources/doom_and_gloom.mixins.json @@ -14,6 +14,5 @@ "server": [], "injectors": { "defaultRequire": 1 - }, - "refmap": "${mod_id}.refmap.json" + } } diff --git a/src/main/resources/doom_and_gloom.png b/fabric/src/main/resources/doom_and_gloom.png similarity index 100% rename from src/main/resources/doom_and_gloom.png rename to fabric/src/main/resources/doom_and_gloom.png diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json new file mode 100644 index 00000000..0da715de --- /dev/null +++ b/fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "id": "${mod_id}", + "version": "${mod_version}", + "name": "${mod_name}", + "description": "An addon-mod for Oreganized adding Halloween-themed content", + "authors": [ + "${mod_author}" + ], + "contact": { + "sources": "https://github.com/${repository}", + "issues": "https://github.com/${repository}/issues" + }, + "license": "https://github.com/${repository}/blob/1.20.x/LICENSE.txt", + "environment": "*", + "accessWidener": "nirvana.accesswidener", + "entrypoints": { + "main": [ + "galena.doom_and_gloom.fabric.FabricEntrypoint" + ], + "client": [ + "galena.doom_and_gloom.fabric.FabricClientEntrypoint" + ] + }, + "mixins": [ + "${mod_id}.mixins.json" + ], + "depends": { + "fabricloader": ">=0.16", + "fabric-api": "*", + "minecraft": ">=1.20.1", + "java": ">=17" + } +} diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts new file mode 100644 index 00000000..aff43a46 --- /dev/null +++ b/forge/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + id("com.possible-triangle.forge") + alias(libs.plugins.parchment) +} + +mod { + mods.include(libs.galena.hats) + mods.include(libs.multikulti.datagen.fix) +} + +forge { + dependOn(project(":common")) + + mappingChannel = "parchment" + mappingVersion = "2023.09.03-1.20.1" + + enableMixins() + + dataGen { + existing("blueprint") + } +} + +dependencies { + // Compatibilities + modImplementation(pack.forge.modrinth.moonlight) + modImplementation(pack.forge.modrinth.supplementaries) + modImplementation(pack.forge.modrinth.amendments) + + if (!env.isCI) { + modRuntimeOnly(libs.oreganized) + modRuntimeOnly(libs.dye.depot) + modRuntimeOnly(libs.jei.forge) + } +} diff --git a/forge/pack/index.toml b/forge/pack/index.toml new file mode 100644 index 00000000..2d042d3c --- /dev/null +++ b/forge/pack/index.toml @@ -0,0 +1,16 @@ +hash-format = "sha256" + +[[files]] +file = "mods/amendments.pw.toml" +hash = "4eb0979fd7cada4b6e3dd3fec8ced79ee0892e2b7ffba6466430387cd520acee" +metafile = true + +[[files]] +file = "mods/moonlight.pw.toml" +hash = "59ddb20cb1fddab5a1a0349e0452f5100c2bec8c51e746658553f92dc8239512" +metafile = true + +[[files]] +file = "mods/supplementaries.pw.toml" +hash = "3848bc11aa2acabef74eb85ca74b8ca8e23733b7fcbc77293165c5c7161e3288" +metafile = true diff --git a/forge/pack/mods/amendments.pw.toml b/forge/pack/mods/amendments.pw.toml new file mode 100644 index 00000000..ee39b5a0 --- /dev/null +++ b/forge/pack/mods/amendments.pw.toml @@ -0,0 +1,13 @@ +name = "Amendments" +filename = "amendments-1.20-2.2.2.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/6iTJugQR/versions/NCs7sRuH/amendments-1.20-2.2.2.jar" +hash-format = "sha512" +hash = "ed6ebc3ead0481c7e195ec39cc34a38470a572f5f24825a6599245da2513a6a0bce96f4b6e461e6f0ded2b5029d2179a2e62be5518aed49d4f54c420ca4471d0" + +[update] +[update.modrinth] +mod-id = "6iTJugQR" +version = "NCs7sRuH" diff --git a/forge/pack/mods/moonlight.pw.toml b/forge/pack/mods/moonlight.pw.toml new file mode 100644 index 00000000..7cb597d1 --- /dev/null +++ b/forge/pack/mods/moonlight.pw.toml @@ -0,0 +1,13 @@ +name = "Moonlight Lib" +filename = "moonlight-1.20-2.16.15-forge.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/twkfQtEc/versions/q6pVkPDR/moonlight-1.20-2.16.15-forge.jar" +hash-format = "sha512" +hash = "9eba41fa2bef4558bfe7a3a31b0b3ae2484eba87a2f6feda6d4e0c18d9074b08bb0a5637446a9df2a87171a27bb84af703a716cfc0f49fab2882da4ffdf2a76c" + +[update] +[update.modrinth] +mod-id = "twkfQtEc" +version = "q6pVkPDR" diff --git a/forge/pack/mods/supplementaries.pw.toml b/forge/pack/mods/supplementaries.pw.toml new file mode 100644 index 00000000..01bbd3ac --- /dev/null +++ b/forge/pack/mods/supplementaries.pw.toml @@ -0,0 +1,13 @@ +name = "Supplementaries" +filename = "supplementaries-1.20-3.1.41.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/fFEIiSDQ/versions/LAQ22yJj/supplementaries-1.20-3.1.41.jar" +hash-format = "sha512" +hash = "b220c48a6fd07396b2f6eaa21bba0971f81b1111bdf91b0d36325b88b873e9413560bd6b924972c37fe2864910ea03bc537c90904bdb76971df416f901c3931d" + +[update] +[update.modrinth] +mod-id = "fFEIiSDQ" +version = "LAQ22yJj" diff --git a/forge/pack/pack.toml b/forge/pack/pack.toml new file mode 100644 index 00000000..5b0878ca --- /dev/null +++ b/forge/pack/pack.toml @@ -0,0 +1,11 @@ +name = "doom-gloom" +pack-format = "packwiz:1.1.0" + +[index] +file = "index.toml" +hash-format = "sha256" +hash = "d03f2baf83a205defc574e83774695240f30467734da1769f33d4007503e100b" + +[versions] +forge = "47.3.10" +minecraft = "1.20.1" diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java new file mode 100644 index 00000000..6564fd9d --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java @@ -0,0 +1,57 @@ +package galena.doom_and_gloom.data; + +import galena.doom_and_gloom.DoomAndGloom; +import java.util.Arrays; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; +import net.minecraft.DetectedVersion; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; +import net.minecraft.data.metadata.PackMetadataGenerator; +import net.minecraft.network.chat.Component; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.metadata.pack.PackMetadataSection; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = EventBusSubscriber.Bus.MOD) +public class ForgeDataEntrypoint { + + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); + CompletableFuture future = event.getLookupProvider(); + ExistingFileHelper helper = event.getExistingFileHelper(); + boolean client = event.includeClient(); + boolean server = event.includeServer(); + + var lang = new OLang(output); + + generator.addProvider(client, new OBlockStates(output, helper)); + generator.addProvider(client, new OItemModels(output, helper)); + generator.addProvider(client, lang); + generator.addProvider(client, new OSoundDefinitions(output, helper)); + + generator.addProvider(server, new ORecipes(output)); + generator.addProvider(server, new OLootTables(output)); + OBlockTags blockTags = new OBlockTags(output, future, helper); + generator.addProvider(server, blockTags); + generator.addProvider(server, new OItemTags(output, future, blockTags.contentsGetter(), helper)); + generator.addProvider(server, new OEntityTags(output, future, helper)); + CompletableFuture lookupProvider = event.getLookupProvider(); + generator.addProvider(server, new ODamageTags(output, lookupProvider, helper)); + generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper)); + + generator.addProvider(server, new PackMetadataGenerator(output).add(PackMetadataSection.TYPE, new PackMetadataSection( + Component.literal("Doom & Gloom resources"), + DetectedVersion.BUILT_IN.getPackVersion(PackType.CLIENT_RESOURCES), + Arrays.stream(PackType.values()).collect(Collectors.toMap(Function.identity(), DetectedVersion.BUILT_IN::getPackVersion)) + ))); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java b/forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java new file mode 100644 index 00000000..b2a32421 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java @@ -0,0 +1,34 @@ +package galena.doom_and_gloom.data; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.data.provider.OBlockStateProvider; +import galena.doom_and_gloom.index.DGBlocks; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.data.ExistingFileHelper; + +public class OBlockStates extends OBlockStateProvider { + + public OBlockStates(PackOutput output, ExistingFileHelper helper) { + super(output, helper); + } + + @Override + public String getName() { + return DoomAndGloom.MOD_ID + " Block States"; + } + + @Override + protected void registerStatesAndModels() { + sepulcherBlock(DGBlocks.SEPULCHER); + simpleBlock(DGBlocks.BONE_PILE.get(), models().cubeColumn(blockTexture(DGBlocks.BONE_PILE.get()).getPath(), DoomAndGloom.modLoc("block/bone_pile_side"), DoomAndGloom.modLoc("block/sepulcher_rot_5"))); + simpleBlock(DGBlocks.ROTTING_FLESH.get(), models().cubeAll(blockTexture(DGBlocks.ROTTING_FLESH.get()).getPath(), DoomAndGloom.modLoc("block/sepulcher_rot_1"))); + vigilCandle(DGBlocks.VIGIL_CANDLE, null); + simpleBlock(DGBlocks.BURIAL_DIRT.get(), models().cubeTop("burial_dirt", new ResourceLocation("block/dirt"), DoomAndGloom.modLoc("block/burial_dirt"))); + DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> vigilCandle(block, color.getSerializedName())); + stoneTablet(DGBlocks.STONE_TABLET, null); + stoneTablet(DGBlocks.ENGRAVED_STONE_TABLET, "engraved"); + stoneTablet(DGBlocks.CRACKED_STONE_TABLET, "cracked"); + } + +} diff --git a/src/main/java/galena/doom_and_gloom/data/OBlockTags.java b/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java similarity index 84% rename from src/main/java/galena/doom_and_gloom/data/OBlockTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java index 713e67f3..d4f3cbdd 100644 --- a/src/main/java/galena/doom_and_gloom/data/OBlockTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java @@ -1,9 +1,7 @@ package galena.doom_and_gloom.data; -import static galena.doom_and_gloom.index.OTags.Blocks.*; - import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OBlocks; +import galena.doom_and_gloom.index.DGBlocks; import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; import net.minecraft.core.HolderLookup; @@ -35,20 +33,20 @@ protected void addTags(HolderLookup.Provider provider) { tag(HEAT_SOURCE).addTag(BlockTags.FIRE).addTag(BlockTags.CAMPFIRES); tag(BlockTags.MINEABLE_WITH_PICKAXE).add( - OBlocks.SEPULCHER.get(), - OBlocks.BONE_PILE.get() + DGBlocks.SEPULCHER.get(), + DGBlocks.BONE_PILE.get() ); var vigilCandles = tag(VIGIL_CANDLES); - OBlocks.vigilCandles().forEach(block -> { + DGBlocks.vigilCandles().forEach(block -> { var id = BuiltInRegistries.BLOCK.getKey(block.get()); vigilCandles.addOptional(id); }); tag(BlockTags.CANDLES).addTags(VIGIL_CANDLES); tag(BlockTags.MINEABLE_WITH_PICKAXE).addTags(VIGIL_CANDLES); - tag(BlockTags.MINEABLE_WITH_PICKAXE).add(OBlocks.SEPULCHER.get()); + tag(BlockTags.MINEABLE_WITH_PICKAXE).add(DGBlocks.SEPULCHER.get()); tag(CAN_TURN_INTO_BURIAL_DIRT).add( Blocks.DIRT, @@ -63,6 +61,6 @@ protected void addTags(HolderLookup.Provider provider) { .addTag(BlockTags.CANDLES) .addOptionalTag(new ResourceLocation("amendments:skull_candles")); - tag(BlockTags.DIRT).add(OBlocks.BURIAL_DIRT.get()); + tag(BlockTags.DIRT).add(DGBlocks.BURIAL_DIRT.get()); } } diff --git a/src/main/java/galena/doom_and_gloom/data/ODamageTags.java b/forge/src/main/java/galena/doom_and_gloom/data/ODamageTags.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/data/ODamageTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/ODamageTags.java diff --git a/src/main/java/galena/doom_and_gloom/data/OEntityTags.java b/forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java similarity index 91% rename from src/main/java/galena/doom_and_gloom/data/OEntityTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java index 065d49bc..4cceb86f 100644 --- a/src/main/java/galena/doom_and_gloom/data/OEntityTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; import net.minecraft.core.HolderLookup; @@ -23,7 +23,7 @@ public String getName() { @Override protected void addTags(HolderLookup.Provider provider) { - tag(OTags.Entities.FILLS_SEPULCHER) + tag(DGTags.Entities.FILLS_SEPULCHER) .add(EntityType.PLAYER) .add(EntityType.ZOMBIE) .add(EntityType.ZOMBIE_VILLAGER) diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java b/forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java new file mode 100644 index 00000000..2e1a1ba2 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java @@ -0,0 +1,36 @@ +package galena.doom_and_gloom.data; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.data.provider.OItemModelProvider; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGItems; +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.data.ExistingFileHelper; + +public class OItemModels extends OItemModelProvider { + + public OItemModels(PackOutput output, ExistingFileHelper helper) { + super(output, helper); + } + + @Override + public String getName() { + return DoomAndGloom.MOD_ID + " Item Models"; + } + + @Override + protected void registerModels() { + toolItem(DGItems.BUSH_HAMMER); + block(DGBlocks.SEPULCHER); + block(DGBlocks.BONE_PILE); + block(DGBlocks.BURIAL_DIRT); + DGBlocks.vigilCandles().forEach(this::normalItem); + spawnEggItem(DGItems.HOLLER_SPAWN_EGG); + normalItem(DGItems.MUSIC_DISC_AFTERLIFE); + normalItem(DGBlocks.STONE_TABLET); + normalItem(DGBlocks.ENGRAVED_STONE_TABLET); + normalItem(DGBlocks.CRACKED_STONE_TABLET); + normalItem(DGItems.HAMMER_AND_CHISEL); + } + +} diff --git a/src/main/java/galena/doom_and_gloom/data/OItemTags.java b/forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java similarity index 71% rename from src/main/java/galena/doom_and_gloom/data/OItemTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java index b1144b32..0b0069b6 100644 --- a/src/main/java/galena/doom_and_gloom/data/OItemTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java @@ -1,10 +1,10 @@ package galena.doom_and_gloom.data; -import static galena.doom_and_gloom.index.OTags.Items.TOOLS_BUSH_HAMMER; +import static galena.doom_and_gloom.index.DGTags.Items.TOOLS_BUSH_HAMMER; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OItems; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGItems; +import galena.doom_and_gloom.index.DGTags; import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; import net.minecraft.core.HolderLookup; @@ -27,10 +27,10 @@ public String getName() { @Override protected void addTags(HolderLookup.Provider provider) { - tag(TOOLS_BUSH_HAMMER).add(OItems.BUSH_HAMMER.get()); + tag(TOOLS_BUSH_HAMMER).add(DGItems.BUSH_HAMMER.get()); - tag(ItemTags.MUSIC_DISCS).add(OItems.MUSIC_DISC_AFTERLIFE.get()); + tag(ItemTags.MUSIC_DISCS).add(DGItems.MUSIC_DISC_AFTERLIFE.get()); - copy(OTags.Blocks.VIGIL_CANDLES, OTags.Items.VIGIL_CANDLES); + copy(DGTags.Blocks.VIGIL_CANDLES, DGTags.Items.VIGIL_CANDLES); } } diff --git a/src/main/java/galena/doom_and_gloom/data/OLang.java b/forge/src/main/java/galena/doom_and_gloom/data/OLang.java similarity index 82% rename from src/main/java/galena/doom_and_gloom/data/OLang.java rename to forge/src/main/java/galena/doom_and_gloom/data/OLang.java index c9209a90..9484575c 100644 --- a/src/main/java/galena/doom_and_gloom/data/OLang.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OLang.java @@ -2,10 +2,10 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.data.provider.OLangProvider; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OEffects; -import galena.doom_and_gloom.index.OEntityTypes; -import galena.doom_and_gloom.index.OItems; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGEntityTypes; +import galena.doom_and_gloom.index.DGItems; import java.util.function.Supplier; import net.minecraft.data.PackOutput; import net.minecraft.world.entity.EntityType; @@ -20,12 +20,12 @@ public OLang(PackOutput output) { @Override protected void addTranslations() { - addDisc(OItems.MUSIC_DISC_AFTERLIFE, "Firch", "afterlife"); + addDisc(DGItems.MUSIC_DISC_AFTERLIFE, "Firch", "afterlife"); - addBlock(OBlocks.BONE_PILE, "Pile of Bones"); + addBlock(DGBlocks.BONE_PILE, "Pile of Bones"); - addEffect(OEffects.FOG, "Fog"); - addEffect(OEffects.WARDING, "Warding"); + addEffect(DGEffects.FOG, "Fog"); + addEffect(DGEffects.WARDING, "Warding"); // JEED compat add("effect.doom_and_gloom.fog.description", "An eerie fog that accompanies the holler"); @@ -60,7 +60,7 @@ protected void addTranslations() { for (Supplier items : DoomAndGloom.REGISTRY_HELPER.getItemSubHelper().getDeferredRegister().getEntries()) { tryItem(items); } - for (Supplier> entities : OEntityTypes.ENTITIES.getEntries()) { + for (Supplier> entities : DGEntityTypes.ENTITIES.getEntries()) { tryEntity(entities); } } diff --git a/src/main/java/galena/doom_and_gloom/data/OLootTables.java b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java similarity index 68% rename from src/main/java/galena/doom_and_gloom/data/OLootTables.java rename to forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java index e6cc59dc..0cf55360 100644 --- a/src/main/java/galena/doom_and_gloom/data/OLootTables.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java @@ -1,15 +1,13 @@ package galena.doom_and_gloom.data; -import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.content.block.SepulcherBlock; import galena.doom_and_gloom.data.provider.OBlockLootProvider; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OEntityTypes; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGEntityTypes; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Supplier; -import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.advancements.critereon.StatePropertiesPredicate; import net.minecraft.data.PackOutput; @@ -18,7 +16,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; import net.minecraft.world.flag.FeatureFlags; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; @@ -44,25 +41,20 @@ protected void validate(Map map, ValidationContext public static class BlockLoot extends OBlockLootProvider { protected void generate() { - add(OBlocks.SEPULCHER.get(), it -> createSingleItemTable(it) + add(DGBlocks.SEPULCHER.get(), it -> createSingleItemTable(it) .withPool(LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) - .add(LootItem.lootTableItem(OBlocks.BONE_PILE.get())) + .add(LootItem.lootTableItem(DGBlocks.BONE_PILE.get())) .when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(it).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(SepulcherBlock.LEVEL, SepulcherBlock.READY))) ) ); - dropSelf(OBlocks.BONE_PILE); - dropNothing(OBlocks.ROTTING_FLESH); - stoneTablet(OBlocks.STONE_TABLET); - stoneTablet(OBlocks.ENGRAVED_STONE_TABLET); - stoneTablet(OBlocks.CRACKED_STONE_TABLET); - dropOther(OBlocks.BURIAL_DIRT, Blocks.DIRT); - OBlocks.vigilCandles().forEach(this::vigilCandle); - } - - @Override - protected Iterable getKnownBlocks() { - return DoomAndGloom.REGISTRY_HELPER.getBlockSubHelper().getDeferredRegister().getEntries().stream().map(Supplier::get).collect(Collectors.toList()); + dropSelf(DGBlocks.BONE_PILE); + dropNothing(DGBlocks.ROTTING_FLESH); + stoneTablet(DGBlocks.STONE_TABLET); + stoneTablet(DGBlocks.ENGRAVED_STONE_TABLET); + stoneTablet(DGBlocks.CRACKED_STONE_TABLET); + dropOther(DGBlocks.BURIAL_DIRT, Blocks.DIRT); + DGBlocks.vigilCandles().forEach(this::vigilCandle); } } @@ -74,12 +66,12 @@ public EntityLoot() { @Override public void generate() { - add(OEntityTypes.HOLLER.get(), LootTable.lootTable()); + add(DGEntityTypes.HOLLER.get(), LootTable.lootTable()); } @Override protected Stream> getKnownEntityTypes() { - return OEntityTypes.ENTITIES.getEntries().stream().map(Supplier::get); + return DGEntityTypes.ENTITIES.getEntries().stream().map(Supplier::get); } } } diff --git a/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java b/forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java similarity index 85% rename from src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java index c18233f5..5a71431c 100644 --- a/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; import net.minecraft.core.HolderLookup; @@ -26,6 +26,6 @@ public OMobEffectTags(PackOutput output, CompletableFuture consumer) { - vigilCandle(OBlocks.VIGIL_CANDLE, Blocks.CANDLE).save(consumer); + vigilCandle(DGBlocks.VIGIL_CANDLE, Blocks.CANDLE).save(consumer); - OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> { - var namespace = color.getId() > 15 ? "dye_depot" : "minecraft"; + DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> { + var namespace = DyeColors.modNamespace(color).orElse(ResourceLocation.DEFAULT_NAMESPACE); var candle = BuiltInRegistries.BLOCK.get(new ResourceLocation(namespace, color.getSerializedName() + "_candle")); vigilCandle(block, candle).save(consumer); ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, block.get()) - .requires(OBlocks.VIGIL_CANDLE.get()) + .requires(DGBlocks.VIGIL_CANDLE.get()) .requires(DyeItem.byColor(color)) - .unlockedBy("has_vigil_candle", has(OBlocks.VIGIL_CANDLE.get())) + .unlockedBy("has_vigil_candle", has(DGBlocks.VIGIL_CANDLE.get())) .group("vigil_candle") .save(consumer, RecipeBuilder.getDefaultRecipeId(block.get()).withSuffix("_dyeing")); }); - withFallback(OTags.Items.INGOTS_SILVER, Tags.Items.INGOTS_IRON, ingot -> - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, OBlocks.SEPULCHER.get()) + withFallback(DGTags.Items.INGOTS_SILVER, Tags.Items.INGOTS_IRON, ingot -> + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, DGBlocks.SEPULCHER.get()) .pattern("# #") .pattern("# #") .pattern("###") .define('#', ingot) ).accept(consumer); - compact(OBlocks.BONE_PILE.get().asItem(), Items.BONE).save(consumer); - unCompact(Items.BONE, OBlocks.BONE_PILE.get().asItem()).save(consumer); + compact(DGBlocks.BONE_PILE.get().asItem(), Items.BONE).save(consumer); + unCompact(Items.BONE, DGBlocks.BONE_PILE.get().asItem()).save(consumer); /* withFallback(OTags.Items.INGOTS_LEAD, Tags.Items.INGOTS_COPPER, ingot -> diff --git a/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java b/forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java similarity index 71% rename from src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java rename to forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java index a2eb410f..b3d429ec 100644 --- a/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.index.OSoundEvents; +import galena.doom_and_gloom.index.DGSoundEvents; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.data.SoundDefinition; @@ -15,7 +15,7 @@ public OSoundDefinitions(PackOutput output, ExistingFileHelper helper) { @Override public void registerSounds() { - add(OSoundEvents.MUSIC_DISC_AFTERLIFE, definition().with( + add(DGSoundEvents.MUSIC_DISC_AFTERLIFE, definition().with( sound(DoomAndGloom.MOD_ID + ":music/disc/afterlife").stream() )); @@ -34,11 +34,11 @@ public void registerSounds() { sound(DoomAndGloom.MOD_ID + ":block/bone_pile_step_3") }; - add(OSoundEvents.BONE_PILE_BREAK, definition().with(bonePileBreakSounds).subtitle("subtitles.block.generic.break")); - add(OSoundEvents.BONE_PILE_PLACE, definition().with(bonePileBreakSounds).subtitle("subtitles.block.generic.place")); - add(OSoundEvents.BONE_PILE_HIT, definition().with(bonePileStepSounds).subtitle("subtitles.block.generic.hit")); - add(OSoundEvents.BONE_PILE_STEP, definition().with(bonePileStepSounds).subtitle("subtitles.block.generic.footsteps")); - add(OSoundEvents.BONE_PILE_FALL, definition().with(bonePileStepSounds)); + add(DGSoundEvents.BONE_PILE_BREAK, definition().with(bonePileBreakSounds).subtitle("subtitles.block.generic.break")); + add(DGSoundEvents.BONE_PILE_PLACE, definition().with(bonePileBreakSounds).subtitle("subtitles.block.generic.place")); + add(DGSoundEvents.BONE_PILE_HIT, definition().with(bonePileStepSounds).subtitle("subtitles.block.generic.hit")); + add(DGSoundEvents.BONE_PILE_STEP, definition().with(bonePileStepSounds).subtitle("subtitles.block.generic.footsteps")); + add(DGSoundEvents.BONE_PILE_FALL, definition().with(bonePileStepSounds)); SoundDefinition.Sound[] sepulcherBreakSounds = { sound(DoomAndGloom.MOD_ID + ":block/sepulcher_break_0"), @@ -55,66 +55,66 @@ public void registerSounds() { sound(DoomAndGloom.MOD_ID + ":block/sepulcher_step_4") }; - add(OSoundEvents.SEPULCHER_BREAK, definition().with(sepulcherBreakSounds).subtitle("subtitles.block.generic.break")); - add(OSoundEvents.SEPULCHER_PLACE, definition().with(sepulcherBreakSounds).subtitle("subtitles.block.generic.place")); - add(OSoundEvents.SEPULCHER_HIT, definition().with(sepulcherStepSounds).subtitle("subtitles.block.generic.hit")); - add(OSoundEvents.SEPULCHER_STEP, definition().with(sepulcherStepSounds).subtitle("subtitles.block.generic.footsteps")); - add(OSoundEvents.SEPULCHER_FALL, definition().with(sepulcherStepSounds)); + add(DGSoundEvents.SEPULCHER_BREAK, definition().with(sepulcherBreakSounds).subtitle("subtitles.block.generic.break")); + add(DGSoundEvents.SEPULCHER_PLACE, definition().with(sepulcherBreakSounds).subtitle("subtitles.block.generic.place")); + add(DGSoundEvents.SEPULCHER_HIT, definition().with(sepulcherStepSounds).subtitle("subtitles.block.generic.hit")); + add(DGSoundEvents.SEPULCHER_STEP, definition().with(sepulcherStepSounds).subtitle("subtitles.block.generic.footsteps")); + add(DGSoundEvents.SEPULCHER_FALL, definition().with(sepulcherStepSounds)); - add(OSoundEvents.SEPULCHER_CORPSE_STUFFED, definition().with( + add(DGSoundEvents.SEPULCHER_CORPSE_STUFFED, definition().with( sound(DoomAndGloom.MOD_ID + ":block/sepulcher_corpse_stuffed_0"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_corpse_stuffed_1") ).subtitle("subtitles.block.sepulcher.corpse_stuffed")); - add(OSoundEvents.SEPULCHER_FILLED, definition().with( + add(DGSoundEvents.SEPULCHER_FILLED, definition().with( sound(DoomAndGloom.MOD_ID + ":block/sepulcher_filled_0"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_filled_1"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_filled_2"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_filled_3") ).subtitle("subtitles.block.sepulcher.filled")); - add(OSoundEvents.SEPULCHER_ROTTING, definition().with( + add(DGSoundEvents.SEPULCHER_ROTTING, definition().with( sound(DoomAndGloom.MOD_ID + ":block/sepulcher_rotting_0"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_rotting_1"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_rotting_2"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_rotting_3") ).subtitle("subtitles.block.sepulcher.rotting")); - add(OSoundEvents.SEPULCHER_HARVEST, definition().with( + add(DGSoundEvents.SEPULCHER_HARVEST, definition().with( sound(DoomAndGloom.MOD_ID + ":block/sepulcher_harvest_0"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_harvest_1"), sound(DoomAndGloom.MOD_ID + ":block/sepulcher_harvest_2") ).subtitle("subtitles.block.sepulcher.harvest")); - add(OSoundEvents.SEPULCHER_SEALING, definition() + add(DGSoundEvents.SEPULCHER_SEALING, definition() .with(sound(DoomAndGloom.MOD_ID + ":block/sepulcher_sealing")) .subtitle("subtitles.block.sepulcher.sealing")); - add(OSoundEvents.SEPULCHER_UNSEALING, definition() + add(DGSoundEvents.SEPULCHER_UNSEALING, definition() .with(sound(DoomAndGloom.MOD_ID + ":block/sepulcher_unsealing")) .subtitle("subtitles.block.sepulcher.unsealing")); - add(OSoundEvents.FOG_AMBIENCE, definition().with( + add(DGSoundEvents.FOG_AMBIENCE, definition().with( sound(DoomAndGloom.MOD_ID + ":ambient/fog_ambience").stream() )); - add(OSoundEvents.HOLLER_DEATH, definition().with( + add(DGSoundEvents.HOLLER_DEATH, definition().with( sound(DoomAndGloom.MOD_ID + ":entity/holler_dies_0"), sound(DoomAndGloom.MOD_ID + ":entity/holler_dies_1") ).subtitle("subtitles.entity.holler_death")); - add(OSoundEvents.HOLLER_HURTS, definition().with( + add(DGSoundEvents.HOLLER_HURTS, definition().with( sound(DoomAndGloom.MOD_ID + ":entity/holler_hurts_0"), sound(DoomAndGloom.MOD_ID + ":entity/holler_hurts_1") ).subtitle("subtitles.entity.holler_hurt")); - add(OSoundEvents.HOLLER_SHRIEKS, definition().with( + add(DGSoundEvents.HOLLER_SHRIEKS, definition().with( sound(DoomAndGloom.MOD_ID + ":entity/holler_shrieks_0"), sound(DoomAndGloom.MOD_ID + ":entity/holler_shrieks_1"), sound(DoomAndGloom.MOD_ID + ":entity/holler_shrieks_2") ).subtitle("subtitles.entity.holler_shrieks")); - add(OSoundEvents.HOLLER_HOLLERS, definition().with( + add(DGSoundEvents.HOLLER_HOLLERS, definition().with( sound(DoomAndGloom.MOD_ID + ":entity/holler_hollers_0"), sound(DoomAndGloom.MOD_ID + ":entity/holler_hollers_1"), sound(DoomAndGloom.MOD_ID + ":entity/holler_hollers_2"), diff --git a/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java similarity index 83% rename from src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java index 0e0778f2..b2e3c2e0 100644 --- a/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java @@ -1,5 +1,7 @@ package galena.doom_and_gloom.data.provider; +import java.util.Collection; +import java.util.HashSet; import java.util.Set; import java.util.function.Supplier; import net.minecraft.data.loot.BlockLootSubProvider; @@ -15,6 +17,8 @@ public abstract class OBlockLootProvider extends BlockLootSubProvider { + private final Collection knownBlocks = new HashSet<>(); + protected OBlockLootProvider() { super(Set.of(), FeatureFlags.REGISTRY.allFlags()); } @@ -44,5 +48,14 @@ public void stoneTablet(Supplier block) { ))) ); } + protected void add(Block block, LootTable.Builder builder) { + super.add(block, builder); + this.knownBlocks.add(block); + } + + @Override + protected final Iterable getKnownBlocks() { + return knownBlocks; + } } diff --git a/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java diff --git a/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java similarity index 91% rename from src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java index 9c74a199..44d8a65a 100644 --- a/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java @@ -1,6 +1,5 @@ package galena.doom_and_gloom.data.provider; -import com.teamabnormals.blueprint.core.data.client.BlueprintItemModelProvider; import galena.doom_and_gloom.DoomAndGloom; import java.util.Objects; import java.util.function.Supplier; @@ -9,10 +8,11 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.ItemModelBuilder; +import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.registries.ForgeRegistries; -public abstract class OItemModelProvider extends BlueprintItemModelProvider { +public abstract class OItemModelProvider extends ItemModelProvider { public OItemModelProvider(PackOutput output, ExistingFileHelper help) { super(output, DoomAndGloom.MOD_ID, help); diff --git a/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java similarity index 100% rename from src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java diff --git a/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java similarity index 90% rename from src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java index 9620e628..68e20a68 100644 --- a/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.data.provider; -import galena.doom_and_gloom.index.OTags; +import galena.doom_and_gloom.index.DGTags; import java.util.function.Supplier; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeCategory; @@ -35,10 +35,10 @@ public ShapelessRecipeBuilder unCompact(Item itemOut, Item itemIn) { public ShapedRecipeBuilder vigilCandle(Supplier block, ItemLike candle) { return ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, block.get()) - .define('S', OTags.Items.INGOTS_SILVER) + .define('S', DGTags.Items.INGOTS_SILVER) .define('C', candle) .pattern("S") - .unlockedBy("has_silver", has(OTags.Items.INGOTS_SILVER)) + .unlockedBy("has_silver", has(DGTags.Items.INGOTS_SILVER)) .group("vigil_candle") .pattern("C"); } diff --git a/src/main/java/galena/doom_and_gloom/world/AddItemLootModifier.java b/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java similarity index 97% rename from src/main/java/galena/doom_and_gloom/world/AddItemLootModifier.java rename to forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java index 7ad99a6f..c768d13c 100644 --- a/src/main/java/galena/doom_and_gloom/world/AddItemLootModifier.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java @@ -1,4 +1,4 @@ -package galena.doom_and_gloom.world; +package galena.doom_and_gloom.forge; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java new file mode 100644 index 00000000..98b1f671 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java @@ -0,0 +1,90 @@ +package galena.doom_and_gloom.forge; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.client.DGReloadListener; +import galena.doom_and_gloom.client.DoomAndGloomClient; +import galena.doom_and_gloom.client.FogRendering; +import galena.doom_and_gloom.client.OModelLayers; +import galena.doom_and_gloom.client.model.DirtMoundModel; +import galena.doom_and_gloom.client.model.HollerModel; +import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; +import galena.doom_and_gloom.client.render.entity.HollerRender; +import galena.doom_and_gloom.index.DGEntityTypes; +import java.awt.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; +import net.minecraftforge.client.event.RegisterParticleProvidersEvent; +import net.minecraftforge.client.event.ViewportEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; + +@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT) +public class ForgeClientEntrypoint { + + @SubscribeEvent + public static void setup(FMLClientSetupEvent event) { + event.enqueueWork(DoomAndGloomClient::init); + } + + @SubscribeEvent + public static void registerReloadListener(RegisterClientReloadListenersEvent event) { + event.registerReloadListener(new DGReloadListener()); + } + + @SubscribeEvent + public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(DGEntityTypes.HOLLER.get(), HollerRender::new); + event.registerEntityRenderer(DGEntityTypes.DIRT_MOUND.get(), DirtMoundRenderer::new); + } + + @SubscribeEvent + public static void registerModelLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(OModelLayers.HOLLER, HollerModel::createBodyLayer); + event.registerLayerDefinition(OModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); + } + + @SubscribeEvent + public static void registerParticleFactories(RegisterParticleProvidersEvent event) { + DoomAndGloomClient.registerParticleFactories(event::registerSpriteSet); + } + + @EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.FORGE) + public static class ForgeBusEvents { + + @SubscribeEvent + public static void clientTick(TickEvent.ClientTickEvent event) { + FogRendering.clientTick(); + } + + @SubscribeEvent + public static void fogEffectFog(ViewportEvent.RenderFog event) { + FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).ifPresent(factorData -> { + LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + float f = Mth.lerp(factorData.getFactor(entity, (float) event.getPartialTick()), event.getFarPlaneDistance(), 15F); + event.setNearPlaneDistance(event.getMode() == FogRenderer.FogMode.FOG_SKY ? -2F : f * -0.5F); + event.setFarPlaneDistance(f); + event.setCanceled(true); + }); + } + + @SubscribeEvent + public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { + var from = new Color(event.getRed(), event.getGreen(), event.getBlue()); + FogRendering.fogEffectColor(from, (float) event.getPartialTick()).ifPresent(to -> { + event.setRed(to.getRed()); + event.setGreen(to.getGreen()); + event.setBlue(to.getBlue()); + }); + } + + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java new file mode 100644 index 00000000..c0196cd9 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -0,0 +1,128 @@ +package galena.doom_and_gloom.forge; + +import com.mojang.serialization.Codec; +import galena.doom_and_gloom.DGConfig; +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.compat.CompatMods; +import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; +import galena.doom_and_gloom.content.entity.holler.Holler; +import galena.doom_and_gloom.forge.compat.AmendmentsCompat; +import galena.doom_and_gloom.gen.VillageStructureModifier; +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGEntityTypes; +import galena.doom_and_gloom.index.DGItems; +import java.util.function.Supplier; + +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.loot.IGlobalLootModifier; +import net.minecraftforge.common.util.MutableHashedLinkedMap; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.event.entity.SpawnPlacementRegisterEvent; +import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.server.ServerAboutToStartEvent; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +@Mod(DoomAndGloom.MOD_ID) +public class ForgeEntrypoint { + + private static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, DoomAndGloom.MOD_ID); + + // TODO can maybe be replaced with moonlights modifier? + public static final RegistryObject> ADD_ITEM = LOOT_MODIFIERS.register("add_item", () -> AddItemLootModifier.CODEC); + + public ForgeEntrypoint() { + DoomAndGloom.init(); + + if (PlatHelper.isModLoaded(CompatMods.AMENDMENTS)) { + AmendmentsCompat.register(); + } + + registerConfigs(); + + var modBus = EventBusSubscriber.Bus.MOD.bus().get(); + var forgeBus = MinecraftForge.EVENT_BUS; + + modBus.addListener(this::buildCreativeModeTabContents); + modBus.addListener(this::registerAttributes); + modBus.addListener(this::registerSpawnPlacements); + forgeBus.addListener(this::onServerStart); + forgeBus.addListener(this::onLivingDrops); + + LOOT_MODIFIERS.register(modBus); + } + + private void registerConfigs() { + var context = ModLoadingContext.get(); + DGConfig.register(context::registerConfig); + } + + private void registerAttributes(EntityAttributeCreationEvent event) { + event.put(DGEntityTypes.HOLLER.get(), Holler.createAttributes().build()); + } + + private void registerSpawnPlacements(SpawnPlacementRegisterEvent event) { + event.register(DGEntityTypes.HOLLER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Holler::checkHollerSpawnRules, SpawnPlacementRegisterEvent.Operation.REPLACE); + } + + + public void onServerStart(ServerAboutToStartEvent event) { + VillageStructureModifier.setup(event.getServer().registryAccess()); + } + + public void buildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { + ResourceKey tab = event.getTabKey(); + MutableHashedLinkedMap entries = event.getEntries(); + + putAfter(entries, Blocks.LANTERN, DGBlocks.VIGIL_CANDLE); + DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> putAfter(entries, DGBlocks.VIGIL_CANDLE.get(), block)); + putAfter(entries, Blocks.COMPOSTER, DGBlocks.SEPULCHER); + + putAfter(entries, Blocks.BONE_BLOCK, DGBlocks.BONE_PILE); + + putAfter(entries, Blocks.INFESTED_DEEPSLATE, DGBlocks.BURIAL_DIRT); + + if (tab == CreativeModeTabs.SPAWN_EGGS) { + event.accept(new ItemStack(DGItems.HOLLER_SPAWN_EGG.get())); + } + + //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { + // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); + // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); + //} + + //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { + // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); + // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); + //} + } + + private static void putAfter(MutableHashedLinkedMap entries, ItemLike after, Supplier supplier) { + ItemLike key = supplier.get(); + if (!entries.contains(new ItemStack(after))) return; + entries.putAfter(new ItemStack(after), new ItemStack(key), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + } + + private void onLivingDrops(LivingDropsEvent event) { + if (event.getEntity() instanceof Player) return; + if (SepulcherBlockEntity.wasConsumerBySepulcher(event.getEntity())) { + event.setCanceled(true); + } + } + +} diff --git a/src/main/java/galena/doom_and_gloom/compat/amendments/AmendmentsCompat.java b/forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java similarity index 96% rename from src/main/java/galena/doom_and_gloom/compat/amendments/AmendmentsCompat.java rename to forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java index 15a33660..69698401 100644 --- a/src/main/java/galena/doom_and_gloom/compat/amendments/AmendmentsCompat.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java @@ -1,4 +1,4 @@ -package galena.doom_and_gloom.compat.amendments; +package galena.doom_and_gloom.forge.compat; import net.mehvahdjukaar.amendments.common.tile.WallLanternBlockTile; import net.minecraft.sounds.SoundEvents; @@ -9,6 +9,7 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerInteractEvent; +// TODO also add to fabric? public class AmendmentsCompat { public static void register() { diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java new file mode 100644 index 00000000..88637de0 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java @@ -0,0 +1,51 @@ +package galena.doom_and_gloom.forge.mixin; + +import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.wrapper.InvWrapper; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(SepulcherBlockEntity.class) +public abstract class SepulcherBlockEntityMixin extends SepulcherBlockEntity { + + public SepulcherBlockEntityMixin(BlockPos pos, BlockState state) { + super(pos, state); + } + + @Unique + private LazyOptional itemHandler = createItemHandler(); + + @Unique + private LazyOptional createItemHandler() { + return LazyOptional.of(() -> new InvWrapper(this)); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + itemHandler.invalidate(); + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + itemHandler = createItemHandler(); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability capability, Direction facing) { + if (capability == ForgeCapabilities.ITEM_HANDLER && facing != null && !this.remove) { + return itemHandler.cast(); + } else { + return super.getCapability(capability, facing); + } + } + +} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/forge/src/main/resources/META-INF/accesstransformer.cfg similarity index 100% rename from src/main/resources/META-INF/accesstransformer.cfg rename to forge/src/main/resources/META-INF/accesstransformer.cfg diff --git a/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml similarity index 95% rename from src/main/resources/META-INF/mods.toml rename to forge/src/main/resources/META-INF/mods.toml index 51bf45af..05c2e268 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -34,9 +34,9 @@ An addon-mod for Oreganized adding Halloween-themed content side="BOTH" [[dependencies.${mod_id}]] - modId="blueprint" + modId="moonlight" mandatory=true - versionRange="[7.1.0,)" + versionRange="*" ordering="AFTER" side="BOTH" diff --git a/src/main/resources/data/doom_and_gloom/forge/biome_modifier/spawn_holler.json b/forge/src/main/resources/data/doom_and_gloom/forge/biome_modifier/spawn_holler.json similarity index 100% rename from src/main/resources/data/doom_and_gloom/forge/biome_modifier/spawn_holler.json rename to forge/src/main/resources/data/doom_and_gloom/forge/biome_modifier/spawn_holler.json diff --git a/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json b/forge/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json similarity index 100% rename from src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json rename to forge/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json diff --git a/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json b/forge/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json similarity index 100% rename from src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json rename to forge/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json diff --git a/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json b/forge/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json similarity index 100% rename from src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json rename to forge/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json diff --git a/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json b/forge/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json similarity index 100% rename from src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json rename to forge/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt diff --git a/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt b/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt similarity index 100% rename from src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt rename to forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt diff --git a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/forge/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json similarity index 100% rename from src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json rename to forge/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json diff --git a/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/forge/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json similarity index 100% rename from src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json rename to forge/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json diff --git a/forge/src/main/resources/doom_and_gloom.forge.mixins.json b/forge/src/main/resources/doom_and_gloom.forge.mixins.json new file mode 100644 index 00000000..be803508 --- /dev/null +++ b/forge/src/main/resources/doom_and_gloom.forge.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "galena.doom_and_gloom.forge.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "SepulcherBlockEntityMixin" + ], + "server": [], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/gradle.properties b/gradle.properties index 78686323..3321fd16 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,6 +15,10 @@ minecraft_version=1.20.1 # Forge forge_version=47.3.0 +# Fabric +fabric_api_version=0.92.6+1.20.1 +fabric_loader_version=0.17.3 + # Mixin mixin_version=0.8.5 mixin_extras_version=0.4.1 @@ -23,13 +27,6 @@ mixin_extras_version=0.4.1 blueprint_version=7.1.0 jei_version=15.0.0.12 -oreganized_version=4.1.0 -galena_hats_version=1.1.2 -dye_depot_version=cdGlC270 -supplementaries_version=eMF95dNK -amendments_version=qE7sokDv -moonlight_lib_version=sfzdPwZX - repository=teamgalena/doomandgloom maven_group=dev.galena modrinth_project=NdwUq6vV diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..501a147f --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,24 @@ +[versions] +multikulti = "1.20.1-1.1.5" +jei = "15.20.0.106" +forge-config-api = "8.0.2" + +[libraries] +multikulti-core = { group = "com.possible-triangle", name = "multikulti-core-forge", version.ref = "multikulti" } +multikulti-datagen = { group = "com.possible-triangle", name = "multikulti-datagen-forge", version.ref = "multikulti" } +multikulti-datagen-fix = { group = "com.possible-triangle", name = "multikulti-datagen-forge-fix", version.ref = "multikulti" } + +galena-hats = { "group" = "dev.galena", name = "hats-forge", version = "1.20.1-1.2.2" } +oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.0" } + +dye-depot = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } + +jei-forge = { group = "mezz.jei", name = "jei-1.20.1-forge", version.ref = "jei" } +jei-fabric = { group = "mezz.jei", name = "jei-1.20.1-fabric", version.ref = "jei" } + +forge-config-api-common = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-common", version.ref = "forge-config-api" } +forge-config-api-fabric = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-fabric", version.ref = "forge-config-api" } + + +[plugins] +parchment = { id = "org.parchmentmc.librarian.forgegradle", version = "1.+" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9530d66f5e68d973ea569d8e19de379189..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch delta 34943 zcmXuKV_+Rz)3%+)Y~1X)v28cDZQE*`9qyPrXx!Mg8{4+s*nWFo&-eXbzt+q-bFO1% zb$T* z+;w-h{ce+s>j$K)apmK~8t5)PdZP3^U%(^I<0#3(!6T+vfBowN0RfQ&0iMAo055!% z04}dC>M#Z2#PO7#|Fj;cQ$sH}E-n7nQM_V}mtmG_)(me#+~0gf?s@gam)iLoR#sr( zrR9fU_ofhp5j-5SLDQP{O+SuE)l8x9_(9@h%eY-t47J-KX-1(`hh#A6_Xs+4(pHhy zuZ1YS9axk`aYwXuq;YN>rYv|U`&U67f=tinhAD$+=o+MWXkx_;qIat_CS1o*=cIxs zIgeoK0TiIa7t`r%%feL8VieY63-Aakfi~qlE`d;ZOn8hFZFX|i^taCw6xbNLb2sOS z?PIeS%PgD)?bPB&LaQDF{PbxHrJQME<^cU5b!Hir(x32zy{YzNzE%sx;w=!C z_(A>eZXkQ1w@ASPXc|CWMNDP1kFQuMO>|1X;SHQS8w<@D;5C@L(3r^8qbbm$nTp%P z&I3Ey+ja9;ZiMbopUNc2txS9$Jf8UGS3*}Y3??(vZYLfm($WlpUGEUgQ52v@AD<~Y z#|B=mpCPt3QR%gX*c^SX>9dEqck79JX+gVPH87~q0-T;ota!lQWdt3C-wY1Ud}!j8 z*2x5$^dsTkXj}%PNKs1YzwK$-gu*lxq<&ko(qrQ_na(82lQ$ z7^0Pgg@Shn!UKTD4R}yGxefP2{8sZ~QZY)cj*SF6AlvE;^5oK=S}FEK(9qHuq|Cm! zx6ILQBsRu(=t1NRTecirX3Iv$-BkLxn^Zk|sV3^MJ1YKJxm>A+nk*r5h=>wW*J|pB zgDS%&VgnF~(sw)beMXXQ8{ncKX;A;_VLcq}Bw1EJj~-AdA=1IGrNHEh+BtIcoV+Te z_sCtBdKv(0wjY{3#hg9nf!*dpV5s7ZvNYEciEp2Rd5P#UudfqXysHiXo`pt27R?Rk zOAWL-dsa+raNw9^2NLZ#Wc^xI=E5Gwz~_<&*jqz0-AVd;EAvnm^&4Ca9bGzM_%(n{>je5hGNjCpZJ%5#Z3&4}f3I1P!6?)d65 z-~d}g{g!&`LkFK9$)f9KB?`oO{a0VXFm1`W{w5bAIC5CsyOV=q-Q7Z8YSmyo;$T?K za96q@djtok=r#TdUkd#%`|QlBywo>ifG69&;k%Ahfic6drRP;K{V8ea_t2qbY48uYWlB3Hf6hnqsCO?kYFhV+{i> zo&AE+)$%ag^)ijm!~gU78tD%tB63b_tbv9gfWzS&$r@i4q|PM+!hS+o+DpKfnnSe{ zewFbI3Jc0?=Vz}3>KmVj$qTWkoUS8@k63XRP2m^e50x-5PU<4X!I#q(zj@EyT9K_E z9P%@Sy6Mq`xD<-E!-<3@MLp2Dq8`x}F?@}V6E#A9v6xm%@x1U3>OoFY{fX5qpxngY z+=2HbnEErBv~!yl%f`Eq2%&K%JTwgN1y@FZ#=ai+TFMFlG?UV{M1#%uCi#Knkb_h| z&ivG$>~NQ4Ou2-gy=8JdRe8`nJDsqYYs?)(LJkJ}NHOj|3gZxVQJWWp>+`H?8$$J5 z*_)+tlyII%x#dId3w(oXo`YEm^-|tFNNj-0rbEuUc2-=pZDk7fxWUlw;|@M9s1 zmK9*C)1Q?F5@NPUJOYOAe`GHnYB%G37_sg3dxAttqLs6Bro)4z ziy8j%C7KKDNL8r#Oj6!IHx|N(?%Zvo31y4;*L1%_KJh$v$6XhFkw*E|fEu9`or?JD_ z13X4g92;TZm0jA0!2R5qPD$W^U z`5XK|Y^27y_Q%D>wWGtF=K00-N0;=svka>o`(;~dOS(eT0gwsP{=Rq+-e2Ajq?D<)zww5V36u6^Ta8YT4cDaw} zfuGnhr_5?)D*1+*q<3tVhg(AsKhR1Di=nsJzt_si+)uac_7zx_pl#t(dh816IM zvToHR%D)$!Zj4Q^$s8A%HLRYa>q9dpbh=*kcF7nkM0RhMIOGq^7Tgn|Fvs)A% zznI7nlbWoA2=rHHbUZ4PJMXf{T$@>W1Tt4lb|Or4L;O!oFj8Op8KEE`^x^*VSJ`9~ z;Pe~{V3x*-2c|jBrvSV8s+*Y3VqFKa@Napr#JAd}4l7;sgn|Q#M!(<|IX1<)z!AC3 zv<5YpN58Fs4NYi|ndYcb=jVO6Ztpwd={@3Yp6orUYe6EG#s{qhX+L^7zMK+@cX1hh?gbp56>jX*_Z|2u9 zb*glt!xK>j!LyLnFtxs&1SLkyiL%xbMqgxywI-U*XV%%qwa5oiufFerY!wn*GgMq` zZ6mFf8MukDPHVaCQk#oyg^dhl*9p@Jc+4Q9+0iv?{}=}+&=>n+q{o z#rEZ<&Ku65y+1eRHwcl3G7bR`e{&~^fGg|0))$uW?B@;_sWSls!ctnjH6ykmM8WJx};hvdXZ>YKLS($5`yBK38HULv}&PKRo9k zdFzj>`CDIUbq8GxeIJ?8=61G-XO?7dYZ;xqtlG?qr`wzbh7YyaD=>eup7bVH`q*N5 z)0&n)!*wW$G<3A&l$vJ^Z-%1^NF$n3iPgqr6Yn_SsAsFQw?9fj z&AvH|_-6zethC3^$mLF7mF$mTKT<_$kbV6jMK0f0UonRN_cY?yM6v&IosO?RN=h z{IqdUJvZd#@5qsr_1xVnaRr`ba-7MyU4<_XjIbr$PmPBYO6rLrxC`|5MN zD8ae4rTxau=7125zw|TQsJpqm`~hLs@w_iUd%eMY6IR9{(?;$f^?`&l?U%JfX%JyV z$IdA`V)5CkvPA0yljj4!Ja&Hjx`zIkg_ceQ;4)vhoyBeW$3D<_LDR~M-DPzQQ?&!L*PUNb^moIz|QXB=S z9^9NnEpF+>_Oh6+Xr55ZLJ7`V=H}@D<70NiNGH{~^QE-U)*Sg@O}M|%{Rcpn z{0nD@D%@8!dE*mndd2g!-q9;)jb=IUED<(Pxh`9B>V3z#f>82~&CVZASC?|;C-VKy zJU35T|3jd(p8F|#n@T~Wh2l1yURI=LC>Uj_!8i7-DE_IaSKIMAx`WMEq8kN%8sAx% zOQs~R1v12(=_ghVxzylsYZum-%8QmjM3-s2V!jY|w#ccP)}OSW?MWhNu@o-t0eTg{ zyy`}x+}GObZC(k>-upb2C6#S*NOfWbKEyReP%gay8MT!pJpsx4jwCu%>7%sY}1L6Vybj_P+;yP`YS92 z^o_G!Gr_NP!ixe7d&82H&achfi83L;le3Fs?u%E*xbeOKkJr7mp=)RXjZF;h*hR<= zP_cs1hjc}0JlHal=enmG&G8wsn%Sm$5Wcgs=Zc}}A%3i6_<4k_`-$k2E5f6QV{a$V zg3VZO36o^w5q`q2ASwJw#?n7pBJyGt3R<`Sd8d|52=h&`|CPq&1Cz&42rRCHNjDZL z$}Y*L+#N;!K2Ov){~fmQM8hVYzj3H@{yS>?q3QhhDHWfNAJ#q@qko|rhlaGG4Qrvh zmHpmg&7YvgRuI|i78-{)|wFx(R^_ z{ag(}Kbbbx=UW42sAu}kg3yB#96dJlOB{+or<(51ylVwpXII7Hrlztq!pefQ?6pQhqSb76y=sQx zOC-swAJaqnL_ok{74u_IHojFk;RSSFfjdLrfqq{syUxA$Ld6D2#TMX(Phf~dvSuuX zmN2xzjwZxWHmbvK2M#OhE#{`urOzs=>%ku}nxymK-dB~smas?Z(YM^>x#K)M@?<&L zeagMnj!XK4=Mid$NvJ+JfSjvc`4rX9mTo^+iFs0q7ntZ{gfU3oSAbK_yzW3WA^`6x zWgPSLXlEVvh!G^fOzZ-O{C_v;V6=;DE+ZqRT4mbCq}xeQ0o z98Cho%25r#!cT_ozTd~FK^@AB3OnrAAEDI4==}#I_v}iw0nhA{y99mFRG*1kxFkZP z+are- z8D|3WoYE>s0<=h)^)0>^up+nPeu}Sv-A($6t3AUedFczOLn;NW5_xM0tMvvrOSZ}) zA2YG1m4GxLAHZ5k>%}pHYtf-caXMGcYmH8ZPLX9VCew0;@Pi-8zkH^#}Cu$%FmKJb=!)Twj!PgBmY0+>VUsyyT}Jy>vMt zo<^5lmPo5Jt-=)z2-F{2{jB{CpW2JDj%~JnP*rq^=(okNQpH=}#{kqMUw{&=e-5;G z!FwJVQTDS7YGL&|=vJ+xhg{dMika2m2A#l@$PazLQ<6$GLC+>4B37`4aW3&MgENJ% z#*tOQsg{>zmcuSgU?peLA}!Rlu&K3LTc@drSBaI?91dK75;_`(V`NHjkMj``jwjJx zcm_!liUxn=^!~0|#{g2#AuX9%;GTBq&k+Jz!~Cc+r?S}y=Q1okG0PRIi3C3wgP8F| zO2jcmnVbGXp*Mu&e#a9Q5a}w7$sITx@)8b}sh(v9#V(H$3GLHF@k!Wh+)kNueq;+r zFtj+^b1TQe?R#Y8{m!7~e6%83hbPKoizd2LIg3yS5=X2HE^l4_|(2q#LB zeNv&njrS$?=zzG?0Min#kY+3A)H1uMfogMYSm|vT%3i<_d9X&~N*ZCL4iB@YaJuo; zq}-;EGx~T43kq-UHmTn!@sc z3bwcs$rp?~73h*uZl_ysD*WK3_PS1G3N^t3U=KoRm_Gz@C?M>+x9HRMk(cA4m&L`! z=Lb~4*9zt*SHJgsAMAcTy*!1W^B>4T_doWvNw7UwmyA=Wq&kE{*GVHp9Yk5goUO;k zVb_3ARrFPG;&>Jv@P&`z%}t!*M|2127pm{S)gs~f_ID^lOH@nIW9DgU$=FjqNW0pv z&GYdoxe@)RAWWx^j|$N}sj*p)_bFpk`Y=NilvsI(>!Z&KBo&I+wb*kM5Vvkkr#;q< z3CobbF+GJ#MxL?rMldP0@XiC~yQCR57=wW_<$j!SY*$5J+^v{Pn!1{&@R-lHCiK8@ z&O=XQ=V?hjM;h&qCitHmHKJ_$=`v%;jixnQrve^x9{ykWs(;!Q9mlr#{VYVE93oaW z&z+vBD}!tBghkriZy7gX7xJp8c}ajR4;JDu^0#RdQo2itM^~uc==~eBgwx5-m7vLj zP)vE#k%~*N$bT#^>(C1sohq+DwAC{U*z(D)qjgghKKSy#$dPih`R09rfbfI-FLE!` zn!tg71Wr(D7ZV*4R@GqG&7)2K*Zc6_CMJoGu#Yc>9D#{eyZ>u-mrWG@4Hk(je3lnH zu9qvXdq+!`5R1mlzWjV^jvaHl>-^Z+g^s5dy49yem$0$>341=EGuOY=W5PCFBTbNN^19iIQ57C3KcV}z~z#Rvngs#j;g2gswC(TLWlViYW}tB5T#g4 z%vDUYTo1@+&zE&`P%fXc^@prE5z;E@;; zKtpEFYftJq-c0sD6lKYoEQ;O1X4uFZZ;3gdgfAKqIc=Dj6>unXAdM}DD*@a5LHk~o zyJjW@aK;XG%qr<)7Rqh7NdUpnTR6jc;6{FKcK_v_#h{IO{mez>^^70DAWB5whqq!J zevvLUotE;I?IWWf!ieJ-Hx`TqY5)ND>K0NCb7IW40Jk*J* z^#m%kIA~Go2=R|y5zM|*ehJxyuX;lOQZkArKVbQV(XmidUH|8U^q`wP(7%F}=uG}U z2~&~CLebE`c%SCdeU(l&hryL~+Y)6I^d@|||6F15IAGo`G+CdVf zc+!EycZnQH)OBE zyTd8k{(_v9d2}osA$*>Q>Q&OB(7ShxA$}p8ChVnYlXl5My$HlVx@ATprrj0}6)ycK zcQy#bwOms1CnS+xd26}k?J;WI{HR_U+1T^I!$B^S=pJkT705QaMF88VJp!s%`?y9z8f$&Xw(A}3u_(n5G{!)yH&zN)S?c1$SZlo>XieJ zyEFa>_p9B*cY){ct8=dq>uQTf# zd4vB4)(ebwQHlSAu}(6GCe28H32pz^}l%Zqs;Yl|B=l2d9HrCcUf%wxLYs4CBqJ#{gz*u6V$>?9IT@uSf~2Rgk6CNw;C21ZbNkm>ZTc@2zeOSXVE^>i5!2>t%!1cI z{FZA`*o4=dTDG3&{v$3xVr%g;3d(!SFJU}w6x_Re(ohlni)I54Wg{t zWLK{A(}qEIH@pamgtr3serA{THlp_IR(gt0CFguk={|Ochh10)7UV4DcnO7fvL<=x z^WCMg_TI?U8(loaUnAe+Nc9I1JIO#_C`=kJG(&wy%Cr9vRFcY9^8{A3A>GuSW~Zk( zMA#t~0Dw?;3^Ue|lhSp4p%YvYmw-&3ey3}+{6Uhz?l1D|6nYNok6?4N_C!OSR=QtS z2X&QtWlkZshPo#-dXBOlSqh3D;#*_`hyohR>vl$W+QC>HPOs0zwHKN`?zIKqCTw&w&NUGNS|abulHe{D+{q z`WvLw?C4K97cd}6V6f2NtfIAO;=c>qi^+y4#oMjK?5Hy9$Tg1#S~Cxoo-Zdpnt2kG^n}`9)Df-Spvx&Oi+6xXT=N*0l|d`p!ZU ziQo9$y}PYIF~Zqh^?6QZ8YS*JtD^gynifSLMlVYRhBi*f-mJFS<>l%5sp5$V$p*X9?V-0r4bKYvo3n@XkCm4vO-_v? zOsLkR?)>ogb>Ys*m^2>*6%Db0!J?Qvpyd+ODlbslPci9r#W>d~%vcU7J_V;#Um1+` zG0>Q$TrOLUF0%a3g=PaCdQVoUUWXgk>($39-P;tusnMlJ=Dz}#S|E== zl6b3bbYaYguw3Bpv|O(YR2aBk?(jo+QqN*^6f0x+to-@2uj!nu6X{qLK>*PxM!i0C zZwrQ}prOw6Ghz?ApvM`!L3Dzc@6mp<2hO0y{_`lqtt!FcUmBG+PBwl?>0Mwu)Ey{L zU;A{ywkT}jCZpPKH4`_o0$#4*^L7=29%)~!L4*czG!bAva#7ZCDR|6@lBE&cyy5eE zlKHwzv7R9gKZTF<8}3*8uVtI)!HE%AZRD-iW!AJI7oY43@9Z$0^MO@Egj1c?o(BwF ziz1|k#WOgAG?^r1 z>+p=DK?cA-RLIvcdmwq$q?R;ina0SPj@;Mus}W_V2xHnYhOq~=sxzA`yTUOsJ`8`VOSTE=IZ!x`cZYqHbgPijF>J>N7( zqbNsHK50vkB1NI52gyb^PflpU0DRw{&v7Y}Hy2>pV@W2f1EOd2j;H?|WiV%2?Dk7u zS(NrEUDl81<}yY9J#OCwM)N?x&PB-%1{oD*`_ZLiBJ=16uR{n+Lk~!t(&9U#>ZfVd8Iqn&idGd>uo?L@sjm>c|Lk z12d3Y>N9U`342@xaHl&Q@oE5V-f$s`04q983f0#m_WF=X_A89W8C#{uCdTNUZ+))$ zakPyNU)?MDayCKxWh0(-v~1rd8FxocW=Dc6B1%N4^SgQj$?ZMoAMQ-35)IMgf&)M?c@}4QG7=DTq{nHc7yp=CZ z1dh~VkK%OTr23U1mJ*a-DxX0Psvh_13t^YcPl9t?_^$pPEhhwGp}s~f=GFR;4@;@f z@B;R1U6Df?yl#Y=BgYTlP&<|8K27||rx_?{s|L);GM3^{Nn8HZp zFqxiG6s3Nb;PW3O=u;(-o(*q!^2i)jHY%N@;O5Hder~_@$zh4xG#-7?#S^-&M~yc} zh5Y=ltLBnTzt;Y%YNqi2d1M1LOz?MJbZ|Nc6>x19&l_S*2Rgk$DhaP7Y-C)4_uPzf zQm)OY)$AFfE1(0SxkbbN4}CHnlU`RqYFGIE7S9ipx_Q0vkE5JRq4Uc%zV7$?y(x$y zV^)5zwjH~+4?xN z9s@x~w`C_cS}khfI14K4Xgn^iuBxkd^u}3cY=VZI@-8iWHolPtt?JD5lZ1V=@g6yR zj0>bd7Z(dw+@)v#r!xpZaAxgT?4Ton(h`0}fkfF!ZDSu{f*r#{ZRp^oOrO3iB|Fa- z;|+PpW5JKZxJ-kjHf`-7ohmnO=a)Xl9lhI8&$)g6R#6PBIN$QSC8kT=4zj?w&=`!qjkCvvz;ypOfR7P)w^ z-7LFhXd6GLrFa_vGLwR5MRvcV*(r!NhQ@}T-ikBGy!fHaiePD$iA{|Q1$kct2`qHz z6nAyERuqvM6i2^?g@w7W2LLr~3s?pBDk6ce8@CxV;b%4%-rXK-GOk+($sSNK;_FBku zm89B}tpzL-x{dPS-IAjwyL*t7N%7~2E)9OsWJJWHc|}BNa5Xwdx(j7i7AmZhs?#zi z5{y$uQdx?O8x3>+5MR05HwUa-YZa*|UVLOb`T)KHk|~Gmwx8MfBUtM|afuM$0wb7m zR+_lU9=W~Y$uNlxt&(@&1;6t!r69A|W%;k3-%SzLlBzc0 z`b?Jmo`8{LI=d|I3JDAa|iK*D6=I_3q?%xFSLg1 zI^!pA=K}l1joBBj8aa8XHp^;Lf`9xNa&Cv+twW&$_HAwZfHrVcNUrRccn_ z1+L!z$k@LK28nc1VB|Fbwm$wO;B~yEdww1EUn|s&{-Tu;@$d94BLL(OQYx|aCa|&2WPT{qJzbNU!ep>j){o5=6le6 z>~Amqs+mCuOR2)aB!#sK5fuui7LsO!Qzl)lz?Lm!QoQFWbNIkfdkrn|)YbSu8WwxZ zO{}a~wE2Cu)`a3X+KI#LHm(Mi+}bOB6@N~H2}Y)e*}w8_z^Sx`c?CWvu*2{K#yqGo zx!Cu*+8&tdw!eiKqZIQlJg5Cb^hZ^Zh~Mb0l(4m4hc1mP&>oTdt7eS-bEz8mU~oObme{^%56|ou~EPOSFBa7VpUZC z0gVc<@IUeo~q)&?o zU@=bz-qfWm)&0Qn@W_fc9{wx={&-#8>0xHJ-+Ijl#P&1qB-%*KUU*DCPkKCLzF*#t z0U_vrk1(&Vwy6Vm8@#Th3J5J%5ZWd)G0mifB3onY8dA&%g6Hir5gqMH|hnEBL0VVvl~aJjdljF$-X@a zMg=J-bI?2LGw-8mHVF7Jbsk1K4LgWi7U>~QovGT2*t^U&XF#iDs_E$~G+t;U;tZn_@73Y6x>vU%x` z6?l`$@U4JYYe#|GcI^f+rsy|MdB|`PQunKSKkja4IGtj9G6buN&ZSnYi|ieaf{k5q z@ABM@!S(A6Y}Sv~YJcB;9JeqsM|-fPIZZfOgc*FSzIpEdT=YYT(R(z{(~X&x%6ZM1 zY0(|PepBl4dK*@9n6@`rUMd)K^^0!^?U-1rrB*b?LEZe<5taFp!NoC^lc>}YUy?5FjT9tFmC+%%DYNa+L zWr)zMB%y_6L{S%;dk6bJPO!wmT=wPPK1b$%+ffWcO8;2T+7C28T?{!96{%d`0G~j3 z)6g<%$dC{vAKJ22nY)fnxlD>P_Xb&@>wrG+ZpfQ%RX=R2kd@bH3N*M8=BO zi|Z$Z5e`0NcU5&aN_DST8O@4v3vroq3t<_5hBX;d)*AJgWPb~p=qx4}^Ms6pgyY`) zu z^|u7XSP^~b1)*61r(}zd!JOny@$KviSp>L|jSR!u*1IgKwId5jmAi2`qe%u+XCTwU z;a62_a~Z}TqDJ?6lje5hblv1f1(6U@kWpc)z|&nRBV*UIieQR{Rru*|$L2SzxtL&| z7abeg@xniYhexYoN6zxY{nI^*xKW0Gz8D~}tE>O4iCkpWn8wt4?S`(Ftv?<8vIvbw z(FFd5`p4~#m<(3uv2+pv7uVC$R(iZuhnxFEY{o}BxPg2nYK zzOjuMR`}t3{8z#zfLXy||4JCt|1nv5VFjS#|JEhRLI>(-;Rh~J7gK{as*K1{IJ%7F zoZnXx&Y54ABfp9q!HDWAJlvFFdSC9}J*llUYXFDN8meEa<0}s z8M~X?%iKLB$*-a}G_$rTh;U{M0vc<}N#PVAE1vQdL#9a-`uH3*cbJZ~u9ag-fny$i z8aCs;3E85mgVK&vWM6}FH9o^WI#G!=%YOB#gT`1^VttnSVf4$YKja@-;zARB-`7v< z*imICw^KX73Gq-go6e?w^os0U0HSxH>60JLWhFbDeGT&Z$d3;9NWy;WvICuoZaKMi z=UvTpLDrtssbhiK&A3EuWf6!)>$sUlRcn5?Pk^OCtvApB=6suN42uKN-Xs7u7EjXh zG|>-1Rp>w1KB%sI*b5dGwFbuHNN=|})sR(dekHBL=>I~l@Nao%H=w0q==`3$zP>!I zmgoBoi7ylm<9Fw6s3&T%wJ%>VQmx(H)!iq?ABhdSzitwHlFNGcBW4sc&9DmTThb^qz`diS`xzQT# zhZff!yj2#rS>yfS5?}{inV5BfcZw zF5uh!Z8b#76;GcBDp7^zWtzQ%J;D}es(iWWWQNA{SvyhO`X8oyNL?j8Afn=x(zHct z7)3c%RKTPAyKS0gwVpGLqR2_%EowBpk>rW}MFfsR9>#2aOL!HKZtg$bAOe+#;;w?3*If zQk=HPWSlX7cF?h1PVE1D>LL{K&Ze4d!#Y2qN+^N-`~RG(O^Gjg~EsZbW^ipD9*+uf$K4Cq=H zxnYj(#+^eUa_1nRDkJJH|9$VB>+n4c)jji1MPz$dV4Ojf;)iYjgw#m+4puPdwgLSj zubNnwfz=z1DqFmy@X!!7D}kTo6yBjVFYT`CisjAgjS^cO%|(B2vzWb5PcrnxTK4xu zm?ZZkCy>+)-K8*)fo5JCWa@}^R!iI}a6OA*S&ibX6V zKk0=}K_M7m$#QEMW=_j=4tDXgH{_l5u?oFF?CXKmk73#~&>ha8CH{7jDKT2WoJ&sW zD1wk_C4Q6m{-YEWeAg*gP5`2Yl>4S@DAbob$M?&Gk2@2%+H*H2wu_)XL3fn{D8ljl zh41$!&_(kR($}4zJj3?zH-A0f2$4;9tH|N9XT48P;?coFH~9`z4S_35{xiUZC4&-3 zo3Yt|ee&RI&qBF zW$mPrwbqtHO$6De21%1=8zUX5=uMV*>#k-H>d5vP zz8OPyI|HLGKn`U2i>k8-dUX}5DJ(|Oy>)cK%QOwU>>~+Wn?bp?yFpx?yE;9q{;DTa$CFGK2S&xDNk$24GuzOgK{np ztsuRfjYmLjvhn$}jK3F_+!AtM`LVw=u&FUIGIU6>0@nqZq~REsb}_1w!VB5-wbS#J zYPBNKKJcnu^LTORcjX|sa8KU?rH5RRhfJ&l7@AtLVi|n8R7-?$+OVx!2BrQCD8{a)Kc#rtcWIC2(YYu=0edjgP9sFpp0=(eKUE2*>jc+n@q? zKTY!?h-S?Ms1kNuRAjowlnTQZF=#1S3XPx<()Wc1>r=QN?#W;6OL z2|Y0fxO0y=?Qi#F4?$+-Qpt&J>-JT?;d6ITN&7R`s4l(v17J7rOD3#Mu@anT`A z88>nZmkgV5o2{_IQ^TOFu9g}ImZrc~3yltx&sdaLvM=bAFpUK=XGx*;5U2#%A{^-G zEpT(GF(}NVJNzn$I*!S`&mA<1j#FEw4`lJ|^Ii?VA+!l%tC)`Q6kS&`LD*!rp)SSZ z!fOJa=BWFG0rWJE<~c2SnT{ykD23&sE?h7iTM20!s3!XMY*WJK_oA3FzU zScKW==wTvjelr=iu2>(0OLprW-Pv$m4wZ7v>;gB4M5m0(gOK>_@aIy}t&Y`H8crZ% zbo1L-*2^hdvzq`~_{<=PT=3jZ#UgMI*bQbOCzf~T53X2F9_QJ+KHwwQCpU%g4AGP z7i4m>KYOFyVXw`L5P#h};Q56X@OHZ-P-1qabm)G~GS>9sP0ToSI#43Q5iDCjG6r<1 zyJZa^U&>SXTW+bvJNB5oHW0xNpCGimZgaFJSb^??Uz1|jbXP-h<65N`CgZYX8jM3^ zSJ2tNSxr8>9)`mMi8nHw1aDz_?+ZRuMO@tou|Q9z11zdD#ka!jZfeXi(bGK&_vVQ^ z?b#6fYLRy70Mb9>3LcE``^rMcoxj~!hvBT%&cQK#L#nhF)C)iw(B$hY1fwak15v#J z-<0Kg=Zh1uk_^yGnO~&Hl|4?14*DFz9!$a(EAbT!5(<}0xUlYlC%`_JfofaWqfWNEfhlbLb2Ds@#m_oKXUJ0 zdSUbdO-BOnM!b2U2o3t3AQ&HGTzjL}LBTpwM2|gf3<(USB~4unKD6^_G>?@N%R2V zE+a}P6(vB@x|W>|ol!d5vws)e>m=0+2Y~#n1%kb=NXlT+^$#v9N z0Lt8wQ#?o)_j$PRavtm~z!aRPQ85^H^}u0bjlfDm(!3xG(oMQY?(DW6m1QdXq-PG; z7jW?rNj(vW&SZZ>B^q=2mU!8NLql4|nTI;pSkw9gbip(A^U<9DVj%Sjd-T0)ldwku z!O)$tFvVGRJnSI!t*v+U;QlSXfMu%J>v5B@Rq<`V$DQ>YTCkc=so?hUx&dda4;A1r z>~5vZ0E0M|B&lv|71*mTuRX`GB3G>9RzF7}+2HIgGrV-?p|bN%&4si|xxb+z1S}F2 zOBQ37uO?>1n_T3UF8nYp?uWnU&+53X|N94hR8WunjZ{}VH({S=x7sRbdLq7vyftJ? z2@;dF{)x|0nI%sYQ|%pe)%r zxP>}6S+ylPH{St~1KGov%?}z^A&&&(B(s+ngv{wKZ_L(*D^+nzoie`$NZ_*#zQ@&T zeLY@LZ5;akVZ}L=Qc=fIphsO^5%YJ0FQWW3*3|ahxk16yr=ZgTqunNMFFko^CZVSh zlk<_(ZLf{~ks&04%zz`tNla=O_`5r6W>d-%mdkEryHLIgIZyrq88$=4=Im4xR_}|) zZ!?V3+6QZ7$+wYJ=>nqKQ2L_gKw%=9`ds2Mdo6`avM-uO$tdP}7Jandkx0}XQhkn# zzq9uFBxvJ^#%sW$s)6J+j5 zXmAN{4mTo60nJnc2C6XtOBsVbJYc5&a0nZ|e?0yj+kThaCezk^Cm!F<|A=cu`uO@u zMai;5H6<@WD$n?-1{?Pzr2mF?F||EI+58#(N9dB2U*+$o$gl7(T>0jTu!?94mCA7^eb%}7cOyZN?nfVx+L$x~x>^tyJj$vmKZOXBKkU?mdopygE`0+rPi zx3F#q)PBC|6M{n@2|m%_24@G{?ql$@S=PPaEh1sG9v zxo35;K!!nAr&^P|c$6z+&vUa@eX|Uw&nednN1SCQSFNx={#kvzFb``4ixf3m zIY=2lKDmS2WGQx#gfP0BOAD4i?UoNdWtRz&Q=#>Y75@;X*z^@rxbLVa`YnIz{oaTE zNGmThd0`N_?*0!a>=f<^TOdF{&|-km!E9iB4IUs0KsvY|y6}%EN>L%XAjjOs+WGAJ z=wAmEmK)JGoI&Uq$`1%&(sh$n^lmT{o9pDd>t(CQ;o9Sr;gFtdZ>-qZg7jbc*P~uh_&U$wOO;{P3h!F3|a}dH-WoGGsXGBvB2c7p<>_CnJAYP}_#gD0t)$ z$Is_In%83bCJkJDij^-Lbnh)JKexs8f3E|dDy=BUEES;}7{*+oxV&iNODhNv#y<$} z=-mY})V@*#j#N6^A*B940E$3$zfmk;3ReX3DO;=d*_(!|f4FL$#0mL1ToWidl)O|S z_mi9mELAQ#S-D7+a2+=an87R;9t|U~1&sgF{`AZ#ZsOL+=sb67R?kPP;SQrDJP#F^ zsr<9}0#5FYl#3;3$mekh_XV=g`LVN$408Oz1ZU^F@kv7gMcyAWTE+yQfcY<&di4?0 z09J)>xHkZoQg!{E*RBSy?JCKOX7n%2$6 z-dzz8T10-8&ZG00yi<2%x`4@L8oj$ZXP|WgZ7E%-(h>@kqIJqt!{ou4J@Anf#HcEw zPSv)TmeUHAmeK2Am3|mkp+~W?)6eVg;c7e2H48x zBw;iPnvFX(a}Y+nn8^W#;6K4qA&N3hg$HYE=n|Dy)1^$6Gxud`0!yZ0d*p;(03ud^ zy^hvb&{_%?^-|c8>2fAn_!5YCX`?Ov6`*x_BAqZdP7`m!E4|c0ttvHBo2}NJT1HQs ze_rYk1e$5HO|)A}>0a7uufbmK{SDV?ndJ&?hXXVWWefy|nb5Neb%C#pK9tl%P-U{v z%DOV=mf@tF5qHo|q4_JBR-PLXOPn6TUrQ#9e83Sw*iIv zU^kn1C|EKWK_mS%Ah;Pks|+@@OxM8{T4o@Zf(mvI z55b=nM5d)6kW5m_Lx%`#@%0J~At8s1=`iJf)}P0CE6_pa-@`H5WIHbP7t4>QJLNX9vAkd8^)UWbAP6$@LZXWxAVbOYkgCYh!Pi4lzTy1%B>Pf9ZYnAH}3- z*{;*nGg_ZWZvV-oB*dF(WQ0^x71UW+hk8Cp_g2sc=tD&+CHpenk8FnaqFX;|TH%e* z9ifj@(1+=xs1s>xxwM`XyvIu)rw0VwCz$GAQ(yL@$J9)4{viA{r49G#c+Z$S3LaiI z8H1fq(Zeb|M4x7oLLr4te=>z$^SG9N2w2ERGL4D=I9HuNqS6>W3ax}f`>ts|P^Zvm z@RHI@6xXbm9v9ry(J7RMY_2a`aPR71XW4B1S$a}He-4?~NS8>v_Z&;WYl>KnqBJ7-hpw*<(4p-DB;Erm4B)LPDS{#kCnL(dCt zzl#E4aVwa$czprcYdPwIDCcme_C!|1U))PSuuI$zk*W(Ap#uWp$Ho58;-{sE*^$YJ zfcvRRKNF?1B4(sbe>9@m?fS5nel8lSJLrFy&YLbuYc7$Di~9RZ6dwe@uT*+bv?gxR zf2UDHLuJLEg$yM9E&WcA_+R7?)37(a^as(%yhwk9vCtzREf&@5r9ab0gl1l{v<@{6 zC3O?M!(VOl{tcWYFh zcWyW`&qG3pOe@HR0(&Pf@bG-DEH=)i05VspTrF}nH!FPJEICoc3S)q%V+;_aFop)l zP;Po#SxD2ff0q4{T+T}wqs1MJ(W0uHR%OPB;l?2?$s`KN)CwvpIWi|N=M^e1V@wxw zhcbE=o-@%8PA~qV;Cea8wH_!IqWp_Sb&NfdNz}9rhH)r2Br^t) zMeQA%TY4kA4{q7j(jMtJ*xS>w>)_TMT^(L-L2JjGxOJj&ZV-)ggVi{5yFFtT>@y74 zJf{=@f2D8cEh09yg6#A&72XCLgRGuD?B$3Jh}mU9;ruBh4ewxD7AzgZW*I&BN(>mh ziz!$}F_R7^NNhzIC6VZOw|xa*NB`8Izi`@_wbT62%UAIpm3#SWG=pW%ix>j~;()!P z=|~#* zs~lrgJ~te{KY{96l8>ex)n>uuGMb%`c#snwpktC*Tn4EfgILng;xZ@8J7YPjGNU7z ziy8fhkvX(Gk4lucz zopwj%<+s`80do~2D`Ae3vs%C2n@KP&f1Tw*W`gvc{0^aDj8k(=qot>B`xmPR?nWM%F_Tp@8f$^zMC-x zxq5eR4y{vI3_c*+I&2E>TUd_fzE&@Pkna^rKrwaahT_Qipb*^GDr(jJ{9!?Jf23IL z(A^If6~w*; z?}1Z(f$4(T18(_hnK5l-&KgXmo>nd-3e?K(mCc5>6~3tQ)BGjdE37LV)Q^&pwQ#S) z&+u1NlKHDJYC|%1Na3%+nyEu^jPYK6&d&RoKPnRF@-yfpj11b3Z`tb@e>%>eq_``W zHjyW%v=QIIjMQf2l5wjwh-GwmTwut$YYW7S)B^oRCLq)v5C#Y+jB#TgxNhmo8p)ig z+m?O7x>V%vtNgs^JCwARHbhpo8tiRe{t^FJ)aIYKNc@@Cy2(NO%_oXe2h_a_mDEVt zmb7j{8H0tCIim0{RsMyjf5xg%)u5J6>nIZ!1*crg#_ZLsWwQbZRQGHCjX?b^(~`4- z%8a=}HZ#K!NGa0IY^23L=>CEKsPgamPfQ#BAATw`rjrHMokCmE$m&;$>$>FdWOl&m z)`l3}takOU{5O^V!Y`N18@mT#Hk8i4BUNORx;`YLf13b*mCvaBe-8<>i!%lf^-2;U z9Xu^Lie6DxK3T%#A{V~ncqJJ#j^vgU*fE*tQzR9Izl^818it9apbd#{E7lZ_VRf}E zc~xnS$S$5Fa)vkpeqLJ|acM0jlw*p5vTxcoxin9j54VyQ6lcuBR|hLNBB)YOqvR9U z!GXe8h=^BOD85uIf0M*0GA*2n7=9$tiDqrej<}AS5rg&?cv&o6pi1XUOT5%!|GH4f zvaj?*$t>7b&`TGoQk8_MWDe?v2r}Dt(=V&+RUEinS|JRG@uWH{KKj7Hj+!Oxo*$h3 zJSiyE3UmxBOJT8wLQ9;~a_QJ0+H$+Y7xq%5dSM}87BbO_f7fWu3%N;ZkQ#*^Fy;8l z+=R>08U>@C^*y3XHwO(!x~UB1eKROeJu9R4i#yRqn*t8KOlnf8LRwpLV^InvOY4y& z6Y0aoAta#nWk$@|ua--OGHHW!xhjPv3`wq-h()h-g$Rf$X%kb&Wa>o&%jl;Juf;h@YL`0DJV={S3<~|Q zxVKlNt>PnLnaimuw=2>%bOF+Krp5q#4}8Z1N3?_qAS?S%)arm{Ww3y0Sj8X=>X^3N zqTq|)7_lk>iEJQee_T8ouuaPZ z`ZGo<5HsR>A7m?9YOlD%ISXt11#1V2EoPx>=owC%+R@3XD;+F;=(T8c8;0RJ zTsm&wf4E6n@v_B&nSvZcHW#06QG>Wc4M@NZjXq_R6tyGE%uPgmQ2BjdC;x_^K7e<&Sro+Qon7}Z6ij>=e%vr_NLQ=+o& zBpJok>#>>@t9yzoIjkHJE78hf09L;KB)w^jj*Zi;(XexzZjXje(A)F$&QZE+l#Y+n z`=Vi2$nPAb_di1SF@@cJ_apQ%rsI6t?-IX1$@BzBhvht-IL`O`<;uJelNOBA7;pvZ zfB49mXR!WQo}M^PexS)v&gcE|!8|>kr>}-xBWE7K{@1Mi2C+ZCIZxkg5`fhJ{k9ES z?Q&jg{rY^Kz9*250O|V{Qa~U%CqezPdlGEt!}O!OX%T>bVgb8HsA8Oc79FMkJ{1BQ zAj1lz_A7b%#c`?Pf$=T5(=0B&}8~QNxNwRw*HCGxKs7 zAbuqb0wZTm!A@E!voDKNVzcs90B98$d1mpu$?pVH>>OjYdz|h7=c8OvnalIse-rG> z^TJ7MQ)h{-eY_~oi=$1-J+wg3^YM~AU$kfB%yWKA6u<1KR)jRN^V))`t?f_yozaju za%E*q=!xg(Q{=;$gM(CgBtI%caf_(Rsq{@aD+#S}=pC z86ka~*GGN4VU#aFW&hkLem=}?e|vn~F~*%Z>oir1(1J)V;P~B;pF%#~KE~a%?9Q`R zT%aOCGZYoCbw1uX$~|Kog$!cB?q~!dDf0Qo*L&^G+IB- z%c7$kALW4)e5h-jQveUupWrMkF~&y@j`9uT{Dx>3B5#~;1W8xjD8D&0f6BK2KH7bP zZxi%s6BzdKTl4((Xp?-8aO}B$ceSl^VLKn+QQT7@lRQFm{BB3JY*{801(`8^XP)m0 zD?Wbj7{5On_W1Gh19`qL&mS4*kHL?eO-i0WS*?JlPt9MR=TBSiCFAu3oJ*WezdvZZ zSy&eKQ%>+G2tl=09#H+Rf3Rl+Zi1CZ#ESIpy09nYSNtA9DI^G;;Ll9Z5|JT@L8pS6 z=LDaMhSef9kKYv$QmRE_E9?E9x+#R7EG1O<>7Jl@f=`e0)6s|@lKP$XQ0bTR{H&FQ zqg^6St}cX+CEqrS#MdXVu^sKs^EdCN)gfU|nuEu;t&|cN=jWpWf4BaikH05EkAG0a z`{60><}kwSr&av3l#hRYOk3;XuMV}FV=&DU*-9CmLvT+ z+WizQMWlnqEBL#Bo<24v@d&Bg{c`sRFGPy!hJDXGw0(p%#G{63F=LblwcdY3eAs2Vm zpQhd8QdM++1Q6AEX;GK+F4-R9ZGBt;ETo9?DCrv0D+1IDFD2JwEAD ztgpk0jFnYAjJJ(@@>0vEgx;*>?T$KtwXGVHwg{EYV4k~Ae-(8Mq(-WYZ0p$a#PooH1&29;1t$_t9$S2(58GNS8RjOP4xdqRX7GP!mS( zwXWr~Th0}t^{$I4?CPWqt{rr_D@Dz&!?e*gOjo$xOPgE|Qj5EaTHR}@&3zZOyYHqB z_w%$_-a=dCx6@YnYt$*fK-=U$L01^rp)ZLX{|8V@2MEVi07E4e007D}b)$q0%WLwQzAecs$;-Nd zASxmv2qLK4kS~#nq5^hlp^Wh%1BQZAKtXf}4pBfw6cmwp&P}qWT{hR>FFo(vkMniU z{hxF9eEi_U02Ygt0^2UTZ1s{$s=JNge?~JFs`gh0d#dZJgLbsfiWrV%$9z#cWYT!t zjF?8kq{&_*;S2Vf!HtPzG*RvEF(L`GzPc~$iyD1Ci)C~-H!lhd7@Lg7h!G1np548{3_1!t0yE`k(y=0q zK|2;q#^YwpX>6fwMt8(ipwh-oMr2;Z4jPg3t-iFjiEVP5Wj8W^l0Y%930Vneg%uYl z%W`q6JIRq+8;=~^6f>R1wX0ice^UuBBdtAFI2o4_6~UJ^kg?F#!|# zYr2j}n9N@@1>7~fuMD#_D5w%BpwLtNrqnEG8-Ir6ou2E2f_VZH!ltvzf8c{mpVs8; z#;m70j=`}S=A%Yn>Zr&LhjZ?R7!(;@XXOpGy-LRkte_4{1m@;F!7*B7==^LD=cSdP zjHE!>@hvj2=j%8b%Xsz_e=^rfuoNB3(?h2TOd@BOcPH#f(lJ*VPOpv?Y41)Ks62d1 zDEI_jNFx|D6O@q)DJR1``t~a28pcUU-Hb zr2w4G3E7TSV_>3VOTsau3RY9(%sAca@`GltA}bxT)ik1H!5XYBe?kY&r90kZSdnDh zJd5IBgehf8^CirA2(Y&E2`TajRIr|su8#*Igb3yNQi%@vQ|Qug0WPFt3=sf32k5POw*CcHVT&e?km<5rfT#*GFEMn@M&;M?CEXnO;5$&MkH%LTOA|6AF?7MP{_m z+0sTkD8^Y27Oe4f``K{+ti76n(*d037~VYDfUe=5dU+nO0CJFdc)it$BU zO%5G8uizR=3aYQ|=4MC7SFo%Y*Wx+?$Cw=WD(3RQ4HU_UDH>}?$Qz?#n3%XpD7%RuqWbW)B70MGJctpNfASD{o7H++vZu$4o1xXFA?ww{ zbWYj1)>vOM11H((N3yjpV{pzA1&`%9C|O8;qTz8oAyBw>%}U=A6;BG(jxNlRaoAGy zw1!8qhjHlOwzNr^`JZaog`d$CAt|9Y>il#($06H=pOe~P#7@x2FSr@lgz zs*2f8e^n2IOcmXU-YNne%Gnnv>GNc2HZc_ZisGIydd#(P!m?R4 zivLigs3CR?D@I^FJ=eFEUL)RNUX(Or!8C~c7a#Nf0~EDxE0#HPRnWs=+UPC{6t^VV zf1XabIi-5(-Jyy?!mSgUnpB~XV_Ytcm>sjoUU_Xrk!*W}#(=%bsJCjxKxz05sY_ z@G}Yk3Dc=EH=Dtv!#Ajku0+&I@M|%_fIyc`EM&DL*fHD9e%b4a#j?E+)M{6be`;Ty zj5$`+JbiP}?32xoXwpP8m%f=<^e{tJxy7oghoq4Pa<`(&N{~HO^qjLoRa7tJT!Sk7 zSsgN9G|@;e$Q&I@$3Q{O#Il^uu=VVmiBk!-Mt8Jk<70+$)=(E;&_XY3YUUYE+mq35 zGroo+M7UH)O&>)Tg_BG8Jq8ffe>0TcVv^EJOj3He0dUd!GEAWt_X^@_X}^c)tlGf( z_1=OVsHoe4Y4tl$>Dz%B-ohQ2HH10$f&WTSjk)Q4h1*FdNq1jYJA(Ovw%S2VOJTtX z>H@W0L#UVR!W51#ZKi)IoH&G~gQ!g5)U9Z$OQB^e8fZ@i{VD?~tQIWX*I2w);@?C{sP+OFC4_IfZtP}LT~3FqJG8Qta_S@ zd{Vkvu5N`^@ADRYnG%9GerFINTpiWH}CfKwRa=su8@xYMtWNUdJgtNAiV;Y+Vvf0(n9&Vd3lf?a|2 zyyMZp2p%U3hp@Z!sUbWwglALO>sM2F-mChR0km_#io86qt3HtRNa-qlkvtm4D=F+N z{ry3=vh!+J>Fd(tHxEt;zf#bwmKV7$3^W(rBK+m*wvRirDL}s&QrJB?i6Atd4)_cB zfJ^^8jKAEEf28nXf9Xdl4z_0iFG!aQePzN$eu?%GQ4sL##QTAOx3DYVE)$-Pf-<3Y z6gGQOqPX1C)iER{rbH=aO-fALiUh}@oulAayfieU^rNVS(J z)mTl^2~@tAe^!b)l2(foB|TZJmNY8*#H->Iagn%6(yPU_l3p*iOM0^ymh>U9SJJ)W zd9fc5FN&8WzhAt?)OC&PM)w4HMnSamqf#jJo|Dn53@=S?$ zm$)mKmy~z{%+m=xH=vS$SKv$n;7+))4h8h&FQj*-2UijZ-vAYN5vYCyO)N(-fvhgV zm>{B<=vszJt~HqKx&S4vAWB_fl({a&6!&VByDvb6JBX?7UQBaugx76LJ#Go~?*9Q$ zO9u!}1dt)a<&)icU4Pq312GVW|5&xPuGV_G@op77bzQ0`Ma3II6cj;0@G{*_x6$l@ zWLq!9K8SDOg$Q2w06vsBTNM!*$jtot=1)l8KVIJeY+_#EvERRF+`CN~+)~_fcio`v z*4!Y8Ql(|4lGuxq7O`$fleEN}9cjIwL&2@>M%LYJOKqvn8>I&WVJ`e@>#4mHnuhzUW>Zd%6?zt$4SI~lcxhl zC4TO|$3j~w-G4Q7M%K!ZiRsf{m&+`_EmNcWDpuKnz~ahZga7dAl|W%-^~!;R$uf$l zI4EIk3?ryIC}TXYW(0;0`IS)TrpP}tglbN4Rm~aBg2TZCuXEfjpuhoC)~>H#Ftz@S z>Dn`9pMU{c7+4fO0Z>Z^2t=Mc0&4*P0OtV!08mQ<1d~V*7L&|-M}HA1L$(|qvP}`9 z6jDcE$(EPEf?NsMWp)>mXxB>G$Z3wYX%eT2l*V%1)^uAZjamt$qeSWzyLHo~Y15=< z+Qx3$rdOKYhok&&0FWRF%4wrdA7*Ff&CHwk{`bE(eC0czzD`8jMNZJgbLWP4J>EL1 zrBCT*rZv%;&bG!{(|=Ze!pLc^VVUu~mC-S7>p5L>bWDzGPCPxXr%ySBywjS7eiGK;*?i?^3SIg!6H8!T(g4QQ%tWV0x-GTxc>x`MRw2YvQwFLXi(-2*! zpH1fqj&WM*)ss%^jQh*xx>$V^%w2Z&j!JV31wR!8-t%AmCUa;)Y-AU<8!|LS2%021Y5tmW3yZsi6 zH<#N!hAI1YOn3Won&Sv+4!2kBB?os0>2|tcxyat=z9bOEGV>NELSSm<+>3@EO`so2dTfRpG`DsAVrtljgQiju@ zLi;Ew$mLtxrwweRuSZebVg~sWWptaT7 z4VV)J7hC9B-cNaEhxy8v@MbAw(nN(FFn>3184{8gUtj=V_*gGP(WQby4xL6c6(%y8 z3!VL#8W`a1&e9}n@)*R^Im^+5^aGq99C`xc8L2Ne1WWY>>Fx9mmi@ts)>Sv|Ef~2B zXN7kvbe@6II43cH)FLy+yI?xkdQd-GTC)hTvjO{VdXGXsOz-7Xj=I4e57Lj&0e_C+ zAH@(u#l-zKg!>k+E-Qjf-cLWyx_m%Td}$9YvGPN_@+qVd*Q)5cI$TrLpP-Mh>_<6k zysd!BC`cEXVf*Q0Y(UgdE^PYo5;;FDXeF@IGwN8mf~#|e4$?Ec!zTJEQCEM2VQr*k z8Kzplz+)oH5+-jyAK;GP8!A zSKV>V#gDFTsa`xXt|1Uc3i&PSgl%D=JEwjW^F5vD0l6G!z|~>y03#T)?a;@!*(vAwmBFr?|-8vt&)jK z!?QG5DNz%WTH4H>vbUDpIEl_O19mVOmP_8bVz-kCsYEtX_1Ovb zj+KS444hDHKJfNHwq&hQ29#QGU>;3P1P+D_kVfmXiA~y=y{YGCGep{s6iwTA*ge*SZSH9K;{Gc1^NWT z@{>XOdHMwf#oVVr5e4%x1I%+r&CEE*Qu8V$tmu5mm?%|OR}{L++~wCzm$RIp(7a-4 zuUW|Jw)8G^n5G$)e{tS^RU&@6hKR!RWWQzWdvkgoyCMKT%caX_=zlus#?;Tc<%xwM zJewbXg?^RAe+_wMk=A>m=A@r~0~#Z6hmh`q^b!Z`=jde+%aR2&hxQ>`<7bXmDk+!% ze+$*7qh)2_^In4P`ktr>O8z!|UZGd$clcz~c=h>Hr~z=--z_oAmq3RVC-fGwS&sJu z1-B|M{Jx;us@*hy_J0o)`U?9cH0RlBfikrIP@yl=AE9!T32=5+P-i$<+jN!7%+FG| z&!5nrvTOegUa57UpZ*+hJA>p2ga0MxsK21E^Uo8!3b{#gdjViLw zDj?{%qL2b=fc}>G8S&udSPszN3la#if5csvd~EsYTU;zzV}C*VHpkOH)4w1W41*h( zbOQ8mmEBsPEo@ObLg z93$OR0O5mpOQ~kA@~zx=sm%~6;&yQdTLO>ECg3w&$V;K3Rxm$Mx#E3$#)AP`Y5ET>GF+K7Ons=3AJy$clM99)e@XPVK;DaXeI#{!nwqZB>eS#gwM4Gc z+UQjZ#jeu&%Mv~fw1GC37KsP2q#o_EXrxGY9xc+Ai=@m@d~k~Hixz2HYVc*MpSt<2 z$TixLN>0<8uJ7@5d0V_2pQVkF7Vq{{!dIm33#3Ft_}G2)yjM)!d^I{4d6C{M=mM$U zf6tOXHRy?rH1$Si=)u8jv@ewuk!jjLMIV6_5a7L3EjF@9Y$D=$k&f1(*4c#dO{r8e z(v+H}hoI~Q3P)vOmA?n#aMPBi8^%0|sj#w@`5rIzh zQ!tSbr|=trz3XA)gH(s7qlZqzSnr3Gf1k$a6s-R${PJy>^CsjPC{3BNQR^|!p8G=V zW%6Eb%Fa-3=o*=+gf}`(Z);pdp9v&gz7C z*}oPKd5d(eNI!)2=dpg8p7eD2T72>A&r(Oc#kZr8Zl0T=_oWh8{A0N9vXFPxf7T*> z@F=#&(1(wn_rW1wit#=dQbR@h$qP^^nkv#IIQ!Y8pN*0_p744iBi`tUFE&yiA8GoT zkhf%^=TflG&)tw(+<*mIXdUgu%{CxCbK8#JowN2@0SO=M^#R!H6?`{v`CUe5FJ?Sw zyCTwGaWuckZrbd*cS97n*}$HSe?&KIhht~x@pz>vsk20GwyCM?#|=m*99Q+xzrHv4AaMp^qVvE1qqxlUZ9nHsoy&~b@Pi; zbSxIXMqg&hucX*B)AZGlZ<_wNNMB2M8@&ts^)Xsm@z<+UH@_KAm7Vk&fBsM1e8*q} zC%twfR;0hW%s)2}p$g))S6XPbY}b-1+g56mZJ4@bdpGTo?Oxg^+aw*3?Jyme?QuE* z>k?^{mF+lLvMtd2WXr!S_d)uoY)gJo;16IEvvuH(Z&YlEF~4MtgVERw{mtdnP$YGQ zLX5QNiKcH()87Fhz);gaf8Zxp{{AQY07^yr*Rp8*MAN@Z(f^s9xq-6?{;3ChGh2NJ z5h72l13;O%#FbbiB|~{IS`?nriNJPIz>*(s7WJjAq^m9+Eguv+(JTTuX-2FlipGi# z>xbCfU@qZdcZ!5pBz#h2ErNo*n((t*0g$h4ur7sb6@-iGc#L$?z0#Uu)Xh){P%^cBVZ7wOS8%9=n+@X6!d z0j(RK8a`Hw2l5S1eVl@8los!kPhF(7@ijcCcL%PBB!<=~MKK)m$2=`T0Eu_#R=NXI zH=h{{`4iqLa>{Mue;U1>Y8Hp4#o-&#kU!*$UlB)|#anUx3hcmxfhe0Q0&^ZadKv7! zbC8#@-C);d@h~h3LJ*D3;sie9@`|I)B2%(-WLk{fsNVS{3NYNyg}nR)ue=tyK_MEW zlVVgDvV8=;&C^-g=a&0t>2a|ceQr0P|8{y#_POQ$^YjVXUgwtkpQOvO&n@>kdb!Un z_g|vV%RaZ<|2lm`_POQ$>nH%Z&n^1GBO19cTkgk1x9oGv{j_*W>RF15CZPW_^!Tj4^T{T!k9N#2;RO7iBy{i;&QUo$Tz+ znfE#GOwP=ozrTJ1Sc55We021t`blp}YoGj;%5y1uf!uNG{2U zc(N@c!)lX%wI3y3q;Kp>H=-52V;i3A7>>%(TwkwPYfo4kR?qm|#C16kwWU$vA^EoB z6NQd%bM%nHh`l&oU46V-HClA2e;$PpNH>BcwCIK7lE8cr+NK@KmP_V`PLn)Sf8 zDbz3|Fu5lWrRhrFHeWUO$ci zK|;QNMYU4B-{xxq=2gh0MJ_>CzIO%I2C`dQ0}U%zLwzhCD9eXj_~Pck%ya+e`Xnf; z1j}62O+JMJ**YJ(mx~=JE+{p9z;saHl6M^@O>uaJ(zL_pbbfg95AEkMI{P zQrP_-wu~WeK)#DjC~RTz1jWl>>J%&u_A8uVH0UJwtHj+O|MgSsVS$&sSO#aG3~yMr6^X${<>0 zQle|Lj@}|34Nrzqkl>m>`@k4<9*UKfc&#)tI4W!!rdA{x!$&L15^Z=Vs_fD^%wvtV z4GjkS3$YfV7A6gE;|0p94J`((b7fR@!QilW^Ak`-SZ_W1@A@+aUavpvf)AYzv|)!q z4VaP^lJwjZ|A#8&wqkPDwLy5?V^3lqxn2iXkLKsKp3v z)lw?h02Q#9dcl*)Nir~*8P80hEVZkB@JF-{`qDZ}%ic=6I zm%FuV~79YG9K?LnO!Z^jy-SC}sEQ=yjZJve> zhLEVZ{w5(ZoQbyviJ%i_b(}#LLsvu9$Wy~P3VYSGP5*j5?A-{?qgO|N4=ynDG-o(t zyH$VDmx5O`yrrVG6j*nCTSp%*G6XD#7Z}brjGFxGwwDl7VfqSEf=l#B~g+q=IW=b5Z!M<&ucX9YRuprWo1}sWhaiRi-Z__Z`V_?vU@yo}2(i zFdD}DxXjRbRIlL*gGOwBofG%{2tGu67-Ps#wKfT;#rvpD6d}xUOenjnl!5P12Z*7q zw!2cYy^fD{X!wL7>>Y4wID{LA*tcu0;U>}9^SSiBWz#PcPvS>06_ak^GaXZyW_ZJ^ z=DocXy5lp)=I}XgE9)%v+M=maz{HH12<9-a6nE%cQa3OVKU(g8u^m{zqPmtPawHNk zWR7wCpHO$PtcdUx!|AF`o4_oZJa38m07T<0{69Jm_wcovhi@1zG{6_Cwr^I%)O|y^ zYO*wZw@?12&fKV)RzYoo?-}~1q;zC-qb%&GVmhg#?!i<=i!>0|LdgHijnpTlpo4>E zJ*c*hO|z2vk8U1+%7RKMp{yWG^+$Y3922QYvQ(DNhU(N_cuU6$Dzv>0=5xNOeup?c zNo$t6oTaTgSFPlQTvG0VOE^gcRX<`ALi8~FK&RITk_PxKQN!sc(4M3F**1D|x$G9+ z+(ut+b|{%kY$001J2kwwjltaQEs*i>3w*#Zn|y(f7#?GPoIb8Gtu3 z6l++mVQpv&_A5%Vi@5j`T=XJZe@D@ehm?9h2I}XB_@(}4kR&~YHrm3(cAUT?`X&;S z^aR@e0Z>Z|2MApz`fv6F008!r5R-0yTcB1zlqZ!0#k7KfkdSS=y&hcen!76`8u=i8 z2484mW8w=xfFH^@+q=`!9=6HN?9Tr;yF0V{>-UeJ0FZ%A0-r7~^SKXVk(SPwS{9eZ zQbn8-OIociE7X)VHCfZj4Ci&GFlsOiR;iIJRaxoGXw(dGxk43#&53m>S)=uTq|9>^ zv)ObhvxHhb=kS$=qTqy4rO7l7nJURDW4f$LID5`?1J}a&-2B3PE?H*h;zu740{(*5 z&`a#OtS|ymO_x%VPRj~QUFfu4XL{-O9v0OB=uyFEst^tz2VT!z4g<2#lRmMJ`j5ZM7xZ*AM>%2rvSpe(=Ig+{%mm`qu9D$$nuwfAVtg)wU1D1@Oa-0qBDX0)tL}srdd3AKVr| zu!4652w2`d0fsD36d(v8?%fw448z=eKw!vV=GK+cg<@B0$2aAJ0j^IF7?!T;tpbe1 z;%>zpHr&Lcv2JbrpgXly(as#!?0ARvZ(9Tyw9dPLBI6nnUO(iIoc8&R_JI|#ma!w& zAcT?E9qq-QVS__Pcf=Ea+u?_rKX*`?w+8~YR^5P4}7sOkF z9^v<)Wd+*~+BRU@A=_f}TNYc7Hi#bHH2iMhXaTblw9&-j;qmcz7z^KOLL_{r36tEL z;@)&98f?OhrwP%oz<(i#LEKIdh93L_^e1MUFzdwUAZf=#X!!zWeTi=n`C^CXA?1cg z9Q>gxKI!0TcYM;pGp_iegD<(`iw>T3#itznkvl%+;5k=(+QA>Y9v3?#|5p?&G^NcjljeZ~g^f18y^%J9)Cd^>|=NijQzL5oim< zlYvkmuB9`wBAK$LhSPsqg44Xt6)qW^7KbGx93STK5hI&60&Pi2F?cADNrlr=CM*jZ zLoF@q;~O@SuHKr*C$ow|6UMLxJIZx~e9?Ss^Ty`ZaDtBpPPoAs zJW(yH$N4T<;S2#yPeoF?lu&qNOqVhlu1EGea_2aYXH89ap^|@L(Gh7>iYStriu4X0 z;c?T2YBH74HPSR?ZZItAvUReitVH^z=C?2`C}=rO7dV=-77=68sE%uDQcf{6cFi77 zhpm&o07Yne+0~cxtd5_*)sP&)@HC}ize=e%9 z#0xj(imzo}crbrYe63*c7RTYjDhiU1%Z6##t_Qui5BGbp8h+wH(WFEnJTC%R=pic) zGR)Vxl-NNqUE8ZG40R2ST?P81rl{~1FV5^e_8Pg(x$FW_6(mpMLKFJ(*W5>({#DW*Q zoCKbj>CJyx?{us_MShE|Mu(*hn_8mTv>ROv%chy0TJ@sGvER$E`JN~loQ0D;f|Gu7 zWz6bozzKCPos?s8CQ8kPJJs7yy@Vnhlrv7zVopqhG;I`3KjYvJ7U3Q84o~47P9z6E zG=+Dj6AqqAR72W5+#J*NkpVf)wXA6$(M~T?7#4pzGDBrUrkr3p#=R| z)ud>4j>mb%X;#lOggUgWlJKjV=@*U0pX+Y^LM!$sbuI0$Ut`oayK%Cl!#hQF;YI3S zNlkxGOJ@1oTeu+m*V=%8d-n8%+f;C_H)8o;-_FbP`qm5+m$!#sUS3~az?6UCnEncp zrIoW1GYikZ3^9(J+*73a_E2=I+@yTZzO&nHEt<<$te&=8HKwBfgjml-JG}$lI=92@ z4z$bd>F@tEaq6laA2^*uV=f+<_SYxIZ2lu1)15Avq4jrv%t_4M85a1jrdBbg?&OBO z?w|X;yr%s=o>F|n{!ss|&@a-Ga?>Xp`Tt1WnzOgFxn}QvF`pdqH+A0O6M<{R?*8aI zm|Fe9w=3;hq}hV*9V%VFm_Nouyj`+eMRi@5yyP88PxBQT&vbZ!!)Ky@-W>G*(aL2R zRrh*#Vd#O=-{*82{_t)2Q0>X_c9z?Dty^;DE4*(gK1oaCZ038&qGr3{1N+o{&GW)S zR_RrFeoeXT93w9WTJ=k2WmwRsyZJjz~raN31L?*7OZAKosxIC_$obw$Vto-F(G};KG84}n`sf{TwU%2wY3la+hh1Mo zOk8XAThu>BWiTy&7qj>ZQ^xVsJ)L}CZf)Xc&#mN8-WF1DX4>(>Q`45ejQ0=-ZM4zk z5L6XanSS@s%!u+}4U5KdXED2N1@ELz7MFYE%Vl0?GTZp&z)8j5fxVV0(M{Jk-YLI# zD7^e3@2_*4y-s~w)iFmb?A6PWbS|JU~kQ>A{z z<#_KpR{ZVn&J%Zz?8+_T3iQ3CX&uXK`8Ms6*u@`B+O_xJ&pYz;K_cUp%GV7lwA_XQ7h?=EiYO%jA1g4LkyE%H;C7 zPBKh~SnewUyI}=DY{&pStppCf@lAGIC^PvppTgt~O9f-}d3G+pn zHcEm8XU#X20bkb$bjx(06{tEH6~T)57MRE&F1=%5uthQcpfXUA=H!#g@?du$?pR}B zus~7Bs}5H9dx4fr4CvY|pq0)*@1y!kP7|oePX>Iq6EG0Z0Tmgcm@-Wp?51-IwPcVl z;ju?iv_==K$b6Bx4B|cu^pKur092#|ys(EK0ARQEYY^^{l%|QCuAjeEkp14?q>9h4@!6nkbbJ&fg5yu+?X8=+3#!VJj5-STn zB^PM!VxULuP~>AB87AvHdVm8Jad0aGgFcF?DbAA>SBOrobXEl`gda@_j7wDOI$XgD zA?Lm7ffXYk=VyXqs+K2Iu@*=nEBNf4$p*_rnW}xj5^+A_U=u*+w%i1|eiP93x+o@C zhJh7Ihbe;@`y&KjUXYgX_u)8xbzqD+z9U^n!xP?doXqyT+|nlWGZ zf)zbpp(6wDM6oe2=%E;$(+^UFIrO3?4Q`17gDC*02i4ujCr@1I$qFe_?ym&yj++j) RhRK)Bhkwq`;Yh)md4RrtR%sNbw?F7+wVN@9oT5^KvyxHCChVwDz29-_(~6`YI}kOI zb^sOR2x~T#ZdIJ>Rf@`fWMMck8Z~Fk7!ymA-q=^Hp5eZ$X)}%69EWv#a)HMQBo+#f z36F86&q=PH!h1hfL>Ol{cXt`zy7GFq%Eq79O{IA-u!cH*(wj1wN}D2M4WT6o(qxrW zEB}r}@-+r4&wIr;xO0(AI@=cYWb?m21~K;0A^-T{gEQnxfCN&@N(#Zq#RXZY87O0m z;t0Wp7M~;I&<5qU1T+?pjfUye_TixR_f>$?rT1}+*6u;9Gn0cXM{`4grB6(W zyBDpHwv$&%UIzt(jZMh^e3jZ{I@kE301olpI{yj0+;ZWogmFjno1+v zMW;sMFf7sR(_fhVjl~QhEC!kN?S1GnQ8&fuPw9z{5eDbyAAsT&CyjpUf=RK)X*YhW zwf>HLeXJxlm0mFjo>lB@ni;CUkg)*JRligsG*5>@wN*UJvbS&X^}x zn@^UJmJ90QY)d4OLkji-vg;l*>VWz+eRS?0G0Bg!HhZc?2Wz}S3kMg^_@+65nA?uo zkBwh=aDQVGH8XVK>zh0u{gJbev&iTnS1h3p(pF$?`aC^rhJj2lK`5&HHV#_?kJb zGMSi_SJ(*5xg|k>>Dvgt0#5hN#b8)>x5&pj4Wy_c7=p-XQ=>p*vRykohWoq+vj1uk znu?X~2=n2?uaB_*+Lr;+&434q#3lhbD9@_k1Te#nwy}MM^TTHt=B7p23Hvw*C##@< z$6AnfJ+Ri~X^`J(;3$v;d?J5C5U~zQwBA9#k|t1Y#>7ZrY#I@2J`|kfQ=Sxhc*rH| z{varkusu6HJ$Ca6x^v$ZA6sX;#AVi73(ebp61*3)LCF6yToc0LMMm{D%k+S_eJ<3CTZgjVEpgE=i5mX z0o|kFlPT7$0gM?NfN_Wk=T=zCXFhtz_fJrXuKFQ#uaUzUCWj%}$pz$g05t#ar{-1o z#ZYh6o&A&s>>NA5>#m&gf?X>M)bj>Q7YY}AR8nPC<0CJ`QolY!M*@PhNF4%4$5nFf z4{VxA-;8{~$A&>%Yo@~y4|O}IqYemSgP7Sy?d}}+e`ng%{?_hDUhCm`I`hP=rda|n zVWx~(i&}Q|fj^k+l$Y30zv6ME&AX7HTjy~frLaX)QgCMmQq3_qKEcRyY7nk_fa}Z$ ztrwMjNeJ|A@3=y7o^6LMBj@LkTyHm7pK(Vxq%M=uXr;M7{wWsrG~I1ki5OQ6#92Ih%Quj|8Z|qUzyy6 zUf%s*-I*73e%AX}cTI5r+ZsgVR1jr6I*hnu%*rSWqzs(T0KD7A4U}76 z)lH{eBF=pRy0q*o<*iM4@ojv65`y{#TKm=!5+7PwC>z)to^he4BI9`z60IYcFC8XC zZ<65C;OV<=0*{u4*i@nn?J4m6_p_jauY-;RSof^%yxer|uPQvyzOCP1x_-}6H;)~6 zkQH$^6A(lu&B^q)5vwSypjGu5P`Y#UdzM%Uhuh>vlisoS7c?a}|1hah-vo_i`e5;! z93hb``au;ow+t;(wB3-=ww(pgb`ZrEODvFvfEiQvXaSX6+A0ooWdEx3u-oBf9V((3iwRO z7r|AqsNjl$(oTUVvOf^E%G%WX=xJnm>@^c!%RBGy7j<>%w26$G5`?s89=$6leu-z; zm&YocPl2@2EDw6AVuSU&r>cR{&34@7`cLYzqnX)TU_5wibwZ+NC5dMyxz3f!>0(Y zJDdZUg*VS5udu>$bd~P>Zq^r)bO{ndzlaMiO5{7vEWb3Jf#FOpb7ZDmmnP?5x?`TX z@_zlHn)+{T;BtNeJ1Kdp2+u!?dDx4`{9omcB_-%HYs2n5W-t74WV76()dbBN+P)HN zEpCJy82#5rQM+vTjIbX*7<~F)AB_%L*_LL*fW-7b@ATWT1AoUpajnr9aJ19 zmY}jSdf+bZ;V~9%$rJ-wJ3!DTQ3``rU@M~E-kH$kdWfBiS8QL&(56OM&g*O73qNi( zRjq8{%`~n?-iv!fKL>JDO7S4!aujA}t+u6;A0sxCv_hy~Y2Pbe53I*A1qHMYgSCj0z6O zJ!z}o>nI#-@4ZvRP|M!GqkTNYb7Y)$DPWBF3NCjNU-395FoDOuM6T+OSEwNQn3C`D z-I}Tw$^1)2!XX+o@sZp^B4*!UJ=|lZi63u~M4Q%rQE`2}*SW$b)?||O1ay`#&Xjc! z0RB3AaS%X&szV$SLIsGT@24^$5Z8p%ECKsnE92`h{xp^i(i3o%;W{mjAQmWf(6O8A zf7uXY$J^4o{w}0hV)1am8s1awoz0g%hOx4-7 zx8o@8k%dNJ(lA#*fC+}@0ENA#RLfdZB|fY9dXBb;(hk%{m~8J)QQ7CO5zQ4|)Jo4g z67cMld~VvYe6F!2OjfYz?+gy}S~<7gU@;?FfiET@6~z&q*ec+5vd;KI!tU4``&reW zL3}KkDT;2%n{ph5*uxMj0bNmy2YRohzP+3!P=Z6JA*Crjvb+#p4RTQ=sJAbk@>dP^ zV+h!#Ct4IB`es)P;U!P5lzZCHBH#Q(kD*pgWrlx&qj1p`4KY(+c*Kf7$j5nW^lOB#@PafVap`&1;j9^+4;EDO%G9G4gK zBzrL7D#M1;*$YefD2I-+LH{qgzvY8#|K=-X`LN578mTYqDhU}$>9W&VOs z*wW$@o?Vfqr4R0v4Yo_zlb?HKOFS zU@WY7^A8Y{P)qU9gAz52zB8JHL`Ef!)aK7P)8dct2GxC*y2eQV4gSRoLzW*ovb>hR zb0w+7w?v6Q5x1@S@t%$TP0Wiu2czDS*s8^HFl3HOkm{zwCL7#4wWP6AyUGp_WB8t8 zon>`pPm(j}2I7<SUzI=fltEbSR`iSoE1*F3pH4`ax^yEo<-pi;Os;iXcNrWfCGP^Jmp935cN;!T8bve@Qljm z>3ySDAULgN1!F~X7`sAjokd_;kBL99gBC2yjO+ zEqO##8mjsq`|9xpkae&q&F=J#A}#1%b%i3jK-lptc_O$uVki1KJ?Y=ulf*D$sa)HC z=vNki?1aP~%#31<#s+6US0>wX5}nI zhec(KhqxFhhq%8hS?5p|OZ02EJsNPTf!r5KKQB>C#3||j4cr3JZ%iiKUXDCHr!!{g z=xPxc@U28V8&DpX-UCYz*k~2e)q?lRg<{o%1r;+U)q^{v&abJ9&nc6a32ft(Yk}`j ztiQP@yEKf@Nu3F;yo9O})Roh9P08j7@%ftn7U1y;`mard4+5 zB62wpg$Py_YvQ!PE2HpuC}3el-F3g{*&a z3q{eLy6Xz|F+aMrn8R8IW2NZu{tgsyc(>*TdV79@?V$jG(O+Iz2rnDBc|1cK8gR$Y zthvVTI;(eYhOdjapHe=9KI`|2i;{VIfvnR6`qof=4a=(BTZkev78+6GJW**Z!|yvS zes)T%U573C~Hm`&XJzE=2t7tFIZM`!^r^&z;W?dOj-N+a10^>wV(l~2naa?s; zTxU{z;Go|Ve!vUjUrZ$B#mWH)NSdxi;dWa-@w)-$wBOpo`DEG<;C#W||W}&@z>C`*j9V|`ai)z*2PG`TZt6T{a zj!#m3`Vz5R9wJkNMsJ1`fSCS2mHnizWDT!G0Ukp$%*_^X1=k=%mmO$^_0_d|kc8ek4_DZwomL(>GGtfEB)Wy&cfZ@9-T|hAq&fx;XR$$_yl6iogcR{u zm9g)axS6=_IL4=wQXf|EkzO68$Ms4*JXAt8gFxLCibt^C#C|I|v|U{%A;+NaBX-Yn z`HAmP*x5Ux@@Wkpxest$F~K8v0wlb9$3gHoPU(RMt+!BfjH?`8>KMK|!{28+fAk%6 zWdfyaD;Dr~`aJHn0}HIf^Y9*keGvm6!t?o%;je)wm`Dm$fN?YtdPI7S=Y23+15L{J zr;n3MYg`<50nW^`BM$&M(+PQ7@p7Lvn(kE`cmoNS7UkQmfvXQBs_unhdfM){k`Ho! zHL0#a6}Uzs=(bu;jnBAu>}%LzU3+{sDa6~)q_|pW1~*Is5J(~!lWvX(NpK_$=3Rbn zej|)%uR0imC;D5qF7p}kdg(-e{8#o!D_}?Fa<&{!5#8^b(dQl40ES%O_S(k8Z$?Hs z;~ee=^2*5S#A*gzEJgBkXyn*|;BBH97OOmvaZ>&U&RfU0P(?jgLPyFzybR2)7wG`d zkkwi) zJ^sn7D-;I;%VS+>JLjS6a2bmmL^z^IZTokqBEWpG=9{ zZ@<^lIYqt3hPZgAFLVv6uGt}XhW&^JN!ZUQ|IO5fq;G|b|H@nr{(q!`hDI8ss7%C$ zL2}q02v(8fb2+LAD>BvnEL8L(UXN0um^QCuG@s}4!hCn@Pqn>MNXS;$oza~}dDz>J zx3WkVLJ22a;m4TGOz)iZO;Era%n#Tl)2s7~3%B<{6mR!X`g^oa>z#8i)szD%MBe?uxDud2It3SKV>?7XSimsnk#5p|TaeZ7of*wH>E{djABdP7#qXq- z7iLK+F>>2{EYrg>)K^JAP;>L@gIShuGpaElqp)%cGY2UGfX1E;7jaP6|2dI@cYG%4 zr`K1dRDGg3CuY~h+s&b2*C>xNR_n>ftWSwQDO(V&fXn=Iz`58^tosmz)h73w%~rVOFitWa9sSsrnbp|iY8z20EdnnHIxEX6||k-KWaxqmyo?2Yd?Cu$q4)Qn8~hf0=Lw#TAuOs(*CwL085Qn9qZxg=)ntN*hVHrYCF3cuI2CJk7zS2a%yTNifAL{2M>vhQxo?2 zfu8%hd1$q{Sf0+SPq8pOTIzC&9%Ju9Rc1U9&yjGazlHEDaxY|nnS7rATYCW_NA&U? zN!7-zF#DXu0}k4pjN05yu#>x8o#Jx7|Fk=%OR((ti%UVKWQNH>+JhH#ziW1hD=rk* zD#1j?WuGxd-8VqG@n_Lqj^i=VBOg@GLePo0oHX9P*e7qBzIs1lzyp;}L3tP1 zl5;OiHG&-flQ;rYznH%~hz>fuJ!n*H#O)3NM3`3Z9H|VFfS-_xHRCuLjoIS9wT!F0 zJ-kV3w>7EguDzoBPxW>Rra0#+Y?;Woi7qJ1kpxTad?O?^=1cG@GeNtRZRi8_l-1CS z`(#oF<;VYR(l(gHIYH$y2=rj5m3QL{HQgbW9O!TU*jGj!bFazIL?MYnJEvELf}=I5 zTA6EhkHVTa0U#laMQ6!wT;4Tm4_gN$lp?l~w37UJeMInp}P>2%3b^Pv_E1wcwh zI$`G-I~h!*k^k!)POFjjRQMq+MiE@Woq$h3Dt8A%*8xj1q#x?x%D+o3`s*)JOj2oD7-R4Z*QKknE3S9x z8yA8NsVl&>T`a;qPP9b7l{gF&2x9t5iVUdV-yOC12zJnqe5#5wx0so2I)@8xb$uPG zNmv=X)TjpHG(H!$6Xp>)*S}r538R99Y{Pofv}pAFlUK;xi{E43^->z1srWR=J$8N! z4jRu;EAiLG9R$5#{gR){5?o^W^!t140^f=vCVSs@vK7#`-fv`P*WV|>nX610pK08< z>r#{r)fR?2pNG}8o)?uvX#UJI)YM5CG@0E8s1lEV`rom|kBmf={%h!o|26a=lNJbX z6gkBS7e{-p$-Vubn$(l_IbwS02j;+6h2Q5F7P?Du2N!r;Ql$M>S7Frf*r3M`!bvWU zbTgl2p}E<*fv?`N8=B71Dk03J=K@EEQ^|GY*NoHaB~(}_ zx`Su{onY@5(Owc#f`!=H`+_#I<0#PTT9kxp4Ig;Y4*Zi>!ehJ3AiGpwSGd<{Q7Ddh z8jZ(NQ*Nsz5Mu_F_~rtIK$YnxRsOcP-XzNZ)r|)zZYfkLFE8jK)LV-oH{?#)EM%gW zV^O7T z0Kmc1`!7m_~ zJl!{Cb80G#fuJa1K3>!bT@5&ww_VSVYIh_R#~;If$43z`T4-@R=a1Px7r@*tdBOTw zj-VzI{klG5NP!tNEo#~KLk(n`6CMgiinc1-i79z$SlM+eaorY!WDll+m6%i+5_6Mc zf#5j#MYBbY)Z#rd21gtgo3y@c(zQVYaIYKI%y2oVzbPWm;IE#Cw$8O$fV}v}S%QDA zkwxW{fa#Goh1O|+=CF3h3DWNw+L^ly?BNQ7DY~Eca}5nt^>p#3cc9s3iDub0nh`Wy z?oH|dW8-HG@d5E@U>NWPjnhTjr7C${Iwj#;F2G@++N=Y2tjV;z57RNgE|kXQC)1h- zx8ODU>kk};J8KiSUx5jSsA_XPou1OH8=R~q9{`r>VnHkU6A=!zNOH8IGJoO!+bQys zDS2-H(7+Jfe+&zf#;OSV=83I|^M;0`Kv*#4%%O7x>@BgGMU*@ajUvY>cYw^`*jm@+ z{LZ2lr{OTMoQXn2XUsK-l72oysi9vgV4Sux^1GsW6zTV;?p#J06EvSVyUq5$f4kq< z{Chq5Z?I%ZW}6&uL+f&0uCW#^LyL!Ac2*QRII5TDGfZ43YpXyS^9%6HBqqog$Sal3 zJjI$J+@}ja9Xp)Bnbk+pi=*ZAHN}8q@g$$g<6_4?ej&Rw)I%w(%jgGlS5dTHN`9(^<}Hg zD$PbZX+X>;$v4NjGJxMDvVBiIam$cP-;h0YqQ{YgxYn-g&!}lHgaG3^B=>Z!D*7tp zu19e;r`u*+@4h41Da&NZv$qy-i6#DdI)EVvmKO*PvIKz-9E5R*k#|`$zJza8QJ)Q{ zf~Vl+I=8oaq)K!lL7Et5ycH;m&LKIvC|z4FH5bo|>#Kg5z+Jy*8Ifai}5A#%@)TgPRaC4f>Qk&} z4WciN&V(T~u^xBgH=iP(#nd;_@L&`7FUF>Qm-;hOljv(!74f&if;fz2Mg=b%^8$^C zna!2I&iCz&9I5ckX-5mVoAwz~)_&b#&k$e+pp=U2q-OjkS@yZ8ly1$2Vh?}yF0={P zPd3O@g{0L=eT-Dm9?imeUP(!As&DJ_D=5lwQ=3)XWXg)12CoB=-g-HX9RSXgL;yo0 z?$7z8Sy9w?DvA^u`Fnl7r_J&_jJ7claq*2l9E~#iJIWAPXuAHfmF3-4YjFYhOXkNJ zVz8BS_4KCUe68n{cPOTTuD<#H&?*|ayPR2-eJ2U0j$#P!>fhd(LXM>b_0^Gm27$;s ze#JTrkdpb*ws{iJ1jprw#ta&Lz6OjSJhJgmwIaVo!K}znCdX>y!=@@V_=VLZlF&@t z!{_emFt$Xar#gSZi_S5Sn#7tBp`eSwPf73&Dsh52J3bXLqWA`QLoVjU35Q3S4%|Zl zR2x4wGu^K--%q2y=+yDfT*Ktnh#24Sm86n`1p@vJRT|!$B3zs6OWxGN9<}T-XX>1; zxAt4#T(-D3XwskNhJZ6Gvd?3raBu$`W+c(+$2E{_E_;yghgs~U1&XO6$%47BLJF4O zXKZLVTr6kc$Ee0WUBU0cw+uAe!djN=dvD*scic%t)0Jp*1& zhjKqEK+U~w93c<~m_Oh;HX{|zgz=>@(45=Ynh{k#3xlfg!k z>hsq90wPe(!NljYbnuL6s`Z!wQSL8|(A*@M8K>`nPJ<9Hb^ zB6o?#^9zP>3hp0>JAite*3N?Rm>nJ1Lpq4)eqSe8KM_f(0DB?k8DNN6(3 zU#>-{0}3~vYJ7iIwC?Zbh@aJ8kfIvY%RveZltThMN73#Ew}jOwVw+|vU5u-wMoo9C zO(tv#&5`DOhlzunPV?M~qlM|K74x4cBC_AC?2GNw_-Uv&QtPOj(7L4NtVh$`J%xci zioGVvj5s|GY886)(}g`4WS3_%%PrF(O|s-n&-SdfbssL`!Gi7Hrz_r$IO@*$1fYbQ zgdp6?(IUaNPaH7}0%U|9X8HFonsJRrVwfmf*o1;k0+PwV^i%f7U{LAayu`!x*FmhN za(#a^@Idw9)jN)K!=sFC(G)ZNaYY169*IJ_ouY9>W8tC>S&MEp$+7 zy)NFumpuE>=7T@`j}8pa)MGpJaZoG(Ex3AzzH>gUU^eyWp*N2Fx+9*4k~BU;lQ1PG zj4)_JlelzJ==t*7=n2(}B4^^bqqcKFcJ7yVzbH_CWK?{eXdpKm);4|o{aM=M&`E$=_~PVi2>>L zKTN_x&qA)@ak=v=0Hl5H6~?LOfO@1+fu5(sB|VWID)w?%{m+n#7bLaszEJ#;$HMdt z9qP0gk)hIYvE1!jseA^FGTyK=i4eTPjTL$R;6FywMBZBPlh2ar9!8wlj1sinLF-1g zR5}hLq>pb1|AC-WcF!38e*kFv|9n<$etuB=xE%B=PUs}iVFl>m;BiWUqRIxYh7}L&2w@{SS-t(zUp`wLWAyO=PEE=Ekvn@YS*K@($=i zBkTMaH<&cAk${idNy0KZ8xh}u;eAl*tstdM8DYnM5N;bDa`AB+(8>DqX+mj17R2xBp45UES|H*#GHb_%Nc{xWs7l{0pqmiBIPe@r=X%Y-h<-Ceo;4I>isrw1Hd zZd*VjT`H9gxbf{b3krEKNAaV$k>SzK(gzv}>;byq##WEhzTN^@B4+VJvW>y|U}}AQ z4^Bdz9%QKBWCy+h$I?L@ffl{fLLL41Tx|M+NjjRf(`KjHG4^y=x3l z!!-{*v7_^6MiJOC@C$WV=hz9J^Y^lK9#tzs6}-

Gn4F+B~IivciU9^t0j-Mgao3 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 DDw4oP diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793..ca025c83 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f3b75f3b..23d15a93 100755 --- a/gradlew +++ b/gradlew @@ -114,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -205,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. @@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a218..db3a6ac2 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle.kts b/settings.gradle.kts index f95bbb67..09b716db 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,8 +1,24 @@ pluginManagement { repositories { - maven { url = uri("https://maven.minecraftforge.net/") } - maven { url = uri("https://repo.spongepowered.org/repository/maven-public/") } - maven { url = uri("https://maven.parchmentmc.org") } gradlePluginPortal() + mavenLocal() + } +} + +plugins { + id("com.possible-triangle.helper") version ("1.1") + id("com.possible-triangle.packwiz") version ("1.1.60") +} + +include("common") +loader("forge") +loader("fabric") + +fun loader(name: String) { + include(name) + packwiz { + packs.create(name) { + from = file("$name/pack") + } } } diff --git a/src/generated/resources/.cache/5bb646c3cee204f41a1b59a2c0d9083b5f7155b0 b/src/generated/resources/.cache/5bb646c3cee204f41a1b59a2c0d9083b5f7155b0 deleted file mode 100644 index 6acaa835..00000000 --- a/src/generated/resources/.cache/5bb646c3cee204f41a1b59a2c0d9083b5f7155b0 +++ /dev/null @@ -1,8 +0,0 @@ -// 1.20.1 2024-11-02T14:18:49.5565406 Oreganized Block Tags -25423f94c07158f094e4e9733efc1d1814551369 data/doom_and_gloom/tags/blocks/burial_dirt_convertible.json -589cbf5d60b97fd78f711d832bfddf03263777f2 data/doom_and_gloom/tags/blocks/gravetender_lightables.json -09179ee35f10c7ec1195c36e87d885a1e70fe485 data/doom_and_gloom/tags/blocks/vigil_candles.json -01bff27953e934409d6d1175c4932c12a6f535c7 data/minecraft/tags/blocks/candles.json -6e91c0be5e5b3d50cf0d1a8dec3e23c0ee042c05 data/minecraft/tags/blocks/dirt.json -734c9c36a0d0f32caf72e941b2f0d14e9f0b5b6d data/minecraft/tags/blocks/mineable/pickaxe.json -6b73bb0ce38222c428d54ee64e82ffa1d96c64d7 data/oreganized/tags/blocks/fire_source.json diff --git a/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e b/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e deleted file mode 100644 index 406dc57c..00000000 --- a/src/generated/resources/.cache/735031f3addf80804addae5e3f53249900116f1e +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.1 2024-10-29T21:39:51.7898507 Sound Definitions -79907f67d8cce142b6917a0af719d0b0679e6c50 assets/doom_and_gloom/sounds.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e deleted file mode 100644 index f7749c84..00000000 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ /dev/null @@ -1,139 +0,0 @@ -// 1.20.1 2025-06-11T10:49:12.2969107 Recipes -6152463b36c764652952c7b3eb81527fb14cdd29 data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json -6f63beee40272d429452ab2d3a6e618391c02eeb data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json -fea7a4550566387f3aff0f7126c5af6d4bb663d3 data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json -ea25da4c1930bb997455448c29c212d1ecdd9333 data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json -278b10ece35d19c6db32ec4c1078d7d900e63abd data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json -5ca38c9dca5dee32056953ddd09084ac31d7cf7c data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json -1149c1715489a243c287dca19130c02ce67822fa data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json -c9d34eddce54e41f509742a51710b46d663f7db2 data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle_dyeing.json -6fa03210633e686f2af90d76f36f13a638015441 data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json -a043f5b02795f1ba85a8cbedbaa8b6943a9ec6fc data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle_dyeing.json -350ab18a1dab657956263c90a57206a090a82021 data/doom_and_gloom/advancements/recipes/building_blocks/bone_pile.json -133fa7d485aec46da6c958550641b62eb37ed4dc data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json -a7db0a90137c9237b14121d4a857c5d7ca412856 data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle_dyeing.json -f0de4b5fe790abfc83e35e965b2886e79674d820 data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json -e4844bb98e3bc4aa57d20bccc7023497e577a685 data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json -9aef67417b8240692db3be1be2b05c6414015b8f data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json -978810ab78db47bb99d29f3d99a6f563464b3647 data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle_dyeing.json -6ab4def44043d20f5b58957a246df43c69e8bdd6 data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json -bf1788aaf4670ab07e6da15499d9868cc7dcb0d4 data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json -9e29690afe71b46022bbed4d217dd2d21916d473 data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json -e207a173bdebba5bf16d9f1cc5f17e5675816068 data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json -78ae30ee2910fb351b5f54c741ad08fa9279cdc1 data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json -79fd91ec18cc97e8b29c42e42720f35a3df1c64e data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle_dyeing.json -3886fae3aa74ece71400e3fbfff1ae40b627b430 data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json -56da70cbea54e02bf07dc27c25c4d4a4a7c547d6 data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle_dyeing.json -7407370944827bcddcf50fd938574219ea09c361 data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json -f0ed11ac93c16269d013f61bdeddaab98eafb570 data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json -1e2d09f88d97b4363b872b77313e1da4a8a27e91 data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json -be308f849ecf0a53fa6f20c1c0753f6d3aba0221 data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle_dyeing.json -eef190cb8d8c93128e5d7703ad9d2b64bbd2d433 data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json -26c16c1cc76d3424d21f2c94230224ffc2fffbad data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle_dyeing.json -00c2bfa62e289747c70830f0313f8f4967dd6bbf data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json -bc0161a7cde3d4dc49a28fdf1908e67a89865ed7 data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle_dyeing.json -9edf885eb261fa99191e0b996add681910c4b6a4 data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json -ae05f894b8e73b327eb4cfb8a49e6730ac72c746 data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle_dyeing.json -ec3f6677c2b8c693ba3367bca33e0127a5423c04 data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json -cccb3ec59abaf4fcdaa1773962d587f6b36dbaba data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json -b6193b3fdf5ed581e5169e39609194a8ef07da34 data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json -c684903deba74ab074cee282d0d91a31694f290e data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json -150cf8f199d549807678da76d718f1f69e6a82bd data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json -8a1a0c5acafa69f7582aa25516febd2f65c411f0 data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json -8492141cae1480e3096dcce2fbf45cddc1925677 data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json -dfb31a084b95ed7fd52953ccd0772821da881860 data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json -4b428a77efdb5e37d1a8dbc6c51b8f7f8507d4fa data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json -5f029c32d5f054b2b8376fefee47755ec3628d2e data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle_dyeing.json -e1dae506be68edf1e8da340bd1900c2abf188589 data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json -84cff80286a9fd5a968c811daab6bc0edd319b3a data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle_dyeing.json -742d045b3b60c92c7051202104e48c9f5548fab2 data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json -aaca6331ec75f666228389c6828c0f25481e3500 data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle_dyeing.json -f1e0eb0938d793f88e30e865668ac0488907f8fc data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json -b94bbe7c3e17d5248c6bfa538bb79076d50fd1a0 data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle_dyeing.json -aa605b75c3f6c335031bb476768c71be3482fe0f data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json -2f601d8074b9922c622523d14d9cef2083f00813 data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json -452b0bfb68b52ac370ae64a6cd353dcbb66b1f3c data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json -ae0292d4f76935fd4bd2e4f003f55663fcccc6cb data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json -9d2332677836822a28aca01e7b4258d2d67d21dc data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json -aea855b80433648fae686f39762ae355a3f9fabe data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json -88e984718c1e18d80641a882ad478835975d747d data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json -3a179797728c8502366ab46442c01caea334c5aa data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json -a78066a08c04317092fd7c9209d44c3e079c0088 data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json -a5f63eff0240e59d7bf00758adcd3255a5afc578 data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json -54edd6276632391a26dd7f7fa9b3aef700ef9dcf data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json -fe4702a717351548680cbad0fbf695405a10d0b6 data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json -38746a888dc2cd0eb412a60cdd5955779c033379 data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle_dyeing.json -3000f672c43ec4fe47d9a7bee5498cc378b0698c data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json -40af9262287deec7e5ad0b5552d0e322be8d0b47 data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle_dyeing.json -82102b76f5b48956b2bdd3c5d3ad4a9c5e22ceb7 data/doom_and_gloom/advancements/recipes/sepulcher.json -abedf4bdefa03beddc3d53320a905e6c5706e6c7 data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json -6e4f1a8dfd472910266fb5a9a478ea37ac4a08f8 data/doom_and_gloom/recipes/amber_vigil_candle.json -787adaacccbb8e579ac193ef9b48bd63ec352f08 data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json -b220dc46d76692a063a7fddbe155335e0b1fe6ea data/doom_and_gloom/recipes/aqua_vigil_candle.json -c6763151feba9b926a77ffb6cca7b9d6ff8e3d74 data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json -38634dd7467584bd3c18359dd58674ec5026fb60 data/doom_and_gloom/recipes/beige_vigil_candle.json -b78b400dcbcfaedb20a99a4c72586791bdb714bc data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json -c107eb4aa140502ba5eed1c6ebf42b7060069429 data/doom_and_gloom/recipes/black_vigil_candle.json -23da88ddb02a428f7071662a6e7b1c0433395349 data/doom_and_gloom/recipes/black_vigil_candle_dyeing.json -0cd56547b3a201c7e2bd6751f87136b895749fcc data/doom_and_gloom/recipes/blue_vigil_candle.json -f066a2a81aec7ce8a0cc33a2dc91ce7c5378a228 data/doom_and_gloom/recipes/blue_vigil_candle_dyeing.json -b75f59c147632e5290acf2357a1d2c6c3aaff2dc data/doom_and_gloom/recipes/bone_pile.json -1fde73a919f0d95213c311a473bf30392dca5c07 data/doom_and_gloom/recipes/brown_vigil_candle.json -36799519195f62475920fadafebfa9e9711aad31 data/doom_and_gloom/recipes/brown_vigil_candle_dyeing.json -f4c4248650843e22e482ac91a1421dda76c580b1 data/doom_and_gloom/recipes/coral_vigil_candle.json -ccb823bc8d28afca26a27fabce94da3510a93501 data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json -21a53b6e63bd9d564e7676efad62adaee1baf103 data/doom_and_gloom/recipes/cyan_vigil_candle.json -7876eb915d0289f0b12fd90064369e4e474a2662 data/doom_and_gloom/recipes/cyan_vigil_candle_dyeing.json -d36daafdad243753d433332e1a42f8c36540a043 data/doom_and_gloom/recipes/forest_vigil_candle.json -b87c7706cb02a30f947fac13a4362d244ac7bd34 data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json -5fec83ed30b08a4f252713c2c91046145825f961 data/doom_and_gloom/recipes/ginger_vigil_candle.json -6609ccf8f779058af4ebb3f6a6bd2dd602af782d data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json -571396da69a9de559d486ecfba68b75242d54e56 data/doom_and_gloom/recipes/gray_vigil_candle.json -e3dc9fe8dc984733e9d43060912fd67cfc71a032 data/doom_and_gloom/recipes/gray_vigil_candle_dyeing.json -7fdf2f467fea88c4f95349d4ecb083de673c3649 data/doom_and_gloom/recipes/green_vigil_candle.json -28761149055f9f3818a1ddee281532a5831f379b data/doom_and_gloom/recipes/green_vigil_candle_dyeing.json -b6a7b3443e9e85c7a80a35d2796c23d1761ac2aa data/doom_and_gloom/recipes/indigo_vigil_candle.json -bd88629fee0ed26721c3ee781e99ca7033682e32 data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json -4b9ac354ff38a172729f6d55731a40e47c94a1ff data/doom_and_gloom/recipes/light_blue_vigil_candle.json -e73f22e1340f75e38d7543d14d92926647ebbb04 data/doom_and_gloom/recipes/light_blue_vigil_candle_dyeing.json -a5ffa89936090dafa8193262115f9793aa83fca9 data/doom_and_gloom/recipes/light_gray_vigil_candle.json -9bd446cae7a9d50282230e6be3c62a56cf2da2cb data/doom_and_gloom/recipes/light_gray_vigil_candle_dyeing.json -b478cfade21df9e38354beaeba8bd025c3a3ed64 data/doom_and_gloom/recipes/lime_vigil_candle.json -c6fa35092e0aa7750743ab7e9afe09f004e7a987 data/doom_and_gloom/recipes/lime_vigil_candle_dyeing.json -98ce3ca661bdb3aa8b992c2291c62512c74182e2 data/doom_and_gloom/recipes/magenta_vigil_candle.json -8700626aa2e21296786b0616887ede66f4b36bc1 data/doom_and_gloom/recipes/magenta_vigil_candle_dyeing.json -bc7e063874bc929d57f0eae06d3516d1f6b29b4e data/doom_and_gloom/recipes/maroon_vigil_candle.json -6b2174d0a34dfd630e83d1365858929b4ec4aa80 data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json -5ae89cd5ce8dec29edf49b75f1840420c925b633 data/doom_and_gloom/recipes/mint_vigil_candle.json -84cfee9273ea36843e894e743d2494509c6c62ec data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json -9281c1d6696eb3a5e52f9281de3a8f08435da9a6 data/doom_and_gloom/recipes/navy_vigil_candle.json -6965fc1bba75a5106b25f9e7b5a6eb735e79d76e data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json -1072f6f5b304116dd367aa485682d30bfe7447f1 data/doom_and_gloom/recipes/olive_vigil_candle.json -9cac36ccd723b7c34e594512e2fd86c0785681ce data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json -6882e65f1bf8b85f3afaf5ce4a5e25639e62bb66 data/doom_and_gloom/recipes/orange_vigil_candle.json -95c15cb0d4d85e52c6d1cb4eb835ae97870f6718 data/doom_and_gloom/recipes/orange_vigil_candle_dyeing.json -409bf0656fc94471992fd24072e6a29c5506e7f9 data/doom_and_gloom/recipes/pink_vigil_candle.json -8d977aba5c30dc400b9063e2c3f2aa06856b97ff data/doom_and_gloom/recipes/pink_vigil_candle_dyeing.json -09a9c9b9ba79369556705047844dba8cb123b71c data/doom_and_gloom/recipes/purple_vigil_candle.json -5ec40c024b02e718e497d8bca75ae180e42ba480 data/doom_and_gloom/recipes/purple_vigil_candle_dyeing.json -c3d610ef50282cbe32d1a22fb2ce125163925166 data/doom_and_gloom/recipes/red_vigil_candle.json -0452f5321c14a2431fb79f19cbf2f4ebf7ecf5fe data/doom_and_gloom/recipes/red_vigil_candle_dyeing.json -5260bc9b40c171b8c817453e333269e32f43d263 data/doom_and_gloom/recipes/rose_vigil_candle.json -d77a8952cf9ceda6563c0ff67aafed7f2c2e1bfd data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json -d0af1f0ccef81065a6495f47c3481c34734aabfd data/doom_and_gloom/recipes/sepulcher.json -ee92c6a7836b75f779610a91e9f829715ce779f4 data/doom_and_gloom/recipes/sepulcher_fallback.json -3370f2c0af2a70eda9477db3b54da2788df12308 data/doom_and_gloom/recipes/slate_vigil_candle.json -770d5f9bf5c6a03e2dade1c8011c5bbcf1cf0447 data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json -6aab354dbfadfa8acd6c46173740c02106aa7ce9 data/doom_and_gloom/recipes/tan_vigil_candle.json -a7561f3c5a70502b5af69185d4d317fa32f99554 data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json -ac43fdb1f0307e2c5e57362284f3d8c3df570668 data/doom_and_gloom/recipes/teal_vigil_candle.json -2d4bb4d1990104f0305593b845eda95801a32be5 data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json -4b88f688ad0b4d8cad88e395c4d9ac179ee5b767 data/doom_and_gloom/recipes/verdant_vigil_candle.json -a9d663a9f7a307deee6a3c9fb2e5fb196d6fbff5 data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json -b50363a65a736aebe5da3b8ea983ca251ba6991d data/doom_and_gloom/recipes/vigil_candle.json -3c14265935db6f7398f64f2fcd6555511e94d0e2 data/doom_and_gloom/recipes/white_vigil_candle.json -bc33389a23321c987b6d94bd23aa36b2f3aa3522 data/doom_and_gloom/recipes/white_vigil_candle_dyeing.json -8eeef32618037d14be97a7e3794fe7d3b06aba28 data/doom_and_gloom/recipes/yellow_vigil_candle.json -532b592172d76d2a02a9ae8cf1bd3818eb50d072 data/doom_and_gloom/recipes/yellow_vigil_candle_dyeing.json -e05716ff8a829cf201dc2cd71320c0e2ddf3fe74 data/minecraft/advancements/recipes/building_blocks/bone.json -239dca446de9f20776a6fce1ac400a7e23066c84 data/minecraft/recipes/bone.json diff --git a/src/generated/resources/.cache/f43e2426f2370abaef549e24a3723585e9b3c47e b/src/generated/resources/.cache/f43e2426f2370abaef549e24a3723585e9b3c47e deleted file mode 100644 index 3c93ad64..00000000 --- a/src/generated/resources/.cache/f43e2426f2370abaef549e24a3723585e9b3c47e +++ /dev/null @@ -1,2 +0,0 @@ -// 1.20.1 2024-10-29T21:39:51.777139 Oreganized Entity Type Tags -a35af8d4e9c9c8d45cb7e2335ce6bacc00d45a8d data/doom_and_gloom/tags/entity_types/fills_sepulcher.json diff --git a/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/src/main/java/galena/doom_and_gloom/DoomAndGloom.java deleted file mode 100644 index faa62bac..00000000 --- a/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ /dev/null @@ -1,199 +0,0 @@ -package galena.doom_and_gloom; - -import com.mojang.serialization.Codec; -import com.teamabnormals.blueprint.core.util.registry.RegistryHelper; -import galena.doom_and_gloom.compat.CompatHandler; -import galena.doom_and_gloom.compat.amendments.AmendmentsCompat; -import galena.doom_and_gloom.compat.moonlight.MoonlightCompat; -import galena.doom_and_gloom.content.entity.holler.Holler; -import galena.doom_and_gloom.data.OBlockStates; -import galena.doom_and_gloom.data.OBlockTags; -import galena.doom_and_gloom.data.ODamageTags; -import galena.doom_and_gloom.data.OEntityTags; -import galena.doom_and_gloom.data.OItemModels; -import galena.doom_and_gloom.data.OItemTags; -import galena.doom_and_gloom.data.OLang; -import galena.doom_and_gloom.data.OLootTables; -import galena.doom_and_gloom.data.OMobEffectTags; -import galena.doom_and_gloom.data.ORecipes; -import galena.doom_and_gloom.data.OSoundDefinitions; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OEffects; -import galena.doom_and_gloom.index.OEntityTypes; -import galena.doom_and_gloom.index.OItems; -import galena.doom_and_gloom.index.OParticleTypes; -import galena.doom_and_gloom.index.OPoi; -import galena.doom_and_gloom.index.OVillagerTypes; -import galena.doom_and_gloom.network.DGNetwork; -import galena.doom_and_gloom.world.AddItemLootModifier; -import galena.doom_and_gloom.world.gen.VillageStructureModifier; -import java.util.Arrays; -import java.util.concurrent.CompletableFuture; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import net.minecraft.DetectedVersion; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.PackOutput; -import net.minecraft.data.metadata.PackMetadataGenerator; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.metadata.pack.PackMetadataSection; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.common.loot.IGlobalLootModifier; -import net.minecraftforge.common.util.MutableHashedLinkedMap; -import net.minecraftforge.data.event.GatherDataEvent; -import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import net.minecraftforge.event.entity.EntityAttributeCreationEvent; -import net.minecraftforge.event.entity.SpawnPlacementRegisterEvent; -import net.minecraftforge.event.server.ServerAboutToStartEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -@Mod(DoomAndGloom.MOD_ID) -public class DoomAndGloom { - public static final Logger LOGGER = LogManager.getLogger(); - public static final String MOD_ID = "doom_and_gloom"; - - public static ResourceLocation modLoc(String location) { - return new ResourceLocation(MOD_ID, location); - } - - public static final RegistryHelper REGISTRY_HELPER = new RegistryHelper(MOD_ID); - - private static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, DoomAndGloom.MOD_ID); - - public DoomAndGloom() { - final IEventBus modBus = Bus.MOD.bus().get(); - final IEventBus forgeBus = MinecraftForge.EVENT_BUS; - - DGConfig.register(); - - modBus.addListener(this::gatherData); - modBus.addListener(this::buildCreativeModeTabContents); - modBus.addListener(this::registerAttributes); - modBus.addListener(this::registerSpawnPlacements); - forgeBus.addListener(this::onServerStart); - - LOOT_MODIFIERS.register("add_item", () -> AddItemLootModifier.CODEC); - - DeferredRegister[] registers = { - OEffects.EFFECTS, - OEntityTypes.ENTITIES, - OParticleTypes.PARTICLES, - OPoi.POI_TYPES, - OVillagerTypes.VILLAGER_PROFESSIONS, - LOOT_MODIFIERS, - }; - - for (DeferredRegister register : registers) { - register.register(modBus); - } - - REGISTRY_HELPER.register(modBus); - - DGNetwork.register(); - - if (CompatHandler.AMENDMENTS) { - AmendmentsCompat.register(); - } - if (CompatHandler.MOONLIGHT) { - MoonlightCompat.init(); - } - } - - private void registerAttributes(EntityAttributeCreationEvent event) { - event.put(OEntityTypes.HOLLER.get(), Holler.createAttributes().build()); - } - - private void registerSpawnPlacements(SpawnPlacementRegisterEvent event) { - event.register(OEntityTypes.HOLLER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Holler::checkHollerSpawnRules, SpawnPlacementRegisterEvent.Operation.REPLACE); - } - - public void gatherData(GatherDataEvent event) { - DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); - CompletableFuture future = event.getLookupProvider(); - ExistingFileHelper helper = event.getExistingFileHelper(); - boolean client = event.includeClient(); - boolean server = event.includeServer(); - - var lang = new OLang(output); - - generator.addProvider(client, new OBlockStates(output, helper)); - generator.addProvider(client, new OItemModels(output, helper)); - generator.addProvider(client, lang); - generator.addProvider(client, new OSoundDefinitions(output, helper)); - - generator.addProvider(server, new ORecipes(output)); - generator.addProvider(server, new OLootTables(output)); - OBlockTags blockTags = new OBlockTags(output, future, helper); - generator.addProvider(server, blockTags); - generator.addProvider(server, new OItemTags(output, future, blockTags.contentsGetter(), helper)); - generator.addProvider(server, new OEntityTags(output, future, helper)); - CompletableFuture lookupProvider = event.getLookupProvider(); - generator.addProvider(server, new ODamageTags(output, lookupProvider, helper)); - generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper)); - - generator.addProvider(server, new PackMetadataGenerator(output).add(PackMetadataSection.TYPE, new PackMetadataSection( - Component.literal("Doom & Gloom resources"), - DetectedVersion.BUILT_IN.getPackVersion(PackType.CLIENT_RESOURCES), - Arrays.stream(PackType.values()).collect(Collectors.toMap(Function.identity(), DetectedVersion.BUILT_IN::getPackVersion)) - ))); - } - - - public void onServerStart(ServerAboutToStartEvent event) { - VillageStructureModifier.setup(event.getServer().registryAccess()); - } - - public void buildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { - ResourceKey tab = event.getTabKey(); - MutableHashedLinkedMap entries = event.getEntries(); - - putAfter(entries, Blocks.LANTERN, OBlocks.VIGIL_CANDLE); - OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> putAfter(entries, OBlocks.VIGIL_CANDLE.get(), block)); - putAfter(entries, Blocks.COMPOSTER, OBlocks.SEPULCHER); - - putAfter(entries, Blocks.BONE_BLOCK, OBlocks.BONE_PILE); - - putAfter(entries, Blocks.INFESTED_DEEPSLATE, OBlocks.BURIAL_DIRT); - - if (tab == CreativeModeTabs.SPAWN_EGGS) { - event.accept(new ItemStack(OItems.HOLLER_SPAWN_EGG.get())); - } - - //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { - // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); - // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); - //} - - //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { - // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); - // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); - //} - } - - private static void putAfter(MutableHashedLinkedMap entries, ItemLike after, Supplier supplier) { - ItemLike key = supplier.get(); - if (!entries.contains(new ItemStack(after))) return; - entries.putAfter(new ItemStack(after), new ItemStack(key), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java deleted file mode 100644 index 0fc02e76..00000000 --- a/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ /dev/null @@ -1,141 +0,0 @@ -package galena.doom_and_gloom.client; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.model.DirtMoundModel; -import galena.doom_and_gloom.client.model.HollerModel; -import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; -import galena.doom_and_gloom.client.render.entity.HollerRender; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OEffects; -import galena.doom_and_gloom.index.OEntityTypes; -import galena.doom_and_gloom.index.OParticleTypes; -import java.awt.*; -import java.util.function.Supplier; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.core.BlockPos; -import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.Mth; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; -import net.minecraftforge.client.event.ViewportEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class DoomAndGloomClient { - - private static void render(Supplier block, RenderType render) { - ItemBlockRenderTypes.setRenderLayer(block.get(), render); - } - - @SubscribeEvent - public static void setup(FMLClientSetupEvent event) { - event.enqueueWork(()->{ - DoomAndGloomClient.registerBlockRenderers(); - }); - } - - private static void registerBlockRenderers() { - render(OBlocks.SEPULCHER, RenderType.cutout()); - OBlocks.vigilCandles().forEach(block -> render(block, RenderType.cutout())); - } - - @SubscribeEvent - public static void registerReloadListener(RegisterClientReloadListenersEvent event) { - event.registerReloadListener(new OReloadListener()); - } - - @SubscribeEvent - public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { - event.registerEntityRenderer(OEntityTypes.HOLLER.get(), HollerRender::new); - event.registerEntityRenderer(OEntityTypes.DIRT_MOUND.get(), DirtMoundRenderer::new); - } - - @SubscribeEvent - public static void registerModelLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(OModelLayers.HOLLER, HollerModel::createBodyLayer); - event.registerLayerDefinition(OModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); - } - - @Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) - public static class ForgeBusEvents { - - private static MobEffectInstance fogEffect; - - @SubscribeEvent - public static void clientTick(TickEvent.ClientTickEvent event) { - if (!(Minecraft.getInstance().gameRenderer.getMainCamera().getEntity() instanceof Player player)) return; - fogEffect = player.getEffect(OEffects.FOG.get()); - - if (fogEffect == null) return; - if (Minecraft.getInstance().isPaused()) return; - var level = Minecraft.getInstance().level; - if (level == null) return; - - var range = 24; - var at = player.position().add((level.random.nextDouble() - 0.5) * range, level.random.nextDouble() * 4 - 2, (level.random.nextDouble() - 0.5) * range); - var blockAt = BlockPos.containing(at.x, at.y, at.z); - var stateAt = level.getBlockState(blockAt); - - if (!stateAt.canBeReplaced() || !stateAt.getFluidState().isEmpty()) return; - - var below = level.getBlockState(blockAt.below()); - - if (below.getFluidState().is(FluidTags.WATER)) { - addFogGroup(level, OParticleTypes.FOG_WATER.get(), blockAt, 3, 0); - } else if (!below.canBeReplaced()) { - addFogGroup(level, OParticleTypes.FOG.get(), blockAt, 5, 1); - } - } - - private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, int amount, double yRange) { - if(level.random.nextInt(amount * 2) != 0) return; - - var realAmount = amount - level.random.nextInt(2); - - for (int i = 0; i < realAmount; i++) { - level.addParticle(type, - at.getX() + level.random.nextDouble() * 2 - 1, at.getY() + 0.5 + level.random.nextDouble() * yRange, at.getZ() + level.random.nextDouble() * 2 - 1, - level.random.nextFloat() + 0.5F, 0.0, 0.0 - ); - } - } - - @SubscribeEvent - public static void fogEffectFog(ViewportEvent.RenderFog event) { - if (fogEffect != null && fogEffect.getFactorData().isPresent()) { - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float f = Mth.lerp(fogEffect.getFactorData().get().getFactor(entity, (float) event.getPartialTick()), event.getFarPlaneDistance(), 15F); - event.setNearPlaneDistance(event.getMode() == FogRenderer.FogMode.FOG_SKY ? -2F : f * -0.5F); - event.setFarPlaneDistance(f); - event.setCanceled(true); - } - } - - @SubscribeEvent - public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { - if (fogEffect != null && fogEffect.getFactorData().isPresent()) { - var color = new Color(0x697180); - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float factor = (fogEffect.getFactorData().get()).getFactor(entity, (float) event.getPartialTick()); - float inverseFactor = 1 - factor; - event.setRed(color.getRed() / 255F * factor + event.getRed() * inverseFactor); - event.setGreen(color.getGreen() / 255F * factor + event.getGreen() * inverseFactor); - event.setBlue(color.getBlue() / 255F * factor + event.getBlue() * inverseFactor); - } - } - - } -} diff --git a/src/main/java/galena/doom_and_gloom/compat/CompatHandler.java b/src/main/java/galena/doom_and_gloom/compat/CompatHandler.java deleted file mode 100644 index b8d949d5..00000000 --- a/src/main/java/galena/doom_and_gloom/compat/CompatHandler.java +++ /dev/null @@ -1,10 +0,0 @@ -package galena.doom_and_gloom.compat; - -import net.minecraftforge.fml.ModList; - -public class CompatHandler { - - public static final boolean MOONLIGHT = ModList.get().isLoaded("moonlight"); - public static final boolean SUPPLEMENTARIES = ModList.get().isLoaded("supplementaries"); - public static final boolean AMENDMENTS = ModList.get().isLoaded("amendments"); -} diff --git a/src/main/java/galena/doom_and_gloom/data/OBlockStates.java b/src/main/java/galena/doom_and_gloom/data/OBlockStates.java deleted file mode 100644 index 1a44b5e6..00000000 --- a/src/main/java/galena/doom_and_gloom/data/OBlockStates.java +++ /dev/null @@ -1,34 +0,0 @@ -package galena.doom_and_gloom.data; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.data.provider.OBlockStateProvider; -import galena.doom_and_gloom.index.OBlocks; -import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.data.ExistingFileHelper; - -public class OBlockStates extends OBlockStateProvider { - - public OBlockStates(PackOutput output, ExistingFileHelper helper) { - super(output, helper); - } - - @Override - public String getName() { - return DoomAndGloom.MOD_ID + " Block States"; - } - - @Override - protected void registerStatesAndModels() { - sepulcherBlock(OBlocks.SEPULCHER); - simpleBlock(OBlocks.BONE_PILE.get(), models().cubeColumn(blockTexture(OBlocks.BONE_PILE.get()).getPath(), DoomAndGloom.modLoc("block/bone_pile_side"), DoomAndGloom.modLoc("block/sepulcher_rot_5"))); - simpleBlock(OBlocks.ROTTING_FLESH.get(), models().cubeAll(blockTexture(OBlocks.ROTTING_FLESH.get()).getPath(), DoomAndGloom.modLoc("block/sepulcher_rot_1"))); - vigilCandle(OBlocks.VIGIL_CANDLE, null); - simpleBlock(OBlocks.BURIAL_DIRT.get(), models().cubeTop("burial_dirt", new ResourceLocation("block/dirt"), DoomAndGloom.modLoc("block/burial_dirt"))); - OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> vigilCandle(block, color.getSerializedName())); - stoneTablet(OBlocks.STONE_TABLET, null); - stoneTablet(OBlocks.ENGRAVED_STONE_TABLET, "engraved"); - stoneTablet(OBlocks.CRACKED_STONE_TABLET, "cracked"); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/data/OItemModels.java b/src/main/java/galena/doom_and_gloom/data/OItemModels.java deleted file mode 100644 index 53a5517c..00000000 --- a/src/main/java/galena/doom_and_gloom/data/OItemModels.java +++ /dev/null @@ -1,36 +0,0 @@ -package galena.doom_and_gloom.data; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.data.provider.OItemModelProvider; -import galena.doom_and_gloom.index.OBlocks; -import galena.doom_and_gloom.index.OItems; -import net.minecraft.data.PackOutput; -import net.minecraftforge.common.data.ExistingFileHelper; - -public class OItemModels extends OItemModelProvider { - - public OItemModels(PackOutput output, ExistingFileHelper helper) { - super(output, helper); - } - - @Override - public String getName() { - return DoomAndGloom.MOD_ID + " Item Models"; - } - - @Override - protected void registerModels() { - toolItem(OItems.BUSH_HAMMER); - block(OBlocks.SEPULCHER); - block(OBlocks.BONE_PILE); - block(OBlocks.BURIAL_DIRT); - OBlocks.vigilCandles().forEach(this::normalItem); - spawnEggItem(OItems.HOLLER_SPAWN_EGG); - normalItem(OItems.MUSIC_DISC_AFTERLIFE); - normalItem(OBlocks.STONE_TABLET); - normalItem(OBlocks.ENGRAVED_STONE_TABLET); - normalItem(OBlocks.CRACKED_STONE_TABLET); - normalItem(OItems.HAMMER_AND_CHISEL); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/index/OBlockEntities.java b/src/main/java/galena/doom_and_gloom/index/OBlockEntities.java deleted file mode 100644 index cff3e825..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OBlockEntities.java +++ /dev/null @@ -1,22 +0,0 @@ -package galena.doom_and_gloom.index; - -import com.teamabnormals.blueprint.core.util.registry.BlockEntitySubRegistryHelper; -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; -import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; -import galena.doom_and_gloom.content.entity.VigilCandleBlockEntity; -import java.util.Set; -import java.util.stream.Collectors; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class OBlockEntities { - public static final BlockEntitySubRegistryHelper HELPER = DoomAndGloom.REGISTRY_HELPER.getBlockEntitySubHelper(); - - public static final RegistryObject> VIGIL_CANDLE = HELPER.createBlockEntity("vigil_candle", VigilCandleBlockEntity::new, () -> OBlocks.vigilCandles().map(RegistryObject::get).collect(Collectors.toSet())); - public static final RegistryObject> SEPULCHER = HELPER.createBlockEntity("sepulcher", SepulcherBlockEntity::new, () -> Set.of(OBlocks.SEPULCHER.get())); - public static final RegistryObject> STONE_TABLET = HELPER.createBlockEntity("stone_tablet", StoneTabletBlockEntity::new, () -> Set.of(OBlocks.STONE_TABLET.get())); - -} diff --git a/src/main/java/galena/doom_and_gloom/index/OBlocks.java b/src/main/java/galena/doom_and_gloom/index/OBlocks.java deleted file mode 100644 index 418b1a39..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OBlocks.java +++ /dev/null @@ -1,74 +0,0 @@ -package galena.doom_and_gloom.index; - -import com.teamabnormals.blueprint.core.util.registry.BlockSubRegistryHelper; -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.DyeColors; -import galena.doom_and_gloom.content.block.BonePileBlock; -import galena.doom_and_gloom.content.block.BurialDirtBlock; -import galena.doom_and_gloom.content.block.SepulcherBlock; -import galena.doom_and_gloom.content.block.StoneTabletBlock; -import galena.doom_and_gloom.content.block.VigilCandleBlock; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.PushReaction; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class OBlocks { - public static final BlockSubRegistryHelper HELPER = DoomAndGloom.REGISTRY_HELPER.getBlockSubHelper(); - - public static final RegistryObject SEPULCHER = register("sepulcher", () -> new SepulcherBlock(BlockBehaviour.Properties.copy(Blocks.CAULDRON).sound(OSoundTypes.SEPULCHER))); - public static final RegistryObject BONE_PILE = register("bone_pile", () -> new BonePileBlock(BlockBehaviour.Properties.copy(Blocks.BONE_BLOCK).sound(OSoundTypes.BONE_PILE).strength(1F))); - public static final RegistryObject ROTTING_FLESH = HELPER.createBlock("rotting_flesh", () -> new Block(BlockBehaviour.Properties.copy(Blocks.DIRT))); - public static final RegistryObject STONE_TABLET = register("stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.DEFAULT)); - public static final RegistryObject ENGRAVED_STONE_TABLET = register("engraved_stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.ENGRAVED)); - public static final RegistryObject CRACKED_STONE_TABLET = register("cracked_stone_tablet", () -> new StoneTabletBlock(BlockBehaviour.Properties.copy(Blocks.STONE), StoneTabletBlock.Type.ENGRAVED)); - - private static final Supplier VIGIL_CANDLE_PROPERTIES = () -> BlockBehaviour.Properties.of().noOcclusion().lightLevel(VigilCandleBlock.LIGHT_EMISSION).sound(SoundType.METAL).pushReaction(PushReaction.DESTROY); - public static final RegistryObject VIGIL_CANDLE = register("vigil_candle", () -> new VigilCandleBlock(VIGIL_CANDLE_PROPERTIES.get())); - public static final Map> COLORED_VIGIL_CANDLES = registerColored("vigil_candle", color -> new VigilCandleBlock(VIGIL_CANDLE_PROPERTIES.get().mapColor(color))); - - public static final RegistryObject BURIAL_DIRT = register("burial_dirt", () -> new BurialDirtBlock(BlockBehaviour.Properties.copy(Blocks.DIRT))); - - public static Stream> vigilCandles() { - return Stream.of( - Stream.of(VIGIL_CANDLE), - COLORED_VIGIL_CANDLES.entrySet().stream() - .sorted(Map.Entry.comparingByKey()) - .map(Map.Entry::getValue) - ).flatMap(Function.identity()); - } - - public static Map> registerColored(String baseName, Function factory) { - return DyeColors.supported().collect(Collectors.toMap( - it -> it, - color -> register(color.getSerializedName() + "_" + baseName, () -> factory.apply(color)) - )); - } - - public static RegistryObject register(String name, Supplier block, Function item) { - RegistryObject register = HELPER.createBlockNoItem(name, block); - OItems.HELPER.createItem(name, () -> item.apply(register.get())); - return register; - } - - public static RegistryObject register(String name, Supplier block) { - return register(name, block, OBlocks::createBlockItem); - } - - private static BlockItem createBlockItem(final Block block) { - return new BlockItem(Objects.requireNonNull(block), new Item.Properties()); - } -} diff --git a/src/main/java/galena/doom_and_gloom/index/OEffects.java b/src/main/java/galena/doom_and_gloom/index/OEffects.java deleted file mode 100644 index 705cf192..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OEffects.java +++ /dev/null @@ -1,18 +0,0 @@ -package galena.doom_and_gloom.index; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.content.effect.FogEffect; -import galena.doom_and_gloom.content.effect.WardingEffect; -import net.minecraft.world.effect.MobEffect; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -public class OEffects { - - public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, DoomAndGloom.MOD_ID); - - public static final RegistryObject FOG = EFFECTS.register("fog", FogEffect::new); - public static final RegistryObject WARDING = EFFECTS.register("warding", WardingEffect::new); - -} diff --git a/src/main/java/galena/doom_and_gloom/index/OEntityTypes.java b/src/main/java/galena/doom_and_gloom/index/OEntityTypes.java deleted file mode 100644 index 44b1c48b..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OEntityTypes.java +++ /dev/null @@ -1,19 +0,0 @@ -package galena.doom_and_gloom.index; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.content.entity.DirtMound; -import galena.doom_and_gloom.content.entity.holler.Holler; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobCategory; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -public class OEntityTypes { - - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, DoomAndGloom.MOD_ID); - - public static final RegistryObject> HOLLER = ENTITIES.register("holler", () -> EntityType.Builder.of(Holler::new, MobCategory.MONSTER).sized(0.4F, 0.8F).clientTrackingRange(8).updateInterval(2).build("holler")); - public static final RegistryObject> DIRT_MOUND = ENTITIES.register("dirt_mound", () -> EntityType.Builder.of(DirtMound::new, MobCategory.MISC).sized(0.8F, 0.25F).build("dirt_mound")); - -} diff --git a/src/main/java/galena/doom_and_gloom/index/OItems.java b/src/main/java/galena/doom_and_gloom/index/OItems.java deleted file mode 100644 index 72a32711..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OItems.java +++ /dev/null @@ -1,26 +0,0 @@ -package galena.doom_and_gloom.index; - -import com.teamabnormals.blueprint.common.item.BlueprintRecordItem; -import com.teamabnormals.blueprint.core.util.registry.ItemSubRegistryHelper; -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.content.item.BushHammerItem; -import galena.doom_and_gloom.content.item.HammerAndChiselItem; -import net.minecraft.world.item.*; -import net.minecraftforge.common.ForgeSpawnEggItem; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class OItems { - public static final ItemSubRegistryHelper HELPER = DoomAndGloom.REGISTRY_HELPER.getItemSubHelper(); - - // Discs - public static final RegistryObject MUSIC_DISC_AFTERLIFE = HELPER.createItem("music_disc_afterlife", () -> new BlueprintRecordItem(13, OSoundEvents.MUSIC_DISC_AFTERLIFE, (new Item.Properties().stacksTo(1).rarity(Rarity.RARE)), 155)); - - // Crafting Materials - public static final RegistryObject BUSH_HAMMER = HELPER.createItem("bush_hammer", () -> new BushHammerItem(OItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); - public static final RegistryObject HAMMER_AND_CHISEL = HELPER.createItem("hammer_and_chisel", () -> new HammerAndChiselItem(OBlocks.STONE_TABLET.get())); - - // Misc - public static final RegistryObject HOLLER_SPAWN_EGG = HELPER.createItem("holler_spawn_egg", () -> new ForgeSpawnEggItem(OEntityTypes.HOLLER, 0x84EED2, 0x24352F, new Item.Properties())); -} \ No newline at end of file diff --git a/src/main/java/galena/doom_and_gloom/index/OParticleTypes.java b/src/main/java/galena/doom_and_gloom/index/OParticleTypes.java deleted file mode 100644 index 448b74cf..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OParticleTypes.java +++ /dev/null @@ -1,39 +0,0 @@ -package galena.doom_and_gloom.index; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.particle.BoneFragmentParticle; -import galena.doom_and_gloom.client.particle.FogParticle; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.ParticleEngine; -import net.minecraft.client.particle.SoulParticle; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RegisterParticleProvidersEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class OParticleTypes { - - public static final DeferredRegister> PARTICLES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, DoomAndGloom.MOD_ID); - - public static final RegistryObject BONE_FRAGMENT = PARTICLES.register( "bone_fragment", () -> new SimpleParticleType(true)); - public static final RegistryObject FOG = PARTICLES.register( "fog", () -> new SimpleParticleType(true)); - public static final RegistryObject FOG_WATER = PARTICLES.register( "fog_water", () -> new SimpleParticleType(true)); - public static final RegistryObject HOLLERING_SOUL = PARTICLES.register( "hollering_soul", () -> new SimpleParticleType(true)); - - - @SubscribeEvent - public static void registerParticleFactories(RegisterParticleProvidersEvent event) { - ParticleEngine engine = Minecraft.getInstance().particleEngine; - - engine.register(BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); - engine.register(FOG.get(), FogParticle.provider(200)); - engine.register(FOG_WATER.get(), FogParticle.provider(100)); - engine.register(HOLLERING_SOUL.get(), SoulParticle.Provider::new); - } -} diff --git a/src/main/java/galena/doom_and_gloom/index/OPoi.java b/src/main/java/galena/doom_and_gloom/index/OPoi.java deleted file mode 100644 index edfe30a8..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OPoi.java +++ /dev/null @@ -1,21 +0,0 @@ -package galena.doom_and_gloom.index; - -import galena.doom_and_gloom.DoomAndGloom; -import java.util.HashSet; -import java.util.function.Supplier; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.entity.ai.village.poi.PoiType; -import net.minecraftforge.registries.DeferredRegister; - -public class OPoi { - public static final DeferredRegister POI_TYPES = DeferredRegister.create(Registries.POINT_OF_INTEREST_TYPE, DoomAndGloom.MOD_ID); - - public static final ResourceKey GRAVETENDER_POI_KEY = ResourceKey.create(Registries.POINT_OF_INTEREST_TYPE, - DoomAndGloom.modLoc("gravetender")); - - public static final Supplier GRAVETENDER_POI = POI_TYPES.register("gravetender", - () -> new PoiType(new HashSet<>(OBlocks.SEPULCHER.get().getStateDefinition().getPossibleStates()), - 1, 1)); - -} diff --git a/src/main/java/galena/doom_and_gloom/index/OSoundEvents.java b/src/main/java/galena/doom_and_gloom/index/OSoundEvents.java deleted file mode 100644 index db14c32b..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OSoundEvents.java +++ /dev/null @@ -1,44 +0,0 @@ -package galena.doom_and_gloom.index; - -import com.teamabnormals.blueprint.core.util.registry.SoundSubRegistryHelper; -import galena.doom_and_gloom.DoomAndGloom; -import net.minecraft.sounds.SoundEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class OSoundEvents { - public static SoundSubRegistryHelper HELPER = DoomAndGloom.REGISTRY_HELPER.getSoundSubHelper(); - - public static final RegistryObject MUSIC_DISC_AFTERLIFE = HELPER.createSoundEvent("music.disc.afterlife"); - - public static final RegistryObject BONE_PILE_BREAK = HELPER.createSoundEvent("block.bone_pile.break"); - public static final RegistryObject BONE_PILE_STEP = HELPER.createSoundEvent("block.bone_pile.step"); - public static final RegistryObject BONE_PILE_FALL = HELPER.createSoundEvent("block.bone_pile.fall"); - public static final RegistryObject BONE_PILE_HIT = HELPER.createSoundEvent("block.bone_pile.hit"); - public static final RegistryObject BONE_PILE_PLACE = HELPER.createSoundEvent("block.bone_pile.place"); - - public static final RegistryObject SEPULCHER_BREAK = HELPER.createSoundEvent("block.sepulcher.break"); - public static final RegistryObject SEPULCHER_STEP = HELPER.createSoundEvent("block.sepulcher.step"); - public static final RegistryObject SEPULCHER_FALL = HELPER.createSoundEvent("block.sepulcher.fall"); - public static final RegistryObject SEPULCHER_HIT = HELPER.createSoundEvent("block.sepulcher.hit"); - public static final RegistryObject SEPULCHER_PLACE = HELPER.createSoundEvent("block.sepulcher.place"); - public static final RegistryObject SEPULCHER_CORPSE_STUFFED = HELPER.createSoundEvent("block.sepulcher.corpse_stuffed"); - public static final RegistryObject SEPULCHER_FILLED = HELPER.createSoundEvent("block.sepulcher.filled"); - public static final RegistryObject SEPULCHER_ROTTING = HELPER.createSoundEvent("block.sepulcher.rotting"); - public static final RegistryObject SEPULCHER_SEALING = HELPER.createSoundEvent("block.sepulcher.sealing"); - public static final RegistryObject SEPULCHER_UNSEALING = HELPER.createSoundEvent("block.sepulcher.unsealing"); - public static final RegistryObject SEPULCHER_HARVEST = HELPER.createSoundEvent("block.sepulcher.harvest"); - - //TODO: add these 2 - public static final RegistryObject GRAVETENDER_WORK = HELPER.createSoundEvent("entity.villager.work_gravetender"); - - public static final RegistryObject STONE_TABLET_ENGRAVE = HELPER.createSoundEvent("block.stone_tablet.engrave"); - - public static final RegistryObject HOLLER_DEATH = HELPER.createSoundEvent("entity.holler_death"); - public static final RegistryObject HOLLER_HURTS = HELPER.createSoundEvent("entity.holler_hurts"); - public static final RegistryObject HOLLER_HOLLERS = HELPER.createSoundEvent("entity.holler_hollers"); - public static final RegistryObject HOLLER_SHRIEKS = HELPER.createSoundEvent("entity.holler_shrieks"); - - public static final RegistryObject FOG_AMBIENCE = HELPER.createSoundEvent("ambient.fog"); -} diff --git a/src/main/java/galena/doom_and_gloom/index/OSoundTypes.java b/src/main/java/galena/doom_and_gloom/index/OSoundTypes.java deleted file mode 100644 index 72280eb7..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OSoundTypes.java +++ /dev/null @@ -1,9 +0,0 @@ -package galena.doom_and_gloom.index; - -import net.minecraft.world.level.block.SoundType; -import net.minecraftforge.common.util.ForgeSoundType; - -public class OSoundTypes { - public static final SoundType BONE_PILE = new ForgeSoundType(1.5F, 1.0F, OSoundEvents.BONE_PILE_BREAK, OSoundEvents.BONE_PILE_STEP, OSoundEvents.BONE_PILE_PLACE, OSoundEvents.BONE_PILE_HIT, OSoundEvents.BONE_PILE_FALL); - public static final SoundType SEPULCHER = new ForgeSoundType(1.0F, 1.0F, OSoundEvents.SEPULCHER_BREAK, OSoundEvents.SEPULCHER_STEP, OSoundEvents.SEPULCHER_PLACE, OSoundEvents.SEPULCHER_HIT, OSoundEvents.SEPULCHER_FALL); -} diff --git a/src/main/java/galena/doom_and_gloom/index/OVillagerTypes.java b/src/main/java/galena/doom_and_gloom/index/OVillagerTypes.java deleted file mode 100644 index 546906dd..00000000 --- a/src/main/java/galena/doom_and_gloom/index/OVillagerTypes.java +++ /dev/null @@ -1,30 +0,0 @@ -package galena.doom_and_gloom.index; - -import com.google.common.collect.ImmutableSet; -import galena.doom_and_gloom.DoomAndGloom; -import java.util.function.Supplier; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.entity.ai.village.poi.PoiType; -import net.minecraft.world.entity.npc.VillagerProfession; -import net.minecraftforge.registries.DeferredRegister; - -public class OVillagerTypes { - - public static final DeferredRegister VILLAGER_PROFESSIONS = - DeferredRegister.create(Registries.VILLAGER_PROFESSION, DoomAndGloom.MOD_ID); - - public static final Supplier GRAVETENDER = - VILLAGER_PROFESSIONS.register("gravetender", - registerVillager("gravetender", OPoi.GRAVETENDER_POI_KEY, - OSoundEvents.GRAVETENDER_WORK)); - - private static Supplier registerVillager(String name, ResourceKey jobSite, - Supplier workSound) { - return () -> new VillagerProfession(name, - (holder) -> holder.is(jobSite), - (holder) -> holder.is(jobSite), - ImmutableSet.of(), ImmutableSet.of(), workSound.get()); - } -} diff --git a/src/main/java/galena/doom_and_gloom/network/DGNetwork.java b/src/main/java/galena/doom_and_gloom/network/DGNetwork.java deleted file mode 100644 index dafb2ab7..00000000 --- a/src/main/java/galena/doom_and_gloom/network/DGNetwork.java +++ /dev/null @@ -1,28 +0,0 @@ -package galena.doom_and_gloom.network; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.network.packet.EngraveStoneTabletPacket; -import galena.doom_and_gloom.network.packet.SepulcherConsumesDeathPacket; -import galena.doom_and_gloom.network.packet.SepulcherRotsPacket; -import galena.doom_and_gloom.network.packet.StoneTabletUpdatePacket; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.simple.SimpleChannel; - -public class DGNetwork { - private static final String PROTOCOL_VERSION = "1"; - public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( - DoomAndGloom.modLoc("main"), - () -> PROTOCOL_VERSION, - PROTOCOL_VERSION::equals, - PROTOCOL_VERSION::equals - ); - - public static void register() { - int id = 0; - - CHANNEL.registerMessage(id++, SepulcherConsumesDeathPacket.class, SepulcherConsumesDeathPacket::write, SepulcherConsumesDeathPacket::from, SepulcherConsumesDeathPacket::handle); - CHANNEL.registerMessage(id++, SepulcherRotsPacket.class, SepulcherRotsPacket::write, SepulcherRotsPacket::from, SepulcherRotsPacket::handle); - CHANNEL.registerMessage(id++, StoneTabletUpdatePacket.class, StoneTabletUpdatePacket::write, StoneTabletUpdatePacket::from, StoneTabletUpdatePacket::handle); - CHANNEL.registerMessage(id++, EngraveStoneTabletPacket.class, EngraveStoneTabletPacket::write, EngraveStoneTabletPacket::from, EngraveStoneTabletPacket::handle); - } -} \ No newline at end of file diff --git a/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java b/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java deleted file mode 100644 index 79313189..00000000 --- a/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java +++ /dev/null @@ -1,29 +0,0 @@ -package galena.doom_and_gloom.network.packet; - -import galena.doom_and_gloom.content.block.StoneTabletBlock; -import java.util.function.Supplier; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -public record EngraveStoneTabletPacket(BlockPos pos) { - - public void write(FriendlyByteBuf buffer) { - buffer.writeBlockPos(pos); - } - - public void handle(Supplier contextSupplier) { - var context = contextSupplier.get(); - context.enqueueWork(() -> { - StoneTabletBlock.openScreen(pos); - }); - - context.setPacketHandled(true); - } - - public static EngraveStoneTabletPacket from(FriendlyByteBuf buffer) { - var pos = buffer.readBlockPos(); - return new EngraveStoneTabletPacket(pos); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java b/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java deleted file mode 100644 index 138b5b4c..00000000 --- a/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java +++ /dev/null @@ -1,29 +0,0 @@ -package galena.doom_and_gloom.network.packet; - -import galena.doom_and_gloom.content.block.SepulcherBlock; -import java.util.function.Supplier; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.network.NetworkEvent; - -public record SepulcherConsumesDeathPacket(Vec3 at) { - - public void write(FriendlyByteBuf buffer) { - buffer.writeVector3f(at.toVector3f()); - } - - public void handle(Supplier contextSupplier) { - var context = contextSupplier.get(); - context.enqueueWork(() -> { - SepulcherBlock.spawnConsumeParticles(at); - }); - - context.setPacketHandled(true); - } - - public static SepulcherConsumesDeathPacket from(FriendlyByteBuf buffer) { - var at = new Vec3(buffer.readVector3f()); - return new SepulcherConsumesDeathPacket(at); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java b/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java deleted file mode 100644 index c2d432b9..00000000 --- a/src/main/java/galena/doom_and_gloom/network/packet/SepulcherRotsPacket.java +++ /dev/null @@ -1,30 +0,0 @@ -package galena.doom_and_gloom.network.packet; - -import galena.doom_and_gloom.content.block.SepulcherBlock; -import java.awt.*; -import java.util.function.Supplier; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -public record SepulcherRotsPacket(BlockPos at) { - - public void write(FriendlyByteBuf buffer) { - buffer.writeBlockPos(at); - } - - public void handle(Supplier contextSupplier) { - var context = contextSupplier.get(); - context.enqueueWork(() -> { - SepulcherBlock.spawnRottingParticles(at); - }); - - context.setPacketHandled(true); - } - - public static SepulcherRotsPacket from(FriendlyByteBuf buffer) { - var at = buffer.readBlockPos(); - return new SepulcherRotsPacket(at); - } - -} diff --git a/src/main/java/galena/doom_and_gloom/world/event/PlayerEvents.java b/src/main/java/galena/doom_and_gloom/world/event/PlayerEvents.java deleted file mode 100644 index 79d84e92..00000000 --- a/src/main/java/galena/doom_and_gloom/world/event/PlayerEvents.java +++ /dev/null @@ -1,21 +0,0 @@ -package galena.doom_and_gloom.world.event; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(modid = DoomAndGloom.MOD_ID) -public class PlayerEvents { - - @SubscribeEvent - public static void onLivingDrops(LivingDropsEvent event) { - if (event.getEntity() instanceof Player) return; - if (SepulcherBlockEntity.wasConsumerBySepulcher(event.getEntity())) { - event.setCanceled(true); - } - } - -} diff --git a/src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_lead.png b/src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_lead.png deleted file mode 100644 index 5fda828784665c04f617710e02b18f0b6b310a7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|&0G|-o6i*{xeZjtbmvwVeoa~cDg*0>xeTyS>v(hK^^{)vHtp+MwE_Xx% zNb!^e`33(+00yD^=gtAeISV`@iy0XB4uUY_j)~cCfr5FSE{-7@!M#0}Ld=dF%oD{^ z`u_jF&U1s$>=xg$E;-L2b2%=-GldpTanqv`pLTSsJlXs5^M%8VH~c3&OniA)+Hv{r zZJtlN3b;hP%G}PqZ@aX;m^^auZ*kaakM diff --git a/src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_silver.png b/src/main/resources/resourcepacks/oreganized_compat/assets/create/textures/item/crushed_raw_silver.png deleted file mode 100644 index 51c8f09dd284b0770f6c90fe64cbbd11050f9ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}f0G|-o`22e3@Pg`z3%~#QV`}BQX!~BE%y;um;XsPLB*-uLKNv7bc{95K zg*Xd5B8wRq_zr?FBXMhEgXyM zUdk&RwacDRW0TS-@Q*!Z_Tm%VAm9fQrItiEdyG};OXk;vd$@?2>^iqSvddz diff --git a/src/main/resources/resourcepacks/oreganized_compat/pack.mcmeta b/src/main/resources/resourcepacks/oreganized_compat/pack.mcmeta deleted file mode 100644 index eeb39dc6..00000000 --- a/src/main/resources/resourcepacks/oreganized_compat/pack.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pack": { - "pack_format": 9, - "description": "Textures for other mods to fit Oreganized's color palletes for its materials" - } -} \ No newline at end of file diff --git a/src/main/resources/resourcepacks/oreganized_compat/pack.png b/src/main/resources/resourcepacks/oreganized_compat/pack.png deleted file mode 100644 index 316480fbff569b741a5a63e77f6eed26cecf513f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54283 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 From 5480237adf6ec1f35cba9d77f524e6ab1410cf20 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Sat, 1 Nov 2025 22:55:10 +0100 Subject: [PATCH 02/43] fix syntax errors & re-run datagen --- build.gradle.kts | 7 +- common/build.gradle.kts | 5 + .../assets/doom_and_gloom/lang/en_us.json | 44 -------- .../models/item/stone_tablet.json | 6 - .../bone_piles_in_desert_temples.json | 10 +- .../loot_tables/blocks/stone_tablet.json | 2 +- .../gravetender/buy_candles.json | 13 +++ .../gravetender/buy_cornflower.json | 14 +++ .../gravetender/buy_lantern.json | 15 +++ .../gravetender/buy_poppy.json | 14 +++ .../gravetender/sell_diamond_shovel.json | 18 +++ .../gravetender/sell_gold_nugget.json | 15 +++ .../gravetender/sell_iron_shovel.json | 18 +++ .../gravetender/sell_poppy.json | 15 +++ .../gravetender/sell_rose_bush.json | 14 +++ .../gravetender/sell_stone_shovel.json | 17 +++ .../gravetender/sell_vigil_candles.json | 12 ++ .../gravetender/sell_wither_rose.json | 15 +++ .../tags/items/tools/bush_hammer.json | 0 .../loot_modifiers/global_loot_modifiers.json | 6 +- .../galena/doom_and_gloom/DoomAndGloom.java | 2 + .../client/DoomAndGloomClient.java | 1 + .../doom_and_gloom/client/ORenderTypes.java | 13 ++- .../compat/moonlight/LightUpCandles.java | 16 ++- .../compat/moonlight/TurnOffCandles.java | 4 +- .../content/block/BonePileBlock.java | 37 +----- .../content/block/SepulcherBlock.java | 2 +- .../content/entity/SepulcherBlockEntity.java | 4 +- .../entity/VigilCandleBlockEntity.java | 2 +- .../content/entity/WithExtraData.java | 16 +++ .../content/listing/BuyTagListing.java | 48 ++++++++ .../content/listing/SellTagListing.java | 48 ++++++++ .../galena/doom_and_gloom/index/DGBlocks.java | 7 +- .../doom_and_gloom/index/DGItemListings.java | 15 +++ .../galena/doom_and_gloom/index/DGItems.java | 7 +- .../doom_and_gloom/index/DGSoundTypes.java | 6 +- .../galena/doom_and_gloom/index/DGTags.java | 3 +- .../index/DGVillagerTrades.java | 93 --------------- .../loot_tables/stone_tablet.json | 0 .../cutting/cracked_stone_tablet.json | 0 .../data/doom_and_gloom/recipes/jeed/fog.json | 0 .../village/graveyard/desert_large.nbt | Bin .../village/graveyard/desert_medium.nbt | Bin .../village/graveyard/desert_small.nbt | Bin .../village/graveyard/desert_tomb.nbt | Bin .../village/graveyard/plains_large.nbt | Bin .../village/graveyard/plains_mausuleum.nbt | Bin .../village/graveyard/plains_medium.nbt | Bin .../village/graveyard/plains_small.nbt | Bin .../village/graveyard/savanna_large.nbt | Bin .../village/graveyard/savanna_medium.nbt | Bin .../village/graveyard/savanna_small.nbt | Bin .../village/graveyard/snowy_burial_mound.nbt | Bin .../village/graveyard/snowy_large.nbt | Bin .../village/graveyard/snowy_medium.nbt | Bin .../village/graveyard/snowy_small.nbt | Bin .../village/graveyard/taiga_large.nbt | Bin .../village/graveyard/taiga_medium.nbt | Bin .../village/graveyard/taiga_small.nbt | Bin .../acquirable_job_site.json | 0 .../resources/doom_and_gloom.accesswidener | 8 ++ .../main/resources/doom_and_gloom.mixins.json | 0 .../src/main/resources/doom_and_gloom.png | Bin fabric/build.gradle.kts | 5 + forge/build.gradle.kts | 19 ++++ .../doom_and_gloom/data/DGItemListings.java | 46 ++++++++ .../doom_and_gloom/data/DGLootModifiers.java | 31 +++++ .../data/ForgeDataEntrypoint.java | 2 + .../doom_and_gloom/data/OBlockTags.java | 13 ++- .../galena/doom_and_gloom/data/OLang.java | 9 +- .../doom_and_gloom/data/OLootTables.java | 3 +- .../data/provider/ItemListingProvider.java | 106 ++++++++++++++++++ .../data/provider/OItemModelProvider.java | 5 + .../forge/AddItemLootModifier.java | 2 +- .../forge/ForgeClientEntrypoint.java | 11 +- .../doom_and_gloom/forge/ForgeEntrypoint.java | 2 +- .../client/BonePileClientProperties.java | 19 ++++ .../forge/mixin/BonePileBlockMixin.java | 46 ++++++++ .../forge/mixin/EntityMixin.java | 17 +++ .../mixin/SepulcherBlockEntityMixin.java | 13 ++- .../resources/META-INF/accesstransformer.cfg | 3 - .../doom_and_gloom.forge.mixins.json | 2 + gradle.properties | 1 + gradle/libs.versions.toml | 1 + 84 files changed, 706 insertions(+), 242 deletions(-) delete mode 100644 common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json rename {forge/src/main => common/src/generated}/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json (62%) create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_candles.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_cornflower.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_lantern.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_poppy.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_gold_nugget.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_poppy.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_rose_bush.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_stone_shovel.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_vigil_candles.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_wither_rose.json rename common/src/generated/resources/data/{forge => doom_and_gloom}/tags/items/tools/bush_hammer.json (100%) rename {forge/src/main => common/src/generated}/resources/data/forge/loot_modifiers/global_loot_modifiers.json (72%) create mode 100644 common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java create mode 100644 common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java create mode 100644 common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java delete mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java rename {forge => common}/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt (100%) rename {forge => common}/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt (100%) rename {forge => common}/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json (100%) create mode 100644 common/src/main/resources/doom_and_gloom.accesswidener rename {fabric => common}/src/main/resources/doom_and_gloom.mixins.json (100%) rename {fabric => common}/src/main/resources/doom_and_gloom.png (100%) create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/client/BonePileClientProperties.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index ed3648aa..bd854f39 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,6 +30,12 @@ subprojects { includeGroup("fuzs.forgeconfigapiport") } } + maven { + url = uri("https://maven.teamabnormals.com/") + content { + includeGroup("com.teamabnormals") + } + } } upload { @@ -38,7 +44,6 @@ subprojects { } forEach { - // TODO required? includeKotlinDependency = false dependencies { diff --git a/common/build.gradle.kts b/common/build.gradle.kts index a1812350..0369ba9f 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -2,6 +2,11 @@ plugins { id("com.possible-triangle.architectury") } +loom { + // TODO auto-detect by gradle plugin + accessWidenerPath = file("src/main/resources/${mod.id.get()}.accesswidener") +} + dependencies { // TODO switch out with actual common module modApi(pack.forge.modrinth.moonlight) diff --git a/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json b/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json index da11cc14..e2bf4e72 100644 --- a/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json +++ b/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json @@ -1,56 +1,12 @@ { - "block.doom_and_gloom.amber_vigil_candle": "Amber Vigil Candle", - "block.doom_and_gloom.aqua_vigil_candle": "Aqua Vigil Candle", - "block.doom_and_gloom.beige_vigil_candle": "Beige Vigil Candle", - "block.doom_and_gloom.black_vigil_candle": "Black Vigil Candle", - "block.doom_and_gloom.blue_vigil_candle": "Blue Vigil Candle", "block.doom_and_gloom.bone_pile": "Pile of Bones", - "block.doom_and_gloom.brown_vigil_candle": "Brown Vigil Candle", - "block.doom_and_gloom.burial_dirt": "Burial Dirt", - "block.doom_and_gloom.coral_vigil_candle": "Coral Vigil Candle", - "block.doom_and_gloom.cracked_stone_tablet": "Cracked Stone Tablet", - "block.doom_and_gloom.cyan_vigil_candle": "Cyan Vigil Candle", - "block.doom_and_gloom.engraved_stone_tablet": "Engraved Stone Tablet", - "block.doom_and_gloom.forest_vigil_candle": "Forest Vigil Candle", - "block.doom_and_gloom.ginger_vigil_candle": "Ginger Vigil Candle", - "block.doom_and_gloom.gray_vigil_candle": "Gray Vigil Candle", - "block.doom_and_gloom.green_vigil_candle": "Green Vigil Candle", - "block.doom_and_gloom.indigo_vigil_candle": "Indigo Vigil Candle", - "block.doom_and_gloom.light_blue_vigil_candle": "Light Blue Vigil Candle", - "block.doom_and_gloom.light_gray_vigil_candle": "Light Gray Vigil Candle", - "block.doom_and_gloom.lime_vigil_candle": "Lime Vigil Candle", - "block.doom_and_gloom.magenta_vigil_candle": "Magenta Vigil Candle", - "block.doom_and_gloom.maroon_vigil_candle": "Maroon Vigil Candle", - "block.doom_and_gloom.mint_vigil_candle": "Mint Vigil Candle", - "block.doom_and_gloom.navy_vigil_candle": "Navy Vigil Candle", - "block.doom_and_gloom.olive_vigil_candle": "Olive Vigil Candle", - "block.doom_and_gloom.orange_vigil_candle": "Orange Vigil Candle", - "block.doom_and_gloom.pink_vigil_candle": "Pink Vigil Candle", - "block.doom_and_gloom.purple_vigil_candle": "Purple Vigil Candle", - "block.doom_and_gloom.red_vigil_candle": "Red Vigil Candle", - "block.doom_and_gloom.rose_vigil_candle": "Rose Vigil Candle", - "block.doom_and_gloom.rotting_flesh": "Rotting Flesh", - "block.doom_and_gloom.sepulcher": "Sepulcher", - "block.doom_and_gloom.slate_vigil_candle": "Slate Vigil Candle", - "block.doom_and_gloom.stone_tablet": "Stone Tablet", - "block.doom_and_gloom.tan_vigil_candle": "Tan Vigil Candle", - "block.doom_and_gloom.teal_vigil_candle": "Teal Vigil Candle", - "block.doom_and_gloom.verdant_vigil_candle": "Verdant Vigil Candle", - "block.doom_and_gloom.vigil_candle": "Vigil Candle", - "block.doom_and_gloom.white_vigil_candle": "White Vigil Candle", - "block.doom_and_gloom.yellow_vigil_candle": "Yellow Vigil Candle", "effect.doom_and_gloom.fog": "Fog", "effect.doom_and_gloom.fog.description": "An eerie fog that accompanies the holler", "effect.doom_and_gloom.warding": "Warding", "effect.doom_and_gloom.warding.description": "Wards against evil spirits", - "entity.doom_and_gloom.dirt_mound": "Dirt Mound", - "entity.doom_and_gloom.holler": "Holler", "entity.minecraft.villager.doom_and_gloom.gravetender": "Gravetender", "gui.doom_and_gloom.stone_tablet.cancel": "Cancel", "gui.doom_and_gloom.stone_tablet.engrave": "Engrave", - "item.doom_and_gloom.bush_hammer": "Bush Hammer", - "item.doom_and_gloom.hammer_and_chisel": "Hammer And Chisel", - "item.doom_and_gloom.holler_spawn_egg": "Holler Spawn Egg", "item.doom_and_gloom.music_disc_afterlife": "Music Disc", "item.doom_and_gloom.music_disc_afterlife.desc": "Firch - afterlife", "subtitles.block.sepulcher.corpse_stuffed": "Sepulcher consumes corpse", diff --git a/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json deleted file mode 100644 index 09c32dd3..00000000 --- a/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "doom_and_gloom:item/stone_tablet" - } -} \ No newline at end of file diff --git a/forge/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json b/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json similarity index 62% rename from forge/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json rename to common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json index eee60646..2f95509e 100644 --- a/forge/src/main/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json +++ b/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json @@ -6,12 +6,12 @@ "loot_table_id": "minecraft:chests/desert_pyramid" }, { - "condition": "minecraft:random_chance", - "chance": 0.4 + "chance": 0.4, + "condition": "minecraft:random_chance" } ], "item": { - "id": "doom_and_gloom:bone_pile", - "Count": 2 + "Count": 2, + "id": "doom_and_gloom:bone_pile" } -} +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json index 3f87d669..1a7e5785 100644 --- a/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json +++ b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json @@ -24,7 +24,7 @@ "source": "block_entity" } ], - "name": "doom_and_gloom:stone_tablet" + "name": "doom_and_gloom:hammer_and_chisel" } ], "rolls": 1.0 diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_candles.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_candles.json new file mode 100644 index 00000000..0e8b6e25 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_candles.json @@ -0,0 +1,13 @@ +{ + "type": "doom_and_gloom:buy_tag", + "count": 6, + "level": 3, + "max_trades": 12, + "offer": { + "Count": 2, + "id": "minecraft:emerald" + }, + "price": "minecraft:candles", + "price_multiplier": 0.2, + "xp": 2 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_cornflower.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_cornflower.json new file mode 100644 index 00000000..46efbf63 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_cornflower.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:simple", + "max_trades": 12, + "offer": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price": { + "Count": 8, + "id": "minecraft:cornflower" + }, + "price_multiplier": 0.2, + "xp": 1 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_lantern.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_lantern.json new file mode 100644 index 00000000..2de4134d --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_lantern.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:simple", + "level": 4, + "max_trades": 8, + "offer": { + "Count": 2, + "id": "minecraft:emerald" + }, + "price": { + "Count": 1, + "id": "minecraft:lantern" + }, + "price_multiplier": 0.2, + "xp": 15 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_poppy.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_poppy.json new file mode 100644 index 00000000..f1ae0512 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/buy_poppy.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:simple", + "max_trades": 12, + "offer": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price": { + "Count": 8, + "id": "minecraft:poppy" + }, + "price_multiplier": 0.2, + "xp": 1 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json new file mode 100644 index 00000000..fc611d06 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:simple", + "level": 5, + "max_trades": 3, + "offer": { + "Count": 2, + "id": "minecraft:diamond_shovel", + "tag": { + "Damage": 0 + } + }, + "price": { + "Count": 13, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 30 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_gold_nugget.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_gold_nugget.json new file mode 100644 index 00000000..782e862a --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_gold_nugget.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:simple", + "level": 2, + "max_trades": 8, + "offer": { + "Count": 1, + "id": "minecraft:gold_nugget" + }, + "price": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 5 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json new file mode 100644 index 00000000..9d64bd1a --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:simple", + "level": 3, + "max_trades": 3, + "offer": { + "Count": 1, + "id": "minecraft:iron_shovel", + "tag": { + "Damage": 0 + } + }, + "price": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 10 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_poppy.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_poppy.json new file mode 100644 index 00000000..843e922e --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_poppy.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:simple", + "level": 2, + "max_trades": 12, + "offer": { + "Count": 8, + "id": "minecraft:flower_pot" + }, + "price": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 5 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_rose_bush.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_rose_bush.json new file mode 100644 index 00000000..026a4f77 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_rose_bush.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:simple", + "max_trades": 8, + "offer": { + "Count": 1, + "id": "minecraft:rose_bush" + }, + "price": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 2 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_stone_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_stone_shovel.json new file mode 100644 index 00000000..369b8539 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_stone_shovel.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:simple", + "max_trades": 12, + "offer": { + "Count": 1, + "id": "minecraft:stone_shovel", + "tag": { + "Damage": 0 + } + }, + "price": { + "Count": 1, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 1 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_vigil_candles.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_vigil_candles.json new file mode 100644 index 00000000..3eb7068b --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_vigil_candles.json @@ -0,0 +1,12 @@ +{ + "type": "doom_and_gloom:sell_tag", + "level": 2, + "max_trades": 12, + "offer": "doom_and_gloom:vigil_candles", + "price": { + "Count": 2, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 10 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_wither_rose.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_wither_rose.json new file mode 100644 index 00000000..824af954 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_wither_rose.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:simple", + "level": 4, + "max_trades": 20, + "offer": { + "Count": 2, + "id": "minecraft:wither_rose" + }, + "price": { + "Count": 10, + "id": "minecraft:emerald" + }, + "price_multiplier": 0.2, + "xp": 8 +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/tools/bush_hammer.json b/common/src/generated/resources/data/doom_and_gloom/tags/items/tools/bush_hammer.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/tools/bush_hammer.json rename to common/src/generated/resources/data/doom_and_gloom/tags/items/tools/bush_hammer.json diff --git a/forge/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json similarity index 72% rename from forge/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json rename to common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json index a96445db..cf944d2b 100644 --- a/forge/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ b/common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json @@ -1,6 +1,6 @@ { - "replace": false, "entries": [ "doom_and_gloom:bone_piles_in_desert_temples" - ] -} + ], + "replace": false +} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index cdaf3805..734f1c38 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -6,6 +6,7 @@ import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGEntityTypes; +import galena.doom_and_gloom.index.DGItemListings; import galena.doom_and_gloom.index.DGItems; import galena.doom_and_gloom.index.DGParticleTypes; import galena.doom_and_gloom.index.DGPoi; @@ -35,6 +36,7 @@ public static void init() { DGPoi.init(); DGSoundEvents.init(); DGVillagerTypes.init(); + DGItemListings.init(); DGNetwork.register(); diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index e85cf67c..c5ad3b01 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -30,6 +30,7 @@ private static void registerBlockRenderers() { DGBlocks.vigilCandles().forEach(block -> render(block, RenderType.cutout())); } + // TODO this is not called on fabric yet public static void registerParticleFactories(BiConsumer>> event) { event.accept(DGParticleTypes.BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); event.accept(DGParticleTypes.FOG.get(), sprites -> new FogParticle.Provider(sprites, 200)); diff --git a/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java b/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java index 4dc47683..3b4f123a 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java @@ -6,12 +6,15 @@ import com.mojang.blaze3d.vertex.VertexFormat; import galena.doom_and_gloom.DoomAndGloom; import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Function; import net.minecraft.Util; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceProvider; public abstract class ORenderTypes extends RenderType { //TODO: check if iris is on. If on use default render type @@ -57,12 +60,12 @@ public ORenderTypes(String pName, VertexFormat pFormat, VertexFormat.Mode pMode, super(pName, pFormat, pMode, pBufferSize, pAffectsCrumbling, pSortOnUpload, pSetupState, pClearState); } - public static void registerShaders(RegisterShadersEvent event) { + // TODO this is not called on fabric yet + public static void registerShaders(ResourceProvider resources, BiConsumer> event) { try { - var shader = new ShaderInstance(event.getResourceProvider(), - DoomAndGloom.modLoc("rendertype_entity_translucent_additive"), DefaultVertexFormat.NEW_ENTITY); - - event.registerShader(shader, NO_ALPHA_CUTOFF_SHADER::set); + // TODO this is a resource location on forge, right now it tries to look in the "minecraft" folder instead + var shader = new ShaderInstance(resources, "rendertype_entity_translucent_additive", DefaultVertexFormat.NEW_ENTITY); + event.accept(shader, NO_ALPHA_CUTOFF_SHADER::set); } catch (Exception e) { DoomAndGloom.LOGGER.error("Failed to register shader", e); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java index 8a42f684..e41f9b9c 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/LightUpCandles.java @@ -5,11 +5,11 @@ import galena.doom_and_gloom.index.DGTags; import java.util.UUID; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.mehvahdjukaar.moonlight.api.util.FakePlayerManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.GlobalPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.ai.behavior.Behavior; import net.minecraft.world.entity.ai.behavior.BlockPosTracker; @@ -17,13 +17,11 @@ import net.minecraft.world.entity.ai.memory.MemoryStatus; import net.minecraft.world.entity.ai.memory.WalkTarget; import net.minecraft.world.entity.npc.Villager; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.util.FakePlayerFactory; public class LightUpCandles extends Behavior { private final float speedModifier; @@ -79,7 +77,7 @@ protected boolean canStillUse(ServerLevel pLevel, Villager pEntity, long pGameTi private static final GameProfile GRAVETENDER = new GameProfile(UUID.fromString("f3f3f3f3-2233-f3f3-f3f3-f3f3f3f3f3f3"), "[Gravetender]"); @Override - protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { + protected void tick(ServerLevel level, Villager pOwner, long pGameTime) { BlockPos pos = targetPos.pos(); //hax @@ -90,7 +88,7 @@ protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { if (pos.closerToCenterThan(pOwner.position(), 2.3)) { this.ticksSinceReached++; - BlockState state = pLevel.getBlockState(pos); + BlockState state = level.getBlockState(pos); if (!state.is(DGTags.Blocks.GRAVETENDER_LIGHTABLE)) { pOwner.getBrain().eraseMemory(MoonlightCompat.NEAREST_UNLIT_CANDLE.get()); } else { @@ -102,13 +100,13 @@ protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { //TODO: this task is run for candles that are already on too. We would need to clear them off first and validate thatthey canbe extinguished if (ticksSinceReached > 20) { - ServerPlayer player = FakePlayerFactory.get(pLevel, GRAVETENDER); - ItemStack itemStack = Items.FLINT_AND_STEEL.getDefaultInstance(); + var player = FakePlayerManager.get(GRAVETENDER, level); + var itemStack = Items.FLINT_AND_STEEL.getDefaultInstance(); player.setItemInHand(InteractionHand.MAIN_HAND, itemStack); BlockHitResult hit = new BlockHitResult(Vec3.atBottomCenterOf(pos), Direction.UP, pos, false); - if(!itemStack.useOn(new UseOnContext(player, InteractionHand.MAIN_HAND,hit)).consumesAction()){ - state.use(pLevel, player, InteractionHand.MAIN_HAND, hit); + if (!itemStack.useOn(new UseOnContext(player, InteractionHand.MAIN_HAND, hit)).consumesAction()) { + state.use(level, player, InteractionHand.MAIN_HAND, hit); } pOwner.getBrain().eraseMemory(MemoryModuleType.LOOK_TARGET); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java index 6bf1b2e6..92de3c4e 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/moonlight/TurnOffCandles.java @@ -7,11 +7,11 @@ import java.util.Optional; import java.util.UUID; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.mehvahdjukaar.moonlight.api.util.FakePlayerManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.GlobalPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.ai.behavior.Behavior; import net.minecraft.world.entity.ai.behavior.BlockPosTracker; @@ -128,7 +128,7 @@ protected void tick(ServerLevel pLevel, Villager pOwner, long pGameTime) { //TODO: this task is run for candles that are already on too. We would need to clear them off first and validate thatthey canbe extinguished if (ticksSinceReached > 20) { - ServerPlayer player = FakePlayerFactory.get(pLevel, GRAVETENDER); + var player = FakePlayerManager.get(GRAVETENDER, pLevel); player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY); BlockHitResult hit = new BlockHitResult(Vec3.atBottomCenterOf(pos), Direction.UP, pos, false); state.use(pLevel, player, InteractionHand.MAIN_HAND, hit); diff --git a/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java index 495b270d..c75d1256 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/BonePileBlock.java @@ -2,13 +2,9 @@ import galena.doom_and_gloom.index.DGParticleTypes; import galena.doom_and_gloom.index.DGSoundEvents; -import java.util.function.Consumer; -import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.FallingBlockEntity; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -20,7 +16,6 @@ import net.minecraft.world.phys.shapes.EntityCollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.client.extensions.common.IClientBlockExtensions; public class BonePileBlock extends FallingBlock { @@ -54,27 +49,7 @@ public void onLand(Level level, BlockPos pos, BlockState state, BlockState other particles(level, Vec3.atCenterOf(pos), 20); } - @Override - public boolean addLandingEffects(BlockState state, ServerLevel level, BlockPos pos, BlockState other, LivingEntity entity, int numberOfParticles) { - particles(level, entity.position().add(0, 0.2, 0.0), numberOfParticles / 2); - return true; - } - - @Override - public boolean addRunningEffects(BlockState state, Level level, BlockPos pos, Entity entity) { - var vec = entity.position().add(0, 0.2, 0.0); - var speed = entity.isSprinting() ? 0.5F : 0.2F; - var halfSpeed = speed / 2; - level.addParticle(DGParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed); - return true; - } - - @Override - public void initializeClient(Consumer consumer) { - consumer.accept(new ClientProperties()); - } - - private void particles(Level level, Vec3 vec, int numberOfParticles) { + public void particles(Level level, Vec3 vec, int numberOfParticles) { if (level instanceof ServerLevel serverLevel) { serverLevel.sendParticles(DGParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, numberOfParticles, 0.35, 0.35, 0.35, 0.1); } else for (int i = 0; i < numberOfParticles; i++) { @@ -85,14 +60,4 @@ private void particles(Level level, Vec3 vec, int numberOfParticles) { } } - public class ClientProperties implements IClientBlockExtensions { - - @Override - public boolean addDestroyEffects(BlockState state, Level level, BlockPos pos, ParticleEngine manager) { - particles(level, Vec3.atCenterOf(pos), 20); - return IClientBlockExtensions.super.addDestroyEffects(state, level, pos, manager); - } - - } - } diff --git a/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java index 2c067960..6db5efaa 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java @@ -85,7 +85,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player public static boolean tryInsert(ItemStack stack, @Nullable Player player, BlockState state, Level level, BlockPos pos, boolean simulate) { int fillLevel = state.getValue(LEVEL); - var food = stack.getFoodProperties(null); + var food = stack.getItem().getFoodProperties(); if (fillLevel < MAX_LEVEL && food != null && food.isMeat()) { if (!simulate) insert(player, state, level, pos, level.random.nextIntBetweenInclusive(1, 2)); diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java index e4b9ef41..d0c7a9b6 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java @@ -105,7 +105,7 @@ public void load(CompoundTag nbt) { } public static boolean wasConsumerBySepulcher(Entity entity) { - return entity.getPersistentData().getBoolean(DeathListener.TAG_KEY); + return WithExtraData.getOrEmpty(entity).getBoolean(DeathListener.TAG_KEY); } @Override @@ -146,7 +146,7 @@ public boolean handleGameEvent(ServerLevel level, GameEvent event, GameEvent.Con if (fillLevel >= SepulcherBlock.MAX_LEVEL) return false; - entity.getPersistentData().putBoolean(TAG_KEY, true); + WithExtraData.getOrEmpty(entity).putBoolean(TAG_KEY, true); if (entity instanceof LivingEntity living && !(entity instanceof Player)) { living.skipDropExperience(); diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java index a09c458e..d154f873 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/VigilCandleBlockEntity.java @@ -32,7 +32,7 @@ public void tick(BlockState state, Level level, BlockPos pos) { entities.forEach(entity -> { shouldClear.forEach(effect -> { - entity.removeEffect(effect.get()); + entity.removeEffect(effect.value()); }); var duration = 20 * 5; diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java b/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java new file mode 100644 index 00000000..af4f62b5 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java @@ -0,0 +1,16 @@ +package galena.doom_and_gloom.content.entity; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; + +// TODO add mixin implementation on fabric side +public interface WithExtraData { + + CompoundTag getExtraData(); + + static CompoundTag getOrEmpty(Entity entity) { + if (entity instanceof WithExtraData accessor) return accessor.getExtraData(); + return new CompoundTag(); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java new file mode 100644 index 00000000..c9e6eb16 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java @@ -0,0 +1,48 @@ +package galena.doom_and_gloom.content.listing; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.mehvahdjukaar.moonlight.api.misc.StrOpt; +import net.mehvahdjukaar.moonlight.api.trades.ModItemListing; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.MerchantOffer; + +public record BuyTagListing(TagKey want, int count, ItemStack offer, int maxTrades, int xp, float priceMult, + int level) implements ModItemListing { + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> + builder.group( + TagKey.codec(Registries.ITEM).fieldOf("price").forGetter(BuyTagListing::want), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "count", 1).forGetter(BuyTagListing::count), + ItemStack.CODEC.fieldOf("offer").forGetter(BuyTagListing::offer), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "max_trades", 16).forGetter(BuyTagListing::maxTrades), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "xp", 1).forGetter(BuyTagListing::xp), + StrOpt.of(ExtraCodecs.POSITIVE_FLOAT, "price_multiplier", 1F).forGetter(BuyTagListing::priceMult), + StrOpt.of(Codec.intRange(1, 5), "level", 1).forGetter(BuyTagListing::level) + ).apply(builder, BuyTagListing::new) + ); + + @Override + public Codec getCodec() { + return CODEC; + } + + @Override + public MerchantOffer getOffer(Entity entity, RandomSource random) { + var registry = entity.level().registryAccess().registryOrThrow(Registries.ITEM); + return registry.getOrCreateTag(want) + .getRandomElement(random) + .map(Holder::value) + .map(Item::getDefaultInstance) + .map(want -> new MerchantOffer(want, offer, maxTrades, xp, priceMult)) + .orElse(null); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java new file mode 100644 index 00000000..97ba9f26 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java @@ -0,0 +1,48 @@ +package galena.doom_and_gloom.content.listing; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.mehvahdjukaar.moonlight.api.misc.StrOpt; +import net.mehvahdjukaar.moonlight.api.trades.ModItemListing; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.MerchantOffer; + +public record SellTagListing(ItemStack want, TagKey offer, int count, int maxTrades, int xp, float priceMult, + int level) implements ModItemListing { + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> + builder.group( + ItemStack.CODEC.fieldOf("price").forGetter(SellTagListing::want), + TagKey.codec(Registries.ITEM).fieldOf("offer").forGetter(SellTagListing::offer), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "count", 1).forGetter(SellTagListing::count), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "max_trades", 16).forGetter(SellTagListing::maxTrades), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "xp", 1).forGetter(SellTagListing::xp), + StrOpt.of(ExtraCodecs.POSITIVE_FLOAT, "price_multiplier", 1F).forGetter(SellTagListing::priceMult), + StrOpt.of(Codec.intRange(1, 5), "level", 1).forGetter(SellTagListing::level) + ).apply(builder, SellTagListing::new) + ); + + @Override + public Codec getCodec() { + return CODEC; + } + + @Override + public MerchantOffer getOffer(Entity entity, RandomSource random) { + var registry = entity.level().registryAccess().registryOrThrow(Registries.ITEM); + return registry.getOrCreateTag(offer) + .getRandomElement(random) + .map(Holder::value) + .map(Item::getDefaultInstance) + .map(offer -> new MerchantOffer(want, offer, maxTrades, xp, priceMult)) + .orElse(null); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index 7cf07d81..44f0e983 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -58,7 +58,12 @@ public static Map> registerColored(St } public static RegSupplier register(String name, Supplier block, Function item) { - RegSupplier register = registerBlock(modLoc(name), block); + @SuppressWarnings("unchecked") + // TODO message to mehvahdjukaar + // RegistryHelper implementation should probably be: + // public static RegSupplier registerBlock(ResourceLocation name, Supplier block) + // (yes I hate how java generics work too) + RegSupplier register = (RegSupplier) registerBlock(modLoc(name), block); registerItem(modLoc(name), () -> item.apply(register.get())); return register; } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java b/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java new file mode 100644 index 00000000..f3fc3187 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java @@ -0,0 +1,15 @@ +package galena.doom_and_gloom.index; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.content.listing.BuyTagListing; +import galena.doom_and_gloom.content.listing.SellTagListing; +import net.mehvahdjukaar.moonlight.api.trades.ItemListingRegistry; + +public class DGItemListings { + + public static void init() { + ItemListingRegistry.registerSerializer(DoomAndGloom.modLoc("buy_tag"), BuyTagListing.CODEC); + ItemListingRegistry.registerSerializer(DoomAndGloom.modLoc("sell_tag"), SellTagListing.CODEC); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java index b3480500..b5df28da 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -4,9 +4,7 @@ import galena.doom_and_gloom.content.item.BushHammerItem; import galena.doom_and_gloom.content.item.HammerAndChiselItem; - import java.util.function.Supplier; - import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; @@ -22,7 +20,10 @@ public class DGItems { public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); // Misc - public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new SpawnEggItem(DGEntityTypes.HOLLER.get(), 0x84EED2, 0x24352F, new Item.Properties())); + // TODO on forge there's ForgeSpawnEggItem and on fabric it's ok to simply use SpawnEggItem + // might need to extract the creation of this to a service, or might be a case for moonlight + // public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new SpawnEggItem(DGEntityTypes.HOLLER.get(), 0x84EED2, 0x24352F, new Item.Properties())); + public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new Item(new Item.Properties())); private static RegSupplier register(String name, Supplier factory) { return RegHelper.registerItem(modLoc(name), factory); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java index f508e2cc..f72409b3 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGSoundTypes.java @@ -1,11 +1,11 @@ package galena.doom_and_gloom.index; +import net.mehvahdjukaar.moonlight.api.misc.ModSoundType; import net.minecraft.world.level.block.SoundType; -import net.minecraftforge.common.util.ForgeSoundType; public class DGSoundTypes { - public static final SoundType BONE_PILE = new ForgeSoundType(1.5F, 1.0F, DGSoundEvents.BONE_PILE_BREAK, DGSoundEvents.BONE_PILE_STEP, DGSoundEvents.BONE_PILE_PLACE, DGSoundEvents.BONE_PILE_HIT, DGSoundEvents.BONE_PILE_FALL); - public static final SoundType SEPULCHER = new ForgeSoundType(1.0F, 1.0F, DGSoundEvents.SEPULCHER_BREAK, DGSoundEvents.SEPULCHER_STEP, DGSoundEvents.SEPULCHER_PLACE, DGSoundEvents.SEPULCHER_HIT, DGSoundEvents.SEPULCHER_FALL); + public static final SoundType BONE_PILE = new ModSoundType(1.5F, 1.0F, DGSoundEvents.BONE_PILE_BREAK, DGSoundEvents.BONE_PILE_STEP, DGSoundEvents.BONE_PILE_PLACE, DGSoundEvents.BONE_PILE_HIT, DGSoundEvents.BONE_PILE_FALL); + public static final SoundType SEPULCHER = new ModSoundType(1.0F, 1.0F, DGSoundEvents.SEPULCHER_BREAK, DGSoundEvents.SEPULCHER_STEP, DGSoundEvents.SEPULCHER_PLACE, DGSoundEvents.SEPULCHER_HIT, DGSoundEvents.SEPULCHER_FALL); } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java index 942503ac..84fb7219 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java @@ -8,7 +8,6 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import net.minecraftforge.versions.forge.ForgeVersion; public class DGTags { @@ -26,7 +25,7 @@ private static TagKey tag(String name) { } private static TagKey loaderTag(String name) { - // TODO move to c space and reflect forge tags + // TODO move to c space and reference forge tags there return TagKey.create(Registries.ITEM, new ResourceLocation("forge", name)); } } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java deleted file mode 100644 index 64b20ad6..00000000 --- a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTrades.java +++ /dev/null @@ -1,93 +0,0 @@ -package galena.doom_and_gloom.index; - -import galena.doom_and_gloom.DoomAndGloom; -import java.util.List; -import net.minecraft.core.registries.Registries; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.util.RandomSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.npc.VillagerProfession; -import net.minecraft.world.entity.npc.VillagerTrades; -import net.minecraft.world.entity.npc.VillagerTrades.EmeraldForItems; -import net.minecraft.world.entity.npc.VillagerTrades.EnchantedItemForEmeralds; -import net.minecraft.world.entity.npc.VillagerTrades.ItemsForEmeralds; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.trading.MerchantOffer; -import net.minecraftforge.common.BasicItemListing; -import net.minecraftforge.event.village.VillagerTradesEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import org.jetbrains.annotations.Nullable; - -@EventBusSubscriber(modid = DoomAndGloom.MOD_ID, bus = EventBusSubscriber.Bus.FORGE) -public class DGVillagerTrades { - - - @SubscribeEvent - public static void tadeEvent(VillagerTradesEvent event) { - VillagerProfession type = event.getType(); - if (type == DGVillagerTypes.GRAVETENDER.get()) { - addGravetenderTrades(event); - } - } - - public record TagForEmeralds(TagKey tag, int cost, int emeralds, int maxUses, int xp, float priceMultiplier) implements VillagerTrades.ItemListing { - - @Override - public @Nullable MerchantOffer getOffer(Entity entity, RandomSource random) { - if(!(entity.level() instanceof ServerLevel level)) return null; - var tagHolder = level.registryAccess().registryOrThrow(Registries.ITEM).getOrCreateTag(tag); - return tagHolder.getRandomElement(random).map(item -> - new MerchantOffer(new ItemStack(Items.EMERALD, cost), new ItemStack(item), maxUses, xp, priceMultiplier) - ).orElse(null); - } - } - - public record EmeraldForTag(TagKey tag, int emeralds, int count, int maxUses, int xp, float priceMultiplier) implements VillagerTrades.ItemListing { - - @Override - public @Nullable MerchantOffer getOffer(Entity entity, RandomSource random) { - if(!(entity.level() instanceof ServerLevel level)) return null; - var tagHolder = level.registryAccess().registryOrThrow(Registries.ITEM).getOrCreateTag(tag); - return tagHolder.getRandomElement(random).map(item -> - new MerchantOffer(new ItemStack(item), new ItemStack(Items.EMERALD, emeralds), maxUses, xp, priceMultiplier) - ).orElse(null); - } - } - - private static void addGravetenderTrades(VillagerTradesEvent event) { - var trades = event.getTrades(); - - trades.put(1, List.of( - new ItemsForEmeralds(new ItemStack(Items.STONE_SHOVEL), 1, 1, 12, 1, 0.2F), - new ItemsForEmeralds(Items.ROSE_BUSH, 1, 1, 8, 2), - new BasicItemListing(new ItemStack(Items.POPPY, 8), new ItemStack(Items.EMERALD), 1, 12, 0.2F), - new BasicItemListing(new ItemStack(Items.CORNFLOWER, 8), new ItemStack(Items.EMERALD), 1, 12, 0.2F) - )); - - trades.put(2, List.of( - new ItemsForEmeralds(Items.GOLD_NUGGET, 1, 5, 8, 5), - new TagForEmeralds(DGTags.Items.VIGIL_CANDLES, 2, 1, 12, 10, 2F), - new ItemsForEmeralds(Items.FLOWER_POT, 2, 1, 12, 5) - )); - - trades.put(3, List.of( - new EnchantedItemForEmeralds(Items.IRON_SHOVEL, 2, 3, 10, 0.2F), - new EmeraldForTag(ItemTags.CANDLES, 2, 6, 12, 2, 0.1F) - )); - - trades.put(4, List.of( - new EmeraldForItems(Items.LANTERN, 2, 8, 15), - new ItemsForEmeralds(new ItemStack(Items.WITHER_ROSE), 10, 2, 8, 20, 2F) - )); - - trades.put(5, List.of( - new EnchantedItemForEmeralds(Items.DIAMOND_SHOVEL, 13, 3, 30, 0.2F) - )); - } - -} diff --git a/forge/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json b/common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json rename to common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json diff --git a/forge/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json b/common/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json rename to common/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json diff --git a/forge/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json b/common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json rename to common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_large.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_medium.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_small.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/desert_tomb.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_large.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_mausuleum.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_medium.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/plains_small.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_large.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_medium.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/savanna_small.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_burial_mound.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_large.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_medium.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/snowy_small.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_large.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_medium.nbt diff --git a/forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt b/common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt similarity index 100% rename from forge/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt rename to common/src/main/resources/data/doom_and_gloom/structures/village/graveyard/taiga_small.nbt diff --git a/forge/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/common/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json similarity index 100% rename from forge/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json rename to common/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json diff --git a/common/src/main/resources/doom_and_gloom.accesswidener b/common/src/main/resources/doom_and_gloom.accesswidener new file mode 100644 index 00000000..0c2d64df --- /dev/null +++ b/common/src/main/resources/doom_and_gloom.accesswidener @@ -0,0 +1,8 @@ +accessWidener v1 named + +accessible method net/minecraft/server/network/ServerGamePacketListenerImpl filterTextPacket (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; +accessible field net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool templates Lit/unimi/dsi/fastutil/objects/ObjectArrayList; +accessible field net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool rawTemplates Ljava/util/List; +mutable field net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool rawTemplates Ljava/util/List; +accessible method net/minecraft/client/renderer/RenderType create (Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType; +accessible method net/minecraft/world/entity/ai/sensing/SensorType (Ljava/util/function/Supplier;)V diff --git a/fabric/src/main/resources/doom_and_gloom.mixins.json b/common/src/main/resources/doom_and_gloom.mixins.json similarity index 100% rename from fabric/src/main/resources/doom_and_gloom.mixins.json rename to common/src/main/resources/doom_and_gloom.mixins.json diff --git a/fabric/src/main/resources/doom_and_gloom.png b/common/src/main/resources/doom_and_gloom.png similarity index 100% rename from fabric/src/main/resources/doom_and_gloom.png rename to common/src/main/resources/doom_and_gloom.png diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 8801d95a..d9fb21f8 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -10,6 +10,11 @@ fabric { dependOn(project(":common")) } +loom { + // TODO auto-detect by gradle plugin + accessWidenerPath = project(":common").file("src/main/resources/${mod.id.get()}.accesswidener") +} + dependencies { modApi(pack.fabric.modrinth.moonlight) diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index aff43a46..f94af585 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -1,3 +1,5 @@ +import org.spongepowered.asm.gradle.plugins.MixinExtension + plugins { id("com.possible-triangle.forge") alias(libs.plugins.parchment) @@ -21,14 +23,31 @@ forge { } } +minecraft { + // move this to be automatically detected by gradle plugin + // or even better, be generated from the access widener + accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) +} + +configure { + config("${mod.id.get()}.forge.mixins.json") +} + dependencies { // Compatibilities modImplementation(pack.forge.modrinth.moonlight) modImplementation(pack.forge.modrinth.supplementaries) modImplementation(pack.forge.modrinth.amendments) + // TODO this is currently only needed for oreganized, but will also be used here soon + // side-node, this should not be required to run datagen when depending on oreganized, fix this in oreganized + modImplementation(libs.multikulti.core) + modImplementation(libs.multikulti.datagen) + if (!env.isCI) { modRuntimeOnly(libs.oreganized) + // this should be included transient with oreganized on 1.21 neoforge (just not possible with how forge works) + modRuntimeOnly(libs.blueprint) modRuntimeOnly(libs.dye.depot) modRuntimeOnly(libs.jei.forge) } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java b/forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java new file mode 100644 index 00000000..6cc5dd63 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java @@ -0,0 +1,46 @@ +package galena.doom_and_gloom.data; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.data.provider.ItemListingProvider; +import galena.doom_and_gloom.index.DGTags; +import galena.doom_and_gloom.index.DGVillagerTypes; +import net.minecraft.data.PackOutput; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.common.data.ExistingFileHelper; + +public class DGItemListings extends ItemListingProvider { + + public DGItemListings(PackOutput output, ExistingFileHelper fileHelper) { + super(output, fileHelper, DoomAndGloom.MOD_ID); + } + + @Override + protected void run() { + builder(DGVillagerTypes.GRAVETENDER.getKey(), 1) + .sell("stone_shovel", 1, new ItemStack(Items.STONE_SHOVEL), 12, 1) + .sell("rose_bush", 1, new ItemStack(Items.ROSE_BUSH), 8, 2) + .buy("poppy", 1, new ItemStack(Items.POPPY, 8), 12, 1) + .buy("cornflower", 1, new ItemStack(Items.CORNFLOWER, 8), 12, 1); + + builder(DGVillagerTypes.GRAVETENDER.getKey(), 2) + .sell("gold_nugget", 1, new ItemStack(Items.GOLD_NUGGET), 8, 5) + .sell("vigil_candles", 2, DGTags.Items.VIGIL_CANDLES, 1, 12, 10) + .sell("poppy", 1, new ItemStack(Items.FLOWER_POT, 8), 12, 5); + + builder(DGVillagerTypes.GRAVETENDER.getKey(), 3) + // TODO enchant + .sell("iron_shovel", 1, new ItemStack(Items.IRON_SHOVEL), 3, 10) + .buy("candles", 2, ItemTags.CANDLES, 6, 12, 2); + + builder(DGVillagerTypes.GRAVETENDER.getKey(), 4) + .buy("lantern", 2, new ItemStack(Items.LANTERN), 8, 15) + .sell("wither_rose", 10, new ItemStack(Items.WITHER_ROSE, 2), 20, 8); + + builder(DGVillagerTypes.GRAVETENDER.getKey(), 5) + // TODO enchant + .sell("diamond_shovel", 13, new ItemStack(Items.DIAMOND_SHOVEL, 2), 3, 30); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java b/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java new file mode 100644 index 00000000..c1127656 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java @@ -0,0 +1,31 @@ +package galena.doom_and_gloom.data; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.forge.AddItemLootModifier; +import galena.doom_and_gloom.index.DGBlocks; +import net.minecraft.data.PackOutput; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; +import net.minecraftforge.common.data.GlobalLootModifierProvider; +import net.minecraftforge.common.loot.LootTableIdCondition; + +public class DGLootModifiers extends GlobalLootModifierProvider { + + public DGLootModifiers(PackOutput output) { + super(output, DoomAndGloom.MOD_ID); + } + + @Override + protected void start() { + add( + "bone_piles_in_desert_temples", + new AddItemLootModifier(new LootItemCondition[]{ + LootTableIdCondition.builder(BuiltInLootTables.DESERT_PYRAMID).build(), + LootItemRandomChanceCondition.randomChance(0.4F).build() + }, new ItemStack(DGBlocks.BONE_PILE.get(), 2)) + ); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java index 6564fd9d..f4df0ae7 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java @@ -46,6 +46,8 @@ public static void gatherData(GatherDataEvent event) { CompletableFuture lookupProvider = event.getLookupProvider(); generator.addProvider(server, new ODamageTags(output, lookupProvider, helper)); generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper)); + generator.addProvider(server, new DGItemListings(output, helper)); + generator.addProvider(server, new DGLootModifiers(output)); generator.addProvider(server, new PackMetadataGenerator(output).add(PackMetadataSection.TYPE, new PackMetadataSection( Component.literal("Doom & Gloom resources"), diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java b/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java index d4f3cbdd..c68bf069 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java @@ -2,6 +2,7 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGTags; import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; import net.minecraft.core.HolderLookup; @@ -30,25 +31,25 @@ public OBlockTags(PackOutput output, CompletableFuture fu @SuppressWarnings("unchecked") @Override protected void addTags(HolderLookup.Provider provider) { - tag(HEAT_SOURCE).addTag(BlockTags.FIRE).addTag(BlockTags.CAMPFIRES); + tag(DGTags.Blocks.HEAT_SOURCE).addTag(BlockTags.FIRE).addTag(BlockTags.CAMPFIRES); tag(BlockTags.MINEABLE_WITH_PICKAXE).add( DGBlocks.SEPULCHER.get(), DGBlocks.BONE_PILE.get() ); - var vigilCandles = tag(VIGIL_CANDLES); + var vigilCandles = tag(DGTags.Blocks.VIGIL_CANDLES); DGBlocks.vigilCandles().forEach(block -> { var id = BuiltInRegistries.BLOCK.getKey(block.get()); vigilCandles.addOptional(id); }); - tag(BlockTags.CANDLES).addTags(VIGIL_CANDLES); - tag(BlockTags.MINEABLE_WITH_PICKAXE).addTags(VIGIL_CANDLES); + tag(BlockTags.CANDLES).addTags(DGTags.Blocks.VIGIL_CANDLES); + tag(BlockTags.MINEABLE_WITH_PICKAXE).addTags(DGTags.Blocks.VIGIL_CANDLES); tag(BlockTags.MINEABLE_WITH_PICKAXE).add(DGBlocks.SEPULCHER.get()); - tag(CAN_TURN_INTO_BURIAL_DIRT).add( + tag(DGTags.Blocks.CAN_TURN_INTO_BURIAL_DIRT).add( Blocks.DIRT, Blocks.GRASS_BLOCK, Blocks.PODZOL, @@ -57,7 +58,7 @@ protected void addTags(HolderLookup.Provider provider) { Blocks.ROOTED_DIRT ); - tag(GRAVETENDER_LIGHTABLE) + tag(DGTags.Blocks.GRAVETENDER_LIGHTABLE) .addTag(BlockTags.CANDLES) .addOptionalTag(new ResourceLocation("amendments:skull_candles")); diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OLang.java b/forge/src/main/java/galena/doom_and_gloom/data/OLang.java index 9484575c..e5b97d9e 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OLang.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OLang.java @@ -4,13 +4,8 @@ import galena.doom_and_gloom.data.provider.OLangProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEffects; -import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGItems; -import java.util.function.Supplier; import net.minecraft.data.PackOutput; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; public class OLang extends OLangProvider { @@ -54,6 +49,9 @@ protected void addTranslations() { This must be at the very bottom to avoid overwriting errors. These functions ignore objects that have already been translated above. */ + + // TODO do this differently + /* for (Supplier blocks : DoomAndGloom.REGISTRY_HELPER.getBlockSubHelper().getDeferredRegister().getEntries()) { tryBlock(blocks); } @@ -63,5 +61,6 @@ protected void addTranslations() { for (Supplier> entities : DGEntityTypes.ENTITIES.getEntries()) { tryEntity(entities); } + */ } } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java index 0cf55360..c4257cc7 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java @@ -7,7 +7,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Supplier; import java.util.stream.Stream; import net.minecraft.advancements.critereon.StatePropertiesPredicate; import net.minecraft.data.PackOutput; @@ -71,7 +70,7 @@ public void generate() { @Override protected Stream> getKnownEntityTypes() { - return DGEntityTypes.ENTITIES.getEntries().stream().map(Supplier::get); + return Stream.of(DGEntityTypes.HOLLER.get()); } } } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java new file mode 100644 index 00000000..f266b91d --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java @@ -0,0 +1,106 @@ +package galena.doom_and_gloom.data.provider; + +import com.mojang.serialization.JsonOps; +import galena.doom_and_gloom.content.listing.BuyTagListing; +import galena.doom_and_gloom.content.listing.SellTagListing; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.BiConsumer; +import net.mehvahdjukaar.moonlight.api.trades.ModItemListing; +import net.mehvahdjukaar.moonlight.api.trades.SimpleItemListing; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.JsonCodecProvider; + +public abstract class ItemListingProvider extends JsonCodecProvider { + + public ItemListingProvider(PackOutput output, ExistingFileHelper fileHelper, String modid) { + super(output, fileHelper, modid, JsonOps.INSTANCE, PackType.SERVER_DATA, "moonlight/villager_trades", ModItemListing.CODEC, new HashMap<>()); + } + + @Override + protected final void gather(BiConsumer consumer) { + run(); + super.gather(consumer); + } + + protected final void add(String name, ModItemListing listing) { + add(new ResourceLocation(modid, name), listing); + } + + protected final void add(ResourceLocation id, ModItemListing listing) { + if (entries.put(id, listing) != null) { + throw new RuntimeException("there is already a item listing registered under '%s'".formatted(id)); + } + } + + protected final LevelBuilder builder(ResourceKey profession, int level) { + return new LevelBuilder(profession, level); + } + + protected final ProfessionBuilder builder(ResourceKey profession) { + return level -> builder(profession, level); + } + + protected abstract void run(); + + @FunctionalInterface + public interface ProfessionBuilder { + LevelBuilder level(int level); + } + + public class LevelBuilder { + + private final ResourceKey profession; + private final int level; + + public LevelBuilder(ResourceKey profession, int level) { + this.profession = profession; + this.level = level; + } + + public LevelBuilder add(String name, ModItemListing listing) { + ItemListingProvider.this.add(profession.location().withSuffix("/" + name), listing); + return this; + } + + public LevelBuilder sell(String name, int emeralds, ItemStack offer, int maxTrades, int xp) { + return add("sell_" + name, SimpleItemListing.createDefault( + new ItemStack(Items.EMERALD, emeralds), ItemStack.EMPTY, offer, + maxTrades, Optional.of(xp), 0.2F, level + )); + } + + public LevelBuilder sell(String name, int emeralds, TagKey tag, int count, int maxTrades, int xp) { + return add("sell_" + name, new SellTagListing( + new ItemStack(Items.EMERALD, emeralds), tag, count, + maxTrades, xp, 0.2F, level + )); + } + + public LevelBuilder buy(String name, int emeralds, ItemStack want, int maxTrades, int xp) { + return add("buy_" + name, SimpleItemListing.createDefault( + want, ItemStack.EMPTY, new ItemStack(Items.EMERALD, emeralds), + maxTrades, Optional.of(xp), 0.2F, level + )); + } + + public LevelBuilder buy(String name, int emeralds, TagKey tag, int count, int maxTrades, int xp) { + return add("buy_" + name, new BuyTagListing( + tag, count, new ItemStack(Items.EMERALD, emeralds), + maxTrades, xp, 0.2F, level + )); + } + + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java index 44d8a65a..a1de7025 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java @@ -41,4 +41,9 @@ public ItemModelBuilder toolItem(Supplier item) { return withExistingParent(ForgeRegistries.ITEMS.getKey(item.get()).getPath(), mcLoc("item/handheld")) .texture("layer0", modLoc("item/" + ForgeRegistries.ITEMS.getKey(item.get()).getPath())); } + + public ItemModelBuilder spawnEggItem(Supplier item) { + return withExistingParent(ForgeRegistries.ITEMS.getKey(item.get()).getPath(), "minecraft:item/template_spawn_egg"); + } + } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java b/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java index c768d13c..57ad35d2 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java @@ -22,7 +22,7 @@ public class AddItemLootModifier extends LootModifier { private final ItemStack stack; - protected AddItemLootModifier(LootItemCondition[] conditions, ItemStack stack) { + public AddItemLootModifier(LootItemCondition[] conditions, ItemStack stack) { super(conditions); this.stack = stack; } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java index 98b1f671..46e2a677 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java @@ -5,6 +5,7 @@ import galena.doom_and_gloom.client.DoomAndGloomClient; import galena.doom_and_gloom.client.FogRendering; import galena.doom_and_gloom.client.OModelLayers; +import galena.doom_and_gloom.client.ORenderTypes; import galena.doom_and_gloom.client.model.DirtMoundModel; import galena.doom_and_gloom.client.model.HollerModel; import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; @@ -20,6 +21,7 @@ import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; import net.minecraftforge.client.event.RegisterParticleProvidersEvent; +import net.minecraftforge.client.event.RegisterShadersEvent; import net.minecraftforge.client.event.ViewportEvent; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -53,7 +55,14 @@ public static void registerModelLayers(EntityRenderersEvent.RegisterLayerDefinit @SubscribeEvent public static void registerParticleFactories(RegisterParticleProvidersEvent event) { - DoomAndGloomClient.registerParticleFactories(event::registerSpriteSet); + DoomAndGloomClient.registerParticleFactories((type, factory) -> + event.registerSpriteSet(type, factory::apply) + ); + } + + @SubscribeEvent + public static void registerShaders(RegisterShadersEvent event) { + ORenderTypes.registerShaders(event.getResourceProvider(), event::registerShader); } @EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.FORGE) diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index c0196cd9..fda0ace0 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -12,7 +12,6 @@ import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGItems; import java.util.function.Supplier; - import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.SpawnPlacements; @@ -85,6 +84,7 @@ public void onServerStart(ServerAboutToStartEvent event) { VillageStructureModifier.setup(event.getServer().registryAccess()); } + // TODO move to common with a wrapper or some moonlight solution public void buildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { ResourceKey tab = event.getTabKey(); MutableHashedLinkedMap entries = event.getEntries(); diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/client/BonePileClientProperties.java b/forge/src/main/java/galena/doom_and_gloom/forge/client/BonePileClientProperties.java new file mode 100644 index 00000000..906c7ff6 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/client/BonePileClientProperties.java @@ -0,0 +1,19 @@ +package galena.doom_and_gloom.forge.client; + +import galena.doom_and_gloom.content.block.BonePileBlock; +import net.minecraft.client.particle.ParticleEngine; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.extensions.common.IClientBlockExtensions; + +public record BonePileClientProperties(BonePileBlock block) implements IClientBlockExtensions { + + @Override + public boolean addDestroyEffects(BlockState state, Level level, BlockPos pos, ParticleEngine manager) { + block.particles(level, Vec3.atCenterOf(pos), 20); + return IClientBlockExtensions.super.addDestroyEffects(state, level, pos, manager); + } + +} \ No newline at end of file diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java new file mode 100644 index 00000000..7ecc5531 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java @@ -0,0 +1,46 @@ +package galena.doom_and_gloom.forge.mixin; + +import galena.doom_and_gloom.content.block.BonePileBlock; +import galena.doom_and_gloom.forge.client.BonePileClientProperties; +import galena.doom_and_gloom.index.DGParticleTypes; +import java.util.function.Consumer; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.FallingBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.extensions.common.IClientBlockExtensions; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(value = BonePileBlock.class, remap = false) +public abstract class BonePileBlockMixin extends FallingBlock { + + public BonePileBlockMixin(Properties properties) { + super(properties); + } + + @Override + public boolean addLandingEffects(BlockState state, ServerLevel level, BlockPos pos, BlockState other, LivingEntity entity, int numberOfParticles) { + var self = (BonePileBlock) (Object) this; + self.particles(level, entity.position().add(0, 0.2, 0.0), numberOfParticles / 2); + return true; + } + + @Override + public boolean addRunningEffects(BlockState state, Level level, BlockPos pos, Entity entity) { + var vec = entity.position().add(0, 0.2, 0.0); + var speed = entity.isSprinting() ? 0.5F : 0.2F; + var halfSpeed = speed / 2; + level.addParticle(DGParticleTypes.BONE_FRAGMENT.get(), vec.x, vec.y, vec.z, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed, level.random.nextDouble() * speed - halfSpeed); + return true; + } + + @Override + public void initializeClient(Consumer consumer) { + var self = (BonePileBlock) (Object) this; + consumer.accept(new BonePileClientProperties(self)); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java new file mode 100644 index 00000000..3d312315 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java @@ -0,0 +1,17 @@ +package galena.doom_and_gloom.forge.mixin; + +import galena.doom_and_gloom.content.entity.WithExtraData; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(Entity.class) +public class EntityMixin implements WithExtraData { + + @Override + public CompoundTag getExtraData() { + var self = (Entity) (Object) this; + return self.getPersistentData(); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java index 88637de0..ce598eba 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java @@ -3,6 +3,9 @@ import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.Container; +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.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -12,11 +15,11 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -@Mixin(SepulcherBlockEntity.class) -public abstract class SepulcherBlockEntityMixin extends SepulcherBlockEntity { +@Mixin(value = SepulcherBlockEntity.class, remap = false) +public abstract class SepulcherBlockEntityMixin extends BlockEntity { - public SepulcherBlockEntityMixin(BlockPos pos, BlockState state) { - super(pos, state); + public SepulcherBlockEntityMixin(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { + super(pType, pPos, pBlockState); } @Unique @@ -24,7 +27,7 @@ public SepulcherBlockEntityMixin(BlockPos pos, BlockState state) { @Unique private LazyOptional createItemHandler() { - return LazyOptional.of(() -> new InvWrapper(this)); + return LazyOptional.of(() -> new InvWrapper((Container) this)); } @Override diff --git a/forge/src/main/resources/META-INF/accesstransformer.cfg b/forge/src/main/resources/META-INF/accesstransformer.cfg index 42011d8a..3ce64589 100644 --- a/forge/src/main/resources/META-INF/accesstransformer.cfg +++ b/forge/src/main/resources/META-INF/accesstransformer.cfg @@ -1,6 +1,3 @@ public net.minecraft.server.network.ServerGamePacketListenerImpl m_243132_(Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; # filterTextPacket public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool f_210560_ # templates public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool f_210559_ # rawTemplates -public net.minecraft.world.entity.npc.VillagerTrades$EnchantedItemForEmeralds -public net.minecraft.world.entity.npc.VillagerTrades$ItemsForEmeralds -public net.minecraft.world.entity.npc.VillagerTrades$EmeraldForItems \ No newline at end of file diff --git a/forge/src/main/resources/doom_and_gloom.forge.mixins.json b/forge/src/main/resources/doom_and_gloom.forge.mixins.json index be803508..6cdb7024 100644 --- a/forge/src/main/resources/doom_and_gloom.forge.mixins.json +++ b/forge/src/main/resources/doom_and_gloom.forge.mixins.json @@ -4,6 +4,8 @@ "package": "galena.doom_and_gloom.forge.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "BonePileBlockMixin", + "EntityMixin", "SepulcherBlockEntityMixin" ], "server": [], diff --git a/gradle.properties b/gradle.properties index 3321fd16..69fac94e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,6 +14,7 @@ minecraft_version=1.20.1 # Forge forge_version=47.3.0 +kotlin_forge_version=4.3.0 # Fabric fabric_api_version=0.92.6+1.20.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 501a147f..ad3cdea2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,7 @@ multikulti-datagen-fix = { group = "com.possible-triangle", name = "multikulti-d galena-hats = { "group" = "dev.galena", name = "hats-forge", version = "1.20.1-1.2.2" } oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.0" } +blueprint = { group = "com.teamabnormals", name = "blueprint", version = "1.20.1-7.1.0" } dye-depot = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } From 8de349928fb2149ce340a1693fd58df78584ba9a Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Sat, 1 Nov 2025 23:01:26 +0100 Subject: [PATCH 03/43] add conditions to vigil candle recipes --- .../building_blocks/amber_vigil_candle.json | 14 +++++++++ .../amber_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/aqua_vigil_candle.json | 14 +++++++++ .../aqua_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/beige_vigil_candle.json | 14 +++++++++ .../beige_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/coral_vigil_candle.json | 14 +++++++++ .../coral_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/forest_vigil_candle.json | 14 +++++++++ .../forest_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/ginger_vigil_candle.json | 14 +++++++++ .../ginger_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/indigo_vigil_candle.json | 14 +++++++++ .../indigo_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/maroon_vigil_candle.json | 14 +++++++++ .../maroon_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/mint_vigil_candle.json | 14 +++++++++ .../mint_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/navy_vigil_candle.json | 14 +++++++++ .../navy_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/olive_vigil_candle.json | 14 +++++++++ .../olive_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/rose_vigil_candle.json | 14 +++++++++ .../rose_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/slate_vigil_candle.json | 14 +++++++++ .../slate_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/tan_vigil_candle.json | 14 +++++++++ .../tan_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/teal_vigil_candle.json | 14 +++++++++ .../teal_vigil_candle_dyeing.json | 14 +++++++++ .../building_blocks/verdant_vigil_candle.json | 14 +++++++++ .../verdant_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/amber_vigil_candle.json | 14 +++++++++ .../recipes/amber_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/aqua_vigil_candle.json | 14 +++++++++ .../recipes/aqua_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/beige_vigil_candle.json | 14 +++++++++ .../recipes/beige_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/coral_vigil_candle.json | 14 +++++++++ .../recipes/coral_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/forest_vigil_candle.json | 14 +++++++++ .../recipes/forest_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/ginger_vigil_candle.json | 14 +++++++++ .../recipes/ginger_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/indigo_vigil_candle.json | 14 +++++++++ .../recipes/indigo_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/maroon_vigil_candle.json | 14 +++++++++ .../recipes/maroon_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/mint_vigil_candle.json | 14 +++++++++ .../recipes/mint_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/navy_vigil_candle.json | 14 +++++++++ .../recipes/navy_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/olive_vigil_candle.json | 14 +++++++++ .../recipes/olive_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/rose_vigil_candle.json | 14 +++++++++ .../recipes/rose_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/slate_vigil_candle.json | 14 +++++++++ .../recipes/slate_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/tan_vigil_candle.json | 14 +++++++++ .../recipes/tan_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/teal_vigil_candle.json | 14 +++++++++ .../recipes/teal_vigil_candle_dyeing.json | 14 +++++++++ .../recipes/verdant_vigil_candle.json | 14 +++++++++ .../recipes/verdant_vigil_candle_dyeing.json | 14 +++++++++ .../galena/doom_and_gloom/data/ORecipes.java | 29 ++++++++++++------- 65 files changed, 915 insertions(+), 10 deletions(-) diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json index c574853e..04813c91 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json index 05488fef..2d6ff3bd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json index d9237b68..89dcb8e4 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json index c576088b..f381bfb5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json index 80d0dcf8..9c4271a2 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json index 7720c707..29b45d15 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json index e545bdef..3aaadca6 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json index c75c54cd..04fd03d2 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json index c761756a..0e771432 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json index 8ed9fba4..bccea18f 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json index a3eeb2c8..c5de5f8b 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json index c4e8d970..2a59509c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json index 7fcd368f..6e05ef9d 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json index a1866b04..1213431e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json index d7b2dc6f..2511a347 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json index 56cdaabd..065def41 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json index 3c152b28..ad503fc5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json index 59e652e6..092cd8bc 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json index 22cdf86d..4b7ba71b 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json index 935ab67c..ea054b54 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json index 22bfa445..ee5fa864 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json index c33fc194..4cee7132 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json index b7addc07..ccf37640 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json index 12c73ff8..f38c7b9d 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json index fcefb79e..a5e8c21f 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json index f5d751af..b104f8dc 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json index 0db12185..53596e88 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json index e113f550..75bbd65a 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json index f4183ffd..fb7a95cd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json index ba1a68e9..f0bb09bf 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json index 62fb6ea7..153dcc9e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_silver": { "conditions": { @@ -18,6 +24,14 @@ "trigger": "minecraft:recipe_unlocked" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_silver", diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json index 479b8109..c718d559 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle_dyeing.json @@ -1,5 +1,11 @@ { "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], "criteria": { "has_the_recipe": { "conditions": { @@ -20,6 +26,14 @@ "trigger": "minecraft:inventory_changed" } }, + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "requirements": [ [ "has_vigil_candle", diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json index e008fceb..4984a259 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json index ef11fbaa..18717870 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json index 7d877c6e..28c59440 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json index 926ffd88..8db62d7e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json index b768acf5..bd0a5f28 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json index 164cf0d4..52b1c7e9 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json index 6aeb5296..42a4820c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json index 9c344216..5f1691dd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json index 23c0a69b..1813b4f6 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json index da998170..b715745b 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json index 1d553b11..1695aa70 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json index 60758312..4c21dd0f 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json index 50b387a8..ff216ec3 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json index e04c7bdf..d75684aa 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json index 488d04bf..ac66b089 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json index e7165388..64439a60 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json index 39c9c246..cee8a5e9 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json index ffd305af..974b4363 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json index 50fad821..a0d192fd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json index e8b31321..13b359a5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json index 9a2254d3..a72bd23a 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json index 948a1b13..248908e3 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json index 8e391e81..7d639bd2 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json index 5555ed4a..005dad25 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json index 8121cbbf..e52c4828 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json index 7e57d4ac..1484703a 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json index 0a3c12c5..866a3709 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json index 77c0e2cb..98163738 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json index 8e7e6421..35fbe061 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json index e47a046c..45c1e419 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json index 83a528b3..382ec0f6 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shaped", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "key": { "C": { diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json index 6704947c..349d09da 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle_dyeing.json @@ -1,6 +1,20 @@ { "type": "minecraft:crafting_shapeless", "category": "building", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "dye_depot" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "dye_depot" + ] + } + ], "group": "vigil_candle", "ingredients": [ { diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java index 00fa9afa..82bed60b 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java @@ -1,11 +1,16 @@ package galena.doom_and_gloom.data; +import com.possible_triangle.multikulti.datagen.conditions.Conditional; +import com.possible_triangle.multikulti.datagen.conditions.ModLoaded; import galena.doom_and_gloom.compat.DyeColors; import galena.doom_and_gloom.data.provider.ORecipeProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGTags; + +import java.util.List; import java.util.function.Consumer; import java.util.function.Function; + import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; @@ -35,16 +40,20 @@ protected void buildRecipes(Consumer consumer) { vigilCandle(DGBlocks.VIGIL_CANDLE, Blocks.CANDLE).save(consumer); DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> { - var namespace = DyeColors.modNamespace(color).orElse(ResourceLocation.DEFAULT_NAMESPACE); - var candle = BuiltInRegistries.BLOCK.get(new ResourceLocation(namespace, color.getSerializedName() + "_candle")); - vigilCandle(block, candle).save(consumer); - - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, block.get()) - .requires(DGBlocks.VIGIL_CANDLE.get()) - .requires(DyeItem.byColor(color)) - .unlockedBy("has_vigil_candle", has(DGBlocks.VIGIL_CANDLE.get())) - .group("vigil_candle") - .save(consumer, RecipeBuilder.getDefaultRecipeId(block.get()).withSuffix("_dyeing")); + var namespace = DyeColors.modNamespace(color); + var conditions = namespace.map(ModLoaded::new).map(List::of).orElseGet(List::of); + + Conditional.with(this, conditions, () -> { + var candle = BuiltInRegistries.BLOCK.get(new ResourceLocation(namespace.orElse(ResourceLocation.DEFAULT_NAMESPACE), color.getSerializedName() + "_candle")); + vigilCandle(block, candle).save(consumer); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, block.get()) + .requires(DGBlocks.VIGIL_CANDLE.get()) + .requires(DyeItem.byColor(color)) + .unlockedBy("has_vigil_candle", has(DGBlocks.VIGIL_CANDLE.get())) + .group("vigil_candle") + .save(consumer, RecipeBuilder.getDefaultRecipeId(block.get()).withSuffix("_dyeing")); + }); }); withFallback(DGTags.Items.INGOTS_SILVER, Tags.Items.INGOTS_IRON, ingot -> From 294fb8e51ceceba533d3dba68c24f36218ac464d Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Sat, 1 Nov 2025 23:01:49 +0100 Subject: [PATCH 04/43] run spottless --- forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java | 2 -- .../doom_and_gloom/data/provider/ItemListingProvider.java | 1 - 2 files changed, 3 deletions(-) diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java index 82bed60b..599dfd73 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java @@ -6,11 +6,9 @@ import galena.doom_and_gloom.data.provider.ORecipeProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGTags; - import java.util.List; import java.util.function.Consumer; import java.util.function.Function; - import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java index f266b91d..c3673f65 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java @@ -4,7 +4,6 @@ import galena.doom_and_gloom.content.listing.BuyTagListing; import galena.doom_and_gloom.content.listing.SellTagListing; import java.util.HashMap; -import java.util.Map; import java.util.Optional; import java.util.function.BiConsumer; import net.mehvahdjukaar.moonlight.api.trades.ModItemListing; From 77b961e622b90c9d38cca36352bc5c29bafb9330 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 12:38:20 +0100 Subject: [PATCH 05/43] ported more to common --- .idea/icon.png | Bin 81010 -> 0 bytes common/build.gradle.kts | 3 +- .../java/galena/doom_and_gloom/DGConfig.java | 44 ++++----- .../galena/doom_and_gloom/DoomAndGloom.java | 70 +++++++++++--- .../{ORenderTypes.java => DGRenderTypes.java} | 28 ++---- .../client/DoomAndGloomClient.java | 52 ++++++++--- .../client/model/HollerModel.java | 6 +- .../compat/AmendmentsCompat.java | 2 +- .../doom_and_gloom/index/DGEntityTypes.java | 22 ++++- .../galena/doom_and_gloom/index/DGTags.java | 30 ++++-- .../fabric/FabricEntrypoint.java | 12 +-- .../forge/ForgeClientEntrypoint.java | 43 +-------- .../doom_and_gloom/forge/ForgeEntrypoint.java | 86 ++---------------- ...Mixin.java => SelfBonePileBlockMixin.java} | 4 +- .../doom_and_gloom.forge.mixins.json | 2 +- gradle/libs.versions.toml | 3 + 16 files changed, 194 insertions(+), 213 deletions(-) delete mode 100644 .idea/icon.png rename common/src/main/java/galena/doom_and_gloom/client/{ORenderTypes.java => DGRenderTypes.java} (68%) rename {forge/src/main/java/galena/doom_and_gloom/forge => common/src/main/java/galena/doom_and_gloom}/compat/AmendmentsCompat.java (97%) rename forge/src/main/java/galena/doom_and_gloom/forge/mixin/{BonePileBlockMixin.java => SelfBonePileBlockMixin.java} (93%) diff --git a/.idea/icon.png b/.idea/icon.png deleted file mode 100644 index 78a0df8298f5f47ad7fc5a8ad0af197b13554bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81010 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 Km#vgG3;RFuNC|NO diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 0369ba9f..5277c017 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -8,7 +8,6 @@ loom { } dependencies { - // TODO switch out with actual common module - modApi(pack.forge.modrinth.moonlight) + modApi(libs.moonlight.lib.common) modApi(libs.forge.config.api.common) } diff --git a/common/src/main/java/galena/doom_and_gloom/DGConfig.java b/common/src/main/java/galena/doom_and_gloom/DGConfig.java index 06346f0e..02d2e67e 100644 --- a/common/src/main/java/galena/doom_and_gloom/DGConfig.java +++ b/common/src/main/java/galena/doom_and_gloom/DGConfig.java @@ -1,34 +1,40 @@ package galena.doom_and_gloom; -import java.util.function.BiConsumer; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; -import net.minecraftforge.fml.config.ModConfig; +import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigBuilder; +import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigSpec; +import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigType; + +import java.util.function.Supplier; public class DGConfig { public static final Common COMMON; - private static final ForgeConfigSpec COMMON_SPEC; + private static final ConfigSpec COMMON_SPEC; public static final Client CLIENT; - private static final ForgeConfigSpec CLIENT_SPEC; + private static final ConfigSpec CLIENT_SPEC; + + public static void init() { + //just classloads this + } public static class Common { - public final ConfigValue sepulcherDuration; + public final Supplier sepulcherDuration; - private Common(ForgeConfigSpec.Builder builder) { + private Common(ConfigBuilder builder) { builder.comment("Common"); builder.push("common"); - sepulcherDuration = builder.comment("Time in ticks the sepulcher takes to turn meat into bones").defineInRange("sepulcherDuration", 20 * 30, 0, Integer.MAX_VALUE); + sepulcherDuration = builder.comment("Time in ticks the sepulcher takes to turn meat into bones") + .define("sepulcherDuration", 20 * 30, 0, Integer.MAX_VALUE); builder.pop(); } } public static class Client { - public final ConfigValue fancyRenderType; + public final Supplier fancyRenderType; - private Client(ForgeConfigSpec.Builder builder) { + private Client(ConfigBuilder builder) { builder.comment("Client"); builder.push("client"); @@ -40,19 +46,15 @@ private Client(ForgeConfigSpec.Builder builder) { } static { - var commonSpecPair = new ForgeConfigSpec.Builder().configure(Common::new); - COMMON = commonSpecPair.getLeft(); - COMMON_SPEC = commonSpecPair.getRight(); + ConfigBuilder commonBuilder = ConfigBuilder.create(DoomAndGloom.MOD_ID, ConfigType.COMMON); - var clientSpecPair = new ForgeConfigSpec.Builder().configure(Client::new); - CLIENT = clientSpecPair.getLeft(); - CLIENT_SPEC = clientSpecPair.getRight(); - } + COMMON = new Common(commonBuilder); + COMMON_SPEC = commonBuilder.buildAndRegister(); - public static void register(BiConsumer registry) { - registry.accept(ModConfig.Type.COMMON, DGConfig.COMMON_SPEC); - registry.accept(ModConfig.Type.CLIENT, DGConfig.CLIENT_SPEC); + ConfigBuilder clientBuilder = ConfigBuilder.create(DoomAndGloom.MOD_ID, ConfigType.CLIENT); + CLIENT = new Client(clientBuilder); + CLIENT_SPEC = clientBuilder.buildAndRegister(); } } diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 734f1c38..4a7639db 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -1,23 +1,27 @@ package galena.doom_and_gloom; -import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.compat.moonlight.MoonlightCompat; -import galena.doom_and_gloom.index.DGBlockEntities; -import galena.doom_and_gloom.index.DGBlocks; -import galena.doom_and_gloom.index.DGEffects; -import galena.doom_and_gloom.index.DGEntityTypes; -import galena.doom_and_gloom.index.DGItemListings; -import galena.doom_and_gloom.index.DGItems; -import galena.doom_and_gloom.index.DGParticleTypes; -import galena.doom_and_gloom.index.DGPoi; -import galena.doom_and_gloom.index.DGSoundEvents; -import galena.doom_and_gloom.index.DGVillagerTypes; +import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; +import galena.doom_and_gloom.gen.VillageStructureModifier; +import galena.doom_and_gloom.index.*; import galena.doom_and_gloom.network.DGNetwork; -import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; + public class DoomAndGloom { public static final Logger LOGGER = LogManager.getLogger(); public static final String MOD_ID = "doom_and_gloom"; @@ -27,6 +31,7 @@ public static ResourceLocation modLoc(String location) { } public static void init() { + DGConfig.init(); DGBlockEntities.init(); DGBlocks.init(); DGEffects.init(); @@ -40,9 +45,44 @@ public static void init() { DGNetwork.register(); - if (PlatHelper.isModLoaded(CompatMods.MOONLIGHT)) { - MoonlightCompat.init(); - } + RegHelper.addItemsToTabsRegistration(DoomAndGloom::addItemsToTabs); + } + + + public static void addItemsToTabs(RegHelper.ItemToTabEvent event) { + + List allCandles = new ArrayList<>(); + allCandles.add(DGBlocks.VIGIL_CANDLE.get()); + DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> allCandles.add(block.get())); + + event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, stack -> stack.is(DGTags.Items.VANILLA_LANTERNS), + allCandles.toArray(ItemLike[]::new)); + + event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, i -> i.is(Items.BONE_BLOCK), DGBlocks.BONE_PILE.get()); + + event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, i -> i.is(Items.INFESTED_DEEPSLATE), DGBlocks.BURIAL_DIRT.get()); + + event.add(CreativeModeTabs.SPAWN_EGGS, DGItems.HOLLER_SPAWN_EGG.get()); + + //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { + // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); + // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); + //} + + //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { + // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); + // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); + //} + } + + public static void onServerAboutToStart(MinecraftServer server) { + VillageStructureModifier.setup(server.registryAccess()); + } + + //TODO: fabric + public static boolean onItemDrop(Entity entity){ + if (entity instanceof Player) return false; + return SepulcherBlockEntity.wasConsumerBySepulcher(entity); } } diff --git a/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java b/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java similarity index 68% rename from common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java rename to common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java index 3b4f123a..84a2825e 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/ORenderTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java @@ -4,23 +4,23 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; -import galena.doom_and_gloom.DoomAndGloom; + import java.util.concurrent.atomic.AtomicReference; -import java.util.function.BiConsumer; -import java.util.function.Consumer; import java.util.function.Function; + +import net.mehvahdjukaar.moonlight.api.client.CoreShaderContainer; import net.minecraft.Util; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceProvider; -public abstract class ORenderTypes extends RenderType { - //TODO: check if iris is on. If on use default render type - private static final AtomicReference NO_ALPHA_CUTOFF_SHADER = new AtomicReference<>(); +public abstract class DGRenderTypes extends RenderType { - protected static final ShaderStateShard NO_ALPHA_CUTOFF_SHARD = new ShaderStateShard(NO_ALPHA_CUTOFF_SHADER::get); + public static final CoreShaderContainer NO_ALPHA_CUTOFF_SHADER = new CoreShaderContainer(GameRenderer::getRendertypeEntityTranslucentShader); + + protected static final ShaderStateShard NO_ALPHA_CUTOFF_SHARD = new ShaderStateShard(NO_ALPHA_CUTOFF_SHADER); protected static final TransparencyStateShard ADDITIVE_TRANSPARENCY = new TransparencyStateShard("lightning_transparency", () -> { RenderSystem.enableBlend(); @@ -56,18 +56,8 @@ public abstract class ORenderTypes extends RenderType { return create("doom_and_gloom_entity_translucent_no_alpha_cutoff", DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, rendertype$compositestate); }); - public ORenderTypes(String pName, VertexFormat pFormat, VertexFormat.Mode pMode, int pBufferSize, boolean pAffectsCrumbling, boolean pSortOnUpload, Runnable pSetupState, Runnable pClearState) { + public DGRenderTypes(String pName, VertexFormat pFormat, VertexFormat.Mode pMode, int pBufferSize, boolean pAffectsCrumbling, boolean pSortOnUpload, Runnable pSetupState, Runnable pClearState) { super(pName, pFormat, pMode, pBufferSize, pAffectsCrumbling, pSortOnUpload, pSetupState, pClearState); } - // TODO this is not called on fabric yet - public static void registerShaders(ResourceProvider resources, BiConsumer> event) { - try { - // TODO this is a resource location on forge, right now it tries to look in the "minecraft" folder instead - var shader = new ShaderInstance(resources, "rendertype_entity_translucent_additive", DefaultVertexFormat.NEW_ENTITY); - event.accept(shader, NO_ALPHA_CUTOFF_SHADER::set); - } catch (Exception e) { - DoomAndGloom.LOGGER.error("Failed to register shader", e); - } - } } diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index c5ad3b01..fa9486d1 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -1,19 +1,23 @@ package galena.doom_and_gloom.client; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.client.model.DirtMoundModel; +import galena.doom_and_gloom.client.model.HollerModel; import galena.doom_and_gloom.client.particle.BoneFragmentParticle; import galena.doom_and_gloom.client.particle.FogParticle; +import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; +import galena.doom_and_gloom.client.render.entity.HollerRender; import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGParticleTypes; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; -import net.minecraft.client.particle.ParticleProvider; +import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; import net.minecraft.client.particle.SoulParticle; -import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.renderer.RenderType; -import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.world.level.block.Block; +import java.util.function.Supplier; + public class DoomAndGloomClient { private static void render(Supplier block, RenderType render) { @@ -23,6 +27,34 @@ private static void render(Supplier block, RenderType render) { public static void init() { DoomAndGloomClient.registerBlockRenderers(); + ClientHelper.addClientReloadListener(DGReloadListener::new, DoomAndGloom.modLoc("tablets_reloader")); + ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); + ClientHelper.addEntityRenderersRegistration(DoomAndGloomClient::registerEntityRenderers); + ClientHelper.addModelLayerRegistration(DoomAndGloomClient::registerModelLayers); + ClientHelper.addShaderRegistration(DoomAndGloomClient::registerShaders); + } + + + public static void registerShaders(ClientHelper.ShaderEvent event) { + event.register(DoomAndGloom.modLoc("rendertype_entity_translucent_additive"), + DefaultVertexFormat.NEW_ENTITY, DGRenderTypes.NO_ALPHA_CUTOFF_SHADER::assign); + } + + private static void registerEntityRenderers(ClientHelper.EntityRendererEvent event) { + event.register(DGEntityTypes.HOLLER.get(), HollerRender::new); + event.register(DGEntityTypes.DIRT_MOUND.get(), DirtMoundRenderer::new); + } + + public static void registerModelLayers(ClientHelper.ModelLayerEvent event) { + event.register(OModelLayers.HOLLER, HollerModel::createBodyLayer); + event.register(OModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); + } + + private static void registerParticleFactories(ClientHelper.ParticleEvent event) { + event.register(DGParticleTypes.BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); + event.register(DGParticleTypes.FOG.get(), sprites -> new FogParticle.Provider(sprites, 200)); + event.register(DGParticleTypes.FOG_WATER.get(), sprites -> new FogParticle.Provider(sprites, 100)); + event.register(DGParticleTypes.HOLLERING_SOUL.get(), SoulParticle.Provider::new); } private static void registerBlockRenderers() { @@ -30,12 +62,4 @@ private static void registerBlockRenderers() { DGBlocks.vigilCandles().forEach(block -> render(block, RenderType.cutout())); } - // TODO this is not called on fabric yet - public static void registerParticleFactories(BiConsumer>> event) { - event.accept(DGParticleTypes.BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); - event.accept(DGParticleTypes.FOG.get(), sprites -> new FogParticle.Provider(sprites, 200)); - event.accept(DGParticleTypes.FOG_WATER.get(), sprites -> new FogParticle.Provider(sprites, 100)); - event.accept(DGParticleTypes.HOLLERING_SOUL.get(), SoulParticle.Provider::new); - } - } diff --git a/common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java b/common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java index f5a36080..68a8a25a 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java +++ b/common/src/main/java/galena/doom_and_gloom/client/model/HollerModel.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; import galena.doom_and_gloom.DGConfig; -import galena.doom_and_gloom.client.ORenderTypes; +import galena.doom_and_gloom.client.DGRenderTypes; import galena.doom_and_gloom.content.entity.holler.Holler; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.HeadedModel; @@ -28,8 +28,8 @@ public class HollerModel extends EntityModel implements Hea public HollerModel(ModelPart root) { // fancy render type. Needst more experimentation. Try me out - super(true ? ORenderTypes.ADDITIVE_TRANSLUCENCY : - ORenderTypes.ENTITY_TRANSLUCENT_NO_ALPHA_CUTOFF); + super(true ? DGRenderTypes.ADDITIVE_TRANSLUCENCY : + DGRenderTypes.ENTITY_TRANSLUCENT_NO_ALPHA_CUTOFF); //super(); this.head = root.getChild("head"); this.body = root.getChild("body"); diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java b/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java similarity index 97% rename from forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java rename to common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java index 69698401..e62b6413 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/compat/AmendmentsCompat.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java @@ -1,4 +1,4 @@ -package galena.doom_and_gloom.forge.compat; +package galena.doom_and_gloom.compat; import net.mehvahdjukaar.amendments.common.tile.WallLanternBlockTile; import net.minecraft.sounds.SoundEvents; diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java index ba3e9cd9..e5d001f3 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java @@ -1,15 +1,18 @@ package galena.doom_and_gloom.index; -import static galena.doom_and_gloom.DoomAndGloom.modLoc; - import galena.doom_and_gloom.content.entity.DirtMound; import galena.doom_and_gloom.content.entity.holler.Holler; -import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.level.levelgen.Heightmap; + +import java.util.function.Supplier; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; public class DGEntityTypes { @@ -27,6 +30,19 @@ private static RegSupplier> register(String nam public static void init() { // Loads this class + RegHelper.addAttributeRegistration(DGEntityTypes::registerAttributes); + RegHelper.addSpawnPlacementsRegistration(DGEntityTypes::registerSpawnPlacements); + } + + private static void registerSpawnPlacements(RegHelper.SpawnPlacementEvent event) { + event.register(DGEntityTypes.HOLLER.get(), SpawnPlacements.Type.ON_GROUND, + Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, + Holler::checkHollerSpawnRules); } + private static void registerAttributes(RegHelper.AttributeEvent event) { + event.register(DGEntityTypes.HOLLER.get(), Holler.createAttributes()); + } + + } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java index 84fb7219..7aefe3f1 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java @@ -1,32 +1,35 @@ package galena.doom_and_gloom.index; import galena.doom_and_gloom.DoomAndGloom; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.*; +import net.minecraft.tags.TagKey; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import org.jetbrains.annotations.NotNull; public class DGTags { public static class Items { - public static final TagKey INGOTS_SILVER = loaderTag("ingots/silver"); - public static final TagKey INGOTS_LEAD = loaderTag("ingots/lead"); + public static final TagKey INGOTS_SILVER = cTag("ingots/silver"); + public static final TagKey INGOTS_LEAD = cTag("ingots/lead"); public static final TagKey TOOLS_BUSH_HAMMER = tag("tools/bush_hammer"); public static final TagKey VIGIL_CANDLES = tag("vigil_candles"); + public static final TagKey VANILLA_LANTERNS = cTag("lanterns"); + private static TagKey tag(String name) { return TagKey.create(Registries.ITEM, DoomAndGloom.modLoc(name)); } - private static TagKey loaderTag(String name) { - // TODO move to c space and reference forge tags there - return TagKey.create(Registries.ITEM, new ResourceLocation("forge", name)); + private static TagKey cTag(String name) { + return TagKey.create(Registries.ITEM, cLoc(name)); } } @@ -40,18 +43,28 @@ public static class Blocks { public static final TagKey CAN_TURN_INTO_BURIAL_DIRT = tag("burial_dirt_convertible"); public static final TagKey GRAVETENDER_LIGHTABLE = tag("gravetender_lightables"); + private static TagKey tag(String name) { return TagKey.create(Registries.BLOCK, DoomAndGloom.modLoc(name)); } + + private static TagKey cTag(String name) { + return TagKey.create(Registries.BLOCK, cLoc(name)); + } } public static class Entities { public static final TagKey> FILLS_SEPULCHER = tag("fills_sepulcher"); + private static TagKey> tag(String name) { return TagKey.create(Registries.ENTITY_TYPE, DoomAndGloom.modLoc(name)); } + + private static TagKey> cTag(String name) { + return TagKey.create(Registries.ENTITY_TYPE, cLoc(name)); + } } public static class Effects { @@ -61,5 +74,10 @@ public static class Effects { private static TagKey tag(String name) { return TagKey.create(Registries.MOB_EFFECT, DoomAndGloom.modLoc(name)); } + + } + + private static @NotNull ResourceLocation cLoc(String name) { + return new ResourceLocation(PlatHelper.getPlatform().isFabric() ? "c" : "forge", name); } } diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java index 76794b53..330de34d 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java @@ -4,19 +4,19 @@ import galena.doom_and_gloom.DGConfig; import galena.doom_and_gloom.DoomAndGloom; import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; +import net.mehvahdjukaar.moonlight.api.events.fabric.DropItemOnDeathEvent; public class FabricEntrypoint implements ModInitializer { @Override public void onInitialize() { DoomAndGloom.init(); - registerConfigs(); - } - private void registerConfigs() { - DGConfig.register((type, spec) -> - ForgeConfigRegistry.INSTANCE.register(DoomAndGloom.MOD_ID, type, spec) - ); + //if this doesnt work use server started + ServerLifecycleEvents.SERVER_STARTING.register(DoomAndGloom::onServerAboutToStart); } + } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java index 46e2a677..ad997a91 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java @@ -1,16 +1,9 @@ package galena.doom_and_gloom.forge; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.DGReloadListener; import galena.doom_and_gloom.client.DoomAndGloomClient; import galena.doom_and_gloom.client.FogRendering; -import galena.doom_and_gloom.client.OModelLayers; -import galena.doom_and_gloom.client.ORenderTypes; -import galena.doom_and_gloom.client.model.DirtMoundModel; -import galena.doom_and_gloom.client.model.HollerModel; -import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; -import galena.doom_and_gloom.client.render.entity.HollerRender; -import galena.doom_and_gloom.index.DGEntityTypes; + import java.awt.*; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; @@ -18,10 +11,6 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; -import net.minecraftforge.client.event.RegisterParticleProvidersEvent; -import net.minecraftforge.client.event.RegisterShadersEvent; import net.minecraftforge.client.event.ViewportEvent; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -31,40 +20,14 @@ @EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT) public class ForgeClientEntrypoint { + //this could also be replaced with the call in ForgeEntryPoint @SubscribeEvent public static void setup(FMLClientSetupEvent event) { event.enqueueWork(DoomAndGloomClient::init); } - @SubscribeEvent - public static void registerReloadListener(RegisterClientReloadListenersEvent event) { - event.registerReloadListener(new DGReloadListener()); - } - - @SubscribeEvent - public static void registerEntityRenderers(EntityRenderersEvent.RegisterRenderers event) { - event.registerEntityRenderer(DGEntityTypes.HOLLER.get(), HollerRender::new); - event.registerEntityRenderer(DGEntityTypes.DIRT_MOUND.get(), DirtMoundRenderer::new); - } - - @SubscribeEvent - public static void registerModelLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { - event.registerLayerDefinition(OModelLayers.HOLLER, HollerModel::createBodyLayer); - event.registerLayerDefinition(OModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); - } - - @SubscribeEvent - public static void registerParticleFactories(RegisterParticleProvidersEvent event) { - DoomAndGloomClient.registerParticleFactories((type, factory) -> - event.registerSpriteSet(type, factory::apply) - ); - } - - @SubscribeEvent - public static void registerShaders(RegisterShadersEvent event) { - ORenderTypes.registerShaders(event.getResourceProvider(), event::registerShader); - } + //TODO: all these have to be done with mixin on fabric @EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.FORGE) public static class ForgeBusEvents { diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index fda0ace0..69d1c529 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -1,36 +1,14 @@ package galena.doom_and_gloom.forge; import com.mojang.serialization.Codec; -import galena.doom_and_gloom.DGConfig; import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; -import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; -import galena.doom_and_gloom.content.entity.holler.Holler; -import galena.doom_and_gloom.forge.compat.AmendmentsCompat; -import galena.doom_and_gloom.gen.VillageStructureModifier; -import galena.doom_and_gloom.index.DGBlocks; -import galena.doom_and_gloom.index.DGEntityTypes; -import galena.doom_and_gloom.index.DGItems; -import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.entity.SpawnPlacements; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.levelgen.Heightmap; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.loot.IGlobalLootModifier; -import net.minecraftforge.common.util.MutableHashedLinkedMap; -import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import net.minecraftforge.event.entity.EntityAttributeCreationEvent; -import net.minecraftforge.event.entity.SpawnPlacementRegisterEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.server.ServerAboutToStartEvent; -import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.registries.DeferredRegister; @@ -42,85 +20,33 @@ public class ForgeEntrypoint { private static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, DoomAndGloom.MOD_ID); - // TODO can maybe be replaced with moonlights modifier? + // TODO can maybe be replaced with moonlights modifier? yeah there is one that does just this public static final RegistryObject> ADD_ITEM = LOOT_MODIFIERS.register("add_item", () -> AddItemLootModifier.CODEC); public ForgeEntrypoint() { DoomAndGloom.init(); + //if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); + if (PlatHelper.isModLoaded(CompatMods.AMENDMENTS)) { AmendmentsCompat.register(); } - registerConfigs(); - var modBus = EventBusSubscriber.Bus.MOD.bus().get(); var forgeBus = MinecraftForge.EVENT_BUS; - modBus.addListener(this::buildCreativeModeTabContents); - modBus.addListener(this::registerAttributes); - modBus.addListener(this::registerSpawnPlacements); forgeBus.addListener(this::onServerStart); forgeBus.addListener(this::onLivingDrops); LOOT_MODIFIERS.register(modBus); } - private void registerConfigs() { - var context = ModLoadingContext.get(); - DGConfig.register(context::registerConfig); - } - - private void registerAttributes(EntityAttributeCreationEvent event) { - event.put(DGEntityTypes.HOLLER.get(), Holler.createAttributes().build()); - } - - private void registerSpawnPlacements(SpawnPlacementRegisterEvent event) { - event.register(DGEntityTypes.HOLLER.get(), SpawnPlacements.Type.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Holler::checkHollerSpawnRules, SpawnPlacementRegisterEvent.Operation.REPLACE); - } - - public void onServerStart(ServerAboutToStartEvent event) { - VillageStructureModifier.setup(event.getServer().registryAccess()); - } - - // TODO move to common with a wrapper or some moonlight solution - public void buildCreativeModeTabContents(BuildCreativeModeTabContentsEvent event) { - ResourceKey tab = event.getTabKey(); - MutableHashedLinkedMap entries = event.getEntries(); - - putAfter(entries, Blocks.LANTERN, DGBlocks.VIGIL_CANDLE); - DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> putAfter(entries, DGBlocks.VIGIL_CANDLE.get(), block)); - putAfter(entries, Blocks.COMPOSTER, DGBlocks.SEPULCHER); - - putAfter(entries, Blocks.BONE_BLOCK, DGBlocks.BONE_PILE); - - putAfter(entries, Blocks.INFESTED_DEEPSLATE, DGBlocks.BURIAL_DIRT); - - if (tab == CreativeModeTabs.SPAWN_EGGS) { - event.accept(new ItemStack(DGItems.HOLLER_SPAWN_EGG.get())); - } - - //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { - // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); - // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); - //} - - //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { - // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); - // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); - //} - } - - private static void putAfter(MutableHashedLinkedMap entries, ItemLike after, Supplier supplier) { - ItemLike key = supplier.get(); - if (!entries.contains(new ItemStack(after))) return; - entries.putAfter(new ItemStack(after), new ItemStack(key), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS); + DoomAndGloom.onServerAboutToStart(event.getServer()); } private void onLivingDrops(LivingDropsEvent event) { - if (event.getEntity() instanceof Player) return; - if (SepulcherBlockEntity.wasConsumerBySepulcher(event.getEntity())) { + if (DoomAndGloom.onItemDrop(event.getEntity())) { event.setCanceled(true); } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfBonePileBlockMixin.java similarity index 93% rename from forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java rename to forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfBonePileBlockMixin.java index 7ecc5531..cb7d0dc5 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/BonePileBlockMixin.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfBonePileBlockMixin.java @@ -15,9 +15,9 @@ import org.spongepowered.asm.mixin.Mixin; @Mixin(value = BonePileBlock.class, remap = false) -public abstract class BonePileBlockMixin extends FallingBlock { +public abstract class SelfBonePileBlockMixin extends FallingBlock { - public BonePileBlockMixin(Properties properties) { + public SelfBonePileBlockMixin(Properties properties) { super(properties); } diff --git a/forge/src/main/resources/doom_and_gloom.forge.mixins.json b/forge/src/main/resources/doom_and_gloom.forge.mixins.json index 6cdb7024..bca08d6b 100644 --- a/forge/src/main/resources/doom_and_gloom.forge.mixins.json +++ b/forge/src/main/resources/doom_and_gloom.forge.mixins.json @@ -4,7 +4,7 @@ "package": "galena.doom_and_gloom.forge.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ - "BonePileBlockMixin", + "SelfBonePileBlockMixin", "EntityMixin", "SepulcherBlockEntityMixin" ], diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ad3cdea2..27e68b7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,6 +2,7 @@ multikulti = "1.20.1-1.1.5" jei = "15.20.0.106" forge-config-api = "8.0.2" +moonlight = "1.20-2.16.15" [libraries] multikulti-core = { group = "com.possible-triangle", name = "multikulti-core-forge", version.ref = "multikulti" } @@ -20,6 +21,8 @@ jei-fabric = { group = "mezz.jei", name = "jei-1.20.1-fabric", version.ref = "je forge-config-api-common = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-common", version.ref = "forge-config-api" } forge-config-api-fabric = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-fabric", version.ref = "forge-config-api" } +moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", version.ref = "moonlight" } + [plugins] parchment = { id = "org.parchmentmc.librarian.forgegradle", version = "1.+" } From 22b26bc49f1427d5d421af4530611333f5762bc5 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 12:46:47 +0100 Subject: [PATCH 06/43] amendments stuff --- .../galena/doom_and_gloom/DoomAndGloom.java | 10 +++--- .../compat/AmendmentsCompat.java | 36 +++++++++---------- .../doom_and_gloom/compat/CompatMods.java | 9 +++-- .../doom_and_gloom/compat/DyeColors.java | 4 +-- .../doom_and_gloom/forge/ForgeEntrypoint.java | 22 +++++++++--- 5 files changed, 46 insertions(+), 35 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 4a7639db..56e45811 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -1,6 +1,7 @@ package galena.doom_and_gloom; -import galena.doom_and_gloom.compat.moonlight.MoonlightCompat; +import galena.doom_and_gloom.compat.AmendmentsCompat; +import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; import galena.doom_and_gloom.gen.VillageStructureModifier; import galena.doom_and_gloom.index.*; @@ -8,11 +9,9 @@ import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.tags.ItemTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; import org.apache.logging.log4j.LogManager; @@ -20,7 +19,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.function.Predicate; public class DoomAndGloom { public static final Logger LOGGER = LogManager.getLogger(); @@ -43,6 +41,8 @@ public static void init() { DGVillagerTypes.init(); DGItemListings.init(); + if (CompatMods.AMENDMENTS) AmendmentsCompat.init(); + DGNetwork.register(); RegHelper.addItemsToTabsRegistration(DoomAndGloom::addItemsToTabs); @@ -80,7 +80,7 @@ public static void onServerAboutToStart(MinecraftServer server) { } //TODO: fabric - public static boolean onItemDrop(Entity entity){ + public static boolean onItemDrop(Entity entity) { if (entity instanceof Player) return false; return SepulcherBlockEntity.wasConsumerBySepulcher(entity); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java b/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java index e62b6413..d1fe6efb 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/AmendmentsCompat.java @@ -1,32 +1,30 @@ package galena.doom_and_gloom.compat; import net.mehvahdjukaar.amendments.common.tile.WallLanternBlockTile; +import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.CandleBlock; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -// TODO also add to fabric? public class AmendmentsCompat { - public static void register() { - MinecraftForge.EVENT_BUS.addListener(AmendmentsCompat::onBlockInteract); - } - private static void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { - var pos = event.getPos(); - var level = event.getLevel(); + //TODO: add better amendments API to register interactions on wall lanterns + public static boolean onBlockInteract(Level level, BlockPos pos, + Player player, InteractionHand hand, ItemStack held) { + var be = level.getBlockEntity(pos); - var held = event.getItemStack(); - var player = event.getEntity(); - if (!(be instanceof WallLanternBlockTile lantern)) return; + if (!(be instanceof WallLanternBlockTile lantern)) return false; var state = lantern.getHeldBlock(); - if (!state.hasProperty(CandleBlock.LIT)) return; + if (!state.hasProperty(CandleBlock.LIT)) return false; boolean lit = state.getValue(CandleBlock.LIT); @@ -37,22 +35,20 @@ private static void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { lantern.setHeldBlock(state.setValue(CandleBlock.LIT, true)); if (player != null) { held.hurtAndBreak(1, player, it -> - it.broadcastBreakEvent(event.getHand()) + it.broadcastBreakEvent(hand) ); } - result = InteractionResult.sidedSuccess(level.isClientSide()); + return true; } else if (held.isEmpty() && lit) { level.playSound(player, pos, SoundEvents.CANDLE_EXTINGUISH, SoundSource.BLOCKS, 1.0F, 1.0F); lantern.setHeldBlock(state.setValue(CandleBlock.LIT, false)); - result = InteractionResult.sidedSuccess(level.isClientSide()); + return true; } - if (result != InteractionResult.PASS) { - event.setCancellationResult(result); - event.setCanceled(true); - } + return false; } + } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java index af43ea3e..9028c6d3 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java @@ -1,8 +1,11 @@ package galena.doom_and_gloom.compat; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; + public class CompatMods { - public static final String DYE_DEPOT = "dye_depot"; - public static final String MOONLIGHT = "moonlight"; - public static final String AMENDMENTS = "amendments"; + public static final String DYE_DEPOT_NAME = "dye_depot"; + public static final String AMENDMENTS_NAME = "moonlight"; + public static final boolean DYE_DEPOT = PlatHelper.isModLoaded(DYE_DEPOT_NAME); + public static final boolean AMENDMENTS = PlatHelper.isModLoaded(AMENDMENTS_NAME); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java index cdbb625a..a6d670a5 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java @@ -13,11 +13,11 @@ private static Stream vanillaColors() { } private static Stream depotColors() { - return !PlatHelper.isModLoaded(CompatMods.DYE_DEPOT) ? Stream.empty() : Stream.of("amber", "aqua", "beige", "coral", "forest", "ginger", "indigo", "maroon", "mint", "navy", "olive", "rose", "slate", "tan", "teal", "verdant").map((it) -> DyeColor.byName(it, (DyeColor) null)).filter(Objects::nonNull); + return !CompatMods.DYE_DEPOT ? Stream.empty() : Stream.of("amber", "aqua", "beige", "coral", "forest", "ginger", "indigo", "maroon", "mint", "navy", "olive", "rose", "slate", "tan", "teal", "verdant").map((it) -> DyeColor.byName(it, (DyeColor) null)).filter(Objects::nonNull); } public static Optional modNamespace(DyeColor color) { - if (color.getId() > 15) return Optional.of(CompatMods.DYE_DEPOT); + if (color.getId() > 15) return Optional.of(CompatMods.DYE_DEPOT_NAME); return Optional.empty(); } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 69d1c529..0ee3eacb 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -4,11 +4,12 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; -import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.server.ServerAboutToStartEvent; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.registries.DeferredRegister; @@ -27,13 +28,15 @@ public ForgeEntrypoint() { DoomAndGloom.init(); //if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); + IEventBus modBus = EventBusSubscriber.Bus.MOD.bus().get(); + IEventBus forgeBus = MinecraftForge.EVENT_BUS; - if (PlatHelper.isModLoaded(CompatMods.AMENDMENTS)) { - AmendmentsCompat.register(); + if (CompatMods.AMENDMENTS) { + forgeBus.addListener(this::onBlockInteract); + + AmendmentsCompat.init(); } - var modBus = EventBusSubscriber.Bus.MOD.bus().get(); - var forgeBus = MinecraftForge.EVENT_BUS; forgeBus.addListener(this::onServerStart); forgeBus.addListener(this::onLivingDrops); @@ -41,6 +44,15 @@ public ForgeEntrypoint() { LOOT_MODIFIERS.register(modBus); } + private void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { + if (AmendmentsCompat.onBlockInteract(event.getLevel(), event.getPos(), + event.getEntity(), + event.getHand(), + event.getItemStack())) { + event.setCanceled(true); + } + } + public void onServerStart(ServerAboutToStartEvent event) { DoomAndGloom.onServerAboutToStart(event.getServer()); } From 95293114d325962ddddbdda486e1effa95e1912a Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 12:49:14 +0100 Subject: [PATCH 07/43] amendments stuff 2 --- .../fabric/FabricEntrypoint.java | 18 ++++++++++++++---- .../doom_and_gloom/forge/ForgeEntrypoint.java | 2 ++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java index 330de34d..04c2f455 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricEntrypoint.java @@ -1,12 +1,12 @@ package galena.doom_and_gloom.fabric; -import fuzs.forgeconfigapiport.api.config.v2.ForgeConfigRegistry; -import galena.doom_and_gloom.DGConfig; import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.compat.AmendmentsCompat; +import galena.doom_and_gloom.compat.CompatMods; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.event.lifecycle.v1.CommonLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; -import net.mehvahdjukaar.moonlight.api.events.fabric.DropItemOnDeathEvent; +import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.minecraft.world.InteractionResult; public class FabricEntrypoint implements ModInitializer { @@ -16,6 +16,16 @@ public void onInitialize() { //if this doesnt work use server started ServerLifecycleEvents.SERVER_STARTING.register(DoomAndGloom::onServerAboutToStart); + if (CompatMods.AMENDMENTS) { + UseBlockCallback.EVENT.register((player, level, interactionHand, blockHitResult) -> { + boolean res = AmendmentsCompat.onBlockInteract(level, blockHitResult.getBlockPos(), player, + interactionHand, player.getItemInHand(interactionHand)); + if (res) { + return InteractionResult.sidedSuccess(level.isClientSide); + } + else return InteractionResult.PASS; + }); + } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 0ee3eacb..599e46e9 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -4,6 +4,7 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; +import net.minecraft.world.InteractionResult; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.event.entity.living.LivingDropsEvent; @@ -49,6 +50,7 @@ private void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { event.getEntity(), event.getHand(), event.getItemStack())) { + event.setCancellationResult(InteractionResult.sidedSuccess(event.getLevel().isClientSide)); event.setCanceled(true); } } From c21f6721511b97a15e2acae1dc71c87e88565a7e Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 12:50:42 +0100 Subject: [PATCH 08/43] ML add_item --- .../bone_piles_in_desert_temples.json | 2 +- .../forge/AddItemLootModifier.java | 40 ------------------- .../doom_and_gloom/forge/ForgeEntrypoint.java | 9 ----- 3 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java diff --git a/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json b/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json index 2f95509e..792cea0a 100644 --- a/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json +++ b/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json @@ -1,5 +1,5 @@ { - "type": "doom_and_gloom:add_item", + "type": "moonlight:add_item", "conditions": [ { "condition": "forge:loot_table_id", diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java b/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java deleted file mode 100644 index 57ad35d2..00000000 --- a/forge/src/main/java/galena/doom_and_gloom/forge/AddItemLootModifier.java +++ /dev/null @@ -1,40 +0,0 @@ -package galena.doom_and_gloom.forge; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; -import net.minecraftforge.common.loot.IGlobalLootModifier; -import net.minecraftforge.common.loot.LootModifier; -import org.jetbrains.annotations.NotNull; - -// TODO convert to bone pile only modifier? -// in 1.21 forge has a builtin add item one -public class AddItemLootModifier extends LootModifier { - - public static final Codec CODEC = RecordCodecBuilder.create(builder -> - codecStart(builder).and( - ItemStack.CODEC.fieldOf("item").forGetter((AddItemLootModifier it) -> it.stack) - ).apply(builder, AddItemLootModifier::new) - ); - - private final ItemStack stack; - - public AddItemLootModifier(LootItemCondition[] conditions, ItemStack stack) { - super(conditions); - this.stack = stack; - } - - @Override - protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { - generatedLoot.add(stack); - return generatedLoot; - } - - @Override - public Codec codec() { - return CODEC; - } -} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 599e46e9..ecade10c 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -20,11 +20,6 @@ @Mod(DoomAndGloom.MOD_ID) public class ForgeEntrypoint { - private static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, DoomAndGloom.MOD_ID); - - // TODO can maybe be replaced with moonlights modifier? yeah there is one that does just this - public static final RegistryObject> ADD_ITEM = LOOT_MODIFIERS.register("add_item", () -> AddItemLootModifier.CODEC); - public ForgeEntrypoint() { DoomAndGloom.init(); @@ -34,15 +29,11 @@ public ForgeEntrypoint() { if (CompatMods.AMENDMENTS) { forgeBus.addListener(this::onBlockInteract); - - AmendmentsCompat.init(); } forgeBus.addListener(this::onServerStart); forgeBus.addListener(this::onLivingDrops); - - LOOT_MODIFIERS.register(modBus); } private void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { From 7a3285c7408bd3758613a7606a433499c9d0ab9d Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 13:42:34 +0100 Subject: [PATCH 09/43] sepulchered --- .../bone_piles_in_desert_temples.json | 17 ------- .../java/galena/doom_and_gloom/DGConfig.java | 1 + .../galena/doom_and_gloom/DoomAndGloom.java | 3 +- .../content/entity/ISepulcherable.java | 17 +++++++ .../content/entity/SepulcherBlockEntity.java | 24 +++++----- .../content/entity/WithExtraData.java | 16 ------- .../doom_and_gloom/index/DGLootInjects.java | 22 +++++++++ .../inject/desert_pyramid_bone_pile.json | 29 ++++++++++++ .../fabric/mixin/LivingEntityMixin.java | 46 +++++++++++++++++++ .../doom_and_gloom.fabric.mixins.json | 13 ++++++ .../doom_and_gloom/data/DGLootModifiers.java | 11 ++--- .../doom_and_gloom/forge/ForgeEntrypoint.java | 11 ++--- .../forge/mixin/EntityMixin.java | 17 ------- .../forge/mixin/LivingEntityMixin.java | 28 +++++++++++ ...ava => SelfSepulcherBlockEntityMixin.java} | 4 +- .../doom_and_gloom.forge.mixins.json | 4 +- 16 files changed, 178 insertions(+), 85 deletions(-) delete mode 100644 common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json create mode 100644 common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java delete mode 100644 common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java create mode 100644 common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java create mode 100644 common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json create mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java create mode 100644 fabric/src/main/resources/doom_and_gloom.fabric.mixins.json delete mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java rename forge/src/main/java/galena/doom_and_gloom/forge/mixin/{SepulcherBlockEntityMixin.java => SelfSepulcherBlockEntityMixin.java} (90%) diff --git a/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json b/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json deleted file mode 100644 index 792cea0a..00000000 --- a/common/src/generated/resources/data/doom_and_gloom/loot_modifiers/bone_piles_in_desert_temples.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "moonlight:add_item", - "conditions": [ - { - "condition": "forge:loot_table_id", - "loot_table_id": "minecraft:chests/desert_pyramid" - }, - { - "chance": 0.4, - "condition": "minecraft:random_chance" - } - ], - "item": { - "Count": 2, - "id": "doom_and_gloom:bone_pile" - } -} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/DGConfig.java b/common/src/main/java/galena/doom_and_gloom/DGConfig.java index 02d2e67e..4a053f79 100644 --- a/common/src/main/java/galena/doom_and_gloom/DGConfig.java +++ b/common/src/main/java/galena/doom_and_gloom/DGConfig.java @@ -6,6 +6,7 @@ import java.util.function.Supplier; +//TODO: add mod menu compat public class DGConfig { public static final Common COMMON; private static final ConfigSpec COMMON_SPEC; diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 56e45811..46b47d89 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -40,8 +40,7 @@ public static void init() { DGSoundEvents.init(); DGVillagerTypes.init(); DGItemListings.init(); - - if (CompatMods.AMENDMENTS) AmendmentsCompat.init(); + DGLootInjects.init(); DGNetwork.register(); diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java b/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java new file mode 100644 index 00000000..8c268562 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java @@ -0,0 +1,17 @@ +package galena.doom_and_gloom.content.entity; + +import galena.doom_and_gloom.DoomAndGloom; +import net.minecraft.world.entity.LivingEntity; + +public interface ISepulcherable { + public static final String DG_TAG_KEY = DoomAndGloom.MOD_ID + ":sepulched"; + + static ISepulcherable cast(LivingEntity entity) { + return (ISepulcherable) entity; + } + + void DG$setSepulchered(boolean sepulchered); + + boolean DG$wasSepulchered(); + +} diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java index d0c7a9b6..4be1261d 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java @@ -104,10 +104,6 @@ public void load(CompoundTag nbt) { heated = nbt.getBoolean("heated"); } - public static boolean wasConsumerBySepulcher(Entity entity) { - return WithExtraData.getOrEmpty(entity).getBoolean(DeathListener.TAG_KEY); - } - @Override public DeathListener getListener() { return listener; @@ -117,38 +113,40 @@ public class DeathListener implements GameEventListener { private final PositionSource listenerSource; private final int listenerRadius; - private static final String TAG_KEY = DoomAndGloom.MOD_ID + ":sepulched"; - public DeathListener() { this.listenerSource = new BlockPositionSource(SepulcherBlockEntity.this.getBlockPos()); this.listenerRadius = 3; } + @Override public PositionSource getListenerSource() { return this.listenerSource; } + @Override public int getListenerRadius() { return this.listenerRadius; } + @Override public boolean handleGameEvent(ServerLevel level, GameEvent event, GameEvent.Context context, Vec3 vec) { if (event != GameEvent.ENTITY_DIE) return false; - var entity = context.sourceEntity(); - if (entity == null) return false; - if (wasConsumerBySepulcher(entity)) return false; + Entity entity = context.sourceEntity(); + if (!(entity instanceof LivingEntity living)) return false; + ISepulcherable sepulchered = ISepulcherable.cast(living); + if (sepulchered.DG$wasSepulchered()) return false; if (!entity.getType().is(DGTags.Entities.FILLS_SEPULCHER)) return false; - var state = getBlockState(); - var fillLevel = state.getValue(SepulcherBlock.LEVEL); + BlockState state = getBlockState(); + int fillLevel = state.getValue(SepulcherBlock.LEVEL); if (fillLevel >= SepulcherBlock.MAX_LEVEL) return false; - WithExtraData.getOrEmpty(entity).putBoolean(TAG_KEY, true); + sepulchered.DG$setSepulchered(true); - if (entity instanceof LivingEntity living && !(entity instanceof Player)) { + if (!(entity instanceof Player)) { living.skipDropExperience(); } diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java b/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java deleted file mode 100644 index af4f62b5..00000000 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/WithExtraData.java +++ /dev/null @@ -1,16 +0,0 @@ -package galena.doom_and_gloom.content.entity; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; - -// TODO add mixin implementation on fabric side -public interface WithExtraData { - - CompoundTag getExtraData(); - - static CompoundTag getOrEmpty(Entity entity) { - if (entity instanceof WithExtraData accessor) return accessor.getExtraData(); - return new CompoundTag(); - } - -} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java b/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java new file mode 100644 index 00000000..7fcd8948 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java @@ -0,0 +1,22 @@ +package galena.doom_and_gloom.index; + +import galena.doom_and_gloom.DoomAndGloom; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.resources.ResourceLocation; + +public class DGLootInjects { + + public static void init() { + RegHelper.addLootTableInjects(DGLootInjects::injectLootTables); + } + + //TODO: add repurposed structures or similar compat here + private static final ResourceLocation PYRAMID = new ResourceLocation("chests/desert_pyramid"); + private static final ResourceLocation PYRAMID_BONES = DoomAndGloom.modLoc("inject/desert_pyramid_bone_pile"); + + private static void injectLootTables(RegHelper.LootInjectEvent event) { + if (event.getTable().equals(PYRAMID)) + event.addTableReference(PYRAMID_BONES); + + } +} diff --git a/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json b/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json new file mode 100644 index 00000000..3e530212 --- /dev/null +++ b/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json @@ -0,0 +1,29 @@ +{ + "pools": [ + { + "rolls": 1, + "conditions": [ + { + "condition": "random_chance", + "chance": 0.2 + } + ], + "entries": [ + { + "type": "item", + "weight": 1, + "name": "doom_and_gloom:bone_pile", + "functions": [ + { + "function": "set_count", + "count": { + "min": 1, + "max": 3 + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java new file mode 100644 index 00000000..d09c6b29 --- /dev/null +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java @@ -0,0 +1,46 @@ +package galena.doom_and_gloom.fabric.mixin; + +import galena.doom_and_gloom.content.entity.ISepulcherable; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public class LivingEntityMixin implements ISepulcherable { + + @Unique + private boolean dg$sepulchered = false; + + @Inject(method = "dropAllDeathLoot", at = @At("TAIL")) + public void DG$cancelDrops(DamageSource damageSource, CallbackInfo ci) { + //TODO: aa help + } + + @Override + public void DG$setSepulchered(boolean sepulchered) { + this.dg$sepulchered = sepulchered; + } + + @Override + public boolean DG$wasSepulchered() { + return dg$sepulchered; + } + + @Inject(method = "readAdditionalSaveData", at = @At("TAIL")) + public void dg$readSepulchered(CompoundTag compoundTag, CallbackInfo ci) { + + if (compoundTag.contains(ISepulcherable.DG_TAG_KEY)) + dg$sepulchered = compoundTag.getBoolean(ISepulcherable.DG_TAG_KEY); + } + + @Inject(method = "addAdditionalSaveData", at = @At("TAIL")) + public void dg$addSepulchered(CompoundTag compoundTag, CallbackInfo ci) { + + if (dg$sepulchered) compoundTag.putBoolean(ISepulcherable.DG_TAG_KEY, dg$sepulchered); + } +} diff --git a/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json b/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json new file mode 100644 index 00000000..6aaf4d08 --- /dev/null +++ b/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json @@ -0,0 +1,13 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "galena.doom_and_gloom.fabric.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "LivingEntityMixin" + ], + "server": [], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java b/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java index c1127656..085e56d0 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java @@ -1,15 +1,8 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.forge.AddItemLootModifier; -import galena.doom_and_gloom.index.DGBlocks; import net.minecraft.data.PackOutput; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.storage.loot.BuiltInLootTables; -import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; -import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraftforge.common.data.GlobalLootModifierProvider; -import net.minecraftforge.common.loot.LootTableIdCondition; public class DGLootModifiers extends GlobalLootModifierProvider { @@ -19,13 +12,15 @@ public DGLootModifiers(PackOutput output) { @Override protected void start() { + /* add( "bone_piles_in_desert_temples", - new AddItemLootModifier(new LootItemCondition[]{ + new ModLootModifiers.AddItemModifier(new LootItemCondition[]{ LootTableIdCondition.builder(BuiltInLootTables.DESERT_PYRAMID).build(), LootItemRandomChanceCondition.randomChance(0.4F).build() }, new ItemStack(DGBlocks.BONE_PILE.get(), 2)) ); + */ } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index ecade10c..0c128fc2 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -1,21 +1,16 @@ package galena.doom_and_gloom.forge; -import com.mojang.serialization.Codec; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; import net.minecraft.world.InteractionResult; +import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.server.ServerAboutToStartEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; @Mod(DoomAndGloom.MOD_ID) public class ForgeEntrypoint { @@ -24,18 +19,18 @@ public ForgeEntrypoint() { DoomAndGloom.init(); //if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); - IEventBus modBus = EventBusSubscriber.Bus.MOD.bus().get(); IEventBus forgeBus = MinecraftForge.EVENT_BUS; if (CompatMods.AMENDMENTS) { forgeBus.addListener(this::onBlockInteract); } - forgeBus.addListener(this::onServerStart); forgeBus.addListener(this::onLivingDrops); } + + private void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { if (AmendmentsCompat.onBlockInteract(event.getLevel(), event.getPos(), event.getEntity(), diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java deleted file mode 100644 index 3d312315..00000000 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/EntityMixin.java +++ /dev/null @@ -1,17 +0,0 @@ -package galena.doom_and_gloom.forge.mixin; - -import galena.doom_and_gloom.content.entity.WithExtraData; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(Entity.class) -public class EntityMixin implements WithExtraData { - - @Override - public CompoundTag getExtraData() { - var self = (Entity) (Object) this; - return self.getPersistentData(); - } - -} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java new file mode 100644 index 00000000..b85d3826 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java @@ -0,0 +1,28 @@ +package galena.doom_and_gloom.forge.mixin; + +import galena.doom_and_gloom.content.entity.ISepulcherable; +import galena.doom_and_gloom.forge.ForgeEntrypoint; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; + +//TODO:avoid mixin, use services, dep injection instead +@Mixin(LivingEntity.class) +public abstract class LivingEntityMixin extends Entity implements ISepulcherable { + + public LivingEntityMixin(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + } + + @Override + public void DG$setSepulchered(boolean sepulchered) { + this.getPersistentData().putBoolean(ForgeEntrypoint.DG_TAG_KEY, sepulchered); + } + + @Override + public boolean DG$wasSepulchered() { + return this.getPersistentData().getBoolean(ForgeEntrypoint.DG_TAG_KEY); + } +} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfSepulcherBlockEntityMixin.java similarity index 90% rename from forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java rename to forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfSepulcherBlockEntityMixin.java index ce598eba..69c9db58 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SepulcherBlockEntityMixin.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/SelfSepulcherBlockEntityMixin.java @@ -16,9 +16,9 @@ import org.spongepowered.asm.mixin.Unique; @Mixin(value = SepulcherBlockEntity.class, remap = false) -public abstract class SepulcherBlockEntityMixin extends BlockEntity { +public abstract class SelfSepulcherBlockEntityMixin extends BlockEntity { - public SepulcherBlockEntityMixin(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { + public SelfSepulcherBlockEntityMixin(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { super(pType, pPos, pBlockState); } diff --git a/forge/src/main/resources/doom_and_gloom.forge.mixins.json b/forge/src/main/resources/doom_and_gloom.forge.mixins.json index bca08d6b..0dd05de3 100644 --- a/forge/src/main/resources/doom_and_gloom.forge.mixins.json +++ b/forge/src/main/resources/doom_and_gloom.forge.mixins.json @@ -5,8 +5,8 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "SelfBonePileBlockMixin", - "EntityMixin", - "SepulcherBlockEntityMixin" + "LivingEntityMixin", + "SelfSepulcherBlockEntityMixin" ], "server": [], "injectors": { From 7bdd3efbfd3c13a1785e2ba0d4f17ef82285edcd Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Sun, 2 Nov 2025 18:27:12 +0100 Subject: [PATCH 10/43] gradle lines --- common/build.gradle.kts | 4 +++- .../main/java/galena/doom_and_gloom/DoomAndGloom.java | 10 ++++++---- fabric/build.gradle.kts | 2 +- forge/build.gradle.kts | 3 ++- gradle/libs.versions.toml | 2 ++ 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 5277c017..b8c52c95 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -9,5 +9,7 @@ loom { dependencies { modApi(libs.moonlight.lib.common) - modApi(libs.forge.config.api.common) + + modImplementation(pack.forge.modrinth.amendments) + } diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 46b47d89..2d6dc0b9 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -1,8 +1,6 @@ package galena.doom_and_gloom; -import galena.doom_and_gloom.compat.AmendmentsCompat; -import galena.doom_and_gloom.compat.CompatMods; -import galena.doom_and_gloom.content.entity.SepulcherBlockEntity; +import galena.doom_and_gloom.content.entity.ISepulcherable; import galena.doom_and_gloom.gen.VillageStructureModifier; import galena.doom_and_gloom.index.*; import galena.doom_and_gloom.network.DGNetwork; @@ -10,6 +8,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Items; @@ -81,7 +80,10 @@ public static void onServerAboutToStart(MinecraftServer server) { //TODO: fabric public static boolean onItemDrop(Entity entity) { if (entity instanceof Player) return false; - return SepulcherBlockEntity.wasConsumerBySepulcher(entity); + if (entity instanceof LivingEntity le) { + return ISepulcherable.cast(le).DG$wasSepulchered(); + } + return false; } } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index d9fb21f8..b814067e 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -16,7 +16,7 @@ loom { } dependencies { - modApi(pack.fabric.modrinth.moonlight) + modApi(libs.moonlight.lib.fabric) if (!env.isCI) { modRuntimeOnly(libs.jei.fabric) diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index f94af585..49976e2c 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -35,7 +35,8 @@ configure { dependencies { // Compatibilities - modImplementation(pack.forge.modrinth.moonlight) + modApi(libs.moonlight.lib.forge) + modImplementation(pack.forge.modrinth.supplementaries) modImplementation(pack.forge.modrinth.amendments) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 27e68b7e..8cc27f26 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,6 +22,8 @@ forge-config-api-common = { group = "fuzs.forgeconfigapiport", name = "forgeconf forge-config-api-fabric = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-fabric", version.ref = "forge-config-api" } moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", version.ref = "moonlight" } +moonlight-lib-forge = { group = "net.mehvahdjukaar", name = "moonlight-forge", version.ref = "moonlight" } +moonlight-lib-fabric = { group = "net.mehvahdjukaar", name = "moonlight-fabric", version.ref = "moonlight" } [plugins] From 769520ea9cd2e72f34582ca3e7ba024f689dfeef Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Mon, 3 Nov 2025 14:31:02 +0100 Subject: [PATCH 11/43] why generics --- .../galena/doom_and_gloom/index/DGBlocks.java | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index 44f0e983..df2dc40a 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -1,21 +1,7 @@ package galena.doom_and_gloom.index; -import static galena.doom_and_gloom.DoomAndGloom.modLoc; -import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerBlock; -import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.registerItem; - import galena.doom_and_gloom.compat.DyeColors; -import galena.doom_and_gloom.content.block.BonePileBlock; -import galena.doom_and_gloom.content.block.BurialDirtBlock; -import galena.doom_and_gloom.content.block.SepulcherBlock; -import galena.doom_and_gloom.content.block.StoneTabletBlock; -import galena.doom_and_gloom.content.block.VigilCandleBlock; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import galena.doom_and_gloom.content.block.*; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.DyeColor; @@ -26,6 +12,16 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.PushReaction; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.*; + public class DGBlocks { public static final RegSupplier SEPULCHER = register("sepulcher", () -> new SepulcherBlock(BlockBehaviour.Properties.copy(Blocks.CAULDRON).sound(DGSoundTypes.SEPULCHER))); @@ -57,23 +53,14 @@ public static Map> registerColored(St )); } - public static RegSupplier register(String name, Supplier block, Function item) { - @SuppressWarnings("unchecked") - // TODO message to mehvahdjukaar - // RegistryHelper implementation should probably be: - // public static RegSupplier registerBlock(ResourceLocation name, Supplier block) - // (yes I hate how java generics work too) - RegSupplier register = (RegSupplier) registerBlock(modLoc(name), block); + public static RegSupplier register(String name, Supplier block, Function item) { + RegSupplier register = registerBlock(modLoc(name), block); registerItem(modLoc(name), () -> item.apply(register.get())); return register; } - public static RegSupplier register(String name, Supplier block) { - return register(name, block, DGBlocks::createBlockItem); - } - - private static BlockItem createBlockItem(final Block block) { - return new BlockItem(Objects.requireNonNull(block), new Item.Properties()); + public static RegSupplier register(String name, Supplier block) { + return registerBlockWithItem(modLoc(name), block); } public static void init() { From 1aebbf557266dd76ff90c677dd1a92190c2e72d6 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Mon, 3 Nov 2025 14:35:36 +0100 Subject: [PATCH 12/43] render layers --- .../client/DoomAndGloomClient.java | 17 ++++++++--------- .../galena/doom_and_gloom/index/DGBlocks.java | 4 ++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index fa9486d1..b9750bd9 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -20,13 +20,9 @@ public class DoomAndGloomClient { - private static void render(Supplier block, RenderType render) { - // TODO try to handle in model? - // ItemBlockRenderTypes.setRenderLayer(block.get(), render); - } public static void init() { - DoomAndGloomClient.registerBlockRenderers(); + ClientHelper.addClientSetup(DoomAndGloomClient::setup); ClientHelper.addClientReloadListener(DGReloadListener::new, DoomAndGloom.modLoc("tablets_reloader")); ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); ClientHelper.addEntityRenderersRegistration(DoomAndGloomClient::registerEntityRenderers); @@ -34,6 +30,13 @@ public static void init() { ClientHelper.addShaderRegistration(DoomAndGloomClient::registerShaders); } + private static void setup() { + //render layers + RenderType cutout = RenderType.cutout(); + ClientHelper.registerRenderType(DGBlocks.SEPULCHER.get(), cutout); + DGBlocks.vigilCandles().forEach(block -> ClientHelper.registerRenderType(block.get(), cutout)); + } + public static void registerShaders(ClientHelper.ShaderEvent event) { event.register(DoomAndGloom.modLoc("rendertype_entity_translucent_additive"), @@ -57,9 +60,5 @@ private static void registerParticleFactories(ClientHelper.ParticleEvent event) event.register(DGParticleTypes.HOLLERING_SOUL.get(), SoulParticle.Provider::new); } - private static void registerBlockRenderers() { - render(DGBlocks.SEPULCHER, RenderType.cutout()); - DGBlocks.vigilCandles().forEach(block -> render(block, RenderType.cutout())); - } } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index df2dc40a..ae91d412 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -63,6 +63,10 @@ public static RegSupplier register(String name, Supplier return registerBlockWithItem(modLoc(name), block); } + public static RegSupplier register(String name, Supplier block, Item.Properties prop) { + return registerBlockWithItem(modLoc(name), block, prop, 0); + } + public static void init() { // Loads this class } From 887be251d51e76fa489eaa6eed5004c78cebcb6e Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Mon, 3 Nov 2025 14:39:31 +0100 Subject: [PATCH 13/43] spawn egg --- .../src/main/java/galena/doom_and_gloom/index/DGItems.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java index b5df28da..63036280 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -19,11 +19,8 @@ public class DGItems { public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> new BushHammerItem(DGItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); - // Misc - // TODO on forge there's ForgeSpawnEggItem and on fabric it's ok to simply use SpawnEggItem - // might need to extract the creation of this to a service, or might be a case for moonlight - // public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new SpawnEggItem(DGEntityTypes.HOLLER.get(), 0x84EED2, 0x24352F, new Item.Properties())); - public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> new Item(new Item.Properties())); + public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> + PlatHelper.newSpawnEgg(DGEntityTypes.HOLLER, 0x84EED2, 0x24352F,new Item.Properties())); private static RegSupplier register(String name, Supplier factory) { return RegHelper.registerItem(modLoc(name), factory); From 6ed48742c983adab52aca10d5b7038c2ff7ce2b4 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Mon, 3 Nov 2025 15:44:27 +0100 Subject: [PATCH 14/43] update plugin & modify some datagen --- build.gradle.kts | 15 +++---- common/build.gradle.kts | 10 ++--- .../models/item/stone_tablet.json | 6 +++ .../loot_tables/blocks/stone_tablet.json | 2 +- .../inject/desert_pyramid_bone_pile.json | 33 ++++++++++++++++ .../recipes/cutting/stone_tablet.json} | 16 +++++++- .../loot_modifiers/global_loot_modifiers.json | 6 --- .../java/galena/doom_and_gloom/DGConfig.java | 3 +- .../galena/doom_and_gloom/DoomAndGloom.java | 5 +-- .../doom_and_gloom/client/DGRenderTypes.java | 4 -- .../client/DoomAndGloomClient.java | 3 -- .../doom_and_gloom/compat/CompatMods.java | 1 + .../doom_and_gloom/compat/DyeColors.java | 1 - .../content/entity/ISepulcherable.java | 2 +- .../content/entity/SepulcherBlockEntity.java | 1 - .../content/item/HammerAndChiselItem.java | 8 ++++ .../galena/doom_and_gloom/index/DGBlocks.java | 19 ++++----- .../doom_and_gloom/index/DGEntityTypes.java | 7 ++-- .../doom_and_gloom/index/DGLootInjects.java | 11 ++++-- .../inject/desert_pyramid_bone_pile.json | 29 -------------- .../loot_tables/stone_tablet.json | 39 ------------------- fabric/build.gradle.kts | 10 +---- fabric/src/main/resources/fabric.mod.json | 2 +- forge/build.gradle.kts | 13 ++++--- forge/pack/index.toml | 5 +++ forge/pack/mods/farmers-delight.pw.toml | 13 +++++++ forge/pack/pack.toml | 2 +- .../doom_and_gloom/data/DGLootModifiers.java | 26 ------------- .../data/ForgeDataEntrypoint.java | 1 - .../doom_and_gloom/data/OLootTables.java | 26 ++++++++++++- .../galena/doom_and_gloom/data/ORecipes.java | 14 +++++++ .../forge/ForgeClientEntrypoint.java | 1 - .../doom_and_gloom/forge/ForgeEntrypoint.java | 1 - .../forge/mixin/LivingEntityMixin.java | 5 +-- .../resources/META-INF/accesstransformer.cfg | 3 -- gradle/libs.versions.toml | 3 -- settings.gradle.kts | 2 +- 37 files changed, 170 insertions(+), 178 deletions(-) create mode 100644 common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json rename common/src/{main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json => generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json} (53%) delete mode 100644 common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json delete mode 100644 common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json delete mode 100644 common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json create mode 100644 forge/pack/mods/farmers-delight.pw.toml delete mode 100644 forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java delete mode 100644 forge/src/main/resources/META-INF/accesstransformer.cfg diff --git a/build.gradle.kts b/build.gradle.kts index bd854f39..5a3f84d9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -23,19 +23,20 @@ subprojects { includeGroup("com.ninni.dye_depot") } } - maven { - url = uri("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/") - content { - includeGroup("net.minecraftforge") - includeGroup("fuzs.forgeconfigapiport") - } - } maven { url = uri("https://maven.teamabnormals.com/") content { includeGroup("com.teamabnormals") } } + repositories { + maven { + url = uri("https://maven.ladysnake.org/releases") + content { + includeGroupAndSubgroups("dev.onyxstudios") + } + } + } } upload { diff --git a/common/build.gradle.kts b/common/build.gradle.kts index b8c52c95..b2fe02c8 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -2,14 +2,14 @@ plugins { id("com.possible-triangle.architectury") } -loom { - // TODO auto-detect by gradle plugin - accessWidenerPath = file("src/main/resources/${mod.id.get()}.accesswidener") +common { + accessWidener() } dependencies { - modApi(libs.moonlight.lib.common) + modApi(libs.moonlight.lib.common) { + isTransitive = false + } modImplementation(pack.forge.modrinth.amendments) - } diff --git a/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json b/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json new file mode 100644 index 00000000..09c32dd3 --- /dev/null +++ b/common/src/generated/resources/assets/doom_and_gloom/models/item/stone_tablet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "doom_and_gloom:item/stone_tablet" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json index 1a7e5785..3f87d669 100644 --- a/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json +++ b/common/src/generated/resources/data/doom_and_gloom/loot_tables/blocks/stone_tablet.json @@ -24,7 +24,7 @@ "source": "block_entity" } ], - "name": "doom_and_gloom:hammer_and_chisel" + "name": "doom_and_gloom:stone_tablet" } ], "rolls": 1.0 diff --git a/common/src/generated/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json b/common/src/generated/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json new file mode 100644 index 00000000..89efd6e5 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "chance": 0.2, + "condition": "minecraft:random_chance" + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "doom_and_gloom:bone_pile" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "doom_and_gloom:inject/desert_pyramid_bone_pile" +} \ No newline at end of file diff --git a/common/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json similarity index 53% rename from common/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json rename to common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json index 16b7cee7..2cc0c05d 100644 --- a/common/src/main/resources/data/doom_and_gloom/recipes/farmersdelight/cutting/cracked_stone_tablet.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json @@ -1,5 +1,19 @@ { "type": "farmersdelight:cutting", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "farmersdelight" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "farmersdelight" + ] + } + ], "ingredients": [ { "item": "doom_and_gloom:stone_tablet" @@ -14,4 +28,4 @@ "type": "farmersdelight:tool_action", "action": "pickaxe_dig" } -} +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json deleted file mode 100644 index cf944d2b..00000000 --- a/common/src/generated/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "entries": [ - "doom_and_gloom:bone_piles_in_desert_temples" - ], - "replace": false -} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/DGConfig.java b/common/src/main/java/galena/doom_and_gloom/DGConfig.java index 4a053f79..d29958de 100644 --- a/common/src/main/java/galena/doom_and_gloom/DGConfig.java +++ b/common/src/main/java/galena/doom_and_gloom/DGConfig.java @@ -1,11 +1,10 @@ package galena.doom_and_gloom; +import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigBuilder; import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigSpec; import net.mehvahdjukaar.moonlight.api.platform.configs.ConfigType; -import java.util.function.Supplier; - //TODO: add mod menu compat public class DGConfig { public static final Common COMMON; diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 2d6dc0b9..07542088 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -4,6 +4,8 @@ import galena.doom_and_gloom.gen.VillageStructureModifier; import galena.doom_and_gloom.index.*; import galena.doom_and_gloom.network.DGNetwork; +import java.util.ArrayList; +import java.util.List; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -16,9 +18,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.ArrayList; -import java.util.List; - public class DoomAndGloom { public static final Logger LOGGER = LogManager.getLogger(); public static final String MOD_ID = "doom_and_gloom"; diff --git a/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java b/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java index 84a2825e..f4f08ff7 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DGRenderTypes.java @@ -4,16 +4,12 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; - -import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; - import net.mehvahdjukaar.moonlight.api.client.CoreShaderContainer; import net.minecraft.Util; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.resources.ResourceLocation; public abstract class DGRenderTypes extends RenderType { diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index b9750bd9..b4187f11 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -14,9 +14,6 @@ import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; import net.minecraft.client.particle.SoulParticle; import net.minecraft.client.renderer.RenderType; -import net.minecraft.world.level.block.Block; - -import java.util.function.Supplier; public class DoomAndGloomClient { diff --git a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java index 9028c6d3..843b57fc 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java @@ -6,6 +6,7 @@ public class CompatMods { public static final String DYE_DEPOT_NAME = "dye_depot"; public static final String AMENDMENTS_NAME = "moonlight"; + public static final String FARMERS_DELIGHT_NAME = "farmersdelight"; public static final boolean DYE_DEPOT = PlatHelper.isModLoaded(DYE_DEPOT_NAME); public static final boolean AMENDMENTS = PlatHelper.isModLoaded(AMENDMENTS_NAME); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java index a6d670a5..d09a4e4e 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java @@ -4,7 +4,6 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Stream; -import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.item.DyeColor; public class DyeColors { diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java b/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java index 8c268562..e639e130 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/ISepulcherable.java @@ -4,7 +4,7 @@ import net.minecraft.world.entity.LivingEntity; public interface ISepulcherable { - public static final String DG_TAG_KEY = DoomAndGloom.MOD_ID + ":sepulched"; + String DG_TAG_KEY = DoomAndGloom.MOD_ID + ":sepulched"; static ISepulcherable cast(LivingEntity entity) { return (ISepulcherable) entity; diff --git a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java index 4be1261d..e1ab705f 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java +++ b/common/src/main/java/galena/doom_and_gloom/content/entity/SepulcherBlockEntity.java @@ -1,7 +1,6 @@ package galena.doom_and_gloom.content.entity; import galena.doom_and_gloom.DGConfig; -import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.content.block.SepulcherBlock; import galena.doom_and_gloom.index.DGBlockEntities; import galena.doom_and_gloom.index.DGBlocks; diff --git a/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java b/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java index 14d34cdd..7816485d 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java +++ b/common/src/main/java/galena/doom_and_gloom/content/item/HammerAndChiselItem.java @@ -3,10 +3,12 @@ import galena.doom_and_gloom.content.block.StoneTabletBlock; import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; import galena.doom_and_gloom.index.DGItems; +import java.util.Map; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -39,4 +41,10 @@ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullabl public String getDescriptionId() { return this.getOrCreateDescriptionId(); } + + @Override + public void registerBlocks(Map map, Item item) { + // we don't want this to replace the actual stone_tablet item + } + } \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index ae91d412..c0eb6fa3 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -1,27 +1,24 @@ package galena.doom_and_gloom.index; +import static galena.doom_and_gloom.DoomAndGloom.modLoc; +import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.*; + import galena.doom_and_gloom.compat.DyeColors; import galena.doom_and_gloom.content.block.*; +import java.util.Map; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.PushReaction; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static galena.doom_and_gloom.DoomAndGloom.modLoc; -import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.*; - public class DGBlocks { public static final RegSupplier SEPULCHER = register("sepulcher", () -> new SepulcherBlock(BlockBehaviour.Properties.copy(Blocks.CAULDRON).sound(DGSoundTypes.SEPULCHER))); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java index e5d001f3..4ecaa5cc 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGEntityTypes.java @@ -1,7 +1,10 @@ package galena.doom_and_gloom.index; +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + import galena.doom_and_gloom.content.entity.DirtMound; import galena.doom_and_gloom.content.entity.holler.Holler; +import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.world.entity.Entity; @@ -10,10 +13,6 @@ import net.minecraft.world.entity.SpawnPlacements; import net.minecraft.world.level.levelgen.Heightmap; -import java.util.function.Supplier; - -import static galena.doom_and_gloom.DoomAndGloom.modLoc; - public class DGEntityTypes { public static final RegSupplier> HOLLER = register("holler", () -> diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java b/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java index 7fcd8948..abbd61f0 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGLootInjects.java @@ -1,8 +1,10 @@ package galena.doom_and_gloom.index; import galena.doom_and_gloom.DoomAndGloom; +import java.util.Set; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; public class DGLootInjects { @@ -11,11 +13,14 @@ public static void init() { } //TODO: add repurposed structures or similar compat here - private static final ResourceLocation PYRAMID = new ResourceLocation("chests/desert_pyramid"); - private static final ResourceLocation PYRAMID_BONES = DoomAndGloom.modLoc("inject/desert_pyramid_bone_pile"); + private static final Set PYRAMIDS = Set.of( + BuiltInLootTables.DESERT_PYRAMID + ); + + public static final ResourceLocation PYRAMID_BONES = DoomAndGloom.modLoc("inject/desert_pyramid_bone_pile"); private static void injectLootTables(RegHelper.LootInjectEvent event) { - if (event.getTable().equals(PYRAMID)) + if (PYRAMIDS.contains(event.getTable())) event.addTableReference(PYRAMID_BONES); } diff --git a/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json b/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json deleted file mode 100644 index 3e530212..00000000 --- a/common/src/main/resources/data/doom_and_gloom/loot_tables/inject/desert_pyramid_bone_pile.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "pools": [ - { - "rolls": 1, - "conditions": [ - { - "condition": "random_chance", - "chance": 0.2 - } - ], - "entries": [ - { - "type": "item", - "weight": 1, - "name": "doom_and_gloom:bone_pile", - "functions": [ - { - "function": "set_count", - "count": { - "min": 1, - "max": 3 - } - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json b/common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json deleted file mode 100644 index 779cd17f..00000000 --- a/common/src/main/resources/data/doom_and_gloom/loot_tables/stone_tablet.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:copy_nbt", - "source": "block_entity", - "ops": [ - { - "source": "Pixels", - "target": "BlockEntityTag.text", - "op": "replace" - } - ] - }, - { - "block": "doom_and_gloom:stone_tablet", - "function": "minecraft:copy_state", - "properties": [ - "type" - ] - } - ], - "name": "doom_and_gloom:stone_tablet" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index b814067e..d2247d50 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -2,17 +2,9 @@ plugins { id("com.possible-triangle.fabric") } -mod { - mods.include(libs.forge.config.api.fabric) -} - fabric { dependOn(project(":common")) -} - -loom { - // TODO auto-detect by gradle plugin - accessWidenerPath = project(":common").file("src/main/resources/${mod.id.get()}.accesswidener") + accessWidener(project(":common")) } dependencies { diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 0da715de..4597fbb9 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -13,7 +13,7 @@ }, "license": "https://github.com/${repository}/blob/1.20.x/LICENSE.txt", "environment": "*", - "accessWidener": "nirvana.accesswidener", + "accessWidener": "${mod_id}.accesswidener", "entrypoints": { "main": [ "galena.doom_and_gloom.fabric.FabricEntrypoint" diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index 49976e2c..98f92fba 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -17,16 +17,15 @@ forge { mappingVersion = "2023.09.03-1.20.1" enableMixins() + accessWidener(project(":common")) dataGen { existing("blueprint") } } -minecraft { - // move this to be automatically detected by gradle plugin - // or even better, be generated from the access widener - accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) +tasks.compileJava { + dependsOn(tasks.getByName("transformAccessWidener")) } configure { @@ -34,9 +33,11 @@ configure { } dependencies { - // Compatibilities - modApi(libs.moonlight.lib.forge) + modImplementation(libs.moonlight.lib.forge) { + isTransitive = false + } + modImplementation(pack.forge.modrinth.farmers.delight) modImplementation(pack.forge.modrinth.supplementaries) modImplementation(pack.forge.modrinth.amendments) diff --git a/forge/pack/index.toml b/forge/pack/index.toml index 2d042d3c..95473585 100644 --- a/forge/pack/index.toml +++ b/forge/pack/index.toml @@ -5,6 +5,11 @@ file = "mods/amendments.pw.toml" hash = "4eb0979fd7cada4b6e3dd3fec8ced79ee0892e2b7ffba6466430387cd520acee" metafile = true +[[files]] +file = "mods/farmers-delight.pw.toml" +hash = "9f2ffb0d4c65fcb2a96878287a7119459b9d0637c395e5097d691416690d6563" +metafile = true + [[files]] file = "mods/moonlight.pw.toml" hash = "59ddb20cb1fddab5a1a0349e0452f5100c2bec8c51e746658553f92dc8239512" diff --git a/forge/pack/mods/farmers-delight.pw.toml b/forge/pack/mods/farmers-delight.pw.toml new file mode 100644 index 00000000..4c08ceae --- /dev/null +++ b/forge/pack/mods/farmers-delight.pw.toml @@ -0,0 +1,13 @@ +name = "Farmer's Delight" +filename = "FarmersDelight-1.20.1-1.2.9.jar" +side = "both" + +[download] +url = "https://cdn.modrinth.com/data/R2OftAxM/versions/8rPF1pFi/FarmersDelight-1.20.1-1.2.9.jar" +hash-format = "sha512" +hash = "b628f9818301788dfba535615dde964e1727b8b3b22884f26df1f8a2b5a11a063f3803de00bc6eb8d148440286d43a29b98352afb33bd447b847c21b870442cb" + +[update] +[update.modrinth] +mod-id = "R2OftAxM" +version = "8rPF1pFi" diff --git a/forge/pack/pack.toml b/forge/pack/pack.toml index 5b0878ca..581e0936 100644 --- a/forge/pack/pack.toml +++ b/forge/pack/pack.toml @@ -4,7 +4,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "d03f2baf83a205defc574e83774695240f30467734da1769f33d4007503e100b" +hash = "429fd3d3981ef9aa3a54adbe128c4f9f88b1082eaa752ea50b1679f1df579019" [versions] forge = "47.3.10" diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java b/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java deleted file mode 100644 index 085e56d0..00000000 --- a/forge/src/main/java/galena/doom_and_gloom/data/DGLootModifiers.java +++ /dev/null @@ -1,26 +0,0 @@ -package galena.doom_and_gloom.data; - -import galena.doom_and_gloom.DoomAndGloom; -import net.minecraft.data.PackOutput; -import net.minecraftforge.common.data.GlobalLootModifierProvider; - -public class DGLootModifiers extends GlobalLootModifierProvider { - - public DGLootModifiers(PackOutput output) { - super(output, DoomAndGloom.MOD_ID); - } - - @Override - protected void start() { - /* - add( - "bone_piles_in_desert_temples", - new ModLootModifiers.AddItemModifier(new LootItemCondition[]{ - LootTableIdCondition.builder(BuiltInLootTables.DESERT_PYRAMID).build(), - LootItemRandomChanceCondition.randomChance(0.4F).build() - }, new ItemStack(DGBlocks.BONE_PILE.get(), 2)) - ); - */ - } - -} diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java index f4df0ae7..dfe7363f 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java @@ -47,7 +47,6 @@ public static void gatherData(GatherDataEvent event) { generator.addProvider(server, new ODamageTags(output, lookupProvider, helper)); generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper)); generator.addProvider(server, new DGItemListings(output, helper)); - generator.addProvider(server, new DGLootModifiers(output)); generator.addProvider(server, new PackMetadataGenerator(output).add(PackMetadataSection.TYPE, new PackMetadataSection( Component.literal("Doom & Gloom resources"), diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java index c4257cc7..f8cde480 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java @@ -4,14 +4,17 @@ import galena.doom_and_gloom.data.provider.OBlockLootProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEntityTypes; +import galena.doom_and_gloom.index.DGLootInjects; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.BiConsumer; import java.util.stream.Stream; import net.minecraft.advancements.critereon.StatePropertiesPredicate; import net.minecraft.data.PackOutput; import net.minecraft.data.loot.EntityLootSubProvider; import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.data.loot.LootTableSubProvider; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; import net.minecraft.world.flag.FeatureFlags; @@ -20,16 +23,20 @@ import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.ValidationContext; import net.minecraft.world.level.storage.loot.entries.LootItem; +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.LootItemBlockStatePropertyCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; public class OLootTables extends LootTableProvider { public OLootTables(PackOutput output) { super(output, Set.of(), List.of( new SubProviderEntry(BlockLoot::new, LootContextParamSets.BLOCK), - new SubProviderEntry(EntityLoot::new, LootContextParamSets.ENTITY) + new SubProviderEntry(EntityLoot::new, LootContextParamSets.ENTITY), + new SubProviderEntry(InjectedLoot::new, LootContextParamSets.BLOCK) )); } @@ -73,4 +80,21 @@ protected Stream> getKnownEntityTypes() { return Stream.of(DGEntityTypes.HOLLER.get()); } } + + public static class InjectedLoot implements LootTableSubProvider { + + @Override + public void generate(BiConsumer consumer) { + consumer.accept(DGLootInjects.PYRAMID_BONES, LootTable.lootTable() + .withPool(LootPool.lootPool() + .when(LootItemRandomChanceCondition.randomChance(0.2F)) + .add(LootItem.lootTableItem(DGBlocks.BONE_PILE.get()) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1, 3))) + ) + ) + ); + } + + } + } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java index 599dfd73..43004639 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java @@ -2,6 +2,8 @@ import com.possible_triangle.multikulti.datagen.conditions.Conditional; import com.possible_triangle.multikulti.datagen.conditions.ModLoaded; +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.compat.DyeColors; import galena.doom_and_gloom.data.provider.ORecipeProvider; import galena.doom_and_gloom.index.DGBlocks; @@ -21,11 +23,15 @@ import net.minecraft.world.item.DyeItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.ToolActions; import net.minecraftforge.common.crafting.ConditionalRecipe; import net.minecraftforge.common.crafting.conditions.NotCondition; import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; +import vectorwing.farmersdelight.common.crafting.ingredient.ToolActionIngredient; +import vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder; public class ORecipes extends ORecipeProvider { @@ -65,6 +71,14 @@ protected void buildRecipes(Consumer consumer) { compact(DGBlocks.BONE_PILE.get().asItem(), Items.BONE).save(consumer); unCompact(Items.BONE, DGBlocks.BONE_PILE.get().asItem()).save(consumer); + Conditional.with(this, List.of(new ModLoaded(CompatMods.FARMERS_DELIGHT_NAME)), () -> { + CuttingBoardRecipeBuilder.cuttingRecipe( + Ingredient.of(DGBlocks.STONE_TABLET.get()), + new ToolActionIngredient(ToolActions.PICKAXE_DIG), + DGBlocks.CRACKED_STONE_TABLET.get() + ).build(consumer, DoomAndGloom.modLoc("cutting/stone_tablet")); + }); + /* withFallback(OTags.Items.INGOTS_LEAD, Tags.Items.INGOTS_COPPER, ingot -> ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, OItems.BUSH_HAMMER.get()) diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java index ad997a91..b5826355 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java @@ -3,7 +3,6 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.client.DoomAndGloomClient; import galena.doom_and_gloom.client.FogRendering; - import java.awt.*; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 0c128fc2..711ab924 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -4,7 +4,6 @@ import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; import net.minecraft.world.InteractionResult; -import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java index b85d3826..4032f9f0 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java @@ -1,7 +1,6 @@ package galena.doom_and_gloom.forge.mixin; import galena.doom_and_gloom.content.entity.ISepulcherable; -import galena.doom_and_gloom.forge.ForgeEntrypoint; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -18,11 +17,11 @@ public LivingEntityMixin(EntityType pEntityType, Level pLevel) { @Override public void DG$setSepulchered(boolean sepulchered) { - this.getPersistentData().putBoolean(ForgeEntrypoint.DG_TAG_KEY, sepulchered); + this.getPersistentData().putBoolean(ISepulcherable.DG_TAG_KEY, sepulchered); } @Override public boolean DG$wasSepulchered() { - return this.getPersistentData().getBoolean(ForgeEntrypoint.DG_TAG_KEY); + return this.getPersistentData().getBoolean(ISepulcherable.DG_TAG_KEY); } } diff --git a/forge/src/main/resources/META-INF/accesstransformer.cfg b/forge/src/main/resources/META-INF/accesstransformer.cfg deleted file mode 100644 index 3ce64589..00000000 --- a/forge/src/main/resources/META-INF/accesstransformer.cfg +++ /dev/null @@ -1,3 +0,0 @@ -public net.minecraft.server.network.ServerGamePacketListenerImpl m_243132_(Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture; # filterTextPacket -public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool f_210560_ # templates -public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool f_210559_ # rawTemplates diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8cc27f26..4ecd7427 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,9 +18,6 @@ dye-depot = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20 jei-forge = { group = "mezz.jei", name = "jei-1.20.1-forge", version.ref = "jei" } jei-fabric = { group = "mezz.jei", name = "jei-1.20.1-fabric", version.ref = "jei" } -forge-config-api-common = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-common", version.ref = "forge-config-api" } -forge-config-api-fabric = { group = "fuzs.forgeconfigapiport", name = "forgeconfigapiport-fabric", version.ref = "forge-config-api" } - moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", version.ref = "moonlight" } moonlight-lib-forge = { group = "net.mehvahdjukaar", name = "moonlight-forge", version.ref = "moonlight" } moonlight-lib-fabric = { group = "net.mehvahdjukaar", name = "moonlight-fabric", version.ref = "moonlight" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 09b716db..d2adc09c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,7 +6,7 @@ pluginManagement { } plugins { - id("com.possible-triangle.helper") version ("1.1") + id("com.possible-triangle.helper") version ("1.2") id("com.possible-triangle.packwiz") version ("1.1.60") } From 1c43b03dfafa5780bd0d44bca9a3dff34f6e66fb Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Mon, 3 Nov 2025 16:20:33 +0100 Subject: [PATCH 15/43] renamed files that were still using the oreganized prefix instead of DG --- .../{OModelLayers.java => DGModelLayers.java} | 7 +++--- .../client/DoomAndGloomClient.java | 4 ++-- .../render/entity/DirtMoundRenderer.java | 6 ++--- .../client/render/entity/HollerRender.java | 4 ++-- .../{OBlockStates.java => DGBlockStates.java} | 6 ++--- .../{OBlockTags.java => DGBlockTags.java} | 4 ++-- .../{ODamageTags.java => DGDamageTags.java} | 4 ++-- .../{OEntityTags.java => DGEntityTags.java} | 4 ++-- .../{OItemModels.java => DGItemModels.java} | 6 ++--- .../data/{OItemTags.java => DGItemTags.java} | 4 ++-- .../data/{OLang.java => DGLang.java} | 6 ++--- .../{OLootTables.java => DGLootTables.java} | 8 +++---- ...obEffectTags.java => DGMobEffectTags.java} | 4 ++-- .../data/{ORecipes.java => DGRecipes.java} | 8 +++---- ...finitions.java => DGSoundDefinitions.java} | 4 ++-- .../data/ForgeDataEntrypoint.java | 22 +++++++++---------- ...Provider.java => DGBlockLootProvider.java} | 4 ++-- ...rovider.java => DGBlockStateProvider.java} | 4 ++-- ...Provider.java => DGItemModelProvider.java} | 4 ++-- ...OLangProvider.java => DGLangProvider.java} | 4 ++-- ...ipeProvider.java => DGRecipeProvider.java} | 4 ++-- 21 files changed, 60 insertions(+), 61 deletions(-) rename common/src/main/java/galena/doom_and_gloom/client/{OModelLayers.java => DGModelLayers.java} (54%) rename forge/src/main/java/galena/doom_and_gloom/data/{OBlockStates.java => DGBlockStates.java} (87%) rename forge/src/main/java/galena/doom_and_gloom/data/{OBlockTags.java => DGBlockTags.java} (92%) rename forge/src/main/java/galena/doom_and_gloom/data/{ODamageTags.java => DGDamageTags.java} (81%) rename forge/src/main/java/galena/doom_and_gloom/data/{OEntityTags.java => DGEntityTags.java} (82%) rename forge/src/main/java/galena/doom_and_gloom/data/{OItemModels.java => DGItemModels.java} (83%) rename forge/src/main/java/galena/doom_and_gloom/data/{OItemTags.java => DGItemTags.java} (82%) rename forge/src/main/java/galena/doom_and_gloom/data/{OLang.java => DGLang.java} (94%) rename forge/src/main/java/galena/doom_and_gloom/data/{OLootTables.java => DGLootTables.java} (94%) rename forge/src/main/java/galena/doom_and_gloom/data/{OMobEffectTags.java => DGMobEffectTags.java} (83%) rename forge/src/main/java/galena/doom_and_gloom/data/{ORecipes.java => DGRecipes.java} (96%) rename forge/src/main/java/galena/doom_and_gloom/data/{OSoundDefinitions.java => DGSoundDefinitions.java} (97%) rename forge/src/main/java/galena/doom_and_gloom/data/provider/{OBlockLootProvider.java => DGBlockLootProvider.java} (94%) rename forge/src/main/java/galena/doom_and_gloom/data/provider/{OBlockStateProvider.java => DGBlockStateProvider.java} (98%) rename forge/src/main/java/galena/doom_and_gloom/data/provider/{OItemModelProvider.java => DGItemModelProvider.java} (92%) rename forge/src/main/java/galena/doom_and_gloom/data/provider/{OLangProvider.java => DGLangProvider.java} (97%) rename forge/src/main/java/galena/doom_and_gloom/data/provider/{ORecipeProvider.java => DGRecipeProvider.java} (93%) diff --git a/common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java b/common/src/main/java/galena/doom_and_gloom/client/DGModelLayers.java similarity index 54% rename from common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java rename to common/src/main/java/galena/doom_and_gloom/client/DGModelLayers.java index 598b61fb..76f082fc 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/OModelLayers.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DGModelLayers.java @@ -2,11 +2,10 @@ import galena.doom_and_gloom.DoomAndGloom; import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.resources.ResourceLocation; -public class OModelLayers { +public class DGModelLayers { - public static final ModelLayerLocation HOLLER = new ModelLayerLocation(new ResourceLocation(DoomAndGloom.MOD_ID, "holler"), "main"); - public static final ModelLayerLocation DIRT_MOUND = new ModelLayerLocation(new ResourceLocation(DoomAndGloom.MOD_ID, "dirt_mound"), "main"); + public static final ModelLayerLocation HOLLER = new ModelLayerLocation(DoomAndGloom.modLoc("holler"), "main"); + public static final ModelLayerLocation DIRT_MOUND = new ModelLayerLocation(DoomAndGloom.modLoc("dirt_mound"), "main"); } diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index b4187f11..632b0fb4 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -46,8 +46,8 @@ private static void registerEntityRenderers(ClientHelper.EntityRendererEvent eve } public static void registerModelLayers(ClientHelper.ModelLayerEvent event) { - event.register(OModelLayers.HOLLER, HollerModel::createBodyLayer); - event.register(OModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); + event.register(DGModelLayers.HOLLER, HollerModel::createBodyLayer); + event.register(DGModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); } private static void registerParticleFactories(ClientHelper.ParticleEvent event) { diff --git a/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java b/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java index c7659c47..16b0f2ce 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java +++ b/common/src/main/java/galena/doom_and_gloom/client/render/entity/DirtMoundRenderer.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.OModelLayers; +import galena.doom_and_gloom.client.DGModelLayers; import galena.doom_and_gloom.client.model.DirtMoundModel; import galena.doom_and_gloom.content.entity.DirtMound; import net.minecraft.client.model.EntityModel; @@ -15,13 +15,13 @@ public class DirtMoundRenderer extends EntityRenderer { - private static final ResourceLocation TEXTURE = new ResourceLocation(DoomAndGloom.MOD_ID, "textures/entity/dirt_mound.png"); + private static final ResourceLocation TEXTURE = DoomAndGloom.modLoc("textures/entity/dirt_mound.png"); private final EntityModel model; public DirtMoundRenderer(EntityRendererProvider.Context context) { super(context); - this.model = new DirtMoundModel(context.bakeLayer(OModelLayers.DIRT_MOUND)); + this.model = new DirtMoundModel(context.bakeLayer(DGModelLayers.DIRT_MOUND)); } @Override diff --git a/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java b/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java index 45ce289c..2446ee17 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java +++ b/common/src/main/java/galena/doom_and_gloom/client/render/entity/HollerRender.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.client.render.entity; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.OModelLayers; +import galena.doom_and_gloom.client.DGModelLayers; import galena.doom_and_gloom.client.model.HollerModel; import galena.doom_and_gloom.content.entity.holler.Holler; import net.minecraft.client.renderer.entity.EntityRendererProvider; @@ -14,7 +14,7 @@ public class HollerRender extends MobRenderer> { private static final ResourceLocation HOLLER_TEXTURE = DoomAndGloom.modLoc( "textures/entity/holler.png"); public HollerRender(EntityRendererProvider.Context context) { - super(context, new HollerModel<>(context.bakeLayer(OModelLayers.HOLLER)), 0.4F); + super(context, new HollerModel<>(context.bakeLayer(DGModelLayers.HOLLER)), 0.4F); } @Override diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java b/forge/src/main/java/galena/doom_and_gloom/data/DGBlockStates.java similarity index 87% rename from forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGBlockStates.java index b2a32421..c6cc9ef3 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OBlockStates.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGBlockStates.java @@ -1,15 +1,15 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.data.provider.OBlockStateProvider; +import galena.doom_and_gloom.data.provider.DGBlockStateProvider; import galena.doom_and_gloom.index.DGBlocks; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.data.ExistingFileHelper; -public class OBlockStates extends OBlockStateProvider { +public class DGBlockStates extends DGBlockStateProvider { - public OBlockStates(PackOutput output, ExistingFileHelper helper) { + public DGBlockStates(PackOutput output, ExistingFileHelper helper) { super(output, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java b/forge/src/main/java/galena/doom_and_gloom/data/DGBlockTags.java similarity index 92% rename from forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGBlockTags.java index c68bf069..74a02c58 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OBlockTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGBlockTags.java @@ -17,9 +17,9 @@ import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; -public class OBlockTags extends IntrinsicHolderTagsProvider { +public class DGBlockTags extends IntrinsicHolderTagsProvider { - public OBlockTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { + public DGBlockTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { super(output, Registries.BLOCK, future, block -> block.builtInRegistryHolder().key(), DoomAndGloom.MOD_ID, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ODamageTags.java b/forge/src/main/java/galena/doom_and_gloom/data/DGDamageTags.java similarity index 81% rename from forge/src/main/java/galena/doom_and_gloom/data/ODamageTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGDamageTags.java index 24f79a70..6adeaeec 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ODamageTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGDamageTags.java @@ -11,9 +11,9 @@ import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; -public class ODamageTags extends TagsProvider { +public class DGDamageTags extends TagsProvider { - public ODamageTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { + public DGDamageTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { super(output, Registries.DAMAGE_TYPE, future, DoomAndGloom.MOD_ID, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java b/forge/src/main/java/galena/doom_and_gloom/data/DGEntityTags.java similarity index 82% rename from forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGEntityTags.java index 4cceb86f..e75093ad 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OEntityTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGEntityTags.java @@ -10,9 +10,9 @@ import net.minecraft.world.entity.EntityType; import net.minecraftforge.common.data.ExistingFileHelper; -public class OEntityTags extends EntityTypeTagsProvider { +public class DGEntityTags extends EntityTypeTagsProvider { - public OEntityTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper help) { + public DGEntityTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper help) { super(output, future, DoomAndGloom.MOD_ID, help); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java b/forge/src/main/java/galena/doom_and_gloom/data/DGItemModels.java similarity index 83% rename from forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGItemModels.java index 2e1a1ba2..75d03a4d 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OItemModels.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGItemModels.java @@ -1,15 +1,15 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.data.provider.OItemModelProvider; +import galena.doom_and_gloom.data.provider.DGItemModelProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGItems; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; -public class OItemModels extends OItemModelProvider { +public class DGItemModels extends DGItemModelProvider { - public OItemModels(PackOutput output, ExistingFileHelper helper) { + public DGItemModels(PackOutput output, ExistingFileHelper helper) { super(output, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java b/forge/src/main/java/galena/doom_and_gloom/data/DGItemTags.java similarity index 82% rename from forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGItemTags.java index 0b0069b6..7cb05b22 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OItemTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGItemTags.java @@ -14,9 +14,9 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.ExistingFileHelper; -public class OItemTags extends ItemTagsProvider { +public class DGItemTags extends ItemTagsProvider { - public OItemTags(PackOutput output, CompletableFuture future, CompletableFuture> provider, @Nullable ExistingFileHelper helper) { + public DGItemTags(PackOutput output, CompletableFuture future, CompletableFuture> provider, @Nullable ExistingFileHelper helper) { super(output, future, provider, DoomAndGloom.MOD_ID, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OLang.java b/forge/src/main/java/galena/doom_and_gloom/data/DGLang.java similarity index 94% rename from forge/src/main/java/galena/doom_and_gloom/data/OLang.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGLang.java index e5b97d9e..29aff935 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OLang.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGLang.java @@ -1,15 +1,15 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.data.provider.OLangProvider; +import galena.doom_and_gloom.data.provider.DGLangProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGItems; import net.minecraft.data.PackOutput; -public class OLang extends OLangProvider { +public class DGLang extends DGLangProvider { - public OLang(PackOutput output) { + public DGLang(PackOutput output) { super(output, DoomAndGloom.MOD_ID, "en_us"); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java b/forge/src/main/java/galena/doom_and_gloom/data/DGLootTables.java similarity index 94% rename from forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGLootTables.java index f8cde480..16ae5063 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OLootTables.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGLootTables.java @@ -1,7 +1,7 @@ package galena.doom_and_gloom.data; import galena.doom_and_gloom.content.block.SepulcherBlock; -import galena.doom_and_gloom.data.provider.OBlockLootProvider; +import galena.doom_and_gloom.data.provider.DGBlockLootProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGLootInjects; @@ -30,9 +30,9 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -public class OLootTables extends LootTableProvider { +public class DGLootTables extends LootTableProvider { - public OLootTables(PackOutput output) { + public DGLootTables(PackOutput output) { super(output, Set.of(), List.of( new SubProviderEntry(BlockLoot::new, LootContextParamSets.BLOCK), new SubProviderEntry(EntityLoot::new, LootContextParamSets.ENTITY), @@ -44,7 +44,7 @@ public OLootTables(PackOutput output) { protected void validate(Map map, ValidationContext tracker) { } - public static class BlockLoot extends OBlockLootProvider { + public static class BlockLoot extends DGBlockLootProvider { protected void generate() { add(DGBlocks.SEPULCHER.get(), it -> createSingleItemTable(it) diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java b/forge/src/main/java/galena/doom_and_gloom/data/DGMobEffectTags.java similarity index 83% rename from forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGMobEffectTags.java index 5a71431c..2749803f 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OMobEffectTags.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGMobEffectTags.java @@ -13,9 +13,9 @@ import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; -public class OMobEffectTags extends TagsProvider { +public class DGMobEffectTags extends TagsProvider { - public OMobEffectTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { + public DGMobEffectTags(PackOutput output, CompletableFuture future, @Nullable ExistingFileHelper helper) { super(output, Registries.MOB_EFFECT, future, DoomAndGloom.MOD_ID, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java b/forge/src/main/java/galena/doom_and_gloom/data/DGRecipes.java similarity index 96% rename from forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGRecipes.java index 43004639..82a17d4f 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ORecipes.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGRecipes.java @@ -5,7 +5,7 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.compat.DyeColors; -import galena.doom_and_gloom.data.provider.ORecipeProvider; +import galena.doom_and_gloom.data.provider.DGRecipeProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGTags; import java.util.List; @@ -33,9 +33,9 @@ import vectorwing.farmersdelight.common.crafting.ingredient.ToolActionIngredient; import vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder; -public class ORecipes extends ORecipeProvider { +public class DGRecipes extends DGRecipeProvider { - public ORecipes(PackOutput output) { + public DGRecipes(PackOutput output) { super(output); } @@ -108,7 +108,7 @@ protected void buildRecipes(Consumer consumer) { .requires(OItems.BUSH_HAMMER.get()) .requires(OBlocks.STONE_TABLET.get()) .unlockedBy("has_hammer", has(OItems.BUSH_HAMMER.get())) - .save(consumer, new ResourceLocation(DoomAndGloom.MOD_ID, "hammer_and_chisel_from_tablet")); + .save(consumer, DoomAndGloom.modLoc("hammer_and_chisel_from_tablet")); smeltingResultFromBase(consumer, OBlocks.CRACKED_STONE_TABLET.get(), OBlocks.STONE_TABLET.get()); */ diff --git a/forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java b/forge/src/main/java/galena/doom_and_gloom/data/DGSoundDefinitions.java similarity index 97% rename from forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java rename to forge/src/main/java/galena/doom_and_gloom/data/DGSoundDefinitions.java index b3d429ec..0403480c 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/OSoundDefinitions.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/DGSoundDefinitions.java @@ -7,9 +7,9 @@ import net.minecraftforge.common.data.SoundDefinition; import net.minecraftforge.common.data.SoundDefinitionsProvider; -public class OSoundDefinitions extends SoundDefinitionsProvider { +public class DGSoundDefinitions extends SoundDefinitionsProvider { - public OSoundDefinitions(PackOutput output, ExistingFileHelper helper) { + public DGSoundDefinitions(PackOutput output, ExistingFileHelper helper) { super(output, DoomAndGloom.MOD_ID, helper); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java index dfe7363f..4c33d281 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java @@ -30,22 +30,22 @@ public static void gatherData(GatherDataEvent event) { boolean client = event.includeClient(); boolean server = event.includeServer(); - var lang = new OLang(output); + var lang = new DGLang(output); - generator.addProvider(client, new OBlockStates(output, helper)); - generator.addProvider(client, new OItemModels(output, helper)); + generator.addProvider(client, new DGBlockStates(output, helper)); + generator.addProvider(client, new DGItemModels(output, helper)); generator.addProvider(client, lang); - generator.addProvider(client, new OSoundDefinitions(output, helper)); + generator.addProvider(client, new DGSoundDefinitions(output, helper)); - generator.addProvider(server, new ORecipes(output)); - generator.addProvider(server, new OLootTables(output)); - OBlockTags blockTags = new OBlockTags(output, future, helper); + generator.addProvider(server, new DGRecipes(output)); + generator.addProvider(server, new DGLootTables(output)); + DGBlockTags blockTags = new DGBlockTags(output, future, helper); generator.addProvider(server, blockTags); - generator.addProvider(server, new OItemTags(output, future, blockTags.contentsGetter(), helper)); - generator.addProvider(server, new OEntityTags(output, future, helper)); + generator.addProvider(server, new DGItemTags(output, future, blockTags.contentsGetter(), helper)); + generator.addProvider(server, new DGEntityTags(output, future, helper)); CompletableFuture lookupProvider = event.getLookupProvider(); - generator.addProvider(server, new ODamageTags(output, lookupProvider, helper)); - generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper)); + generator.addProvider(server, new DGDamageTags(output, lookupProvider, helper)); + generator.addProvider(server, new DGMobEffectTags(output, lookupProvider, helper)); generator.addProvider(server, new DGItemListings(output, helper)); generator.addProvider(server, new PackMetadataGenerator(output).add(PackMetadataSection.TYPE, new PackMetadataSection( diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java similarity index 94% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java index b2e3c2e0..d033aa3e 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockLootProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java @@ -15,11 +15,11 @@ import net.minecraft.world.level.storage.loot.functions.CopyNbtFunction; import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider; -public abstract class OBlockLootProvider extends BlockLootSubProvider { +public abstract class DGBlockLootProvider extends BlockLootSubProvider { private final Collection knownBlocks = new HashSet<>(); - protected OBlockLootProvider() { + protected DGBlockLootProvider() { super(Set.of(), FeatureFlags.REGISTRY.allFlags()); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java similarity index 98% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java index a3bb2d65..73879ded 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/OBlockStateProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java @@ -22,9 +22,9 @@ import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.Nullable; -public abstract class OBlockStateProvider extends BlockStateProvider { +public abstract class DGBlockStateProvider extends BlockStateProvider { - public OBlockStateProvider(PackOutput output, ExistingFileHelper help) { + public DGBlockStateProvider(PackOutput output, ExistingFileHelper help) { super(output, MOD_ID, help); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java similarity index 92% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java index a1de7025..b0501c48 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/OItemModelProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java @@ -12,9 +12,9 @@ import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.registries.ForgeRegistries; -public abstract class OItemModelProvider extends ItemModelProvider { +public abstract class DGItemModelProvider extends ItemModelProvider { - public OItemModelProvider(PackOutput output, ExistingFileHelper help) { + public DGItemModelProvider(PackOutput output, ExistingFileHelper help) { super(output, DoomAndGloom.MOD_ID, help); } diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGLangProvider.java similarity index 97% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/DGLangProvider.java index 17a35a45..fe1abd14 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/OLangProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGLangProvider.java @@ -20,7 +20,7 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.ForgeRegistries; -public abstract class OLangProvider implements DataProvider { +public abstract class DGLangProvider implements DataProvider { private final Map data = new TreeMap<>(); private final PackOutput output; private final String modid; @@ -28,7 +28,7 @@ public abstract class OLangProvider implements DataProvider { private final List subProviders = Lists.newArrayList(); - public OLangProvider(PackOutput output, String modid, String locale) { + public DGLangProvider(PackOutput output, String modid, String locale) { this.output = output; this.modid = modid; this.locale = locale; diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java similarity index 93% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java rename to forge/src/main/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java index 68e20a68..30732e52 100644 --- a/forge/src/main/java/galena/doom_and_gloom/data/provider/ORecipeProvider.java +++ b/forge/src/main/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java @@ -12,9 +12,9 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.ForgeRegistries; -public abstract class ORecipeProvider extends RecipeProvider { +public abstract class DGRecipeProvider extends RecipeProvider { - public ORecipeProvider(PackOutput output) { + public DGRecipeProvider(PackOutput output) { super(output); } From 8a8a925a72df9224082ba94cc7676d6264506bdc Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Mon, 3 Nov 2025 18:36:22 +0100 Subject: [PATCH 16/43] split datagen into own sourceset --- .../src/main/java/galena/doom_and_gloom/index/DGBlocks.java | 1 + forge/build.gradle.kts | 3 +-- .../java/galena/doom_and_gloom/data/DGBlockStates.java | 0 .../java/galena/doom_and_gloom/data/DGBlockTags.java | 0 .../java/galena/doom_and_gloom/data/DGDamageTags.java | 0 .../java/galena/doom_and_gloom/data/DGEntityTags.java | 0 .../java/galena/doom_and_gloom/data/DGItemListings.java | 0 .../java/galena/doom_and_gloom/data/DGItemModels.java | 0 .../java/galena/doom_and_gloom/data/DGItemTags.java | 0 .../java/galena/doom_and_gloom/data/DGLang.java | 0 .../java/galena/doom_and_gloom/data/DGLootTables.java | 0 .../java/galena/doom_and_gloom/data/DGMobEffectTags.java | 0 .../java/galena/doom_and_gloom/data/DGRecipes.java | 0 .../java/galena/doom_and_gloom/data/DGSoundDefinitions.java | 0 .../java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java | 0 .../doom_and_gloom/data/provider/DGBlockLootProvider.java | 0 .../doom_and_gloom/data/provider/DGBlockStateProvider.java | 0 .../doom_and_gloom/data/provider/DGItemModelProvider.java | 0 .../galena/doom_and_gloom/data/provider/DGLangProvider.java | 0 .../galena/doom_and_gloom/data/provider/DGRecipeProvider.java | 0 .../doom_and_gloom/data/provider/ItemListingProvider.java | 0 gradle/libs.versions.toml | 4 +--- 22 files changed, 3 insertions(+), 5 deletions(-) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGBlockStates.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGBlockTags.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGDamageTags.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGEntityTags.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGItemListings.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGItemModels.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGItemTags.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGLang.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGLootTables.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGMobEffectTags.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGRecipes.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/DGSoundDefinitions.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/DGLangProvider.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java (100%) rename forge/src/{main => data}/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java (100%) diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index c0eb6fa3..85035408 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -13,6 +13,7 @@ import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index 98f92fba..d07082f4 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -21,6 +21,7 @@ forge { dataGen { existing("blueprint") + splitSourceSet() } } @@ -41,8 +42,6 @@ dependencies { modImplementation(pack.forge.modrinth.supplementaries) modImplementation(pack.forge.modrinth.amendments) - // TODO this is currently only needed for oreganized, but will also be used here soon - // side-node, this should not be required to run datagen when depending on oreganized, fix this in oreganized modImplementation(libs.multikulti.core) modImplementation(libs.multikulti.datagen) diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGBlockStates.java b/forge/src/data/java/galena/doom_and_gloom/data/DGBlockStates.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGBlockStates.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGBlockStates.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGBlockTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGBlockTags.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGDamageTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGDamageTags.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGDamageTags.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGDamageTags.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGEntityTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGEntityTags.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGEntityTags.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGEntityTags.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGItemListings.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGItemModels.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemModels.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGItemModels.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGItemModels.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGItemTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGItemTags.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGLang.java b/forge/src/data/java/galena/doom_and_gloom/data/DGLang.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGLang.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGLang.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGLootTables.java b/forge/src/data/java/galena/doom_and_gloom/data/DGLootTables.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGLootTables.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGLootTables.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGMobEffectTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGMobEffectTags.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGMobEffectTags.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGMobEffectTags.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGRecipes.java b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGRecipes.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/DGSoundDefinitions.java b/forge/src/data/java/galena/doom_and_gloom/data/DGSoundDefinitions.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/DGSoundDefinitions.java rename to forge/src/data/java/galena/doom_and_gloom/data/DGSoundDefinitions.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java b/forge/src/data/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java rename to forge/src/data/java/galena/doom_and_gloom/data/ForgeDataEntrypoint.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/DGBlockLootProvider.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/DGBlockStateProvider.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/DGItemModelProvider.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/DGLangProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/DGLangProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/DGRecipeProvider.java diff --git a/forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java similarity index 100% rename from forge/src/main/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java rename to forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ecd7427..b9443992 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,6 @@ [versions] multikulti = "1.20.1-1.1.5" jei = "15.20.0.106" -forge-config-api = "8.0.2" moonlight = "1.20-2.16.15" [libraries] @@ -10,7 +9,7 @@ multikulti-datagen = { group = "com.possible-triangle", name = "multikulti-datag multikulti-datagen-fix = { group = "com.possible-triangle", name = "multikulti-datagen-forge-fix", version.ref = "multikulti" } galena-hats = { "group" = "dev.galena", name = "hats-forge", version = "1.20.1-1.2.2" } -oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.0" } +oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.1" } blueprint = { group = "com.teamabnormals", name = "blueprint", version = "1.20.1-7.1.0" } dye-depot = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } @@ -22,6 +21,5 @@ moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", versio moonlight-lib-forge = { group = "net.mehvahdjukaar", name = "moonlight-forge", version.ref = "moonlight" } moonlight-lib-fabric = { group = "net.mehvahdjukaar", name = "moonlight-fabric", version.ref = "moonlight" } - [plugins] parchment = { id = "org.parchmentmc.librarian.forgegradle", version = "1.+" } From 924d238610304c0f74aee86d0f5ed845eb9337e8 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 13:02:14 +0100 Subject: [PATCH 17/43] re-stage idea icon --- .idea/icon.png | Bin 0 -> 81010 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .idea/icon.png diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..78a0df8298f5f47ad7fc5a8ad0af197b13554bbf GIT binary patch literal 81010 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 Km#vgG3;RFuNC|NO literal 0 HcmV?d00001 From dc19158dd854e7c90c7b54e1645979ed753463ac Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 13:30:00 +0100 Subject: [PATCH 18/43] cancel drops on forge & re-add missing translations --- .../assets/doom_and_gloom/lang/en_us.json | 44 +++++ .../galena/doom_and_gloom/DoomAndGloom.java | 13 -- .../fabric/mixin/LivingEntityMixin.java | 16 +- .../galena/doom_and_gloom/data/DGLang.java | 39 ++--- .../data/provider/DGLangProvider.java | 154 +++--------------- .../doom_and_gloom/forge/ForgeEntrypoint.java | 11 +- 6 files changed, 97 insertions(+), 180 deletions(-) diff --git a/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json b/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json index e2bf4e72..4ffacc74 100644 --- a/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json +++ b/common/src/generated/resources/assets/doom_and_gloom/lang/en_us.json @@ -1,12 +1,56 @@ { + "block.doom_and_gloom.amber_vigil_candle": "Amber Vigil Candle", + "block.doom_and_gloom.aqua_vigil_candle": "Aqua Vigil Candle", + "block.doom_and_gloom.beige_vigil_candle": "Beige Vigil Candle", + "block.doom_and_gloom.black_vigil_candle": "Black Vigil Candle", + "block.doom_and_gloom.blue_vigil_candle": "Blue Vigil Candle", "block.doom_and_gloom.bone_pile": "Pile of Bones", + "block.doom_and_gloom.brown_vigil_candle": "Brown Vigil Candle", + "block.doom_and_gloom.burial_dirt": "Burial Dirt", + "block.doom_and_gloom.coral_vigil_candle": "Coral Vigil Candle", + "block.doom_and_gloom.cracked_stone_tablet": "Cracked Stone Tablet", + "block.doom_and_gloom.cyan_vigil_candle": "Cyan Vigil Candle", + "block.doom_and_gloom.engraved_stone_tablet": "Engraved Stone Tablet", + "block.doom_and_gloom.forest_vigil_candle": "Forest Vigil Candle", + "block.doom_and_gloom.ginger_vigil_candle": "Ginger Vigil Candle", + "block.doom_and_gloom.gray_vigil_candle": "Gray Vigil Candle", + "block.doom_and_gloom.green_vigil_candle": "Green Vigil Candle", + "block.doom_and_gloom.indigo_vigil_candle": "Indigo Vigil Candle", + "block.doom_and_gloom.light_blue_vigil_candle": "Light Blue Vigil Candle", + "block.doom_and_gloom.light_gray_vigil_candle": "Light Gray Vigil Candle", + "block.doom_and_gloom.lime_vigil_candle": "Lime Vigil Candle", + "block.doom_and_gloom.magenta_vigil_candle": "Magenta Vigil Candle", + "block.doom_and_gloom.maroon_vigil_candle": "Maroon Vigil Candle", + "block.doom_and_gloom.mint_vigil_candle": "Mint Vigil Candle", + "block.doom_and_gloom.navy_vigil_candle": "Navy Vigil Candle", + "block.doom_and_gloom.olive_vigil_candle": "Olive Vigil Candle", + "block.doom_and_gloom.orange_vigil_candle": "Orange Vigil Candle", + "block.doom_and_gloom.pink_vigil_candle": "Pink Vigil Candle", + "block.doom_and_gloom.purple_vigil_candle": "Purple Vigil Candle", + "block.doom_and_gloom.red_vigil_candle": "Red Vigil Candle", + "block.doom_and_gloom.rose_vigil_candle": "Rose Vigil Candle", + "block.doom_and_gloom.rotting_flesh": "Rotting Flesh", + "block.doom_and_gloom.sepulcher": "Sepulcher", + "block.doom_and_gloom.slate_vigil_candle": "Slate Vigil Candle", + "block.doom_and_gloom.stone_tablet": "Stone Tablet", + "block.doom_and_gloom.tan_vigil_candle": "Tan Vigil Candle", + "block.doom_and_gloom.teal_vigil_candle": "Teal Vigil Candle", + "block.doom_and_gloom.verdant_vigil_candle": "Verdant Vigil Candle", + "block.doom_and_gloom.vigil_candle": "Vigil Candle", + "block.doom_and_gloom.white_vigil_candle": "White Vigil Candle", + "block.doom_and_gloom.yellow_vigil_candle": "Yellow Vigil Candle", "effect.doom_and_gloom.fog": "Fog", "effect.doom_and_gloom.fog.description": "An eerie fog that accompanies the holler", "effect.doom_and_gloom.warding": "Warding", "effect.doom_and_gloom.warding.description": "Wards against evil spirits", "entity.minecraft.villager.doom_and_gloom.gravetender": "Gravetender", + "entity_type.doom_and_gloom.dirt_mound": "Dirt Mound", + "entity_type.doom_and_gloom.holler": "Holler", "gui.doom_and_gloom.stone_tablet.cancel": "Cancel", "gui.doom_and_gloom.stone_tablet.engrave": "Engrave", + "item.doom_and_gloom.bush_hammer": "Bush Hammer", + "item.doom_and_gloom.hammer_and_chisel": "Hammer And Chisel", + "item.doom_and_gloom.holler_spawn_egg": "Holler Spawn Egg", "item.doom_and_gloom.music_disc_afterlife": "Music Disc", "item.doom_and_gloom.music_disc_afterlife.desc": "Firch - afterlife", "subtitles.block.sepulcher.corpse_stuffed": "Sepulcher consumes corpse", diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 07542088..c80887c5 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -1,6 +1,5 @@ package galena.doom_and_gloom; -import galena.doom_and_gloom.content.entity.ISepulcherable; import galena.doom_and_gloom.gen.VillageStructureModifier; import galena.doom_and_gloom.index.*; import galena.doom_and_gloom.network.DGNetwork; @@ -9,9 +8,6 @@ import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -76,13 +72,4 @@ public static void onServerAboutToStart(MinecraftServer server) { VillageStructureModifier.setup(server.registryAccess()); } - //TODO: fabric - public static boolean onItemDrop(Entity entity) { - if (entity instanceof Player) return false; - if (entity instanceof LivingEntity le) { - return ISepulcherable.cast(le).DG$wasSepulchered(); - } - return false; - } - } diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java index d09c6b29..150fd3de 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/LivingEntityMixin.java @@ -16,9 +16,9 @@ public class LivingEntityMixin implements ISepulcherable { @Unique private boolean dg$sepulchered = false; - @Inject(method = "dropAllDeathLoot", at = @At("TAIL")) + @Inject(method = "dropAllDeathLoot", at = @At("HEAD"), cancellable = true) public void DG$cancelDrops(DamageSource damageSource, CallbackInfo ci) { - //TODO: aa help + ci.cancel(); } @Override @@ -32,15 +32,13 @@ public class LivingEntityMixin implements ISepulcherable { } @Inject(method = "readAdditionalSaveData", at = @At("TAIL")) - public void dg$readSepulchered(CompoundTag compoundTag, CallbackInfo ci) { - - if (compoundTag.contains(ISepulcherable.DG_TAG_KEY)) - dg$sepulchered = compoundTag.getBoolean(ISepulcherable.DG_TAG_KEY); + public void dg$readSepulchered(CompoundTag nbt, CallbackInfo ci) { + if (nbt.contains(ISepulcherable.DG_TAG_KEY)) + dg$sepulchered = nbt.getBoolean(ISepulcherable.DG_TAG_KEY); } @Inject(method = "addAdditionalSaveData", at = @At("TAIL")) - public void dg$addSepulchered(CompoundTag compoundTag, CallbackInfo ci) { - - if (dg$sepulchered) compoundTag.putBoolean(ISepulcherable.DG_TAG_KEY, dg$sepulchered); + public void dg$addSepulchered(CompoundTag nbt, CallbackInfo ci) { + if (dg$sepulchered) nbt.putBoolean(ISepulcherable.DG_TAG_KEY, dg$sepulchered); } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGLang.java b/forge/src/data/java/galena/doom_and_gloom/data/DGLang.java index 29aff935..5dde1da2 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGLang.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGLang.java @@ -4,7 +4,9 @@ import galena.doom_and_gloom.data.provider.DGLangProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEffects; +import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGItems; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.minecraft.data.PackOutput; public class DGLang extends DGLangProvider { @@ -18,6 +20,20 @@ protected void addTranslations() { addDisc(DGItems.MUSIC_DISC_AFTERLIFE, "Firch", "afterlife"); addBlock(DGBlocks.BONE_PILE, "Pile of Bones"); + add(DGBlocks.SEPULCHER.getHolder()); + add(DGBlocks.ROTTING_FLESH.getHolder()); + add(DGBlocks.STONE_TABLET.getHolder()); + add(DGBlocks.ENGRAVED_STONE_TABLET.getHolder()); + add(DGBlocks.CRACKED_STONE_TABLET.getHolder()); + DGBlocks.vigilCandles().map(RegSupplier::getHolder).forEach(this::add); + add(DGBlocks.BURIAL_DIRT.getHolder()); + + add(DGItems.BUSH_HAMMER.getHolder()); + add(DGItems.HOLLER_SPAWN_EGG.getHolder()); + add(DGItems.HAMMER_AND_CHISEL.getHolder()); + + add(DGEntityTypes.DIRT_MOUND.getHolder()); + add(DGEntityTypes.HOLLER.getHolder()); addEffect(DGEffects.FOG, "Fog"); addEffect(DGEffects.WARDING, "Warding"); @@ -36,31 +52,12 @@ protected void addTranslations() { addSubtitle("entity", "holler_death", "Holler dies"); addSubtitle("entity", "holler_hurt", "Holler hurts"); addSubtitle("entity", "holler_shrieks", "Holler shrieks"); - addSubtitle("entity", "holler_hollers", "Holler wails"); //howls? howls? whispers? + addSubtitle("entity", "holler_hollers", "Holler wails"); add("entity.minecraft.villager." + DoomAndGloom.MOD_ID + ".gravetender", "Gravetender"); add("gui.doom_and_gloom.stone_tablet.engrave", "Engrave"); add("gui.doom_and_gloom.stone_tablet.cancel", "Cancel"); - - /* - Automatically create translations for blocks and items based on their registry name. - - This must be at the very bottom to avoid overwriting errors. These functions ignore objects - that have already been translated above. - */ - - // TODO do this differently - /* - for (Supplier blocks : DoomAndGloom.REGISTRY_HELPER.getBlockSubHelper().getDeferredRegister().getEntries()) { - tryBlock(blocks); - } - for (Supplier items : DoomAndGloom.REGISTRY_HELPER.getItemSubHelper().getDeferredRegister().getEntries()) { - tryItem(items); - } - for (Supplier> entities : DGEntityTypes.ENTITIES.getEntries()) { - tryEntity(entities); - } - */ } + } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java index fe1abd14..2dc73e2e 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/provider/DGLangProvider.java @@ -1,157 +1,43 @@ package galena.doom_and_gloom.data.provider; -import com.google.common.collect.Lists; -import com.google.gson.JsonObject; -import java.nio.file.Path; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.CompletableFuture; +import java.util.Arrays; +import java.util.Locale; import java.util.function.Supplier; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataProvider; +import java.util.stream.Collectors; +import net.minecraft.Util; +import net.minecraft.core.Holder; import net.minecraft.data.PackOutput; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.RecordItem; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.common.data.LanguageProvider; -public abstract class DGLangProvider implements DataProvider { - private final Map data = new TreeMap<>(); - private final PackOutput output; - private final String modid; - private final String locale; +public abstract class DGLangProvider extends LanguageProvider { - private final List subProviders = Lists.newArrayList(); - - public DGLangProvider(PackOutput output, String modid, String locale) { - this.output = output; - this.modid = modid; - this.locale = locale; - } - - public void addSubProvider(Runnable runnable) { - this.subProviders.add(runnable); + protected DGLangProvider(PackOutput output, String modid, String locale) { + super(output, modid, locale); } - protected abstract void addTranslations(); - - @Override - public CompletableFuture run(CachedOutput cache) { - this.subProviders.forEach(Runnable::run); - addTranslations(); - if (!data.isEmpty()) - return save(cache, this.output.getOutputFolder(PackOutput.Target.RESOURCE_PACK).resolve(this.modid).resolve("lang").resolve(this.locale + ".json")); - - return CompletableFuture.allOf(); - } - - @Override - public String getName() { - return modid + " Languages: " + locale; - } - - private CompletableFuture save(CachedOutput cache, Path target) { - JsonObject json = new JsonObject(); - this.data.forEach(json::addProperty); - - return DataProvider.saveStable(cache, json, target); - } - - public void addBlock(Supplier key, String name) { - add(key.get(), name); - } - - public void add(Block key, String name) { - add(key.getDescriptionId(), name); - } - - public void addItem(Supplier key, String name) { - add(key.get(), name); - } - - public void add(Item key, String name) { - add(key.getDescriptionId(), name); - } - - public void addDisc(Supplier disc, String desc) { + protected void addDisc(Supplier disc, String desc) { addItem(disc, "Music Disc"); add(disc.get().getDescriptionId() + ".desc", desc); } - public void addDisc(Supplier disc, String artist, String song) { + protected void addDisc(Supplier disc, String artist, String song) { addDisc(disc, artist + " - " + song); } - public void addAdvTitle(String advancementTitle, String name) { - data.putIfAbsent("advancements." + advancementTitle + ".title", name); - } - - public void addAdvDesc(String advancementTitle, String name) { - data.putIfAbsent("advancements." + advancementTitle + ".description", name); - } - - public void addSubtitle(String category, String subtitleName, String name) { + protected void addSubtitle(String category, String subtitleName, String name) { add("subtitles." + category + "." + subtitleName, name); } - public void add(ItemStack key, String name) { - add(key.getDescriptionId(), name); - } - - public void add(Enchantment key, String name) { - add(key.getDescriptionId(), name); - } - - public void addEffect(Supplier key, String name) { - add(key.get(), name); - } - - public void add(MobEffect key, String name) { - add(key.getDescriptionId(), name); - } - - public void add(EntityType key, String name) { - add(key.getDescriptionId(), name); - } - - public void add(String key, String value) { - if (data.put(key, value) != null) - throw new IllegalStateException("Duplicate translation key " + key); - } - - public void tryBlock(Supplier block) { - String key = block.get().getDescriptionId(); - String value = formatString(ForgeRegistries.BLOCKS.getKey(block.get()).getPath()); - data.putIfAbsent(key, value); + protected void add(Holder holder) { + var id = holder.unwrapKey().orElseThrow(); + var key = Util.makeDescriptionId(id.registry().getPath(), id.location()); + add(key, translate(id.location().getPath())); } - public void tryItem(Supplier item) { - String key = item.get().getDescriptionId(); - String value = formatString(ForgeRegistries.ITEMS.getKey(item.get()).getPath()); - data.putIfAbsent(key, value); - } - - public void tryEntity(Supplier> entity) { - String key = entity.get().getDescriptionId(); - String value = formatString(ForgeRegistries.ENTITY_TYPES.getKey(entity.get()).getPath()); - data.putIfAbsent(key, value); - } - - private String formatString(String key) { - String[] strArr = key.split("_"); - StringBuffer res = new StringBuffer(); - for (String str : strArr) { - char[] stringArray = str.trim().toCharArray(); - stringArray[0] = Character.toUpperCase(stringArray[0]); - str = new String(stringArray); - - res.append(str).append(" "); - } - return res.toString().trim(); + private String translate(String key) { + return Arrays.stream(key.split("_")) + .map(it -> it.substring(0, 1).toUpperCase(Locale.ROOT) + it.substring(1)) + .collect(Collectors.joining(" ")); } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 711ab924..bc85a6ca 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -3,7 +3,10 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; +import galena.doom_and_gloom.content.entity.ISepulcherable; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -29,7 +32,6 @@ public ForgeEntrypoint() { } - private void onBlockInteract(PlayerInteractEvent.RightClickBlock event) { if (AmendmentsCompat.onBlockInteract(event.getLevel(), event.getPos(), event.getEntity(), @@ -45,8 +47,11 @@ public void onServerStart(ServerAboutToStartEvent event) { } private void onLivingDrops(LivingDropsEvent event) { - if (DoomAndGloom.onItemDrop(event.getEntity())) { - event.setCanceled(true); + if (event.getEntity() instanceof Player) return; + if (event.getEntity() instanceof LivingEntity le) { + if (ISepulcherable.cast(le).DG$wasSepulchered()) { + event.setCanceled(true); + } } } From 3ea45af001910c44b9d2ec4bfada645b60b30aa1 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 13:51:18 +0100 Subject: [PATCH 19/43] use oreganized lead item tier for hammer & enchanted item listings --- ...son => sell_enchanted_diamond_shovel.json} | 2 +- ...l.json => sell_enchanted_iron_shovel.json} | 2 +- .../doom_and_gloom/compat/CompatMods.java | 3 ++ .../content/listing/SellEnchantedListing.java | 43 +++++++++++++++++ .../doom_and_gloom/index/DGItemListings.java | 2 + .../doom_and_gloom/index/DGItemTiers.java | 47 +++---------------- .../galena/doom_and_gloom/index/DGItems.java | 2 +- forge/build.gradle.kts | 2 +- .../doom_and_gloom/data/DGItemListings.java | 6 +-- .../data/provider/ItemListingProvider.java | 8 ++++ .../doom_and_gloom/forge/ForgeEntrypoint.java | 5 ++ .../forge/compat/OreganizedCompat.java | 12 +++++ 12 files changed, 86 insertions(+), 48 deletions(-) rename common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/{sell_diamond_shovel.json => sell_enchanted_diamond_shovel.json} (85%) rename common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/{sell_iron_shovel.json => sell_enchanted_iron_shovel.json} (85%) create mode 100644 common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/compat/OreganizedCompat.java diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json similarity index 85% rename from common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json rename to common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json index fc611d06..affac070 100644 --- a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_diamond_shovel.json +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json @@ -1,5 +1,5 @@ { - "type": "minecraft:simple", + "type": "doom_and_gloom:sell_enchanted", "level": 5, "max_trades": 3, "offer": { diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_iron_shovel.json similarity index 85% rename from common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json rename to common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_iron_shovel.json index 9d64bd1a..e0ef6f7c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_iron_shovel.json +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_iron_shovel.json @@ -1,5 +1,5 @@ { - "type": "minecraft:simple", + "type": "doom_and_gloom:sell_enchanted", "level": 3, "max_trades": 3, "offer": { diff --git a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java index 843b57fc..5308b380 100644 --- a/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java +++ b/common/src/main/java/galena/doom_and_gloom/compat/CompatMods.java @@ -7,6 +7,9 @@ public class CompatMods { public static final String DYE_DEPOT_NAME = "dye_depot"; public static final String AMENDMENTS_NAME = "moonlight"; public static final String FARMERS_DELIGHT_NAME = "farmersdelight"; + public static final String OREGANIZED_NAME = "oreganized"; + public static final boolean DYE_DEPOT = PlatHelper.isModLoaded(DYE_DEPOT_NAME); public static final boolean AMENDMENTS = PlatHelper.isModLoaded(AMENDMENTS_NAME); + public static final boolean OREGANIZED = PlatHelper.isModLoaded(OREGANIZED_NAME); } diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java new file mode 100644 index 00000000..96b87b20 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java @@ -0,0 +1,43 @@ +package galena.doom_and_gloom.content.listing; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.mehvahdjukaar.moonlight.api.misc.StrOpt; +import net.mehvahdjukaar.moonlight.api.trades.ModItemListing; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.trading.MerchantOffer; + +/** + * this can be done on 1.21.1 with the default {@link net.mehvahdjukaar.moonlight.api.trades.SimpleItemListing} and loot functions + */ +public record SellEnchantedListing(ItemStack want, ItemStack offer, int maxTrades, int xp, float priceMult, + int level) implements ModItemListing { + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> + builder.group( + ItemStack.CODEC.fieldOf("price").forGetter(SellEnchantedListing::want), + ItemStack.CODEC.fieldOf("offer").forGetter(SellEnchantedListing::offer), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "max_trades", 16).forGetter(SellEnchantedListing::maxTrades), + StrOpt.of(ExtraCodecs.POSITIVE_INT, "xp", 1).forGetter(SellEnchantedListing::xp), + StrOpt.of(ExtraCodecs.POSITIVE_FLOAT, "price_multiplier", 1F).forGetter(SellEnchantedListing::priceMult), + StrOpt.of(Codec.intRange(1, 5), "level", 1).forGetter(SellEnchantedListing::level) + ).apply(builder, SellEnchantedListing::new) + ); + + @Override + public Codec getCodec() { + return CODEC; + } + + @Override + public MerchantOffer getOffer(Entity entity, RandomSource random) { + int level = 5 + random.nextInt(15); + var enchanted = EnchantmentHelper.enchantItem(random, offer.copy(), level, false); + return new MerchantOffer(want, enchanted, maxTrades, xp, priceMult); + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java b/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java index f3fc3187..ed742325 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItemListings.java @@ -2,6 +2,7 @@ import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.content.listing.BuyTagListing; +import galena.doom_and_gloom.content.listing.SellEnchantedListing; import galena.doom_and_gloom.content.listing.SellTagListing; import net.mehvahdjukaar.moonlight.api.trades.ItemListingRegistry; @@ -10,6 +11,7 @@ public class DGItemListings { public static void init() { ItemListingRegistry.registerSerializer(DoomAndGloom.modLoc("buy_tag"), BuyTagListing.CODEC); ItemListingRegistry.registerSerializer(DoomAndGloom.modLoc("sell_tag"), SellTagListing.CODEC); + ItemListingRegistry.registerSerializer(DoomAndGloom.modLoc("sell_enchanted"), SellEnchantedListing.CODEC); } } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java b/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java index 94df123e..11737dad 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItemTiers.java @@ -1,51 +1,18 @@ package galena.doom_and_gloom.index; -import java.util.function.Supplier; import net.minecraft.world.item.Tier; -import net.minecraft.world.item.crafting.Ingredient; -import org.jetbrains.annotations.NotNull; +import net.minecraft.world.item.Tiers; -// TODO remove and reference oreganized's lead item tier with a fallback? -public enum DGItemTiers implements Tier { - LEAD(0, 150, 7.0F, 1.5F, 8, () -> Ingredient.of(DGTags.Items.INGOTS_LEAD)); +public class DGItemTiers { - private final int level; - private final int durability; - private final float speed; - private final float damage; - private final int enchantmentValue; - private final Supplier repairIngredient; + private static Tier HAMMER_TIER = Tiers.IRON; - DGItemTiers(int level, int durability, float speed, float damage, int enchantmentValue, Supplier repairIngredient) { - this.level = level; - this.durability = durability; - this.speed = speed; - this.damage = damage; - this.enchantmentValue = enchantmentValue; - this.repairIngredient = repairIngredient; + public static Tier getHammerTier() { + return HAMMER_TIER; } - public int getUses() { - return this.durability; + public static void replaceHammerTier(Tier tier) { + HAMMER_TIER = tier; } - public float getSpeed() { - return this.speed; - } - - public float getAttackDamageBonus() { - return this.damage; - } - - public int getLevel() { - return this.level; - } - - public int getEnchantmentValue() { - return this.enchantmentValue; - } - - public @NotNull Ingredient getRepairIngredient() { - return this.repairIngredient.get(); - } } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java index 63036280..6e8657c9 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -16,7 +16,7 @@ public class DGItems { public static final RegSupplier MUSIC_DISC_AFTERLIFE = register("music_disc_afterlife", () -> PlatHelper.newMusicDisc(13, DGSoundEvents.MUSIC_DISC_AFTERLIFE, new Item.Properties().stacksTo(1).rarity(Rarity.RARE), 155)); // Crafting Materials - public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> new BushHammerItem(DGItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); + public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> new BushHammerItem(DGItemTiers.getHammerTier(), 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index d07082f4..d14322e4 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -41,12 +41,12 @@ dependencies { modImplementation(pack.forge.modrinth.farmers.delight) modImplementation(pack.forge.modrinth.supplementaries) modImplementation(pack.forge.modrinth.amendments) + modImplementation(libs.oreganized) modImplementation(libs.multikulti.core) modImplementation(libs.multikulti.datagen) if (!env.isCI) { - modRuntimeOnly(libs.oreganized) // this should be included transient with oreganized on 1.21 neoforge (just not possible with how forge works) modRuntimeOnly(libs.blueprint) modRuntimeOnly(libs.dye.depot) diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java index 6cc5dd63..56d03253 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java @@ -30,8 +30,7 @@ protected void run() { .sell("poppy", 1, new ItemStack(Items.FLOWER_POT, 8), 12, 5); builder(DGVillagerTypes.GRAVETENDER.getKey(), 3) - // TODO enchant - .sell("iron_shovel", 1, new ItemStack(Items.IRON_SHOVEL), 3, 10) + .sellEnchanted("iron_shovel", 1, new ItemStack(Items.IRON_SHOVEL), 3, 10) .buy("candles", 2, ItemTags.CANDLES, 6, 12, 2); builder(DGVillagerTypes.GRAVETENDER.getKey(), 4) @@ -39,8 +38,7 @@ protected void run() { .sell("wither_rose", 10, new ItemStack(Items.WITHER_ROSE, 2), 20, 8); builder(DGVillagerTypes.GRAVETENDER.getKey(), 5) - // TODO enchant - .sell("diamond_shovel", 13, new ItemStack(Items.DIAMOND_SHOVEL, 2), 3, 30); + .sellEnchanted("diamond_shovel", 13, new ItemStack(Items.DIAMOND_SHOVEL, 2), 3, 30); } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java b/forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java index c3673f65..7d15d3c1 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/provider/ItemListingProvider.java @@ -2,6 +2,7 @@ import com.mojang.serialization.JsonOps; import galena.doom_and_gloom.content.listing.BuyTagListing; +import galena.doom_and_gloom.content.listing.SellEnchantedListing; import galena.doom_and_gloom.content.listing.SellTagListing; import java.util.HashMap; import java.util.Optional; @@ -79,6 +80,13 @@ public LevelBuilder sell(String name, int emeralds, ItemStack offer, int maxTrad )); } + public LevelBuilder sellEnchanted(String name, int emeralds, ItemStack offer, int maxTrades, int xp) { + return add("sell_enchanted_" + name, new SellEnchantedListing( + new ItemStack(Items.EMERALD, emeralds), offer, + maxTrades, xp, 0.2F, level + )); + } + public LevelBuilder sell(String name, int emeralds, TagKey tag, int count, int maxTrades, int xp) { return add("sell_" + name, new SellTagListing( new ItemStack(Items.EMERALD, emeralds), tag, count, diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index bc85a6ca..c5d985c2 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -4,6 +4,7 @@ import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.content.entity.ISepulcherable; +import galena.doom_and_gloom.forge.compat.OreganizedCompat; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -27,6 +28,10 @@ public ForgeEntrypoint() { forgeBus.addListener(this::onBlockInteract); } + if (CompatMods.OREGANIZED) { + OreganizedCompat.init(); + } + forgeBus.addListener(this::onServerStart); forgeBus.addListener(this::onLivingDrops); } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/compat/OreganizedCompat.java b/forge/src/main/java/galena/doom_and_gloom/forge/compat/OreganizedCompat.java new file mode 100644 index 00000000..3737e415 --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/compat/OreganizedCompat.java @@ -0,0 +1,12 @@ +package galena.doom_and_gloom.forge.compat; + +import galena.doom_and_gloom.index.DGItemTiers; +import galena.oreganized.index.OItemTiers; + +public class OreganizedCompat { + + public static void init() { + DGItemTiers.replaceHammerTier(OItemTiers.LEAD); + } + +} From 443ef7ffca9c7c6ee65f667abf7b6fb90e05cbf4 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 14:09:43 +0100 Subject: [PATCH 20/43] fix item listing levels & add pathfinding debug renderer --- .../gravetender/sell_enchanted_diamond_shovel.json | 2 +- .../galena/doom_and_gloom/content/listing/BuyTagListing.java | 5 +++++ .../doom_and_gloom/content/listing/SellEnchantedListing.java | 5 +++++ .../doom_and_gloom/content/listing/SellTagListing.java | 5 +++++ fabric/build.gradle.kts | 1 + forge/build.gradle.kts | 1 + .../data/java/galena/doom_and_gloom/data/DGItemListings.java | 2 +- gradle/libs.versions.toml | 4 ++++ 8 files changed, 23 insertions(+), 2 deletions(-) diff --git a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json index affac070..83628ba5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json +++ b/common/src/generated/resources/data/doom_and_gloom/moonlight/villager_trades/gravetender/sell_enchanted_diamond_shovel.json @@ -3,7 +3,7 @@ "level": 5, "max_trades": 3, "offer": { - "Count": 2, + "Count": 1, "id": "minecraft:diamond_shovel", "tag": { "Damage": 0 diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java index c9e6eb16..098b5005 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/BuyTagListing.java @@ -34,6 +34,11 @@ public Codec getCodec() { return CODEC; } + @Override + public int getLevel() { + return level; + } + @Override public MerchantOffer getOffer(Entity entity, RandomSource random) { var registry = entity.level().registryAccess().registryOrThrow(Registries.ITEM); diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java index 96b87b20..2834ef9c 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/SellEnchantedListing.java @@ -33,6 +33,11 @@ public Codec getCodec() { return CODEC; } + @Override + public int getLevel() { + return level; + } + @Override public MerchantOffer getOffer(Entity entity, RandomSource random) { int level = 5 + random.nextInt(15); diff --git a/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java b/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java index 97ba9f26..0bee8ded 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java +++ b/common/src/main/java/galena/doom_and_gloom/content/listing/SellTagListing.java @@ -34,6 +34,11 @@ public Codec getCodec() { return CODEC; } + @Override + public int getLevel() { + return level; + } + @Override public MerchantOffer getOffer(Entity entity, RandomSource random) { var registry = entity.level().registryAccess().registryOrThrow(Registries.ITEM); diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index d2247d50..962f368d 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -12,5 +12,6 @@ dependencies { if (!env.isCI) { modRuntimeOnly(libs.jei.fabric) + modRuntimeOnly(libs.pathfinding.debug.fabric) } } diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index d14322e4..7aad8096 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -51,5 +51,6 @@ dependencies { modRuntimeOnly(libs.blueprint) modRuntimeOnly(libs.dye.depot) modRuntimeOnly(libs.jei.forge) + modRuntimeOnly(libs.pathfinding.debug.forge) } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java index 56d03253..529d4095 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGItemListings.java @@ -38,7 +38,7 @@ protected void run() { .sell("wither_rose", 10, new ItemStack(Items.WITHER_ROSE, 2), 20, 8); builder(DGVillagerTypes.GRAVETENDER.getKey(), 5) - .sellEnchanted("diamond_shovel", 13, new ItemStack(Items.DIAMOND_SHOVEL, 2), 3, 30); + .sellEnchanted("diamond_shovel", 13, new ItemStack(Items.DIAMOND_SHOVEL), 3, 30); } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b9443992..3c1020c1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,6 +2,7 @@ multikulti = "1.20.1-1.1.5" jei = "15.20.0.106" moonlight = "1.20-2.16.15" +pathfinding-debug = "1.20.1-1.1.0" [libraries] multikulti-core = { group = "com.possible-triangle", name = "multikulti-core-forge", version.ref = "multikulti" } @@ -21,5 +22,8 @@ moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", versio moonlight-lib-forge = { group = "net.mehvahdjukaar", name = "moonlight-forge", version.ref = "moonlight" } moonlight-lib-fabric = { group = "net.mehvahdjukaar", name = "moonlight-fabric", version.ref = "moonlight" } +pathfinding-debug-forge = { group = "com.possible-triangle", name = "pathfinding_renderer-forge", version.ref = "pathfinding-debug" } +pathfinding-debug-fabric = { group = "com.possible-triangle", name = "pathfinding_renderer-fabric", version.ref = "pathfinding-debug" } + [plugins] parchment = { id = "org.parchmentmc.librarian.forgegradle", version = "1.+" } From 4645ce8c6418baa342f1a42dbbbc98ea3a988c1f Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 14:16:47 +0100 Subject: [PATCH 21/43] directly call client init using platform helper --- .../forge/FogRenderingEvents.java | 46 ++++++++++++++ .../forge/ForgeClientEntrypoint.java | 61 ------------------- .../doom_and_gloom/forge/ForgeEntrypoint.java | 5 +- 3 files changed, 50 insertions(+), 62 deletions(-) create mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java delete mode 100644 forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java new file mode 100644 index 00000000..33e89f6f --- /dev/null +++ b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java @@ -0,0 +1,46 @@ +package galena.doom_and_gloom.forge; + +import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.client.FogRendering; +import java.awt.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ViewportEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber(bus = EventBusSubscriber.Bus.FORGE, modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT) +public class FogRenderingEvents { + + @SubscribeEvent + public static void clientTick(TickEvent.ClientTickEvent event) { + FogRendering.clientTick(); + } + + @SubscribeEvent + public static void fogEffectFog(ViewportEvent.RenderFog event) { + FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).ifPresent(factorData -> { + LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + float f = Mth.lerp(factorData.getFactor(entity, (float) event.getPartialTick()), event.getFarPlaneDistance(), 15F); + event.setNearPlaneDistance(event.getMode() == FogRenderer.FogMode.FOG_SKY ? -2F : f * -0.5F); + event.setFarPlaneDistance(f); + event.setCanceled(true); + }); + } + + @SubscribeEvent + public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { + var from = new Color(event.getRed(), event.getGreen(), event.getBlue()); + FogRendering.fogEffectColor(from, (float) event.getPartialTick()).ifPresent(to -> { + event.setRed(to.getRed()); + event.setGreen(to.getGreen()); + event.setBlue(to.getBlue()); + }); + } + +} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java deleted file mode 100644 index b5826355..00000000 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeClientEntrypoint.java +++ /dev/null @@ -1,61 +0,0 @@ -package galena.doom_and_gloom.forge; - -import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.DoomAndGloomClient; -import galena.doom_and_gloom.client.FogRendering; -import java.awt.*; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.util.Mth; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.LivingEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.ViewportEvent; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD, modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT) -public class ForgeClientEntrypoint { - - //this could also be replaced with the call in ForgeEntryPoint - @SubscribeEvent - public static void setup(FMLClientSetupEvent event) { - event.enqueueWork(DoomAndGloomClient::init); - } - - - //TODO: all these have to be done with mixin on fabric - @EventBusSubscriber(modid = DoomAndGloom.MOD_ID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.FORGE) - public static class ForgeBusEvents { - - @SubscribeEvent - public static void clientTick(TickEvent.ClientTickEvent event) { - FogRendering.clientTick(); - } - - @SubscribeEvent - public static void fogEffectFog(ViewportEvent.RenderFog event) { - FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).ifPresent(factorData -> { - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float f = Mth.lerp(factorData.getFactor(entity, (float) event.getPartialTick()), event.getFarPlaneDistance(), 15F); - event.setNearPlaneDistance(event.getMode() == FogRenderer.FogMode.FOG_SKY ? -2F : f * -0.5F); - event.setFarPlaneDistance(f); - event.setCanceled(true); - }); - } - - @SubscribeEvent - public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { - var from = new Color(event.getRed(), event.getGreen(), event.getBlue()); - FogRendering.fogEffectColor(from, (float) event.getPartialTick()).ifPresent(to -> { - event.setRed(to.getRed()); - event.setGreen(to.getGreen()); - event.setBlue(to.getBlue()); - }); - } - - } - -} diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index c5d985c2..b978a400 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -1,10 +1,12 @@ package galena.doom_and_gloom.forge; import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.client.DoomAndGloomClient; import galena.doom_and_gloom.compat.AmendmentsCompat; import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.content.entity.ISepulcherable; import galena.doom_and_gloom.forge.compat.OreganizedCompat; +import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -21,7 +23,8 @@ public class ForgeEntrypoint { public ForgeEntrypoint() { DoomAndGloom.init(); - //if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); + if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); + IEventBus forgeBus = MinecraftForge.EVENT_BUS; if (CompatMods.AMENDMENTS) { From cce061d0cc1d1813c0f8b1ea02d02e8f43e8ca1b Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 14:30:15 +0100 Subject: [PATCH 22/43] move client methods to DoomAndGloomClient to fix server startup crashes --- .../client/DoomAndGloomClient.java | 27 +++++++++++++++++++ .../content/block/SepulcherBlock.java | 13 --------- .../content/block/StoneTabletBlock.java | 12 --------- .../packet/EngraveStoneTabletPacket.java | 4 +-- .../packet/SepulcherConsumesDeathPacket.java | 4 +-- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index 632b0fb4..3141fb0a 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -8,12 +8,18 @@ import galena.doom_and_gloom.client.particle.FogParticle; import galena.doom_and_gloom.client.render.entity.DirtMoundRenderer; import galena.doom_and_gloom.client.render.entity.HollerRender; +import galena.doom_and_gloom.client.screen.StoneTabletScreen; +import galena.doom_and_gloom.content.block.StoneTabletBlockEntity; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGEntityTypes; import galena.doom_and_gloom.index.DGParticleTypes; import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; +import net.minecraft.client.Minecraft; import net.minecraft.client.particle.SoulParticle; +import net.minecraft.client.particle.TerrainParticle; import net.minecraft.client.renderer.RenderType; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; public class DoomAndGloomClient { @@ -57,5 +63,26 @@ private static void registerParticleFactories(ClientHelper.ParticleEvent event) event.register(DGParticleTypes.HOLLERING_SOUL.get(), SoulParticle.Provider::new); } + public static void spawnConsumeParticles(Vec3 at) { + var level = Minecraft.getInstance().level; + if (level == null) return; + + var particles = Minecraft.getInstance().particleEngine; + var state = DGBlocks.ROTTING_FLESH.get().defaultBlockState(); + for (int i = 0; i < 20; i++) { + var vec = at.add(level.random.nextDouble() - 0.5, level.random.nextDouble() * 2, level.random.nextDouble() - 0.5); + particles.add(new TerrainParticle(level, vec.x, vec.y, vec.z, 0.0, 0.0, 0.0, state)); + } + } + + public static void openStoneTabletScreen(BlockPos pos) { + Minecraft mc = Minecraft.getInstance(); + var level = mc.level; + var player = mc.player; + if (level != null && player != null && level.getBlockEntity(pos) instanceof StoneTabletBlockEntity tile) { + var stack = player.getItemInHand(player.getUsedItemHand()); + mc.setScreen(new StoneTabletScreen(tile, stack, mc.isTextFilteringEnabled())); + } + } } diff --git a/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java index 6db5efaa..dddb93a4 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/SepulcherBlock.java @@ -7,7 +7,6 @@ import java.awt.*; import net.minecraft.Util; import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.TerrainParticle; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; @@ -119,18 +118,6 @@ public static void extract(@Nullable Entity user, BlockState state, Level level, clear(user, state, level, pos); } - public static void spawnConsumeParticles(Vec3 at) { - var level = Minecraft.getInstance().level; - if (level == null) return; - - var particles = Minecraft.getInstance().particleEngine; - var state = DGBlocks.ROTTING_FLESH.get().defaultBlockState(); - for (int i = 0; i < 20; i++) { - var vec = at.add(level.random.nextDouble() - 0.5, level.random.nextDouble() * 2, level.random.nextDouble() - 0.5); - particles.add(new TerrainParticle(level, vec.x, vec.y, vec.z, 0.0, 0.0, 0.0, state)); - } - } - public static void spawnRottingParticles(BlockPos at) { var level = Minecraft.getInstance().level; if (level == null) return; diff --git a/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java index b0e30ca2..1e2ba301 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java +++ b/common/src/main/java/galena/doom_and_gloom/content/block/StoneTabletBlock.java @@ -1,13 +1,11 @@ package galena.doom_and_gloom.content.block; -import galena.doom_and_gloom.client.screen.StoneTabletScreen; import galena.doom_and_gloom.index.DGBlockEntities; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.network.DGNetwork; import galena.doom_and_gloom.network.packet.EngraveStoneTabletPacket; import java.util.Arrays; import java.util.UUID; -import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -226,16 +224,6 @@ private boolean otherPlayerIsEditingSign(Player player, StoneTabletBlockEntity s return id != null && !id.equals(player.getUUID()); } - public static void openScreen(BlockPos pos) { - Minecraft mc = Minecraft.getInstance(); - var level = mc.level; - var player = mc.player; - if (level != null && player != null && level.getBlockEntity(pos) instanceof StoneTabletBlockEntity tile) { - var stack = player.getItemInHand(player.getUsedItemHand()); - mc.setScreen(new StoneTabletScreen(tile, stack, mc.isTextFilteringEnabled())); - } - } - @Override public BlockEntityType getType() { return DGBlockEntities.STONE_TABLET.get(); diff --git a/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java index bd8eb811..5c63259d 100644 --- a/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/EngraveStoneTabletPacket.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.network.packet; -import galena.doom_and_gloom.content.block.StoneTabletBlock; +import galena.doom_and_gloom.client.DoomAndGloomClient; import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; import net.mehvahdjukaar.moonlight.api.platform.network.Message; import net.minecraft.core.BlockPos; @@ -15,7 +15,7 @@ public void writeToBuffer(FriendlyByteBuf buffer) { @Override public void handle(ChannelHandler.Context context) { - StoneTabletBlock.openScreen(pos); + DoomAndGloomClient.openStoneTabletScreen(pos); } public static EngraveStoneTabletPacket from(FriendlyByteBuf buffer) { diff --git a/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java index c9c752b1..281f9c09 100644 --- a/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java +++ b/common/src/main/java/galena/doom_and_gloom/network/packet/SepulcherConsumesDeathPacket.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.network.packet; -import galena.doom_and_gloom.content.block.SepulcherBlock; +import galena.doom_and_gloom.client.DoomAndGloomClient; import net.mehvahdjukaar.moonlight.api.platform.network.ChannelHandler; import net.mehvahdjukaar.moonlight.api.platform.network.Message; import net.minecraft.network.FriendlyByteBuf; @@ -15,7 +15,7 @@ public void writeToBuffer(FriendlyByteBuf buffer) { @Override public void handle(ChannelHandler.Context context) { - SepulcherBlock.spawnConsumeParticles(at); + DoomAndGloomClient.spawnConsumeParticles(at); } public static SepulcherConsumesDeathPacket from(FriendlyByteBuf buffer) { From a83d82d75c73a9fa805dcff710f3114b13439eb6 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 14:53:09 +0100 Subject: [PATCH 23/43] update fallback-able recipes to work on both fabric & forge --- .../recipes/decorations/sepulcher.json | 50 ++++++++++++++++ .../decorations/sepulcher_fallback.json | 50 ++++++++++++++++ .../advancements/recipes/sepulcher.json | 48 --------------- .../recipes/sepulcher_fallback.json | 45 -------------- .../doom_and_gloom/recipes/sepulcher.json | 59 ++++++++++--------- .../recipes/sepulcher_fallback.json | 56 ++++++++++-------- .../galena/doom_and_gloom/data/DGRecipes.java | 24 ++++---- gradle/libs.versions.toml | 2 +- 8 files changed, 171 insertions(+), 163 deletions(-) create mode 100644 common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json create mode 100644 common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json delete mode 100644 common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json delete mode 100644 common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json new file mode 100644 index 00000000..98553e87 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json @@ -0,0 +1,50 @@ +{ + "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:not", + "value": { + "type": "forge:tag_empty", + "tag": "forge:ingots/silver" + } + } + ], + "criteria": { + "has_ingredient": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "doom_and_gloom:sepulcher" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "fabric:load_conditions": [ + { + "condition": "fabric:tags_populated", + "values": [ + "forge:ingots/silver" + ] + } + ], + "requirements": [ + [ + "has_ingredient", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "doom_and_gloom:sepulcher" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json new file mode 100644 index 00000000..1df95b71 --- /dev/null +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json @@ -0,0 +1,50 @@ +{ + "parent": "minecraft:recipes/root", + "conditions": [ + { + "type": "forge:tag_empty", + "tag": "forge:ingots/silver" + } + ], + "criteria": { + "has_ingredient": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/iron" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "doom_and_gloom:sepulcher_fallback" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:tags_populated", + "values": [ + "forge:ingots/silver" + ] + } + } + ], + "requirements": [ + [ + "has_ingredient", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "doom_and_gloom:sepulcher_fallback" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json deleted file mode 100644 index 7e1ab147..00000000 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "advancements": [ - { - "advancement": { - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "conditions": { - "items": [ - { - "tag": "forge:ingots/silver" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "doom_and_gloom:sepulcher" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "doom_and_gloom:sepulcher" - ] - }, - "sends_telemetry_event": false - }, - "conditions": [ - { - "type": "forge:not", - "value": { - "type": "forge:tag_empty", - "tag": "forge:ingots/silver" - } - } - ] - } - ] -} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json deleted file mode 100644 index cdb31a3e..00000000 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/sepulcher_fallback.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "advancements": [ - { - "advancement": { - "parent": "minecraft:recipes/root", - "criteria": { - "has_ingredient": { - "conditions": { - "items": [ - { - "tag": "forge:ingots/iron" - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "doom_and_gloom:sepulcher" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "doom_and_gloom:sepulcher" - ] - }, - "sends_telemetry_event": false - }, - "conditions": [ - { - "type": "forge:tag_empty", - "tag": "forge:ingots/silver" - } - ] - } - ] -} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json index 165a7b4a..9435b7e2 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json @@ -1,34 +1,35 @@ { - "type": "forge:conditional", - "recipes": [ + "type": "minecraft:crafting_shaped", + "category": "misc", + "conditions": [ { - "conditions": [ - { - "type": "forge:not", - "value": { - "type": "forge:tag_empty", - "tag": "forge:ingots/silver" - } - } - ], - "recipe": { - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "#": { - "tag": "forge:ingots/silver" - } - }, - "pattern": [ - "# #", - "# #", - "###" - ], - "result": { - "item": "doom_and_gloom:sepulcher" - }, - "show_notification": true + "type": "forge:not", + "value": { + "type": "forge:tag_empty", + "tag": "forge:ingots/silver" } } - ] + ], + "fabric:load_conditions": [ + { + "condition": "fabric:tags_populated", + "values": [ + "forge:ingots/silver" + ] + } + ], + "key": { + "#": { + "tag": "forge:ingots/silver" + } + }, + "pattern": [ + "# #", + "# #", + "###" + ], + "result": { + "item": "doom_and_gloom:sepulcher" + }, + "show_notification": true } \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json index 765dbfe7..f83574ba 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json @@ -1,31 +1,35 @@ { - "type": "forge:conditional", - "recipes": [ + "type": "minecraft:crafting_shaped", + "category": "misc", + "conditions": [ { - "conditions": [ - { - "type": "forge:tag_empty", - "tag": "forge:ingots/silver" - } - ], - "recipe": { - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "#": { - "tag": "forge:ingots/iron" - } - }, - "pattern": [ - "# #", - "# #", - "###" - ], - "result": { - "item": "doom_and_gloom:sepulcher" - }, - "show_notification": true + "type": "forge:tag_empty", + "tag": "forge:ingots/silver" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:tags_populated", + "values": [ + "forge:ingots/silver" + ] } } - ] + ], + "key": { + "#": { + "tag": "forge:ingots/iron" + } + }, + "pattern": [ + "# #", + "# #", + "###" + ], + "result": { + "item": "doom_and_gloom:sepulcher" + }, + "show_notification": true } \ No newline at end of file diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java index 82a17d4f..05be8c3e 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java @@ -2,6 +2,8 @@ import com.possible_triangle.multikulti.datagen.conditions.Conditional; import com.possible_triangle.multikulti.datagen.conditions.ModLoaded; +import com.possible_triangle.multikulti.datagen.conditions.TagEmpty; +import com.possible_triangle.multikulti.datagen.conditions.TagPopulated; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.compat.DyeColors; @@ -27,9 +29,6 @@ import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import net.minecraftforge.common.ToolActions; -import net.minecraftforge.common.crafting.ConditionalRecipe; -import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; import vectorwing.farmersdelight.common.crafting.ingredient.ToolActionIngredient; import vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder; @@ -117,19 +116,16 @@ protected void buildRecipes(Consumer consumer) { private Consumer> withFallback(TagKey prefer, TagKey fallback, Function, RecipeBuilder> builder) { return consumer -> { var preferredRecipe = builder.apply(prefer).unlockedBy("has_ingredient", has(prefer)); + var fallbackRecipe = builder.apply(fallback).unlockedBy("has_ingredient", has(fallback)); var id = RecipeBuilder.getDefaultRecipeId(preferredRecipe.getResult()); - ConditionalRecipe.builder() - .addCondition(new NotCondition(new TagEmptyCondition(prefer.location()))) - .addRecipe(preferredRecipe::save) - .generateAdvancement() - .build(consumer, id); - - ConditionalRecipe.builder() - .addCondition(new TagEmptyCondition(prefer.location())) - .addRecipe(builder.apply(fallback).unlockedBy("has_ingredient", has(fallback))::save) - .generateAdvancement() - .build(consumer, id.withSuffix("_fallback")); + Conditional.with(this, List.of(new TagPopulated(prefer)), () -> + preferredRecipe.save(consumer, id) + ); + + Conditional.with(this, List.of(new TagEmpty(prefer)), () -> + fallbackRecipe.save(consumer, id.withSuffix("_fallback")) + ); }; } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3c1020c1..c3459641 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -multikulti = "1.20.1-1.1.5" +multikulti = "1.20.1-45-SNAPSHOT" jei = "15.20.0.106" moonlight = "1.20-2.16.15" pathfinding-debug = "1.20.1-1.1.0" From 1263dbf152e4e8b9eeec945881e267c422b33674 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 15:24:35 +0100 Subject: [PATCH 24/43] fix creative tab contents, always create vigil candles for all colors & add 'dyed' tags to vigil candles --- .../data/forge/tags/blocks/dyed/amber.json | 8 ++++ .../data/forge/tags/blocks/dyed/aqua.json | 8 ++++ .../data/forge/tags/blocks/dyed/beige.json | 8 ++++ .../data/forge/tags/blocks/dyed/black.json | 8 ++++ .../data/forge/tags/blocks/dyed/blue.json | 8 ++++ .../data/forge/tags/blocks/dyed/brown.json | 8 ++++ .../data/forge/tags/blocks/dyed/coral.json | 8 ++++ .../data/forge/tags/blocks/dyed/cyan.json | 8 ++++ .../data/forge/tags/blocks/dyed/forest.json | 8 ++++ .../data/forge/tags/blocks/dyed/ginger.json | 8 ++++ .../data/forge/tags/blocks/dyed/gray.json | 8 ++++ .../data/forge/tags/blocks/dyed/green.json | 8 ++++ .../data/forge/tags/blocks/dyed/indigo.json | 8 ++++ .../forge/tags/blocks/dyed/light_blue.json | 8 ++++ .../forge/tags/blocks/dyed/light_gray.json | 8 ++++ .../data/forge/tags/blocks/dyed/lime.json | 8 ++++ .../data/forge/tags/blocks/dyed/magenta.json | 8 ++++ .../data/forge/tags/blocks/dyed/maroon.json | 8 ++++ .../data/forge/tags/blocks/dyed/mint.json | 8 ++++ .../data/forge/tags/blocks/dyed/navy.json | 8 ++++ .../data/forge/tags/blocks/dyed/olive.json | 8 ++++ .../data/forge/tags/blocks/dyed/orange.json | 8 ++++ .../data/forge/tags/blocks/dyed/pink.json | 8 ++++ .../data/forge/tags/blocks/dyed/purple.json | 8 ++++ .../data/forge/tags/blocks/dyed/red.json | 8 ++++ .../data/forge/tags/blocks/dyed/rose.json | 8 ++++ .../data/forge/tags/blocks/dyed/slate.json | 8 ++++ .../data/forge/tags/blocks/dyed/tan.json | 8 ++++ .../data/forge/tags/blocks/dyed/teal.json | 8 ++++ .../data/forge/tags/blocks/dyed/verdant.json | 8 ++++ .../data/forge/tags/blocks/dyed/white.json | 8 ++++ .../data/forge/tags/blocks/dyed/yellow.json | 8 ++++ .../data/forge/tags/items/dyed/amber.json | 8 ++++ .../data/forge/tags/items/dyed/aqua.json | 8 ++++ .../data/forge/tags/items/dyed/beige.json | 8 ++++ .../data/forge/tags/items/dyed/black.json | 8 ++++ .../data/forge/tags/items/dyed/blue.json | 8 ++++ .../data/forge/tags/items/dyed/brown.json | 8 ++++ .../data/forge/tags/items/dyed/coral.json | 8 ++++ .../data/forge/tags/items/dyed/cyan.json | 8 ++++ .../data/forge/tags/items/dyed/forest.json | 8 ++++ .../data/forge/tags/items/dyed/ginger.json | 8 ++++ .../data/forge/tags/items/dyed/gray.json | 8 ++++ .../data/forge/tags/items/dyed/green.json | 8 ++++ .../data/forge/tags/items/dyed/indigo.json | 8 ++++ .../forge/tags/items/dyed/light_blue.json | 8 ++++ .../forge/tags/items/dyed/light_gray.json | 8 ++++ .../data/forge/tags/items/dyed/lime.json | 8 ++++ .../data/forge/tags/items/dyed/magenta.json | 8 ++++ .../data/forge/tags/items/dyed/maroon.json | 8 ++++ .../data/forge/tags/items/dyed/mint.json | 8 ++++ .../data/forge/tags/items/dyed/navy.json | 8 ++++ .../data/forge/tags/items/dyed/olive.json | 8 ++++ .../data/forge/tags/items/dyed/orange.json | 8 ++++ .../data/forge/tags/items/dyed/pink.json | 8 ++++ .../data/forge/tags/items/dyed/purple.json | 8 ++++ .../data/forge/tags/items/dyed/red.json | 8 ++++ .../data/forge/tags/items/dyed/rose.json | 8 ++++ .../data/forge/tags/items/dyed/slate.json | 8 ++++ .../data/forge/tags/items/dyed/tan.json | 8 ++++ .../data/forge/tags/items/dyed/teal.json | 8 ++++ .../data/forge/tags/items/dyed/verdant.json | 8 ++++ .../data/forge/tags/items/dyed/white.json | 8 ++++ .../data/forge/tags/items/dyed/yellow.json | 8 ++++ .../doom_and_gloom/DGItemTabContents.java | 40 +++++++++++++++++++ .../galena/doom_and_gloom/DoomAndGloom.java | 33 +-------------- .../doom_and_gloom/compat/DyeColors.java | 26 ------------ .../galena/doom_and_gloom/index/DGBlocks.java | 4 +- .../galena/doom_and_gloom/index/DGTags.java | 31 +++++++++++--- fabric/build.gradle.kts | 3 ++ forge/build.gradle.kts | 2 +- .../doom_and_gloom/data/DGBlockTags.java | 4 ++ .../doom_and_gloom/data/DGItemTags.java | 5 +++ .../galena/doom_and_gloom/data/DGRecipes.java | 5 ++- gradle/libs.versions.toml | 3 +- 75 files changed, 598 insertions(+), 70 deletions(-) create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/black.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/green.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/red.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/white.json create mode 100644 common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/amber.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/aqua.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/beige.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/black.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/blue.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/brown.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/coral.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/cyan.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/forest.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/ginger.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/gray.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/green.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/indigo.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/lime.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/magenta.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/maroon.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/mint.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/navy.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/olive.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/orange.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/pink.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/purple.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/red.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/rose.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/slate.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/tan.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/teal.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/verdant.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/white.json create mode 100644 common/src/generated/resources/data/forge/tags/items/dyed/yellow.json create mode 100644 common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java delete mode 100644 common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json new file mode 100644 index 00000000..8956aabd --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:amber_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json new file mode 100644 index 00000000..f22d06c7 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:aqua_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json new file mode 100644 index 00000000..f694e878 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:beige_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/black.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/black.json new file mode 100644 index 00000000..f869c189 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/black.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:black_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json new file mode 100644 index 00000000..4798d1f7 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:blue_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json new file mode 100644 index 00000000..1d58550b --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:brown_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json new file mode 100644 index 00000000..65fc5499 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:coral_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json new file mode 100644 index 00000000..8aa9fa9d --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:cyan_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json new file mode 100644 index 00000000..9d2fdd35 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:forest_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json new file mode 100644 index 00000000..eb4b414f --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:ginger_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json new file mode 100644 index 00000000..88c273a0 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:gray_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/green.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/green.json new file mode 100644 index 00000000..e0caeae8 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/green.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:green_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json new file mode 100644 index 00000000..1365bec5 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:indigo_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json new file mode 100644 index 00000000..ddea3cbb --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:light_blue_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json new file mode 100644 index 00000000..8ee6714a --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:light_gray_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json new file mode 100644 index 00000000..0669f47a --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:lime_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json new file mode 100644 index 00000000..c3bc6d74 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:magenta_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json new file mode 100644 index 00000000..565a9cf1 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:maroon_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json new file mode 100644 index 00000000..aef97a2e --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:mint_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json new file mode 100644 index 00000000..8ca479f9 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:navy_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json new file mode 100644 index 00000000..3013ec61 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:olive_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json new file mode 100644 index 00000000..e153a95c --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:orange_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json new file mode 100644 index 00000000..4d60fb12 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:pink_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json new file mode 100644 index 00000000..bc250e18 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:purple_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/red.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/red.json new file mode 100644 index 00000000..456da6d0 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/red.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:red_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json new file mode 100644 index 00000000..76d203d4 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:rose_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json new file mode 100644 index 00000000..39eefdcb --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:slate_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json new file mode 100644 index 00000000..a7425362 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:tan_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json new file mode 100644 index 00000000..596bb806 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:teal_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json new file mode 100644 index 00000000..fad7af1c --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:verdant_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/white.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/white.json new file mode 100644 index 00000000..d015d4cd --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/white.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:white_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json b/common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json new file mode 100644 index 00000000..d4d08ac3 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:yellow_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/amber.json b/common/src/generated/resources/data/forge/tags/items/dyed/amber.json new file mode 100644 index 00000000..8956aabd --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/amber.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:amber_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/aqua.json b/common/src/generated/resources/data/forge/tags/items/dyed/aqua.json new file mode 100644 index 00000000..f22d06c7 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/aqua.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:aqua_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/beige.json b/common/src/generated/resources/data/forge/tags/items/dyed/beige.json new file mode 100644 index 00000000..f694e878 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/beige.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:beige_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/black.json b/common/src/generated/resources/data/forge/tags/items/dyed/black.json new file mode 100644 index 00000000..f869c189 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/black.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:black_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/blue.json b/common/src/generated/resources/data/forge/tags/items/dyed/blue.json new file mode 100644 index 00000000..4798d1f7 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/blue.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:blue_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/brown.json b/common/src/generated/resources/data/forge/tags/items/dyed/brown.json new file mode 100644 index 00000000..1d58550b --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/brown.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:brown_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/coral.json b/common/src/generated/resources/data/forge/tags/items/dyed/coral.json new file mode 100644 index 00000000..65fc5499 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/coral.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:coral_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/cyan.json b/common/src/generated/resources/data/forge/tags/items/dyed/cyan.json new file mode 100644 index 00000000..8aa9fa9d --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/cyan.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:cyan_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/forest.json b/common/src/generated/resources/data/forge/tags/items/dyed/forest.json new file mode 100644 index 00000000..9d2fdd35 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/forest.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:forest_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/ginger.json b/common/src/generated/resources/data/forge/tags/items/dyed/ginger.json new file mode 100644 index 00000000..eb4b414f --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/ginger.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:ginger_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/gray.json b/common/src/generated/resources/data/forge/tags/items/dyed/gray.json new file mode 100644 index 00000000..88c273a0 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/gray.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:gray_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/green.json b/common/src/generated/resources/data/forge/tags/items/dyed/green.json new file mode 100644 index 00000000..e0caeae8 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/green.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:green_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/indigo.json b/common/src/generated/resources/data/forge/tags/items/dyed/indigo.json new file mode 100644 index 00000000..1365bec5 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/indigo.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:indigo_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json b/common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json new file mode 100644 index 00000000..ddea3cbb --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:light_blue_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json b/common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json new file mode 100644 index 00000000..8ee6714a --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:light_gray_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/lime.json b/common/src/generated/resources/data/forge/tags/items/dyed/lime.json new file mode 100644 index 00000000..0669f47a --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/lime.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:lime_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/magenta.json b/common/src/generated/resources/data/forge/tags/items/dyed/magenta.json new file mode 100644 index 00000000..c3bc6d74 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/magenta.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:magenta_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/maroon.json b/common/src/generated/resources/data/forge/tags/items/dyed/maroon.json new file mode 100644 index 00000000..565a9cf1 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/maroon.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:maroon_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/mint.json b/common/src/generated/resources/data/forge/tags/items/dyed/mint.json new file mode 100644 index 00000000..aef97a2e --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/mint.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:mint_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/navy.json b/common/src/generated/resources/data/forge/tags/items/dyed/navy.json new file mode 100644 index 00000000..8ca479f9 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/navy.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:navy_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/olive.json b/common/src/generated/resources/data/forge/tags/items/dyed/olive.json new file mode 100644 index 00000000..3013ec61 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/olive.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:olive_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/orange.json b/common/src/generated/resources/data/forge/tags/items/dyed/orange.json new file mode 100644 index 00000000..e153a95c --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/orange.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:orange_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/pink.json b/common/src/generated/resources/data/forge/tags/items/dyed/pink.json new file mode 100644 index 00000000..4d60fb12 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/pink.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:pink_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/purple.json b/common/src/generated/resources/data/forge/tags/items/dyed/purple.json new file mode 100644 index 00000000..bc250e18 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/purple.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:purple_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/red.json b/common/src/generated/resources/data/forge/tags/items/dyed/red.json new file mode 100644 index 00000000..456da6d0 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/red.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:red_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/rose.json b/common/src/generated/resources/data/forge/tags/items/dyed/rose.json new file mode 100644 index 00000000..76d203d4 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/rose.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:rose_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/slate.json b/common/src/generated/resources/data/forge/tags/items/dyed/slate.json new file mode 100644 index 00000000..39eefdcb --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/slate.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:slate_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/tan.json b/common/src/generated/resources/data/forge/tags/items/dyed/tan.json new file mode 100644 index 00000000..a7425362 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/tan.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:tan_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/teal.json b/common/src/generated/resources/data/forge/tags/items/dyed/teal.json new file mode 100644 index 00000000..596bb806 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/teal.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:teal_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/verdant.json b/common/src/generated/resources/data/forge/tags/items/dyed/verdant.json new file mode 100644 index 00000000..fad7af1c --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/verdant.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:verdant_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/white.json b/common/src/generated/resources/data/forge/tags/items/dyed/white.json new file mode 100644 index 00000000..d015d4cd --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/white.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:white_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/yellow.json b/common/src/generated/resources/data/forge/tags/items/dyed/yellow.json new file mode 100644 index 00000000..d4d08ac3 --- /dev/null +++ b/common/src/generated/resources/data/forge/tags/items/dyed/yellow.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "doom_and_gloom:yellow_vigil_candle", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java b/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java new file mode 100644 index 00000000..6bb1d611 --- /dev/null +++ b/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java @@ -0,0 +1,40 @@ +package galena.doom_and_gloom; + +import galena.doom_and_gloom.index.DGBlocks; +import galena.doom_and_gloom.index.DGItems; +import galena.doom_and_gloom.index.DGTags; +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; +import net.mehvahdjukaar.moonlight.api.platform.RegHelper; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; + +public class DGItemTabContents { + + public static void addItemsToTabs(RegHelper.ItemToTabEvent event) { + var vigilCandles = DGBlocks.vigilCandles().map(RegSupplier::get).toArray(ItemLike[]::new); + + event.addAfter(CreativeModeTabs.FUNCTIONAL_BLOCKS, stack -> stack.is(DGTags.Items.VANILLA_LANTERNS), vigilCandles); + event.addAfter(CreativeModeTabs.COLORED_BLOCKS, stack -> stack.is(ItemTags.CANDLES), vigilCandles); + + event.add(CreativeModeTabs.BUILDING_BLOCKS, DGBlocks.BONE_PILE.get()); + event.addAfter(CreativeModeTabs.FUNCTIONAL_BLOCKS, stack -> stack.is(Items.COMPOSTER), DGBlocks.SEPULCHER.get()); + event.addAfter(CreativeModeTabs.FUNCTIONAL_BLOCKS, stack -> stack.is(Items.INFESTED_DEEPSLATE), DGBlocks.BURIAL_DIRT.get()); + + event.add(CreativeModeTabs.SPAWN_EGGS, DGItems.HOLLER_SPAWN_EGG.get()); + + event.addAfter(CreativeModeTabs.TOOLS_AND_UTILITIES, stack -> stack.is(ItemTags.MUSIC_DISCS), DGItems.MUSIC_DISC_AFTERLIFE.get()); + + //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { + // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); + // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); + //} + + //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { + // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); + // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); + //} + } + +} diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index c80887c5..6be749cc 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -3,14 +3,9 @@ import galena.doom_and_gloom.gen.VillageStructureModifier; import galena.doom_and_gloom.index.*; import galena.doom_and_gloom.network.DGNetwork; -import java.util.ArrayList; -import java.util.List; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; -import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.ItemLike; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -38,36 +33,10 @@ public static void init() { DGNetwork.register(); - RegHelper.addItemsToTabsRegistration(DoomAndGloom::addItemsToTabs); + RegHelper.addItemsToTabsRegistration(DGItemTabContents::addItemsToTabs); } - public static void addItemsToTabs(RegHelper.ItemToTabEvent event) { - - List allCandles = new ArrayList<>(); - allCandles.add(DGBlocks.VIGIL_CANDLE.get()); - DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> allCandles.add(block.get())); - - event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, stack -> stack.is(DGTags.Items.VANILLA_LANTERNS), - allCandles.toArray(ItemLike[]::new)); - - event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, i -> i.is(Items.BONE_BLOCK), DGBlocks.BONE_PILE.get()); - - event.addAfter(CreativeModeTabs.BUILDING_BLOCKS, i -> i.is(Items.INFESTED_DEEPSLATE), DGBlocks.BURIAL_DIRT.get()); - - event.add(CreativeModeTabs.SPAWN_EGGS, DGItems.HOLLER_SPAWN_EGG.get()); - - //if (tab == CreativeModeTabs.TOOLS_AND_UTILITIES) { - // event.accept(new ItemStack(OItems.BUSH_HAMMER.get())); - // event.accept(new ItemStack(OItems.HAMMER_AND_CHISEL.get())); - //} - - //if (tab == CreativeModeTabs.FUNCTIONAL_BLOCKS) { - // event.accept(new ItemStack(OBlocks.STONE_TABLET.get())); - // event.accept(new ItemStack(OBlocks.CRACKED_STONE_TABLET.get())); - //} - } - public static void onServerAboutToStart(MinecraftServer server) { VillageStructureModifier.setup(server.registryAccess()); } diff --git a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java b/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java deleted file mode 100644 index d09a4e4e..00000000 --- a/common/src/main/java/galena/doom_and_gloom/compat/DyeColors.java +++ /dev/null @@ -1,26 +0,0 @@ -package galena.doom_and_gloom.compat; - -import java.util.Objects; -import java.util.Optional; -import java.util.function.Function; -import java.util.stream.Stream; -import net.minecraft.world.item.DyeColor; - -public class DyeColors { - private static Stream vanillaColors() { - return Stream.of(DyeColor.WHITE, DyeColor.LIGHT_GRAY, DyeColor.GRAY, DyeColor.BLACK, DyeColor.BROWN, DyeColor.RED, DyeColor.ORANGE, DyeColor.YELLOW, DyeColor.LIME, DyeColor.GREEN, DyeColor.CYAN, DyeColor.LIGHT_BLUE, DyeColor.BLUE, DyeColor.PURPLE, DyeColor.MAGENTA, DyeColor.PINK); - } - - private static Stream depotColors() { - return !CompatMods.DYE_DEPOT ? Stream.empty() : Stream.of("amber", "aqua", "beige", "coral", "forest", "ginger", "indigo", "maroon", "mint", "navy", "olive", "rose", "slate", "tan", "teal", "verdant").map((it) -> DyeColor.byName(it, (DyeColor) null)).filter(Objects::nonNull); - } - - public static Optional modNamespace(DyeColor color) { - if (color.getId() > 15) return Optional.of(CompatMods.DYE_DEPOT_NAME); - return Optional.empty(); - } - - public static Stream supported() { - return Stream.of(vanillaColors(), depotColors()).flatMap(Function.identity()); - } -} diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java index 85035408..0674c42f 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGBlocks.java @@ -3,8 +3,8 @@ import static galena.doom_and_gloom.DoomAndGloom.modLoc; import static net.mehvahdjukaar.moonlight.api.platform.RegHelper.*; -import galena.doom_and_gloom.compat.DyeColors; import galena.doom_and_gloom.content.block.*; +import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.function.Supplier; @@ -45,7 +45,7 @@ public static Stream> vigilCandles() { } public static Map> registerColored(String baseName, Function factory) { - return DyeColors.supported().collect(Collectors.toMap( + return Arrays.stream(DyeColor.values()).collect(Collectors.toMap( it -> it, color -> register(color.getSerializedName() + "_" + baseName, () -> factory.apply(color)) )); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java index 7aefe3f1..83eb125d 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java @@ -1,15 +1,21 @@ package galena.doom_and_gloom.index; import galena.doom_and_gloom.DoomAndGloom; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; +import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import org.jetbrains.annotations.NotNull; public class DGTags { @@ -24,12 +30,14 @@ public static class Items { public static final TagKey VANILLA_LANTERNS = cTag("lanterns"); + public static final Map> DYED = dyedTags(Registries.ITEM); + private static TagKey tag(String name) { return TagKey.create(Registries.ITEM, DoomAndGloom.modLoc(name)); } private static TagKey cTag(String name) { - return TagKey.create(Registries.ITEM, cLoc(name)); + return createCTag(Registries.ITEM, name); } } @@ -43,13 +51,14 @@ public static class Blocks { public static final TagKey CAN_TURN_INTO_BURIAL_DIRT = tag("burial_dirt_convertible"); public static final TagKey GRAVETENDER_LIGHTABLE = tag("gravetender_lightables"); + public static final Map> DYED = dyedTags(Registries.BLOCK); private static TagKey tag(String name) { return TagKey.create(Registries.BLOCK, DoomAndGloom.modLoc(name)); } private static TagKey cTag(String name) { - return TagKey.create(Registries.BLOCK, cLoc(name)); + return createCTag(Registries.BLOCK, name); } } @@ -63,7 +72,7 @@ private static TagKey> tag(String name) { } private static TagKey> cTag(String name) { - return TagKey.create(Registries.ENTITY_TYPE, cLoc(name)); + return createCTag(Registries.ENTITY_TYPE, name); } } @@ -77,7 +86,17 @@ private static TagKey tag(String name) { } - private static @NotNull ResourceLocation cLoc(String name) { - return new ResourceLocation(PlatHelper.getPlatform().isFabric() ? "c" : "forge", name); + private static Map> dyedTags(ResourceKey> registry) { + return Arrays.stream(DyeColor.values()).collect(Collectors.toMap( + Function.identity(), + color -> createCTag(registry, "dyed/" + color) + )); + } + + private static TagKey createCTag(ResourceKey> registry, String name) { + var id = new ResourceLocation(PlatHelper.getPlatform().isFabric() ? "c" : "forge", name); + return TagKey.create(registry, id); } + + } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 962f368d..c2b3e2a5 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -13,5 +13,8 @@ dependencies { if (!env.isCI) { modRuntimeOnly(libs.jei.fabric) modRuntimeOnly(libs.pathfinding.debug.fabric) + modImplementation(libs.dye.depot.fabric) { + isTransitive = false + } } } diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index 7aad8096..02d6cd2e 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -45,11 +45,11 @@ dependencies { modImplementation(libs.multikulti.core) modImplementation(libs.multikulti.datagen) + modImplementation(libs.dye.depot.forge) if (!env.isCI) { // this should be included transient with oreganized on 1.21 neoforge (just not possible with how forge works) modRuntimeOnly(libs.blueprint) - modRuntimeOnly(libs.dye.depot) modRuntimeOnly(libs.jei.forge) modRuntimeOnly(libs.pathfinding.debug.forge) } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java index 74a02c58..1210351e 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGBlockTags.java @@ -63,5 +63,9 @@ protected void addTags(HolderLookup.Provider provider) { .addOptionalTag(new ResourceLocation("amendments:skull_candles")); tag(BlockTags.DIRT).add(DGBlocks.BURIAL_DIRT.get()); + + DGBlocks.COLORED_VIGIL_CANDLES.forEach((dye, block) -> + tag(DGTags.Blocks.DYED.get(dye)).addOptional(block.getId()) + ); } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java index 7cb05b22..4ba71b95 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java @@ -3,6 +3,7 @@ import static galena.doom_and_gloom.index.DGTags.Items.TOOLS_BUSH_HAMMER; import galena.doom_and_gloom.DoomAndGloom; +import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGItems; import galena.doom_and_gloom.index.DGTags; import java.util.concurrent.CompletableFuture; @@ -32,5 +33,9 @@ protected void addTags(HolderLookup.Provider provider) { tag(ItemTags.MUSIC_DISCS).add(DGItems.MUSIC_DISC_AFTERLIFE.get()); copy(DGTags.Blocks.VIGIL_CANDLES, DGTags.Items.VIGIL_CANDLES); + + DGBlocks.COLORED_VIGIL_CANDLES.forEach((dye, block) -> + tag(DGTags.Items.DYED.get(dye)).addOptional(block.getId()) + ); } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java index 05be8c3e..d4aa5b6a 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java @@ -1,16 +1,17 @@ package galena.doom_and_gloom.data; +import com.ninni.dye_depot.registry.DDDyes; import com.possible_triangle.multikulti.datagen.conditions.Conditional; import com.possible_triangle.multikulti.datagen.conditions.ModLoaded; import com.possible_triangle.multikulti.datagen.conditions.TagEmpty; import com.possible_triangle.multikulti.datagen.conditions.TagPopulated; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.compat.CompatMods; -import galena.doom_and_gloom.compat.DyeColors; import galena.doom_and_gloom.data.provider.DGRecipeProvider; import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGTags; import java.util.List; +import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; import net.minecraft.core.registries.BuiltInRegistries; @@ -43,7 +44,7 @@ protected void buildRecipes(Consumer consumer) { vigilCandle(DGBlocks.VIGIL_CANDLE, Blocks.CANDLE).save(consumer); DGBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> { - var namespace = DyeColors.modNamespace(color); + var namespace = DDDyes.isModDye(color) ? Optional.of(CompatMods.DYE_DEPOT_NAME) : Optional.empty(); var conditions = namespace.map(ModLoaded::new).map(List::of).orElseGet(List::of); Conditional.with(this, conditions, () -> { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c3459641..352ff10d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,8 @@ galena-hats = { "group" = "dev.galena", name = "hats-forge", version = "1.20.1-1 oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.1" } blueprint = { group = "com.teamabnormals", name = "blueprint", version = "1.20.1-7.1.0" } -dye-depot = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } +dye-depot-forge = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } +dye-depot-fabric = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.1-fabric" } jei-forge = { group = "mezz.jei", name = "jei-1.20.1-forge", version.ref = "jei" } jei-fabric = { group = "mezz.jei", name = "jei-1.20.1-fabric", version.ref = "jei" } From 88cbd9072c0d32379d8550c7e15135baf1f1564b Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 15:56:21 +0100 Subject: [PATCH 25/43] always use c namespace in datagen and reference forge tags there --- build.gradle.kts | 8 ---- common/build.gradle.kts | 1 + .../{forge => c}/tags/blocks/dyed/amber.json | 0 .../{forge => c}/tags/blocks/dyed/aqua.json | 0 .../{forge => c}/tags/blocks/dyed/beige.json | 0 .../{forge => c}/tags/blocks/dyed/black.json | 0 .../{forge => c}/tags/blocks/dyed/blue.json | 0 .../{forge => c}/tags/blocks/dyed/brown.json | 0 .../{forge => c}/tags/blocks/dyed/coral.json | 0 .../{forge => c}/tags/blocks/dyed/cyan.json | 0 .../{forge => c}/tags/blocks/dyed/forest.json | 0 .../{forge => c}/tags/blocks/dyed/ginger.json | 0 .../{forge => c}/tags/blocks/dyed/gray.json | 0 .../{forge => c}/tags/blocks/dyed/green.json | 0 .../{forge => c}/tags/blocks/dyed/indigo.json | 0 .../tags/blocks/dyed/light_blue.json | 0 .../tags/blocks/dyed/light_gray.json | 0 .../{forge => c}/tags/blocks/dyed/lime.json | 0 .../tags/blocks/dyed/magenta.json | 0 .../{forge => c}/tags/blocks/dyed/maroon.json | 0 .../{forge => c}/tags/blocks/dyed/mint.json | 0 .../{forge => c}/tags/blocks/dyed/navy.json | 0 .../{forge => c}/tags/blocks/dyed/olive.json | 0 .../{forge => c}/tags/blocks/dyed/orange.json | 0 .../{forge => c}/tags/blocks/dyed/pink.json | 0 .../{forge => c}/tags/blocks/dyed/purple.json | 0 .../{forge => c}/tags/blocks/dyed/red.json | 0 .../{forge => c}/tags/blocks/dyed/rose.json | 0 .../{forge => c}/tags/blocks/dyed/slate.json | 0 .../{forge => c}/tags/blocks/dyed/tan.json | 0 .../{forge => c}/tags/blocks/dyed/teal.json | 0 .../tags/blocks/dyed/verdant.json | 0 .../{forge => c}/tags/blocks/dyed/white.json | 0 .../{forge => c}/tags/blocks/dyed/yellow.json | 0 .../{forge => c}/tags/items/dyed/amber.json | 0 .../{forge => c}/tags/items/dyed/aqua.json | 0 .../{forge => c}/tags/items/dyed/beige.json | 0 .../{forge => c}/tags/items/dyed/black.json | 0 .../{forge => c}/tags/items/dyed/blue.json | 0 .../{forge => c}/tags/items/dyed/brown.json | 0 .../{forge => c}/tags/items/dyed/coral.json | 0 .../{forge => c}/tags/items/dyed/cyan.json | 0 .../{forge => c}/tags/items/dyed/forest.json | 0 .../{forge => c}/tags/items/dyed/ginger.json | 0 .../{forge => c}/tags/items/dyed/gray.json | 0 .../{forge => c}/tags/items/dyed/green.json | 0 .../{forge => c}/tags/items/dyed/indigo.json | 0 .../tags/items/dyed/light_blue.json | 0 .../tags/items/dyed/light_gray.json | 0 .../{forge => c}/tags/items/dyed/lime.json | 0 .../{forge => c}/tags/items/dyed/magenta.json | 0 .../{forge => c}/tags/items/dyed/maroon.json | 0 .../{forge => c}/tags/items/dyed/mint.json | 0 .../{forge => c}/tags/items/dyed/navy.json | 0 .../{forge => c}/tags/items/dyed/olive.json | 0 .../{forge => c}/tags/items/dyed/orange.json | 0 .../{forge => c}/tags/items/dyed/pink.json | 0 .../{forge => c}/tags/items/dyed/purple.json | 0 .../{forge => c}/tags/items/dyed/red.json | 0 .../{forge => c}/tags/items/dyed/rose.json | 0 .../{forge => c}/tags/items/dyed/slate.json | 0 .../{forge => c}/tags/items/dyed/tan.json | 0 .../{forge => c}/tags/items/dyed/teal.json | 0 .../{forge => c}/tags/items/dyed/verdant.json | 0 .../{forge => c}/tags/items/dyed/white.json | 0 .../{forge => c}/tags/items/dyed/yellow.json | 0 .../data/c/tags/items/ingots/lead.json | 8 ++++ .../data/c/tags/items/ingots/silver.json | 8 ++++ .../building_blocks/amber_vigil_candle.json | 2 +- .../building_blocks/aqua_vigil_candle.json | 2 +- .../building_blocks/beige_vigil_candle.json | 2 +- .../building_blocks/black_vigil_candle.json | 2 +- .../building_blocks/blue_vigil_candle.json | 2 +- .../building_blocks/brown_vigil_candle.json | 2 +- .../building_blocks/coral_vigil_candle.json | 2 +- .../building_blocks/cyan_vigil_candle.json | 2 +- .../building_blocks/forest_vigil_candle.json | 2 +- .../building_blocks/ginger_vigil_candle.json | 2 +- .../building_blocks/gray_vigil_candle.json | 2 +- .../building_blocks/green_vigil_candle.json | 2 +- .../building_blocks/indigo_vigil_candle.json | 2 +- .../light_blue_vigil_candle.json | 2 +- .../light_gray_vigil_candle.json | 2 +- .../building_blocks/lime_vigil_candle.json | 2 +- .../building_blocks/magenta_vigil_candle.json | 2 +- .../building_blocks/maroon_vigil_candle.json | 2 +- .../building_blocks/mint_vigil_candle.json | 2 +- .../building_blocks/navy_vigil_candle.json | 2 +- .../building_blocks/olive_vigil_candle.json | 2 +- .../building_blocks/orange_vigil_candle.json | 2 +- .../building_blocks/pink_vigil_candle.json | 2 +- .../building_blocks/purple_vigil_candle.json | 2 +- .../building_blocks/red_vigil_candle.json | 2 +- .../building_blocks/rose_vigil_candle.json | 2 +- .../building_blocks/slate_vigil_candle.json | 2 +- .../building_blocks/tan_vigil_candle.json | 2 +- .../building_blocks/teal_vigil_candle.json | 2 +- .../building_blocks/verdant_vigil_candle.json | 2 +- .../recipes/building_blocks/vigil_candle.json | 2 +- .../building_blocks/white_vigil_candle.json | 2 +- .../building_blocks/yellow_vigil_candle.json | 2 +- .../recipes/decorations/sepulcher.json | 6 +-- .../decorations/sepulcher_fallback.json | 4 +- .../recipes/amber_vigil_candle.json | 2 +- .../recipes/aqua_vigil_candle.json | 2 +- .../recipes/beige_vigil_candle.json | 2 +- .../recipes/black_vigil_candle.json | 2 +- .../recipes/blue_vigil_candle.json | 2 +- .../recipes/brown_vigil_candle.json | 2 +- .../recipes/coral_vigil_candle.json | 2 +- .../recipes/cyan_vigil_candle.json | 2 +- .../recipes/forest_vigil_candle.json | 2 +- .../recipes/ginger_vigil_candle.json | 2 +- .../recipes/gray_vigil_candle.json | 2 +- .../recipes/green_vigil_candle.json | 2 +- .../recipes/indigo_vigil_candle.json | 2 +- .../recipes/light_blue_vigil_candle.json | 2 +- .../recipes/light_gray_vigil_candle.json | 2 +- .../recipes/lime_vigil_candle.json | 2 +- .../recipes/magenta_vigil_candle.json | 2 +- .../recipes/maroon_vigil_candle.json | 2 +- .../recipes/mint_vigil_candle.json | 2 +- .../recipes/navy_vigil_candle.json | 2 +- .../recipes/olive_vigil_candle.json | 2 +- .../recipes/orange_vigil_candle.json | 2 +- .../recipes/pink_vigil_candle.json | 2 +- .../recipes/purple_vigil_candle.json | 2 +- .../recipes/red_vigil_candle.json | 2 +- .../recipes/rose_vigil_candle.json | 2 +- .../doom_and_gloom/recipes/sepulcher.json | 6 +-- .../recipes/sepulcher_fallback.json | 4 +- .../recipes/slate_vigil_candle.json | 2 +- .../recipes/tan_vigil_candle.json | 2 +- .../recipes/teal_vigil_candle.json | 2 +- .../recipes/verdant_vigil_candle.json | 2 +- .../doom_and_gloom/recipes/vigil_candle.json | 2 +- .../recipes/white_vigil_candle.json | 2 +- .../recipes/yellow_vigil_candle.json | 2 +- .../doom_and_gloom/DGItemTabContents.java | 3 +- .../galena/doom_and_gloom/index/DGTags.java | 14 +----- fabric/build.gradle.kts | 45 +++++++++++++++++-- .../doom_and_gloom/data/DGItemTags.java | 17 ++++++- gradle/libs.versions.toml | 2 + 143 files changed, 154 insertions(+), 104 deletions(-) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/amber.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/aqua.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/beige.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/black.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/blue.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/brown.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/coral.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/cyan.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/forest.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/ginger.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/gray.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/green.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/indigo.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/light_blue.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/light_gray.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/lime.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/magenta.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/maroon.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/mint.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/navy.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/olive.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/orange.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/pink.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/purple.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/red.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/rose.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/slate.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/tan.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/teal.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/verdant.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/white.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/blocks/dyed/yellow.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/amber.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/aqua.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/beige.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/black.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/blue.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/brown.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/coral.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/cyan.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/forest.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/ginger.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/gray.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/green.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/indigo.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/light_blue.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/light_gray.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/lime.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/magenta.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/maroon.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/mint.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/navy.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/olive.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/orange.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/pink.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/purple.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/red.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/rose.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/slate.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/tan.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/teal.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/verdant.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/white.json (100%) rename common/src/generated/resources/data/{forge => c}/tags/items/dyed/yellow.json (100%) create mode 100644 common/src/generated/resources/data/c/tags/items/ingots/lead.json create mode 100644 common/src/generated/resources/data/c/tags/items/ingots/silver.json diff --git a/build.gradle.kts b/build.gradle.kts index 5a3f84d9..cbe70645 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,14 +29,6 @@ subprojects { includeGroup("com.teamabnormals") } } - repositories { - maven { - url = uri("https://maven.ladysnake.org/releases") - content { - includeGroupAndSubgroups("dev.onyxstudios") - } - } - } } upload { diff --git a/common/build.gradle.kts b/common/build.gradle.kts index b2fe02c8..0ac14e15 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -11,5 +11,6 @@ dependencies { isTransitive = false } + // TODO replace with common module modImplementation(pack.forge.modrinth.amendments) } diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json b/common/src/generated/resources/data/c/tags/blocks/dyed/amber.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/amber.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/amber.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json b/common/src/generated/resources/data/c/tags/blocks/dyed/aqua.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/aqua.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/aqua.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json b/common/src/generated/resources/data/c/tags/blocks/dyed/beige.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/beige.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/beige.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/black.json b/common/src/generated/resources/data/c/tags/blocks/dyed/black.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/black.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/black.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json b/common/src/generated/resources/data/c/tags/blocks/dyed/blue.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/blue.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/blue.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json b/common/src/generated/resources/data/c/tags/blocks/dyed/brown.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/brown.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/brown.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json b/common/src/generated/resources/data/c/tags/blocks/dyed/coral.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/coral.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/coral.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json b/common/src/generated/resources/data/c/tags/blocks/dyed/cyan.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/cyan.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/cyan.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json b/common/src/generated/resources/data/c/tags/blocks/dyed/forest.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/forest.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/forest.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json b/common/src/generated/resources/data/c/tags/blocks/dyed/ginger.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/ginger.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/ginger.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json b/common/src/generated/resources/data/c/tags/blocks/dyed/gray.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/gray.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/gray.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/green.json b/common/src/generated/resources/data/c/tags/blocks/dyed/green.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/green.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/green.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json b/common/src/generated/resources/data/c/tags/blocks/dyed/indigo.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/indigo.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/indigo.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json b/common/src/generated/resources/data/c/tags/blocks/dyed/light_blue.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/light_blue.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/light_blue.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json b/common/src/generated/resources/data/c/tags/blocks/dyed/light_gray.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/light_gray.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/light_gray.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json b/common/src/generated/resources/data/c/tags/blocks/dyed/lime.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/lime.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/lime.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json b/common/src/generated/resources/data/c/tags/blocks/dyed/magenta.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/magenta.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/magenta.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json b/common/src/generated/resources/data/c/tags/blocks/dyed/maroon.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/maroon.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/maroon.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json b/common/src/generated/resources/data/c/tags/blocks/dyed/mint.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/mint.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/mint.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json b/common/src/generated/resources/data/c/tags/blocks/dyed/navy.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/navy.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/navy.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json b/common/src/generated/resources/data/c/tags/blocks/dyed/olive.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/olive.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/olive.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json b/common/src/generated/resources/data/c/tags/blocks/dyed/orange.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/orange.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/orange.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json b/common/src/generated/resources/data/c/tags/blocks/dyed/pink.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/pink.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/pink.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json b/common/src/generated/resources/data/c/tags/blocks/dyed/purple.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/purple.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/purple.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/red.json b/common/src/generated/resources/data/c/tags/blocks/dyed/red.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/red.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/red.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json b/common/src/generated/resources/data/c/tags/blocks/dyed/rose.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/rose.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/rose.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json b/common/src/generated/resources/data/c/tags/blocks/dyed/slate.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/slate.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/slate.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json b/common/src/generated/resources/data/c/tags/blocks/dyed/tan.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/tan.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/tan.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json b/common/src/generated/resources/data/c/tags/blocks/dyed/teal.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/teal.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/teal.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json b/common/src/generated/resources/data/c/tags/blocks/dyed/verdant.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/verdant.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/verdant.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/white.json b/common/src/generated/resources/data/c/tags/blocks/dyed/white.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/white.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/white.json diff --git a/common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json b/common/src/generated/resources/data/c/tags/blocks/dyed/yellow.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/blocks/dyed/yellow.json rename to common/src/generated/resources/data/c/tags/blocks/dyed/yellow.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/amber.json b/common/src/generated/resources/data/c/tags/items/dyed/amber.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/amber.json rename to common/src/generated/resources/data/c/tags/items/dyed/amber.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/aqua.json b/common/src/generated/resources/data/c/tags/items/dyed/aqua.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/aqua.json rename to common/src/generated/resources/data/c/tags/items/dyed/aqua.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/beige.json b/common/src/generated/resources/data/c/tags/items/dyed/beige.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/beige.json rename to common/src/generated/resources/data/c/tags/items/dyed/beige.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/black.json b/common/src/generated/resources/data/c/tags/items/dyed/black.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/black.json rename to common/src/generated/resources/data/c/tags/items/dyed/black.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/blue.json b/common/src/generated/resources/data/c/tags/items/dyed/blue.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/blue.json rename to common/src/generated/resources/data/c/tags/items/dyed/blue.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/brown.json b/common/src/generated/resources/data/c/tags/items/dyed/brown.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/brown.json rename to common/src/generated/resources/data/c/tags/items/dyed/brown.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/coral.json b/common/src/generated/resources/data/c/tags/items/dyed/coral.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/coral.json rename to common/src/generated/resources/data/c/tags/items/dyed/coral.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/cyan.json b/common/src/generated/resources/data/c/tags/items/dyed/cyan.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/cyan.json rename to common/src/generated/resources/data/c/tags/items/dyed/cyan.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/forest.json b/common/src/generated/resources/data/c/tags/items/dyed/forest.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/forest.json rename to common/src/generated/resources/data/c/tags/items/dyed/forest.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/ginger.json b/common/src/generated/resources/data/c/tags/items/dyed/ginger.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/ginger.json rename to common/src/generated/resources/data/c/tags/items/dyed/ginger.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/gray.json b/common/src/generated/resources/data/c/tags/items/dyed/gray.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/gray.json rename to common/src/generated/resources/data/c/tags/items/dyed/gray.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/green.json b/common/src/generated/resources/data/c/tags/items/dyed/green.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/green.json rename to common/src/generated/resources/data/c/tags/items/dyed/green.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/indigo.json b/common/src/generated/resources/data/c/tags/items/dyed/indigo.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/indigo.json rename to common/src/generated/resources/data/c/tags/items/dyed/indigo.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json b/common/src/generated/resources/data/c/tags/items/dyed/light_blue.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/light_blue.json rename to common/src/generated/resources/data/c/tags/items/dyed/light_blue.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json b/common/src/generated/resources/data/c/tags/items/dyed/light_gray.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/light_gray.json rename to common/src/generated/resources/data/c/tags/items/dyed/light_gray.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/lime.json b/common/src/generated/resources/data/c/tags/items/dyed/lime.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/lime.json rename to common/src/generated/resources/data/c/tags/items/dyed/lime.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/magenta.json b/common/src/generated/resources/data/c/tags/items/dyed/magenta.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/magenta.json rename to common/src/generated/resources/data/c/tags/items/dyed/magenta.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/maroon.json b/common/src/generated/resources/data/c/tags/items/dyed/maroon.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/maroon.json rename to common/src/generated/resources/data/c/tags/items/dyed/maroon.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/mint.json b/common/src/generated/resources/data/c/tags/items/dyed/mint.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/mint.json rename to common/src/generated/resources/data/c/tags/items/dyed/mint.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/navy.json b/common/src/generated/resources/data/c/tags/items/dyed/navy.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/navy.json rename to common/src/generated/resources/data/c/tags/items/dyed/navy.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/olive.json b/common/src/generated/resources/data/c/tags/items/dyed/olive.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/olive.json rename to common/src/generated/resources/data/c/tags/items/dyed/olive.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/orange.json b/common/src/generated/resources/data/c/tags/items/dyed/orange.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/orange.json rename to common/src/generated/resources/data/c/tags/items/dyed/orange.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/pink.json b/common/src/generated/resources/data/c/tags/items/dyed/pink.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/pink.json rename to common/src/generated/resources/data/c/tags/items/dyed/pink.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/purple.json b/common/src/generated/resources/data/c/tags/items/dyed/purple.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/purple.json rename to common/src/generated/resources/data/c/tags/items/dyed/purple.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/red.json b/common/src/generated/resources/data/c/tags/items/dyed/red.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/red.json rename to common/src/generated/resources/data/c/tags/items/dyed/red.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/rose.json b/common/src/generated/resources/data/c/tags/items/dyed/rose.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/rose.json rename to common/src/generated/resources/data/c/tags/items/dyed/rose.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/slate.json b/common/src/generated/resources/data/c/tags/items/dyed/slate.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/slate.json rename to common/src/generated/resources/data/c/tags/items/dyed/slate.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/tan.json b/common/src/generated/resources/data/c/tags/items/dyed/tan.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/tan.json rename to common/src/generated/resources/data/c/tags/items/dyed/tan.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/teal.json b/common/src/generated/resources/data/c/tags/items/dyed/teal.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/teal.json rename to common/src/generated/resources/data/c/tags/items/dyed/teal.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/verdant.json b/common/src/generated/resources/data/c/tags/items/dyed/verdant.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/verdant.json rename to common/src/generated/resources/data/c/tags/items/dyed/verdant.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/white.json b/common/src/generated/resources/data/c/tags/items/dyed/white.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/white.json rename to common/src/generated/resources/data/c/tags/items/dyed/white.json diff --git a/common/src/generated/resources/data/forge/tags/items/dyed/yellow.json b/common/src/generated/resources/data/c/tags/items/dyed/yellow.json similarity index 100% rename from common/src/generated/resources/data/forge/tags/items/dyed/yellow.json rename to common/src/generated/resources/data/c/tags/items/dyed/yellow.json diff --git a/common/src/generated/resources/data/c/tags/items/ingots/lead.json b/common/src/generated/resources/data/c/tags/items/ingots/lead.json new file mode 100644 index 00000000..199586db --- /dev/null +++ b/common/src/generated/resources/data/c/tags/items/ingots/lead.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "#forge:ingots/lead", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/c/tags/items/ingots/silver.json b/common/src/generated/resources/data/c/tags/items/ingots/silver.json new file mode 100644 index 00000000..33461383 --- /dev/null +++ b/common/src/generated/resources/data/c/tags/items/ingots/silver.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "#forge:ingots/silver", + "required": false + } + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json index 04813c91..120a6495 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/amber_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json index 89dcb8e4..eea3f424 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/aqua_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json index 9c4271a2..f6a09fbc 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/beige_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json index 4422174a..305025e8 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/black_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json index d5379980..e634d30e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/blue_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json index 5856d4e4..f0f202b6 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/brown_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json index 3aaadca6..cd696dd6 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/coral_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json index 2abbe919..b0142d05 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/cyan_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json index 0e771432..7f667005 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/forest_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json index c5de5f8b..3c3b1cfb 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/ginger_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json index ae9117da..8ca63372 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/gray_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json index 44882d38..159c3811 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/green_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json index 6e05ef9d..58fb170d 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/indigo_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json index 73124af5..066a17f8 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_blue_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json index 05f93b07..1fa47f49 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/light_gray_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json index 8bebe3e9..5bcfc721 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/lime_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json index 34c43fe8..7d0dfa03 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/magenta_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json index 2511a347..bd5da110 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/maroon_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json index ad503fc5..b247afa5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/mint_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json index 4b7ba71b..6bbbdde8 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/navy_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json index ee5fa864..50701eb4 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/olive_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json index 539058ec..3cb81827 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/orange_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json index c14f8809..a99a1636 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/pink_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json index bbe9c95e..c8b31b14 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/purple_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json index 95a5295f..05176086 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/red_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json index ccf37640..ec9c039c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/rose_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json index a5e8c21f..d8fe4767 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/slate_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json index 53596e88..b287eaed 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/tan_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json index fb7a95cd..8a0da173 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/teal_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json index 153dcc9e..25226572 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/verdant_vigil_candle.json @@ -11,7 +11,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json index d2478b5d..9520b4a1 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json index 39b29ff7..119bca09 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/white_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json index a1c163c0..807f21ce 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/building_blocks/yellow_vigil_candle.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json index 98553e87..e462a6a4 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher.json @@ -5,7 +5,7 @@ "type": "forge:not", "value": { "type": "forge:tag_empty", - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } } ], @@ -14,7 +14,7 @@ "conditions": { "items": [ { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ] }, @@ -31,7 +31,7 @@ { "condition": "fabric:tags_populated", "values": [ - "forge:ingots/silver" + "c:ingots/silver" ] } ], diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json index 1df95b71..3e4d4abd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json @@ -3,7 +3,7 @@ "conditions": [ { "type": "forge:tag_empty", - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ], "criteria": { @@ -30,7 +30,7 @@ "value": { "condition": "fabric:tags_populated", "values": [ - "forge:ingots/silver" + "c:ingots/silver" ] } } diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json index 4984a259..b929e000 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/amber_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:amber_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json index 28c59440..2adb2f94 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/aqua_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:aqua_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json index bd0a5f28..a00b3eb9 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/beige_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:beige_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json index 7efbd022..b84580a4 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/black_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:black_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json index ad8f871d..9eaf6fcc 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/blue_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:blue_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json index af2a849b..08cd94ae 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/brown_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:brown_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json index 42a4820c..742bf0a5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/coral_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:coral_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json index 7426b591..b354a473 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/cyan_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:cyan_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json index 1813b4f6..a55c566b 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/forest_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:forest_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json index 1695aa70..ec5e66d5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/ginger_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:ginger_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json index b90ba0b2..3cf3d714 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/gray_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:gray_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json index 45f04663..2480393e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/green_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:green_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json index ff216ec3..f25ac6cb 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/indigo_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:indigo_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json index ed99f6cf..77a97052 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/light_blue_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:light_blue_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json index 082b8bc1..d1971d5c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/light_gray_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:light_gray_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json index 7a4a3aef..1242dc34 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/lime_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:lime_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json index d98355a4..827df557 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/magenta_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:magenta_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json index ac66b089..f582982c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/maroon_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:maroon_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json index cee8a5e9..a78e56d1 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/mint_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:mint_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json index a0d192fd..078634f8 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/navy_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:navy_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json index a72bd23a..ed86eab3 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/olive_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:olive_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json index d9685612..4c5fc16e 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/orange_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:orange_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json index d65d88f6..946aefc5 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/pink_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:pink_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json index ca715bbd..df1d01ef 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/purple_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:purple_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json index 60419d27..2444b6d1 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/red_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:red_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json index 7d639bd2..b564a94f 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/rose_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:rose_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json index 9435b7e2..0c4d468f 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher.json @@ -6,7 +6,7 @@ "type": "forge:not", "value": { "type": "forge:tag_empty", - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } } ], @@ -14,13 +14,13 @@ { "condition": "fabric:tags_populated", "values": [ - "forge:ingots/silver" + "c:ingots/silver" ] } ], "key": { "#": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json index f83574ba..9ace2f0c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json @@ -4,7 +4,7 @@ "conditions": [ { "type": "forge:tag_empty", - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } ], "fabric:load_conditions": [ @@ -13,7 +13,7 @@ "value": { "condition": "fabric:tags_populated", "values": [ - "forge:ingots/silver" + "c:ingots/silver" ] } } diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json index e52c4828..59738abd 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/slate_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:slate_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json index 866a3709..124bb8c8 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/tan_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:tan_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json index 35fbe061..183c268c 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/teal_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:teal_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json index 382ec0f6..c45f5e8d 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/verdant_vigil_candle.json @@ -21,7 +21,7 @@ "item": "dye_depot:verdant_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json index 4838ab7d..0e4594df 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json index e78b4772..54009788 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/white_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:white_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json b/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json index 5fbd4e7e..e310f651 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/yellow_vigil_candle.json @@ -7,7 +7,7 @@ "item": "minecraft:yellow_candle" }, "S": { - "tag": "forge:ingots/silver" + "tag": "c:ingots/silver" } }, "pattern": [ diff --git a/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java b/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java index 6bb1d611..57e19fb4 100644 --- a/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java +++ b/common/src/main/java/galena/doom_and_gloom/DGItemTabContents.java @@ -2,7 +2,6 @@ import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGItems; -import galena.doom_and_gloom.index.DGTags; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.tags.ItemTags; @@ -15,7 +14,7 @@ public class DGItemTabContents { public static void addItemsToTabs(RegHelper.ItemToTabEvent event) { var vigilCandles = DGBlocks.vigilCandles().map(RegSupplier::get).toArray(ItemLike[]::new); - event.addAfter(CreativeModeTabs.FUNCTIONAL_BLOCKS, stack -> stack.is(DGTags.Items.VANILLA_LANTERNS), vigilCandles); + event.addAfter(CreativeModeTabs.FUNCTIONAL_BLOCKS, stack -> stack.is(Items.SOUL_LANTERN), vigilCandles); event.addAfter(CreativeModeTabs.COLORED_BLOCKS, stack -> stack.is(ItemTags.CANDLES), vigilCandles); event.add(CreativeModeTabs.BUILDING_BLOCKS, DGBlocks.BONE_PILE.get()); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java index 83eb125d..73d0ad36 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGTags.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGTags.java @@ -5,7 +5,6 @@ import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -28,8 +27,6 @@ public static class Items { public static final TagKey VIGIL_CANDLES = tag("vigil_candles"); - public static final TagKey VANILLA_LANTERNS = cTag("lanterns"); - public static final Map> DYED = dyedTags(Registries.ITEM); private static TagKey tag(String name) { @@ -56,10 +53,6 @@ public static class Blocks { private static TagKey tag(String name) { return TagKey.create(Registries.BLOCK, DoomAndGloom.modLoc(name)); } - - private static TagKey cTag(String name) { - return createCTag(Registries.BLOCK, name); - } } public static class Entities { @@ -70,10 +63,6 @@ public static class Entities { private static TagKey> tag(String name) { return TagKey.create(Registries.ENTITY_TYPE, DoomAndGloom.modLoc(name)); } - - private static TagKey> cTag(String name) { - return createCTag(Registries.ENTITY_TYPE, name); - } } public static class Effects { @@ -94,9 +83,8 @@ private static Map> dyedTags(ResourceKey> re } private static TagKey createCTag(ResourceKey> registry, String name) { - var id = new ResourceLocation(PlatHelper.getPlatform().isFabric() ? "c" : "forge", name); + var id = new ResourceLocation("c", name); return TagKey.create(registry, id); } - } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index c2b3e2a5..5cd31462 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -7,14 +7,51 @@ fabric { accessWidener(project(":common")) } +repositories { + maven { + url = uri("https://mvn.devos.one/releases/") + content { + includeGroup("io.github.fabricators_of_create.Porting-Lib") + } + } + maven { + url = uri("https://jitpack.io") + content { + includeGroup("com.github.Chocohead") + } + } + maven { + url = uri("https://maven.jamieswhiteshirt.com/libs-release") + content { + includeGroup("com.jamieswhiteshirt") + } + } + maven { + url = uri("https://maven.greenhouse.lgbt/releases/") + content { + includeGroup("vectorwing") + } + } +} + dependencies { - modApi(libs.moonlight.lib.fabric) + modApi(libs.moonlight.lib.fabric) { + isTransitive = false + } + + modImplementation(libs.farmers.delight.fabric) { + exclude(group = "net.fabricmc") + } + + modImplementation(pack.fabric.modrinth.supplementaries) + modImplementation(pack.fabric.modrinth.amendments) + + modImplementation(libs.dye.depot.fabric) { + isTransitive = false + } if (!env.isCI) { modRuntimeOnly(libs.jei.fabric) modRuntimeOnly(libs.pathfinding.debug.fabric) - modImplementation(libs.dye.depot.fabric) { - isTransitive = false - } } } diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java index 4ba71b95..97d95c73 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java @@ -6,12 +6,17 @@ import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGItems; import galena.doom_and_gloom.index.DGTags; + import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; + import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.ExistingFileHelper; @@ -35,7 +40,17 @@ protected void addTags(HolderLookup.Provider provider) { copy(DGTags.Blocks.VIGIL_CANDLES, DGTags.Items.VIGIL_CANDLES); DGBlocks.COLORED_VIGIL_CANDLES.forEach((dye, block) -> - tag(DGTags.Items.DYED.get(dye)).addOptional(block.getId()) + tag(DGTags.Items.DYED.get(dye)).addOptional(block.getId()) ); + + migrate(DGTags.Items.INGOTS_LEAD); + migrate(DGTags.Items.INGOTS_SILVER); } + + // no longer necessary on 1.21.1 since neoforge will also use 'c' namespace + private void migrate(TagKey tag) { + var forgeId = new ResourceLocation("forge", tag.location().getPath()); + tag(tag).addOptionalTag(TagKey.create(tag.registry(), forgeId)); + } + } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 352ff10d..daaedeba 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,6 +23,8 @@ moonlight-lib-common = { group = "net.mehvahdjukaar", name = "moonlight", versio moonlight-lib-forge = { group = "net.mehvahdjukaar", name = "moonlight-forge", version.ref = "moonlight" } moonlight-lib-fabric = { group = "net.mehvahdjukaar", name = "moonlight-fabric", version.ref = "moonlight" } +farmers-delight-fabric = { group = "vectorwing", name = "FarmersDelight", version = "1.20.1-2.4.0+refabricated" } + pathfinding-debug-forge = { group = "com.possible-triangle", name = "pathfinding_renderer-forge", version.ref = "pathfinding-debug" } pathfinding-debug-fabric = { group = "com.possible-triangle", name = "pathfinding_renderer-fabric", version.ref = "pathfinding-debug" } From 39c2b99b2c651d5382cbe268aa465d4179be099e Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 16:11:46 +0100 Subject: [PATCH 26/43] add fallback recipes --- .../recipes/decorations/sepulcher_fallback.json | 4 +++- .../doom_and_gloom/recipes/sepulcher_fallback.json | 2 +- .../java/galena/doom_and_gloom/data/DGItemTags.java | 2 -- .../java/galena/doom_and_gloom/data/DGRecipes.java | 11 +++++------ 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json index 3e4d4abd..3e1ed56a 100644 --- a/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json +++ b/common/src/generated/resources/data/doom_and_gloom/advancements/recipes/decorations/sepulcher_fallback.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "tag": "forge:ingots/iron" + "items": [ + "minecraft:iron_ingot" + ] } ] }, diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json index 9ace2f0c..3f41ea4d 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/sepulcher_fallback.json @@ -20,7 +20,7 @@ ], "key": { "#": { - "tag": "forge:ingots/iron" + "item": "minecraft:iron_ingot" } }, "pattern": [ diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java index 97d95c73..29ea6a4b 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGItemTags.java @@ -6,10 +6,8 @@ import galena.doom_and_gloom.index.DGBlocks; import galena.doom_and_gloom.index.DGItems; import galena.doom_and_gloom.index.DGTags; - import java.util.concurrent.CompletableFuture; import javax.annotation.Nullable; - import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java index d4aa5b6a..55ac5a75 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java @@ -28,7 +28,6 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.common.Tags; import net.minecraftforge.common.ToolActions; import vectorwing.farmersdelight.common.crafting.ingredient.ToolActionIngredient; import vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder; @@ -60,7 +59,7 @@ protected void buildRecipes(Consumer consumer) { }); }); - withFallback(DGTags.Items.INGOTS_SILVER, Tags.Items.INGOTS_IRON, ingot -> + withFallback(DGTags.Items.INGOTS_SILVER, Items.IRON_INGOT, ingot -> ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, DGBlocks.SEPULCHER.get()) .pattern("# #") .pattern("# #") @@ -80,7 +79,7 @@ protected void buildRecipes(Consumer consumer) { }); /* - withFallback(OTags.Items.INGOTS_LEAD, Tags.Items.INGOTS_COPPER, ingot -> + withFallback(OTags.Items.INGOTS_LEAD, Items.COPPER_INGOT, ingot -> ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, OItems.BUSH_HAMMER.get()) .pattern("AA") .pattern("B ") @@ -114,10 +113,10 @@ protected void buildRecipes(Consumer consumer) { */ } - private Consumer> withFallback(TagKey prefer, TagKey fallback, Function, RecipeBuilder> builder) { + private Consumer> withFallback(TagKey prefer, Item fallback, Function builder) { return consumer -> { - var preferredRecipe = builder.apply(prefer).unlockedBy("has_ingredient", has(prefer)); - var fallbackRecipe = builder.apply(fallback).unlockedBy("has_ingredient", has(fallback)); + var preferredRecipe = builder.apply(Ingredient.of(prefer)).unlockedBy("has_ingredient", has(prefer)); + var fallbackRecipe = builder.apply(Ingredient.of(fallback)).unlockedBy("has_ingredient", has(fallback)); var id = RecipeBuilder.getDefaultRecipeId(preferredRecipe.getResult()); Conditional.with(this, List.of(new TagPopulated(prefer)), () -> From 20a42fedeed02c049bf4525b2246352aea198353 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 16:31:58 +0100 Subject: [PATCH 27/43] call client setup on fabric --- .../galena/doom_and_gloom/client/DoomAndGloomClient.java | 3 +-- .../doom_and_gloom/fabric/FabricClientEntrypoint.java | 1 + .../java/galena/doom_and_gloom/forge/ForgeEntrypoint.java | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index 3141fb0a..28f6710a 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -25,7 +25,6 @@ public class DoomAndGloomClient { public static void init() { - ClientHelper.addClientSetup(DoomAndGloomClient::setup); ClientHelper.addClientReloadListener(DGReloadListener::new, DoomAndGloom.modLoc("tablets_reloader")); ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); ClientHelper.addEntityRenderersRegistration(DoomAndGloomClient::registerEntityRenderers); @@ -33,7 +32,7 @@ public static void init() { ClientHelper.addShaderRegistration(DoomAndGloomClient::registerShaders); } - private static void setup() { + public static void setup() { //render layers RenderType cutout = RenderType.cutout(); ClientHelper.registerRenderType(DGBlocks.SEPULCHER.get(), cutout); diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 2f04b972..9cae3ab8 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -8,6 +8,7 @@ public class FabricClientEntrypoint implements ClientModInitializer { @Override public void onInitializeClient() { DoomAndGloomClient.init(); + DoomAndGloomClient.setup(); } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index b978a400..ce1b83cb 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -6,6 +6,7 @@ import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.content.entity.ISepulcherable; import galena.doom_and_gloom.forge.compat.OreganizedCompat; +import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -23,7 +24,10 @@ public class ForgeEntrypoint { public ForgeEntrypoint() { DoomAndGloom.init(); - if(PlatHelper.getPhysicalSide().isClient()) DoomAndGloomClient.init(); + if(PlatHelper.getPhysicalSide().isClient()) { + DoomAndGloomClient.init(); + ClientHelper.addClientSetup(DoomAndGloomClient::setup); + } IEventBus forgeBus = MinecraftForge.EVENT_BUS; From 9ed97555d1cc246e45d71a2ef3f4604505b3edb9 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Tue, 4 Nov 2025 16:34:03 +0100 Subject: [PATCH 28/43] use pickaxe tag for cutting recipe to make it work for both forge & fabric --- .../data/doom_and_gloom/recipes/cutting/stone_tablet.json | 3 +-- .../src/data/java/galena/doom_and_gloom/data/DGRecipes.java | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json b/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json index 2cc0c05d..9a05f353 100644 --- a/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json +++ b/common/src/generated/resources/data/doom_and_gloom/recipes/cutting/stone_tablet.json @@ -25,7 +25,6 @@ } ], "tool": { - "type": "farmersdelight:tool_action", - "action": "pickaxe_dig" + "tag": "minecraft:pickaxes" } } \ No newline at end of file diff --git a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java index 55ac5a75..3b365d99 100644 --- a/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java +++ b/forge/src/data/java/galena/doom_and_gloom/data/DGRecipes.java @@ -22,14 +22,13 @@ import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.common.ToolActions; -import vectorwing.farmersdelight.common.crafting.ingredient.ToolActionIngredient; import vectorwing.farmersdelight.data.builder.CuttingBoardRecipeBuilder; public class DGRecipes extends DGRecipeProvider { @@ -73,7 +72,7 @@ protected void buildRecipes(Consumer consumer) { Conditional.with(this, List.of(new ModLoaded(CompatMods.FARMERS_DELIGHT_NAME)), () -> { CuttingBoardRecipeBuilder.cuttingRecipe( Ingredient.of(DGBlocks.STONE_TABLET.get()), - new ToolActionIngredient(ToolActions.PICKAXE_DIG), + Ingredient.of(ItemTags.PICKAXES), DGBlocks.CRACKED_STONE_TABLET.get() ).build(consumer, DoomAndGloom.modLoc("cutting/stone_tablet")); }); From 2770a4a425b220063e94599adff2a92267deab7f Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Tue, 4 Nov 2025 17:03:49 +0100 Subject: [PATCH 29/43] wip mixin --- .../galena/doom_and_gloom/DoomAndGloom.java | 1 + .../galena/doom_and_gloom/index/DGItems.java | 23 ++++++---- .../doom_and_gloom/fabric/FogParams.java | 4 ++ .../fabric/mixin/FogRendererMixin.java | 43 +++++++++++++++++++ .../doom_and_gloom.fabric.mixins.json | 5 ++- .../forge/mixin/LivingEntityMixin.java | 6 +-- 6 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java create mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index 2d6dc0b9..b4f2d7a1 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -28,6 +28,7 @@ public static ResourceLocation modLoc(String location) { } public static void init() { + DGConfig.init(); DGBlockEntities.init(); DGBlocks.init(); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java index 63036280..b3f25739 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -1,26 +1,33 @@ package galena.doom_and_gloom.index; -import static galena.doom_and_gloom.DoomAndGloom.modLoc; - import galena.doom_and_gloom.content.item.BushHammerItem; import galena.doom_and_gloom.content.item.HammerAndChiselItem; -import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; -import net.minecraft.world.item.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.RecordItem; + +import java.util.function.Supplier; + +import static galena.doom_and_gloom.DoomAndGloom.modLoc; public class DGItems { // Discs - public static final RegSupplier MUSIC_DISC_AFTERLIFE = register("music_disc_afterlife", () -> PlatHelper.newMusicDisc(13, DGSoundEvents.MUSIC_DISC_AFTERLIFE, new Item.Properties().stacksTo(1).rarity(Rarity.RARE), 155)); + public static final RegSupplier MUSIC_DISC_AFTERLIFE = register("music_disc_afterlife", () -> + PlatHelper.newMusicDisc(13, DGSoundEvents.MUSIC_DISC_AFTERLIFE, new Item.Properties() + .stacksTo(1).rarity(Rarity.RARE), 155)); // Crafting Materials - public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> new BushHammerItem(DGItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); - public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); + public static final RegSupplier BUSH_HAMMER = register("bush_hammer", () -> + new BushHammerItem(DGItemTiers.LEAD, 2.5F, -2.8F, (new Item.Properties()).stacksTo(1))); + public static final RegSupplier HAMMER_AND_CHISEL = register("hammer_and_chisel", () -> + new HammerAndChiselItem(DGBlocks.STONE_TABLET.get())); public static final RegSupplier HOLLER_SPAWN_EGG = register("holler_spawn_egg", () -> - PlatHelper.newSpawnEgg(DGEntityTypes.HOLLER, 0x84EED2, 0x24352F,new Item.Properties())); + PlatHelper.newSpawnEgg(DGEntityTypes.HOLLER, 0x84EED2, 0x24352F, new Item.Properties())); private static RegSupplier register(String name, Supplier factory) { return RegHelper.registerItem(modLoc(name), factory); diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java new file mode 100644 index 00000000..69781cfc --- /dev/null +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java @@ -0,0 +1,4 @@ +package galena.doom_and_gloom.fabric; + +public record FogParams(float start, float end, float red, float green, float blue) { +} diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java new file mode 100644 index 00000000..cbba81fa --- /dev/null +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -0,0 +1,43 @@ +package galena.doom_and_gloom.fabric.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.systems.RenderSystem; +import galena.doom_and_gloom.fabric.FogParams; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.world.level.material.FogType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FogRenderer.class) +public abstract class FogRendererMixin { + + @Shadow private static float fogRed; + + @Shadow private static float fogGreen; + + @Shadow private static float fogBlue; + + @Inject(method = "setupFog", at = @At(value = "TAIL")) + private static void polytone$modifyFogShape(Camera camera, FogRenderer.FogMode fogMode, + float farPlaneDistance, boolean shouldCreateFog, + float partialTick, CallbackInfo ci, @Local FogType fogType) { + if (fogMode == FogRenderer.FogMode.FOG_TERRAIN && fogType == FogType.NONE) { + + FogParams oldParams = new FogParams(RenderSystem.getShaderFogStart(), + RenderSystem.getShaderFogEnd(), fogRed, fogGreen, fogBlue); + + RenderSystem.setShaderFogStart(newFog.x); + RenderSystem.setShaderFogEnd(newFog.y); + + fogRed = , + fogGreen = , + fogBlue = , + + } + } + +} diff --git a/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json b/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json index 6aaf4d08..b4623e2f 100644 --- a/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json +++ b/fabric/src/main/resources/doom_and_gloom.fabric.mixins.json @@ -9,5 +9,8 @@ "server": [], "injectors": { "defaultRequire": 1 - } + }, + "client": [ + "FogRendererMixin" + ] } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java index b85d3826..e1596261 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/mixin/LivingEntityMixin.java @@ -8,7 +8,7 @@ import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; -//TODO:avoid mixin, use services, dep injection instead +//TODO:avoid mixin, use services or dep injection instead. even through a generic helper method like isSepulchered, or setSepulchered. only advantage to this is that on 1.21 porting will be trivial @Mixin(LivingEntity.class) public abstract class LivingEntityMixin extends Entity implements ISepulcherable { @@ -18,11 +18,11 @@ public LivingEntityMixin(EntityType pEntityType, Level pLevel) { @Override public void DG$setSepulchered(boolean sepulchered) { - this.getPersistentData().putBoolean(ForgeEntrypoint.DG_TAG_KEY, sepulchered); + this.getPersistentData().putBoolean(ISepulcherable.DG_TAG_KEY, sepulchered); } @Override public boolean DG$wasSepulchered() { - return this.getPersistentData().getBoolean(ForgeEntrypoint.DG_TAG_KEY); + return this.getPersistentData().getBoolean(ISepulcherable.DG_TAG_KEY); } } From ff07350f83d1c66c5277029522db6f446b18edb9 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Tue, 4 Nov 2025 17:08:02 +0100 Subject: [PATCH 30/43] client tick --- .../doom_and_gloom/fabric/FabricClientEntrypoint.java | 8 ++++++++ .../doom_and_gloom/fabric/mixin/FogRendererMixin.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 9cae3ab8..90a61c4a 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -1,7 +1,11 @@ package galena.doom_and_gloom.fabric; import galena.doom_and_gloom.client.DoomAndGloomClient; +import galena.doom_and_gloom.client.FogRendering; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; public class FabricClientEntrypoint implements ClientModInitializer { @@ -9,6 +13,10 @@ public class FabricClientEntrypoint implements ClientModInitializer { public void onInitializeClient() { DoomAndGloomClient.init(); DoomAndGloomClient.setup(); + + ClientTickEvents.END_CLIENT_TICK.register(minecraft -> { + FogRendering.clientTick(); + }); } } diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index cbba81fa..42bc7ffd 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -22,7 +22,7 @@ public abstract class FogRendererMixin { @Shadow private static float fogBlue; @Inject(method = "setupFog", at = @At(value = "TAIL")) - private static void polytone$modifyFogShape(Camera camera, FogRenderer.FogMode fogMode, + private static void dg$modifyFogShape(Camera camera, FogRenderer.FogMode fogMode, float farPlaneDistance, boolean shouldCreateFog, float partialTick, CallbackInfo ci, @Local FogType fogType) { if (fogMode == FogRenderer.FogMode.FOG_TERRAIN && fogType == FogType.NONE) { From 28a79830303c6021a7cd519c9eba9707dc2a6717 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Tue, 4 Nov 2025 17:29:31 +0100 Subject: [PATCH 31/43] fog --- .../{ => fog}/FogAmbientSoundHandler.java | 2 +- .../client/{ => fog}/FogRendering.java | 34 +++++++++++---- .../mixin/client/LocalPlayerMixin.java | 2 +- .../fabric/FabricClientEntrypoint.java | 4 +- .../fabric/mixin/FogRendererMixin.java | 43 ++++++++++++------- .../forge/FogRenderingEvents.java | 38 ++++++++-------- 6 files changed, 73 insertions(+), 50 deletions(-) rename common/src/main/java/galena/doom_and_gloom/client/{ => fog}/FogAmbientSoundHandler.java (96%) rename common/src/main/java/galena/doom_and_gloom/client/{ => fog}/FogRendering.java (66%) diff --git a/common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogAmbientSoundHandler.java similarity index 96% rename from common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java rename to common/src/main/java/galena/doom_and_gloom/client/fog/FogAmbientSoundHandler.java index 98776c33..e83e1390 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/FogAmbientSoundHandler.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogAmbientSoundHandler.java @@ -1,4 +1,4 @@ -package galena.doom_and_gloom.client; +package galena.doom_and_gloom.client.fog; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGSoundEvents; diff --git a/common/src/main/java/galena/doom_and_gloom/client/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java similarity index 66% rename from common/src/main/java/galena/doom_and_gloom/client/FogRendering.java rename to common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index 377fb147..db1ed46a 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -1,19 +1,24 @@ -package galena.doom_and_gloom.client; +package galena.doom_and_gloom.client.fog; +import com.mojang.blaze3d.shaders.FogShape; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGParticleTypes; -import java.awt.*; -import java.util.Optional; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.FogRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.tags.FluidTags; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.FogType; import org.jetbrains.annotations.Nullable; +import java.awt.*; +import java.util.Optional; + public class FogRendering { @Nullable @@ -61,21 +66,32 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, } } - public static Optional fogEffectColor(Color from, float partialTicks) { + public static float @Nullable [] modifyFogColor(float r, float g, float b, float partialTicks) { return activeEffect() .flatMap(MobEffectInstance::getFactorData) .map(factorData -> { + //TODO: split in channels var color = new Color(0x697180); LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); float factor = factorData.getFactor(entity, partialTicks); float inverseFactor = 1 - factor; - var red = (color.getRed() / 255F * factor + from.getRed() * inverseFactor); - var green = (color.getGreen() / 255F * factor + from.getGreen() * inverseFactor); - var blue = (color.getBlue() / 255F * factor + from.getBlue() * inverseFactor); + float red = (color.getRed() / 255F * factor + r * inverseFactor); + float green = (color.getGreen() / 255F * factor + g * inverseFactor); + float blue = (color.getBlue() / 255F * factor + b * inverseFactor); - return new Color(red, green, blue); - }); + return new float[]{red, green, blue}; + }).orElse(null); } + public static float @Nullable [] modifyPlanes(float nearPlaneDistance, float farPlaneDistance, + FogRenderer.FogMode mode, FogShape fogShape, FogType type, + float partialTicks) { + return FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).map(factorData -> { + LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + float far = Mth.lerp(factorData.getFactor(entity, partialTicks), farPlaneDistance, 15F); + float near = (mode == FogRenderer.FogMode.FOG_SKY ? -2F : far * -0.5F); + return new float[]{near, far}; + }).orElse(null); + } } diff --git a/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java b/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java index e48c52e3..9a6178da 100644 --- a/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java +++ b/common/src/main/java/galena/doom_and_gloom/mixin/client/LocalPlayerMixin.java @@ -1,6 +1,6 @@ package galena.doom_and_gloom.mixin.client; -import galena.doom_and_gloom.client.FogAmbientSoundHandler; +import galena.doom_and_gloom.client.fog.FogAmbientSoundHandler; import net.minecraft.client.ClientRecipeBook; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 90a61c4a..9625d846 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -1,11 +1,9 @@ package galena.doom_and_gloom.fabric; import galena.doom_and_gloom.client.DoomAndGloomClient; -import galena.doom_and_gloom.client.FogRendering; +import galena.doom_and_gloom.client.fog.FogRendering; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.event.client.ClientTickCallback; public class FabricClientEntrypoint implements ClientModInitializer { diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index 42bc7ffd..e9d4c046 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -1,8 +1,9 @@ package galena.doom_and_gloom.fabric.mixin; import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.shaders.FogShape; import com.mojang.blaze3d.systems.RenderSystem; -import galena.doom_and_gloom.fabric.FogParams; +import galena.doom_and_gloom.client.fog.FogRendering; import net.minecraft.client.Camera; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.world.level.material.FogType; @@ -15,29 +16,39 @@ @Mixin(FogRenderer.class) public abstract class FogRendererMixin { - @Shadow private static float fogRed; + @Shadow + private static float fogRed; - @Shadow private static float fogGreen; + @Shadow + private static float fogGreen; - @Shadow private static float fogBlue; + @Shadow + private static float fogBlue; @Inject(method = "setupFog", at = @At(value = "TAIL")) private static void dg$modifyFogShape(Camera camera, FogRenderer.FogMode fogMode, - float farPlaneDistance, boolean shouldCreateFog, - float partialTick, CallbackInfo ci, @Local FogType fogType) { - if (fogMode == FogRenderer.FogMode.FOG_TERRAIN && fogType == FogType.NONE) { - - FogParams oldParams = new FogParams(RenderSystem.getShaderFogStart(), - RenderSystem.getShaderFogEnd(), fogRed, fogGreen, fogBlue); + float farPlaneDistance, boolean shouldCreateFog, + float partialTick, CallbackInfo ci, @Local FogType fogType) { + + float[] newColor = FogRendering.modifyFogColor( + fogRed, fogGreen, fogBlue, partialTick); + if (newColor != null) { + fogRed = newColor[0]; + fogGreen = newColor[1]; + fogBlue = newColor[2]; + } - RenderSystem.setShaderFogStart(newFog.x); - RenderSystem.setShaderFogEnd(newFog.y); + float start = RenderSystem.getShaderFogStart(); + float end = RenderSystem.getShaderFogEnd(); + FogShape fogShape = RenderSystem.getShaderFogShape(); - fogRed = , - fogGreen = , - fogBlue = , + float[] nearFar = FogRendering.modifyPlanes(start, end, //near far wherever we are + fogMode, fogShape, fogType, partialTick); + if (nearFar != null) { + RenderSystem.setShaderFogStart(nearFar[0]); + RenderSystem.setShaderFogEnd(nearFar[1]); } } - } + diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java index 33e89f6f..3059208c 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java @@ -1,13 +1,7 @@ package galena.doom_and_gloom.forge; import galena.doom_and_gloom.DoomAndGloom; -import galena.doom_and_gloom.client.FogRendering; -import java.awt.*; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.FogRenderer; -import net.minecraft.util.Mth; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.LivingEntity; +import galena.doom_and_gloom.client.fog.FogRendering; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ViewportEvent; import net.minecraftforge.event.TickEvent; @@ -19,28 +13,32 @@ public class FogRenderingEvents { @SubscribeEvent public static void clientTick(TickEvent.ClientTickEvent event) { - FogRendering.clientTick(); + if (event.phase == TickEvent.Phase.END) FogRendering.clientTick(); } @SubscribeEvent public static void fogEffectFog(ViewportEvent.RenderFog event) { - FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).ifPresent(factorData -> { - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float f = Mth.lerp(factorData.getFactor(entity, (float) event.getPartialTick()), event.getFarPlaneDistance(), 15F); - event.setNearPlaneDistance(event.getMode() == FogRenderer.FogMode.FOG_SKY ? -2F : f * -0.5F); - event.setFarPlaneDistance(f); + + float[] nearFar = FogRendering.modifyPlanes(event.getNearPlaneDistance(), event.getFarPlaneDistance(), //near far wherever we are + event.getMode(), event.getFogShape(), event.getType(), (float) event.getPartialTick()); + + if (nearFar != null) { + event.setNearPlaneDistance(nearFar[0]); + event.setFarPlaneDistance(nearFar[1]); event.setCanceled(true); - }); + } + } @SubscribeEvent public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { - var from = new Color(event.getRed(), event.getGreen(), event.getBlue()); - FogRendering.fogEffectColor(from, (float) event.getPartialTick()).ifPresent(to -> { - event.setRed(to.getRed()); - event.setGreen(to.getGreen()); - event.setBlue(to.getBlue()); - }); + float[] newColor = FogRendering.modifyFogColor( + event.getRed(), event.getGreen(), event.getBlue(), (float) event.getPartialTick()); + if (newColor != null) { + event.setRed(newColor[0]); + event.setGreen(newColor[1]); + event.setBlue(newColor[2]); + } } } From ca10ecf8b4d07b715627872843a9963fa65fdb14 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Thu, 6 Nov 2025 12:52:56 +0100 Subject: [PATCH 32/43] update dye depot & run spotless --- .../galena/doom_and_gloom/client/fog/FogRendering.java | 5 ++--- .../src/main/java/galena/doom_and_gloom/index/DGItems.java | 7 +++---- fabric/build.gradle.kts | 4 +--- .../doom_and_gloom/fabric/mixin/FogRendererMixin.java | 1 - gradle/libs.versions.toml | 4 ++-- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index db1ed46a..f9f0f86b 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -3,6 +3,8 @@ import com.mojang.blaze3d.shaders.FogShape; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGParticleTypes; +import java.awt.*; +import java.util.Optional; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.core.BlockPos; @@ -16,9 +18,6 @@ import net.minecraft.world.level.material.FogType; import org.jetbrains.annotations.Nullable; -import java.awt.*; -import java.util.Optional; - public class FogRendering { @Nullable diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java index d5297f40..5a75be91 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGItems.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGItems.java @@ -1,7 +1,10 @@ package galena.doom_and_gloom.index; +import static galena.doom_and_gloom.DoomAndGloom.modLoc; + import galena.doom_and_gloom.content.item.BushHammerItem; import galena.doom_and_gloom.content.item.HammerAndChiselItem; +import java.util.function.Supplier; import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; @@ -9,10 +12,6 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.item.RecordItem; -import java.util.function.Supplier; - -import static galena.doom_and_gloom.DoomAndGloom.modLoc; - public class DGItems { // Discs diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 5cd31462..94dcd625 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -46,9 +46,7 @@ dependencies { modImplementation(pack.fabric.modrinth.supplementaries) modImplementation(pack.fabric.modrinth.amendments) - modImplementation(libs.dye.depot.fabric) { - isTransitive = false - } + modImplementation(libs.dye.depot.fabric) if (!env.isCI) { modRuntimeOnly(libs.jei.fabric) diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index e9d4c046..7e92fe77 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -51,4 +51,3 @@ public abstract class FogRendererMixin { } } } - diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index daaedeba..5f525f5e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,8 +13,8 @@ galena-hats = { "group" = "dev.galena", name = "hats-forge", version = "1.20.1-1 oreganized = { "group" = "dev.galena", name = "oreganized", version = "4.3.1" } blueprint = { group = "com.teamabnormals", name = "blueprint", version = "1.20.1-7.1.0" } -dye-depot-forge = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-forge" } -dye-depot-fabric = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.1-fabric" } +dye-depot-forge = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.3-forge" } +dye-depot-fabric = { group = "com.ninni.dye_depot", name = "dye_depot", version = "1.20.1-1.2.2-fabric" } jei-forge = { group = "mezz.jei", name = "jei-1.20.1-forge", version.ref = "jei" } jei-fabric = { group = "mezz.jei", name = "jei-1.20.1-fabric", version.ref = "jei" } From cffe0b887bdcccb29499479e706a9d16af00b194 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Thu, 6 Nov 2025 13:23:32 +0100 Subject: [PATCH 33/43] actually use fabric mixins & register particles there --- .../doom_and_gloom/client/DoomAndGloomClient.java | 3 +-- .../fabric/FabricClientEntrypoint.java | 12 ++++++++++++ fabric/src/main/resources/fabric.mod.json | 3 ++- .../galena/doom_and_gloom/forge/ForgeEntrypoint.java | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index 28f6710a..c6ce10c4 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -26,7 +26,6 @@ public class DoomAndGloomClient { public static void init() { ClientHelper.addClientReloadListener(DGReloadListener::new, DoomAndGloom.modLoc("tablets_reloader")); - ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); ClientHelper.addEntityRenderersRegistration(DoomAndGloomClient::registerEntityRenderers); ClientHelper.addModelLayerRegistration(DoomAndGloomClient::registerModelLayers); ClientHelper.addShaderRegistration(DoomAndGloomClient::registerShaders); @@ -55,7 +54,7 @@ public static void registerModelLayers(ClientHelper.ModelLayerEvent event) { event.register(DGModelLayers.DIRT_MOUND, DirtMoundModel::createBodyLayer); } - private static void registerParticleFactories(ClientHelper.ParticleEvent event) { + public static void registerParticleFactories(ClientHelper.ParticleEvent event) { event.register(DGParticleTypes.BONE_FRAGMENT.get(), BoneFragmentParticle.Provider::new); event.register(DGParticleTypes.FOG.get(), sprites -> new FogParticle.Provider(sprites, 200)); event.register(DGParticleTypes.FOG_WATER.get(), sprites -> new FogParticle.Provider(sprites, 100)); diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 9625d846..1266eb36 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -4,6 +4,10 @@ import galena.doom_and_gloom.client.fog.FogRendering; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; +import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; public class FabricClientEntrypoint implements ClientModInitializer { @@ -12,6 +16,14 @@ public void onInitializeClient() { DoomAndGloomClient.init(); DoomAndGloomClient.setup(); + var particleRegistry = ParticleFactoryRegistry.getInstance(); + DoomAndGloomClient.registerParticleFactories(new ClientHelper.ParticleEvent() { + @Override + public

, T extends ParticleOptions> void register(P type, ClientHelper.ParticleFactory factory) { + particleRegistry.register(type, factory::create); + } + }); + ClientTickEvents.END_CLIENT_TICK.register(minecraft -> { FogRendering.clientTick(); }); diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 4597fbb9..790da299 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -23,7 +23,8 @@ ] }, "mixins": [ - "${mod_id}.mixins.json" + "${mod_id}.mixins.json", + "${mod_id}.fabric.mixins.json" ], "depends": { "fabricloader": ">=0.16", diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index ce1b83cb..6be97d1d 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -26,6 +26,7 @@ public ForgeEntrypoint() { if(PlatHelper.getPhysicalSide().isClient()) { DoomAndGloomClient.init(); + ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); ClientHelper.addClientSetup(DoomAndGloomClient::setup); } From 55a8f58893fe81bcfd5cf9ccadb360b26d7763a8 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Thu, 6 Nov 2025 14:03:08 +0100 Subject: [PATCH 34/43] set release type to beta --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 69fac94e..297c1718 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ mod_name=Doom & Gloom mod_author=Team Galena mod_id=doom_and_gloom -mod_version=1.0.3 -release_type=release +mod_version=0.0.0-dev +release_type=beta # Gradle org.gradle.jvmargs=-Xmx4G From 65ea117e8218cf29ef92d5e8eb838e94aefdc6b7 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Thu, 6 Nov 2025 14:10:38 +0100 Subject: [PATCH 35/43] renames --- .../doom_and_gloom/client/fog/FogRendering.java | 13 ++++++++++--- .../fabric/mixin/FogRendererMixin.java | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index db1ed46a..613f05d0 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -10,6 +10,7 @@ import net.minecraft.tags.FluidTags; import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -84,12 +85,18 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, }).orElse(null); } - public static float @Nullable [] modifyPlanes(float nearPlaneDistance, float farPlaneDistance, + public static float @Nullable [] modifyPlanes(float start, float end, FogRenderer.FogMode mode, FogShape fogShape, FogType type, float partialTicks) { + if (true) { + float far = 15; + float near = (mode == FogRenderer.FogMode.FOG_SKY ? -2F : far * -0.5F); + return new float[]{near, far}; + } return FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).map(factorData -> { - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float far = Mth.lerp(factorData.getFactor(entity, partialTicks), farPlaneDistance, 15F); + Entity camE = Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + if (!(camE instanceof LivingEntity le)) return null; + float far = Mth.lerp(factorData.getFactor(le, partialTicks), end, 15F); float near = (mode == FogRenderer.FogMode.FOG_SKY ? -2F : far * -0.5F); return new float[]{near, far}; }).orElse(null); diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index e9d4c046..19577199 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -27,7 +27,7 @@ public abstract class FogRendererMixin { @Inject(method = "setupFog", at = @At(value = "TAIL")) private static void dg$modifyFogShape(Camera camera, FogRenderer.FogMode fogMode, - float farPlaneDistance, boolean shouldCreateFog, + float renderDistance, boolean shouldCreateFog, float partialTick, CallbackInfo ci, @Local FogType fogType) { float[] newColor = FogRendering.modifyFogColor( From 83e0fdd6fa2e60a0abe55db383fcf4a5465879f1 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Thu, 6 Nov 2025 14:24:13 +0100 Subject: [PATCH 36/43] fog color --- .../client/fog/FogRendering.java | 25 ++++++++----------- .../doom_and_gloom/fabric/FogParams.java | 4 --- .../fabric/mixin/FogRendererMixin.java | 15 +++++++++++ gradle/libs.versions.toml | 2 +- 4 files changed, 27 insertions(+), 19 deletions(-) delete mode 100644 fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index 6882552e..0b88f0df 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -70,15 +70,17 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, return activeEffect() .flatMap(MobEffectInstance::getFactorData) .map(factorData -> { - //TODO: split in channels - var color = new Color(0x697180); - LivingEntity entity = (LivingEntity) Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - float factor = factorData.getFactor(entity, partialTicks); - float inverseFactor = 1 - factor; - - float red = (color.getRed() / 255F * factor + r * inverseFactor); - float green = (color.getGreen() / 255F * factor + g * inverseFactor); - float blue = (color.getBlue() / 255F * factor + b * inverseFactor); + Entity cameraEntity = Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); + if(!(cameraEntity instanceof LivingEntity le))return null; + float factor = factorData.getFactor(le, partialTicks); + // target color components (0x697180) + float targetR = 0x69 / 255f; + float targetG = 0x71 / 255f; + float targetB = 0x80 / 255f; + + float red = Mth.lerp(factor, r, targetR); + float green = Mth.lerp(factor, g, targetG); + float blue = Mth.lerp(factor, b, targetB); return new float[]{red, green, blue}; }).orElse(null); @@ -87,11 +89,6 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, public static float @Nullable [] modifyPlanes(float start, float end, FogRenderer.FogMode mode, FogShape fogShape, FogType type, float partialTicks) { - if (true) { - float far = 15; - float near = (mode == FogRenderer.FogMode.FOG_SKY ? -2F : far * -0.5F); - return new float[]{near, far}; - } return FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).map(factorData -> { Entity camE = Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); if (!(camE instanceof LivingEntity le)) return null; diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java deleted file mode 100644 index 69781cfc..00000000 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FogParams.java +++ /dev/null @@ -1,4 +0,0 @@ -package galena.doom_and_gloom.fabric; - -public record FogParams(float start, float end, float red, float green, float blue) { -} diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index fd8d7e89..4efb0f26 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -5,6 +5,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import galena.doom_and_gloom.client.fog.FogRendering; import net.minecraft.client.Camera; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.world.level.material.FogType; import org.spongepowered.asm.mixin.Mixin; @@ -50,4 +51,18 @@ public abstract class FogRendererMixin { RenderSystem.setShaderFogEnd(nearFar[1]); } } + + @Inject(method = "setupColor", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clearColor(FFFF)V", + shift = At.Shift.BEFORE)) + private static void dg$modifyFogColor(Camera camera, float partialTick, ClientLevel clientLevel, int i, float g, CallbackInfo ci, @Local FogType fogType) { + + float[] newColor = FogRendering.modifyFogColor( + fogRed, fogGreen, fogBlue, partialTick); + if (newColor != null) { + fogRed = newColor[0]; + fogGreen = newColor[1]; + fogBlue = newColor[2]; + } + + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5f525f5e..776d8227 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] multikulti = "1.20.1-45-SNAPSHOT" jei = "15.20.0.106" -moonlight = "1.20-2.16.15" +moonlight = "1.20-2.16.16" pathfinding-debug = "1.20.1-1.1.0" [libraries] From 737d795965dbfda94280d5c400ed376908c8fae9 Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Thu, 6 Nov 2025 14:24:53 +0100 Subject: [PATCH 37/43] ordinal --- .../galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index 4efb0f26..a8840b68 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -53,7 +53,7 @@ public abstract class FogRendererMixin { } @Inject(method = "setupColor", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clearColor(FFFF)V", - shift = At.Shift.BEFORE)) + shift = At.Shift.BEFORE, ordinal = 1)) private static void dg$modifyFogColor(Camera camera, float partialTick, ClientLevel clientLevel, int i, float g, CallbackInfo ci, @Local FogType fogType) { float[] newColor = FogRendering.modifyFogColor( @@ -63,6 +63,5 @@ public abstract class FogRendererMixin { fogGreen = newColor[1]; fogBlue = newColor[2]; } - } } From 079cc51da0ae0c4bf77ab1f51baa3b4a7ba6fc7b Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Thu, 6 Nov 2025 14:41:11 +0100 Subject: [PATCH 38/43] fog wip and client stuff --- .../client/DoomAndGloomClient.java | 2 ++ .../doom_and_gloom/client/fog/FogRendering.java | 9 +++++---- .../fabric/FabricClientEntrypoint.java | 9 --------- .../fabric/mixin/FogRendererMixin.java | 16 +++++----------- .../doom_and_gloom/forge/FogRenderingEvents.java | 4 +++- .../doom_and_gloom/forge/ForgeEntrypoint.java | 5 +---- 6 files changed, 16 insertions(+), 29 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java index c6ce10c4..b9f84b3b 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java +++ b/common/src/main/java/galena/doom_and_gloom/client/DoomAndGloomClient.java @@ -29,6 +29,8 @@ public static void init() { ClientHelper.addEntityRenderersRegistration(DoomAndGloomClient::registerEntityRenderers); ClientHelper.addModelLayerRegistration(DoomAndGloomClient::registerModelLayers); ClientHelper.addShaderRegistration(DoomAndGloomClient::registerShaders); + ClientHelper.addClientSetup(DoomAndGloomClient::setup); + ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); } public static void setup() { diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index 0b88f0df..8c703123 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -3,8 +3,6 @@ import com.mojang.blaze3d.shaders.FogShape; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGParticleTypes; -import java.awt.*; -import java.util.Optional; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.core.BlockPos; @@ -19,6 +17,8 @@ import net.minecraft.world.level.material.FogType; import org.jetbrains.annotations.Nullable; +import java.util.Optional; + public class FogRendering { @Nullable @@ -71,7 +71,7 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, .flatMap(MobEffectInstance::getFactorData) .map(factorData -> { Entity cameraEntity = Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); - if(!(cameraEntity instanceof LivingEntity le))return null; + if (!(cameraEntity instanceof LivingEntity le)) return null; float factor = factorData.getFactor(le, partialTicks); // target color components (0x697180) float targetR = 0x69 / 255f; @@ -87,8 +87,9 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, } public static float @Nullable [] modifyPlanes(float start, float end, - FogRenderer.FogMode mode, FogShape fogShape, FogType type, + FogRenderer.FogMode mode, FogShape fogShape, FogType fogType, float partialTicks) { + if (fogType != FogType.NONE) return null; return FogRendering.activeEffect().flatMap(MobEffectInstance::getFactorData).map(factorData -> { Entity camE = Minecraft.getInstance().gameRenderer.getMainCamera().getEntity(); if (!(camE instanceof LivingEntity le)) return null; diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 1266eb36..62ac49fb 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -14,15 +14,6 @@ public class FabricClientEntrypoint implements ClientModInitializer { @Override public void onInitializeClient() { DoomAndGloomClient.init(); - DoomAndGloomClient.setup(); - - var particleRegistry = ParticleFactoryRegistry.getInstance(); - DoomAndGloomClient.registerParticleFactories(new ClientHelper.ParticleEvent() { - @Override - public

, T extends ParticleOptions> void register(P type, ClientHelper.ParticleFactory factory) { - particleRegistry.register(type, factory::create); - } - }); ClientTickEvents.END_CLIENT_TICK.register(minecraft -> { FogRendering.clientTick(); diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index a8840b68..536ac70d 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -1,5 +1,6 @@ package galena.doom_and_gloom.fabric.mixin; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.shaders.FogShape; import com.mojang.blaze3d.systems.RenderSystem; @@ -31,14 +32,6 @@ public abstract class FogRendererMixin { float renderDistance, boolean shouldCreateFog, float partialTick, CallbackInfo ci, @Local FogType fogType) { - float[] newColor = FogRendering.modifyFogColor( - fogRed, fogGreen, fogBlue, partialTick); - if (newColor != null) { - fogRed = newColor[0]; - fogGreen = newColor[1]; - fogBlue = newColor[2]; - } - float start = RenderSystem.getShaderFogStart(); float end = RenderSystem.getShaderFogEnd(); FogShape fogShape = RenderSystem.getShaderFogShape(); @@ -52,9 +45,9 @@ public abstract class FogRendererMixin { } } - @Inject(method = "setupColor", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;clearColor(FFFF)V", - shift = At.Shift.BEFORE, ordinal = 1)) - private static void dg$modifyFogColor(Camera camera, float partialTick, ClientLevel clientLevel, int i, float g, CallbackInfo ci, @Local FogType fogType) { + //not ideal. should happen before set clear color but just setting it again should do the trick too + @Inject(method = "setupColor", at = @At(value = "TAIL")) + private static void dg$modifyFogColor(Camera camera, float partialTick, ClientLevel clientLevel, int i, float g, CallbackInfo ci) { float[] newColor = FogRendering.modifyFogColor( fogRed, fogGreen, fogBlue, partialTick); @@ -62,6 +55,7 @@ public abstract class FogRendererMixin { fogRed = newColor[0]; fogGreen = newColor[1]; fogBlue = newColor[2]; + RenderSystem.clearColor(fogRed, fogGreen, fogBlue, 0.0F); } } } diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java index 3059208c..b056bda2 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java @@ -1,5 +1,6 @@ package galena.doom_and_gloom.forge; +import com.mojang.blaze3d.systems.RenderSystem; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.client.fog.FogRendering; import net.minecraftforge.api.distmarker.Dist; @@ -33,7 +34,8 @@ public static void fogEffectFog(ViewportEvent.RenderFog event) { @SubscribeEvent public static void fogEffectColor(ViewportEvent.ComputeFogColor event) { float[] newColor = FogRendering.modifyFogColor( - event.getRed(), event.getGreen(), event.getBlue(), (float) event.getPartialTick()); + event.getRed(), event.getGreen(), event.getBlue(), + (float) event.getPartialTick()); if (newColor != null) { event.setRed(newColor[0]); event.setGreen(newColor[1]); diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 6be97d1d..321a0fb7 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -6,7 +6,6 @@ import galena.doom_and_gloom.compat.CompatMods; import galena.doom_and_gloom.content.entity.ISepulcherable; import galena.doom_and_gloom.forge.compat.OreganizedCompat; -import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -24,10 +23,8 @@ public class ForgeEntrypoint { public ForgeEntrypoint() { DoomAndGloom.init(); - if(PlatHelper.getPhysicalSide().isClient()) { + if (PlatHelper.getPhysicalSide().isClient()) { DoomAndGloomClient.init(); - ClientHelper.addParticleRegistration(DoomAndGloomClient::registerParticleFactories); - ClientHelper.addClientSetup(DoomAndGloomClient::setup); } IEventBus forgeBus = MinecraftForge.EVENT_BUS; From d0fd4d4ac9c5603b51e09627ee5b87075ba2350b Mon Sep 17 00:00:00 2001 From: MehVahdJukaar Date: Thu, 6 Nov 2025 14:48:36 +0100 Subject: [PATCH 39/43] poi thing --- .../main/java/galena/doom_and_gloom/DoomAndGloom.java | 4 ++-- .../galena/doom_and_gloom/client/fog/FogRendering.java | 6 +++--- .../galena/doom_and_gloom/content/effect/FogEffect.java | 2 +- .../src/main/java/galena/doom_and_gloom/index/DGPoi.java | 7 +++---- .../galena/doom_and_gloom/index/DGVillagerTypes.java | 9 +++++---- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java index c9519d01..66362936 100644 --- a/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java +++ b/common/src/main/java/galena/doom_and_gloom/DoomAndGloom.java @@ -20,14 +20,14 @@ public static ResourceLocation modLoc(String location) { public static void init() { DGConfig.init(); - DGBlockEntities.init(); + DGSoundEvents.init(); DGBlocks.init(); + DGBlockEntities.init(); DGEffects.init(); DGEntityTypes.init(); DGItems.init(); DGParticleTypes.init(); DGPoi.init(); - DGSoundEvents.init(); DGVillagerTypes.init(); DGItemListings.init(); DGLootInjects.init(); diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index 8c703123..c2494d82 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -74,9 +74,9 @@ private static void addFogGroup(Level level, ParticleOptions type, BlockPos at, if (!(cameraEntity instanceof LivingEntity le)) return null; float factor = factorData.getFactor(le, partialTicks); // target color components (0x697180) - float targetR = 0x69 / 255f; - float targetG = 0x71 / 255f; - float targetB = 0x80 / 255f; + float targetR = 0x85 / 255f; + float targetG = 0x90 / 255f; + float targetB = 0xA0 / 255f; float red = Mth.lerp(factor, r, targetR); float green = Mth.lerp(factor, g, targetG); diff --git a/common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java b/common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java index 74387e9e..be79e06e 100644 --- a/common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java +++ b/common/src/main/java/galena/doom_and_gloom/content/effect/FogEffect.java @@ -7,7 +7,7 @@ public class FogEffect extends MobEffect { public FogEffect() { - super(MobEffectCategory.HARMFUL, 2696993); + super(MobEffectCategory.HARMFUL, 0x514AA1); this.setFactorDataFactory(() -> new MobEffectInstance.FactorData(22)); } diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java index 33e45464..2f9f9fe7 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java @@ -4,6 +4,8 @@ import java.util.HashSet; import java.util.function.Supplier; + +import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -11,10 +13,7 @@ public class DGPoi { - public static final ResourceKey GRAVETENDER_POI_KEY = ResourceKey.create(Registries.POINT_OF_INTEREST_TYPE, - modLoc("gravetender")); - - public static final Supplier GRAVETENDER_POI = RegHelper.registerPOI(modLoc("gravetender"), + public static final RegSupplier GRAVETENDER_POI = RegHelper.registerPOI(modLoc("gravetender"), () -> new PoiType(new HashSet<>(DGBlocks.SEPULCHER.get().getStateDefinition().getPossibleStates()), 1, 1)); diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java index 92cf7c3a..fc24512a 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java @@ -14,12 +14,13 @@ public class DGVillagerTypes { - public static final RegSupplier GRAVETENDER = register("gravetender", DGPoi.GRAVETENDER_POI_KEY, DGSoundEvents.GRAVETENDER_WORK); + public static final RegSupplier GRAVETENDER = register("gravetender", + DGPoi.GRAVETENDER_POI, DGSoundEvents.GRAVETENDER_WORK); - private static RegSupplier register(String name, ResourceKey jobSite, Supplier workSound) { + private static RegSupplier register(String name, Supplier jobSite, Supplier workSound) { Supplier factory = () -> new VillagerProfession(name, - (holder) -> holder.is(jobSite), - (holder) -> holder.is(jobSite), + (holder) -> holder.value() == jobSite.get(), + (holder) -> holder.value() == jobSite.get(), ImmutableSet.of(), ImmutableSet.of(), workSound.get()); return RegHelper.register(modLoc(name), factory, Registries.VILLAGER_PROFESSION); From 68aa9b6aad4566835da1a696a53a76c1d64b818e Mon Sep 17 00:00:00 2001 From: "spotless-bot[bot]" <224091048+spotless-bot[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:07:29 +0000 Subject: [PATCH 40/43] run spotless --- .../java/galena/doom_and_gloom/client/fog/FogRendering.java | 3 +-- common/src/main/java/galena/doom_and_gloom/index/DGPoi.java | 4 ---- .../java/galena/doom_and_gloom/index/DGVillagerTypes.java | 1 - .../galena/doom_and_gloom/fabric/FabricClientEntrypoint.java | 4 ---- .../galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java | 1 - .../java/galena/doom_and_gloom/forge/FogRenderingEvents.java | 1 - 6 files changed, 1 insertion(+), 13 deletions(-) diff --git a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java index c2494d82..06f5f0dc 100644 --- a/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java +++ b/common/src/main/java/galena/doom_and_gloom/client/fog/FogRendering.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.shaders.FogShape; import galena.doom_and_gloom.index.DGEffects; import galena.doom_and_gloom.index.DGParticleTypes; +import java.util.Optional; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.core.BlockPos; @@ -17,8 +18,6 @@ import net.minecraft.world.level.material.FogType; import org.jetbrains.annotations.Nullable; -import java.util.Optional; - public class FogRendering { @Nullable diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java index 2f9f9fe7..d676b94c 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGPoi.java @@ -3,12 +3,8 @@ import static galena.doom_and_gloom.DoomAndGloom.modLoc; import java.util.HashSet; -import java.util.function.Supplier; - import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.ai.village.poi.PoiType; public class DGPoi { diff --git a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java index fc24512a..bff292cd 100644 --- a/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java +++ b/common/src/main/java/galena/doom_and_gloom/index/DGVillagerTypes.java @@ -7,7 +7,6 @@ import net.mehvahdjukaar.moonlight.api.misc.RegSupplier; import net.mehvahdjukaar.moonlight.api.platform.RegHelper; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.entity.ai.village.poi.PoiType; import net.minecraft.world.entity.npc.VillagerProfession; diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java index 62ac49fb..176b7a92 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/FabricClientEntrypoint.java @@ -4,10 +4,6 @@ import galena.doom_and_gloom.client.fog.FogRendering; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; -import net.mehvahdjukaar.moonlight.api.platform.ClientHelper; -import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.core.particles.ParticleType; public class FabricClientEntrypoint implements ClientModInitializer { diff --git a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java index 536ac70d..5e1f2d6b 100644 --- a/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java +++ b/fabric/src/main/java/galena/doom_and_gloom/fabric/mixin/FogRendererMixin.java @@ -1,6 +1,5 @@ package galena.doom_and_gloom.fabric.mixin; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.shaders.FogShape; import com.mojang.blaze3d.systems.RenderSystem; diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java index b056bda2..bce2300e 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/FogRenderingEvents.java @@ -1,6 +1,5 @@ package galena.doom_and_gloom.forge; -import com.mojang.blaze3d.systems.RenderSystem; import galena.doom_and_gloom.DoomAndGloom; import galena.doom_and_gloom.client.fog.FogRendering; import net.minecraftforge.api.distmarker.Dist; From 8e376050be5d83d2fde063377ea7ab2bf2b8032d Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Fri, 7 Nov 2025 12:47:57 +0100 Subject: [PATCH 41/43] specify fabric moonlight dependency & output to java 17 --- fabric/src/main/resources/fabric.mod.json | 1 + gradle.properties | 1 + 2 files changed, 2 insertions(+) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 790da299..75f1e028 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -30,6 +30,7 @@ "fabricloader": ">=0.16", "fabric-api": "*", "minecraft": ">=1.20.1", + "moonlight": "*", "java": ">=17" } } diff --git a/gradle.properties b/gradle.properties index 297c1718..985d2040 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,6 +11,7 @@ org.gradle.daemon=false # Minecraft minecraft_version=1.20.1 +java_version=17 # Forge forge_version=47.3.0 From 3f462320cad41629df116b0b740c84955ca75698 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Fri, 7 Nov 2025 12:51:37 +0100 Subject: [PATCH 42/43] remove uneccessary instanceof check --- .../java/galena/doom_and_gloom/forge/ForgeEntrypoint.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java index 321a0fb7..33845646 100644 --- a/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java +++ b/forge/src/main/java/galena/doom_and_gloom/forge/ForgeEntrypoint.java @@ -8,7 +8,6 @@ import galena.doom_and_gloom.forge.compat.OreganizedCompat; import net.mehvahdjukaar.moonlight.api.platform.PlatHelper; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; @@ -58,11 +57,8 @@ public void onServerStart(ServerAboutToStartEvent event) { private void onLivingDrops(LivingDropsEvent event) { if (event.getEntity() instanceof Player) return; - if (event.getEntity() instanceof LivingEntity le) { - if (ISepulcherable.cast(le).DG$wasSepulchered()) { - event.setCanceled(true); - } + if (ISepulcherable.cast(event.getEntity()).DG$wasSepulchered()) { + event.setCanceled(true); } } - } From 95b577227d1b61302c59df88360d34f21e335551 Mon Sep 17 00:00:00 2001 From: Niklas Widmann Date: Fri, 7 Nov 2025 12:56:26 +0100 Subject: [PATCH 43/43] add mod loaded conditions to jeed recipe --- .../data/doom_and_gloom/recipes/jeed/fog.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json b/common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json index c8fc5543..433afd6b 100644 --- a/common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json +++ b/common/src/main/resources/data/doom_and_gloom/recipes/jeed/fog.json @@ -7,5 +7,19 @@ { "item": "doom_and_gloom:holler_spawn_egg" } + ], + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "jeed" + } + ], + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "jeed" + ] + } ] }