From d4dc30a2c6347b8b4e1578be4e3d6e971c796813 Mon Sep 17 00:00:00 2001 From: thedarkcolour <30441001+thedarkcolour@users.noreply.github.com> Date: Thu, 27 Jul 2023 17:33:50 -0700 Subject: [PATCH] Compiles --- build.gradle | 14 +- .../16d3d037cd175f65564d786329ae2bea4e7de216 | 79 ++ .../2b9da02b3b4dba3146ee268fd9b0da9e9263d537 | 2 + .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 16 + .../5f5ddf0caee48d851cd5055dbc7b23dfdcd4b8a5 | 2 + .../86e8fad2261d20af97e8edef657773f7c7b2823e | 1 + .../88728e8b0aba78bc481ee96e4ac0a48656a2d2b8 | 63 + .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 141 ++ .../adcb492c336614f4dabbf7b0ba1b80a1feec2905 | 6 + src/generated/resources/.cache/cache | 308 ---- .../d2a52f93f6a2dbbf9cb17e741383b71a5107d737 | 4 + .../e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 | 6 + .../blockstates/bamboo_barrel.json | 7 + .../blockstates/bamboo_crucible.json | 7 + .../blockstates/bamboo_sieve.json | 7 + .../blockstates/cherry_barrel.json | 7 + .../blockstates/cherry_crucible.json | 7 + .../blockstates/cherry_sieve.json | 7 + .../blockstates/mangrove_barrel.json | 7 + .../blockstates/mangrove_crucible.json | 7 + .../blockstates/mangrove_sieve.json | 7 + .../assets/exnihiloreborn/lang/en_us.json | 59 +- .../models/block/acacia_crucible.json | 6 +- .../models/block/bamboo_barrel.json | 6 + .../models/block/bamboo_crucible.json | 9 + .../models/block/bamboo_sieve.json | 6 + .../models/block/birch_crucible.json | 6 +- .../models/block/cherry_barrel.json | 6 + .../models/block/cherry_crucible.json | 9 + .../models/block/cherry_sieve.json | 6 + .../models/block/crimson_crucible.json | 6 +- .../models/block/dark_oak_crucible.json | 6 +- .../models/block/jungle_crucible.json | 6 +- .../models/block/mangrove_barrel.json | 6 + .../models/block/mangrove_crucible.json | 9 + .../models/block/mangrove_sieve.json | 6 + .../models/block/oak_crucible.json | 6 +- .../models/block/porcelain_crucible.json | 6 +- .../models/block/spruce_crucible.json | 6 +- .../models/block/unfired_crucible.json | 6 +- .../models/block/warped_crucible.json | 6 +- .../models/item/bamboo_barrel.json | 3 + .../models/item/bamboo_crucible.json | 3 + .../models/item/bamboo_sieve.json | 3 + .../models/item/cherry_barrel.json | 3 + .../models/item/cherry_crucible.json | 3 + .../models/item/cherry_sieve.json | 3 + .../models/item/copper_ore_pieces.json | 6 + .../models/item/deepslate_pebble.json | 6 + .../models/item/diamond_mesh.json | 6 + .../models/item/flint_mesh.json | 6 + .../models/item/gold_ore_pieces.json | 6 + .../exnihiloreborn/models/item/iron_mesh.json | 6 + .../models/item/iron_ore_pieces.json | 6 + .../models/item/mangrove_barrel.json | 3 + .../models/item/mangrove_crucible.json | 3 + .../models/item/mangrove_sieve.json | 3 + .../models/item/netherite_hammer.json | 6 + .../models/item/netherite_mesh.json | 6 + .../models/item/porcelain_bucket.json | 6 + .../models/item/porcelain_clay.json | 6 + .../models/item/stone_pebble.json | 6 + .../models/item/string_mesh.json | 6 + .../models/item/witch_water_bucket.json | 6 + .../advancements/core/barrel.json | 36 + .../advancements/core/crook.json | 33 + .../advancements/core/root.json | 29 + .../advancements/core/silk_worm.json | 38 + .../advancements/core/string_mesh.json | 38 + .../exnihiloreborn/compressed_crook.json | 32 - .../cooked_silk_worm.json | 25 +- .../food/cooked_silk_worm_from_smoking.json | 35 + ...celain_crucible_from_campfire_cooking.json | 35 + .../acacia_barrel.json | 25 +- .../acacia_crucible.json | 25 +- .../recipes/misc/bamboo_barrel.json | 35 + .../recipes/misc/bamboo_crucible.json | 35 + .../birch_barrel.json | 25 +- .../birch_crucible.json | 25 +- .../recipes/misc/cherry_barrel.json | 35 + .../recipes/misc/cherry_crucible.json | 35 + .../crimson_barrel.json | 25 +- .../crimson_crucible.json | 25 +- .../dark_oak_barrel.json | 25 +- .../dark_oak_crucible.json | 25 +- .../jungle_barrel.json | 25 +- .../jungle_crucible.json | 25 +- .../recipes/misc/mangrove_barrel.json | 35 + .../recipes/misc/mangrove_crucible.json | 35 + .../{exnihiloreborn => misc}/oak_barrel.json | 25 +- .../oak_crucible.json | 25 +- .../porcelain_crucible.json | 25 +- .../spruce_barrel.json | 25 +- .../spruce_crucible.json | 25 +- .../stone_barrel.json | 25 +- .../unfired_crucible.json | 25 +- .../warped_barrel.json | 25 +- .../warped_crucible.json | 25 +- .../{exnihiloreborn => tools}/bone_crook.json | 25 +- .../{exnihiloreborn => tools}/crook.json | 21 +- .../diamond_hammer.json | 23 +- .../golden_hammer.json | 23 +- .../iron_hammer.json | 23 +- .../stone_hammer.json | 23 +- .../wooden_hammer.json | 21 +- .../loot_tables/blocks/acacia_barrel.json | 16 +- .../loot_tables/blocks/birch_barrel.json | 16 +- .../blocks/compressed_cobblestone.json | 20 +- .../loot_tables/blocks/compressed_dirt.json | 20 +- .../loot_tables/blocks/compressed_dust.json | 20 +- .../loot_tables/blocks/compressed_sand.json | 20 +- .../loot_tables/blocks/crimson_barrel.json | 16 +- .../loot_tables/blocks/dark_oak_barrel.json | 16 +- .../loot_tables/blocks/dust.json | 16 +- .../loot_tables/blocks/infested_leaves.json | 8 +- .../loot_tables/blocks/jungle_barrel.json | 16 +- .../loot_tables/blocks/oak_barrel.json | 16 +- .../loot_tables/blocks/spruce_barrel.json | 16 +- .../loot_tables/blocks/stone_barrel.json | 16 +- .../loot_tables/blocks/warped_barrel.json | 16 +- .../exnihiloreborn/recipes/acacia_barrel.json | 22 +- .../recipes/acacia_crucible.json | 22 +- .../exnihiloreborn/recipes/bamboo_barrel.json | 21 + .../recipes/bamboo_crucible.json | 21 + .../recipes/barrel_compost/beef.json | 12 + .../recipes/barrel_compost/berries.json | 12 + .../recipes/barrel_compost/cake.json | 7 + .../recipes/barrel_compost/carrots.json | 7 + .../recipes/barrel_compost/chicken.json | 12 + .../recipes/barrel_compost/cod.json | 12 + .../recipes/barrel_compost/egg.json | 7 + .../recipes/barrel_compost/grass.json | 12 + .../recipes/barrel_compost/kelp.json | 4 +- .../recipes/barrel_compost/lily_pad.json | 7 + .../recipes/barrel_compost/mutton.json | 12 + .../recipes/barrel_compost/pork.json | 12 + .../recipes/barrel_compost/potatoes.json | 15 + .../{sweet_berries.json => pufferfish.json} | 2 +- .../recipes/barrel_compost/pumpkin.json | 2 +- .../recipes/barrel_compost/rabbit.json | 12 + .../recipes/barrel_compost/rotten_flesh.json | 7 + .../recipes/barrel_compost/salmon.json | 12 + .../recipes/barrel_compost/string.json | 7 + .../recipes/barrel_compost/sugar_cane.json | 7 + .../recipes/barrel_compost/tall_grass.json | 12 + .../recipes/barrel_compost/tropical_fish.json | 7 + .../recipes/barrel_compost/vine.json | 7 + .../exnihiloreborn/recipes/birch_barrel.json | 22 +- .../recipes/birch_crucible.json | 22 +- .../exnihiloreborn/recipes/bone_crook.json | 14 +- .../exnihiloreborn/recipes/cherry_barrel.json | 21 + .../recipes/cherry_crucible.json | 21 + .../recipes/compressed_crook.json | 16 - .../recipes/cooked_silk_worm.json | 7 +- .../cooked_silk_worm_from_smoking.json | 7 +- .../recipes/crimson_barrel.json | 22 +- .../recipes/crimson_crucible.json | 22 +- .../data/exnihiloreborn/recipes/crook.json | 14 +- .../recipes/dark_oak_barrel.json | 22 +- .../recipes/dark_oak_crucible.json | 22 +- .../recipes/diamond_hammer.json | 18 +- .../exnihiloreborn/recipes/golden_hammer.json | 18 +- .../recipes/hammer/crushed_netherrack.json | 15 + .../hammer/crushing_red_sandstone.json | 8 +- .../recipes/hammer/crushing_sandstone.json | 8 +- .../recipes/hammer/crushing_stone_bricks.json | 8 +- .../exnihiloreborn/recipes/hammer/dust.json | 8 +- .../exnihiloreborn/recipes/hammer/gravel.json | 8 +- .../exnihiloreborn/recipes/hammer/sand.json | 8 +- .../recipes/hammer/stone_pebbles.json | 48 +- .../exnihiloreborn/recipes/iron_hammer.json | 18 +- .../exnihiloreborn/recipes/jungle_barrel.json | 22 +- .../recipes/jungle_crucible.json | 22 +- .../recipes/lava_crucible/cobblestone.json | 8 +- .../recipes/lava_crucible/gravel.json | 8 +- .../recipes/lava_crucible/netherrack.json | 8 +- .../recipes/lava_crucible/stone.json | 8 +- .../recipes/mangrove_barrel.json | 21 + .../recipes/mangrove_crucible.json | 21 + .../recipes/netherite_hammer.json | 15 + .../exnihiloreborn/recipes/oak_barrel.json | 22 +- .../exnihiloreborn/recipes/oak_crucible.json | 22 +- .../recipes/porcelain_crucible.json | 7 +- ...celain_crucible_from_campfire_cooking.json | 10 + .../recipes/sieve/beetroot_seeds.json | 10 +- .../recipes/sieve/melon_seeds.json | 10 +- .../recipes/sieve/pumpkin_seeds.json | 10 +- .../recipes/sieve/stone_pebble.json | 58 +- .../recipes/sieve/wheat_seeds.json | 10 +- .../exnihiloreborn/recipes/spruce_barrel.json | 22 +- .../recipes/spruce_crucible.json | 22 +- .../exnihiloreborn/recipes/stone_barrel.json | 22 +- .../exnihiloreborn/recipes/stone_hammer.json | 18 +- .../recipes/unfired_crucible.json | 18 +- .../exnihiloreborn/recipes/warped_barrel.json | 22 +- .../recipes/warped_crucible.json | 22 +- .../recipes/water_crucible/apple.json | 8 +- .../recipes/water_crucible/cactus.json | 8 +- .../recipes/water_crucible/leaves.json | 8 +- .../recipes/water_crucible/lily_pad.json | 10 + .../recipes/water_crucible/melon.json | 8 +- .../recipes/water_crucible/melon_slice.json | 8 +- .../recipes/water_crucible/pumpkin.json | 8 +- .../recipes/water_crucible/saplings.json | 8 +- .../recipes/water_crucible/small_flowers.json | 8 +- .../recipes/water_crucible/sweet_berries.json | 8 +- .../recipes/water_crucible/tall_flowers.json | 8 +- .../exnihiloreborn/recipes/wooden_hammer.json | 18 +- .../exnihiloreborn/tags/items/barrels.json | 6 + .../tags/items/compressed_hammers.json | 11 - .../exnihiloreborn/tags/items/crooks.json | 2 - .../exnihiloreborn/tags/items/hammers.json | 1 - .../tags/items/stone_barrels.json | 5 + .../tags/items/wooden_barrels.json | 13 + .../overworld_void_structure_sets.json | 3 + .../the_end_void_structure_sets.json | 3 + .../the_nether_void_structure_sets.json | 5 + .../cooked_silk_worm_from_smoking.json | 32 - .../minecraft/tags/blocks/acacia_logs.json | 9 - .../data/minecraft/tags/blocks/anvil.json | 8 - .../tags/blocks/bamboo_plantable_on.json | 14 - .../data/minecraft/tags/blocks/banners.json | 37 - .../tags/blocks/base_stone_nether.json | 8 - .../tags/blocks/base_stone_overworld.json | 9 - .../tags/blocks/beacon_base_blocks.json | 10 - .../data/minecraft/tags/blocks/beds.json | 21 - .../minecraft/tags/blocks/bee_growables.json | 7 - .../data/minecraft/tags/blocks/beehives.json | 7 - .../minecraft/tags/blocks/birch_logs.json | 9 - .../data/minecraft/tags/blocks/buttons.json | 8 - .../data/minecraft/tags/blocks/campfires.json | 7 - .../data/minecraft/tags/blocks/carpets.json | 21 - .../data/minecraft/tags/blocks/climbable.json | 12 - .../minecraft/tags/blocks/coral_blocks.json | 10 - .../minecraft/tags/blocks/coral_plants.json | 10 - .../data/minecraft/tags/blocks/corals.json | 11 - .../minecraft/tags/blocks/crimson_stems.json | 9 - .../data/minecraft/tags/blocks/crops.json | 11 - .../minecraft/tags/blocks/dark_oak_logs.json | 9 - .../data/minecraft/tags/blocks/doors.json | 7 - .../minecraft/tags/blocks/dragon_immune.json | 21 - .../tags/blocks/enderman_holdable.json | 28 - .../minecraft/tags/blocks/fence_gates.json | 13 - .../data/minecraft/tags/blocks/fences.json | 7 - .../data/minecraft/tags/blocks/fire.json | 7 - .../minecraft/tags/blocks/flower_pots.json | 35 - .../data/minecraft/tags/blocks/flowers.json | 7 - .../data/minecraft/tags/blocks/gold_ores.json | 7 - .../tags/blocks/guarded_by_piglins.json | 13 - .../tags/blocks/hoglin_repellents.json | 9 - .../data/minecraft/tags/blocks/ice.json | 9 - .../minecraft/tags/blocks/impermeable.json | 22 - .../minecraft/tags/blocks/infiniburn_end.json | 7 - .../tags/blocks/infiniburn_nether.json | 6 - .../tags/blocks/infiniburn_overworld.json | 7 - .../minecraft/tags/blocks/jungle_logs.json | 9 - .../data/minecraft/tags/blocks/leaves.json | 11 - .../data/minecraft/tags/blocks/logs.json | 8 - .../minecraft/tags/blocks/logs_that_burn.json | 11 - .../tags/blocks/mushroom_grow_block.json | 9 - .../tags/blocks/non_flammable_wood.json | 35 - .../data/minecraft/tags/blocks/nylium.json | 7 - .../data/minecraft/tags/blocks/oak_logs.json | 9 - .../tags/blocks/piglin_repellents.json | 10 - .../data/minecraft/tags/blocks/planks.json | 13 - .../data/minecraft/tags/blocks/portals.json | 8 - .../tags/blocks/pressure_plates.json | 9 - .../blocks/prevent_mob_spawning_inside.json | 6 - .../data/minecraft/tags/blocks/rails.json | 9 - .../data/minecraft/tags/blocks/sand.json | 7 - .../data/minecraft/tags/blocks/saplings.json | 11 - .../minecraft/tags/blocks/shulker_boxes.json | 22 - .../data/minecraft/tags/blocks/signs.json | 7 - .../data/minecraft/tags/blocks/slabs.json | 38 - .../minecraft/tags/blocks/small_flowers.json | 18 - .../tags/blocks/soul_fire_base_blocks.json | 7 - .../tags/blocks/soul_speed_blocks.json | 7 - .../minecraft/tags/blocks/spruce_logs.json | 9 - .../data/minecraft/tags/blocks/stairs.json | 34 - .../minecraft/tags/blocks/standing_signs.json | 13 - .../minecraft/tags/blocks/stone_bricks.json | 9 - .../tags/blocks/stone_pressure_plates.json | 7 - .../tags/blocks/strider_warm_blocks.json | 6 - .../minecraft/tags/blocks/tall_flowers.json | 9 - .../data/minecraft/tags/blocks/trapdoors.json | 7 - .../tags/blocks/underwater_bonemeals.json | 8 - .../tags/blocks/unstable_bottom_center.json | 6 - .../minecraft/tags/blocks/valid_spawn.json | 7 - .../minecraft/tags/blocks/wall_corals.json | 10 - .../tags/blocks/wall_post_override.json | 12 - .../minecraft/tags/blocks/wall_signs.json | 13 - .../data/minecraft/tags/blocks/walls.json | 22 - .../minecraft/tags/blocks/warped_stems.json | 9 - .../minecraft/tags/blocks/wart_blocks.json | 7 - .../minecraft/tags/blocks/wither_immune.json | 16 - .../blocks/wither_summon_base_blocks.json | 7 - .../minecraft/tags/blocks/wooden_buttons.json | 13 - .../minecraft/tags/blocks/wooden_doors.json | 13 - .../minecraft/tags/blocks/wooden_fences.json | 13 - .../tags/blocks/wooden_pressure_plates.json | 13 - .../minecraft/tags/blocks/wooden_slabs.json | 13 - .../minecraft/tags/blocks/wooden_stairs.json | 13 - .../tags/blocks/wooden_trapdoors.json | 13 - .../data/minecraft/tags/blocks/wool.json | 21 - .../tags/worldgen/world_preset/normal.json | 5 + .../exnihiloreborn/ExNihiloReborn.java | 75 +- .../block/AbstractCrucibleBlock.java | 22 +- .../exnihiloreborn/block/BarrelBlock.java | 35 + .../block/InfestedLeavesBlock.java | 13 +- .../block/LavaCrucibleBlock.java | 4 +- .../exnihiloreborn/block/SieveBlock.java | 5 +- .../block/WaterCrucibleBlock.java | 8 +- .../AbstractCrucibleBlockEntity.java | 100 +- .../blockentity/BarrelBlockEntity.java | 183 ++- .../InfestedLeavesBlockEntity.java | 92 +- .../blockentity/LavaCrucibleBlockEntity.java | 5 +- .../blockentity/RecipeUtil.java | 4 +- .../blockentity/SieveBlockEntity.java | 16 +- .../blockentity/WaterCrucibleBlockEntity.java | 15 +- .../exnihiloreborn/client/ClientHandler.java | 78 +- .../exnihiloreborn/client/CompostColors.java | 169 +++ .../exnihiloreborn/client/ItemColors.java | 9 - .../client/ter/BarrelRenderer.java | 99 +- .../client/ter/CrucibleRenderer.java | 101 +- .../client/ter/InfestedLeavesRenderer.java | 43 +- .../client/ter/SieveRenderer.java | 35 +- .../compat/jei/BarrelCompostCategory.java | 76 + .../compat/jei/ExNihiloRebornJeiPlugin.java | 58 + .../compat/jei/ExNihiloRebornPlugin.java | 20 - .../top/InfestedLeavesInfoProvider.java | 24 +- .../compat/top/TopCompatExNihiloReborn.java | 4 +- .../exnihiloreborn/config/Config.java | 37 + .../exnihiloreborn/data/Advancements.java | 113 ++ .../exnihiloreborn/data/BlockLoot.java | 71 + .../exnihiloreborn/data/BlockModels.java | 99 ++ .../exnihiloreborn/data/BlockTags.java | 20 + .../exnihiloreborn/data/Data.java | 40 +- .../data/EBlockTagsProvider.java | 19 - .../exnihiloreborn/data/EItemTagProvider.java | 24 - .../exnihiloreborn/data/ELangProvider.java | 77 - .../exnihiloreborn/data/ELootProvider.java | 103 -- .../exnihiloreborn/data/EModelProvider.java | 173 --- .../exnihiloreborn/data/ERecipeProvider.java | 260 ---- .../exnihiloreborn/data/English.java | 31 + .../exnihiloreborn/data/FluidTags.java | 4 + .../exnihiloreborn/data/ItemModels.java | 21 + .../exnihiloreborn/data/ItemTags.java | 29 + .../exnihiloreborn/data/LootTables.java | 14 + .../exnihiloreborn/data/Recipes.java | 270 ++++ .../exnihiloreborn/data/StructureTags.java | 31 + .../exnihiloreborn/data/TranslationKeys.java | 31 + .../exnihiloreborn/data/WorldPresetTags.java | 24 + .../exnihiloreborn/event/EventHandler.java | 112 ++ .../exnihiloreborn/fluid/WitchWaterFluid.java | 60 + .../fluid/WitchWaterFluidType.java | 60 - .../exnihiloreborn/item/CrookItem.java | 60 +- .../exnihiloreborn/item/EItemTags.java | 16 - .../exnihiloreborn/item/ETab.java | 19 - .../exnihiloreborn/item/FluidBucketItem.java | 20 - .../exnihiloreborn/item/HammerItem.java | 76 +- .../item/PorcelainBucketItem.java | 9 + .../exnihiloreborn/item/SilkWormItem.java | 49 +- .../item/WitchWaterBucketItem.java | 20 + .../loot/CrookLootModifier.java | 91 +- .../loot/HammerLootModifier.java | 76 +- .../exnihiloreborn/loot/InfestedString.java | 69 - .../loot/InfestedStringCount.java | 67 + .../network/ClientMessageHandler.java | 53 + .../network/NetworkHandler.java | 31 + .../network/VoidWorldMessage.java | 25 + .../exnihiloreborn/recipe/CodecUtil.java | 13 +- .../recipe/barrel/BarrelCompostRecipe.java | 32 +- .../barrel/FinishedBarrelCompostRecipe.java | 12 +- .../crucible/FinishedCrucibleRecipe.java | 20 +- .../recipe/hammer/CompressedHammerRecipe.java | 28 - .../recipe/hammer/FinishedHammerRecipe.java | 16 +- .../recipe/hammer/HammerRecipe.java | 2 +- .../recipe/sieve/AbstractSieveRecipe.java | 84 -- .../recipe/sieve/CompressedSieveRecipe.java | 27 - .../recipe/sieve/FinishedSieveRecipe.java | 18 +- .../recipe/sieve/SieveRecipe.java | 94 +- .../registry/EBlockEntities.java | 22 +- .../exnihiloreborn/registry/EBlocks.java | 72 +- .../registry/EChunkGenerators.java | 15 + .../registry/ECreativeTabs.java | 31 + .../exnihiloreborn/registry/EFluids.java | 11 +- .../registry/EGlobalLootModifiers.java | 17 + .../exnihiloreborn/registry/EItems.java | 199 ++- .../registry/ELootFunctions.java | 19 +- .../registry/ERecipeSerializers.java | 11 +- .../exnihiloreborn/registry/ERecipeTypes.java | 21 +- .../exnihiloreborn/tag/EItemTags.java | 19 + .../exnihiloreborn/tag/EStructureSetTags.java | 18 + .../voidworld/VoidChunkGenerator.java | 133 ++ .../resources/META-INF/accesstransformer.cfg | 2 + src/main/resources/META-INF/mods.toml | 12 +- .../textures/block/compost_dirt.png | Bin 261 -> 248 bytes .../textures/block/crushed_netherrack.png | Bin 1646 -> 230 bytes .../textures/block/dust_new.png | Bin 0 -> 246 bytes .../gui/advancements/backgrounds/void.png | Bin 0 -> 124 bytes .../textures/item/bone_crook.png | Bin 3044 -> 2879 bytes .../textures/item/cooked_silk_worm.png | Bin 1213 -> 312 bytes .../textures/item/copper_ore_chunk.png | Bin 0 -> 302 bytes .../exnihiloreborn/textures/item/crook.png | Bin 2941 -> 237 bytes .../textures/item/diamond_hammer.png | Bin 3013 -> 2908 bytes .../exnihiloreborn/textures/item/gold_ore.pdn | Bin 0 -> 4171 bytes .../textures/item/gold_ore_chunk.png | Bin 0 -> 294 bytes .../textures/item/golden_hammer.png | Bin 3015 -> 2908 bytes .../textures/item/iron_hammer.png | Bin 2984 -> 2908 bytes .../textures/item/iron_ore_chunk.png | Bin 0 -> 294 bytes .../textures/item/netherite_hammer.png | Bin 0 -> 2917 bytes .../textures/item/ore_chunk_base.png | Bin 0 -> 268 bytes .../textures/item/silk_worm.png | Bin 1204 -> 1382 bytes .../textures/item/stone_hammer.png | Bin 2992 -> 258 bytes .../textures/item/witch_water_bucket.png | Bin 0 -> 323 bytes .../textures/item/wooden_hammer.png | Bin 2995 -> 2908 bytes .../loot_modifiers/compressed_hammer.json | 2 + .../exnihiloreborn/loot_modifiers/crook.json | 1 + .../exnihiloreborn/loot_modifiers/hammer.json | 2 + .../worldgen/world_preset/void_world.json | 39 + .../loot_modifiers/global_loot_modifiers.json | 3 +- src/main/resources/vanilla_compost_colors.txt | 1254 +++++++++++++++++ 422 files changed, 6587 insertions(+), 4117 deletions(-) create mode 100644 src/generated/resources/.cache/16d3d037cd175f65564d786329ae2bea4e7de216 create mode 100644 src/generated/resources/.cache/2b9da02b3b4dba3146ee268fd9b0da9e9263d537 create mode 100644 src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d create mode 100644 src/generated/resources/.cache/5f5ddf0caee48d851cd5055dbc7b23dfdcd4b8a5 create mode 100644 src/generated/resources/.cache/86e8fad2261d20af97e8edef657773f7c7b2823e create mode 100644 src/generated/resources/.cache/88728e8b0aba78bc481ee96e4ac0a48656a2d2b8 create mode 100644 src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e create mode 100644 src/generated/resources/.cache/adcb492c336614f4dabbf7b0ba1b80a1feec2905 delete mode 100644 src/generated/resources/.cache/cache create mode 100644 src/generated/resources/.cache/d2a52f93f6a2dbbf9cb17e741383b71a5107d737 create mode 100644 src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/cherry_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/cherry_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/cherry_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/bamboo_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/bamboo_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/bamboo_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/cherry_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/cherry_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/cherry_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/mangrove_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/mangrove_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/block/mangrove_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/bamboo_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/bamboo_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/bamboo_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/cherry_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/cherry_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/cherry_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/copper_ore_pieces.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/deepslate_pebble.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/diamond_mesh.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/flint_mesh.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/gold_ore_pieces.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/iron_mesh.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/iron_ore_pieces.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/mangrove_barrel.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/mangrove_crucible.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/mangrove_sieve.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/netherite_hammer.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/netherite_mesh.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/porcelain_bucket.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/porcelain_clay.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/stone_pebble.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/string_mesh.json create mode 100644 src/generated/resources/assets/exnihiloreborn/models/item/witch_water_bucket.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/core/barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/core/crook.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/core/root.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/core/silk_worm.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/core/string_mesh.json delete mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/compressed_crook.json rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => food}/cooked_silk_worm.json (64%) create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm_from_smoking.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/food/porcelain_crucible_from_campfire_cooking.json rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/acacia_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/acacia_crucible.json (65%) create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_crucible.json rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/birch_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/birch_crucible.json (65%) create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_crucible.json rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/crimson_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/crimson_crucible.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/dark_oak_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/dark_oak_crucible.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/jungle_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/jungle_crucible.json (65%) create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_crucible.json rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/oak_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/oak_crucible.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/porcelain_crucible.json (64%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/spruce_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/spruce_crucible.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/stone_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/unfired_crucible.json (64%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/warped_barrel.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => misc}/warped_crucible.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/bone_crook.json (65%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/crook.json (74%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/diamond_hammer.json (68%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/golden_hammer.json (68%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/iron_hammer.json (68%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/stone_hammer.json (66%) rename src/generated/resources/data/exnihiloreborn/advancements/recipes/{exnihiloreborn => tools}/wooden_hammer.json (75%) create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/bamboo_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/bamboo_crucible.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/beef.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/berries.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cake.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/carrots.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/chicken.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cod.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/egg.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/grass.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/lily_pad.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/mutton.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pork.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/potatoes.json rename src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/{sweet_berries.json => pufferfish.json} (68%) create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rabbit.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rotten_flesh.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/salmon.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/string.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sugar_cane.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tall_grass.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tropical_fish.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/vine.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/cherry_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/cherry_crucible.json delete mode 100644 src/generated/resources/data/exnihiloreborn/recipes/compressed_crook.json rename src/generated/resources/data/{minecraft => exnihiloreborn}/recipes/cooked_silk_worm_from_smoking.json (56%) create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/hammer/crushed_netherrack.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/mangrove_barrel.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/mangrove_crucible.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/netherite_hammer.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible_from_campfire_cooking.json create mode 100644 src/generated/resources/data/exnihiloreborn/recipes/water_crucible/lily_pad.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/items/barrels.json delete mode 100644 src/generated/resources/data/exnihiloreborn/tags/items/compressed_hammers.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/items/stone_barrels.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/items/wooden_barrels.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/overworld_void_structure_sets.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_end_void_structure_sets.json create mode 100644 src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_nether_void_structure_sets.json delete mode 100644 src/generated/resources/data/minecraft/advancements/recipes/exnihiloreborn/cooked_silk_worm_from_smoking.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/acacia_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/anvil.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/banners.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/base_stone_nether.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/beds.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/bee_growables.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/beehives.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/birch_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/buttons.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/campfires.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/carpets.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/climbable.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/coral_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/coral_plants.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/corals.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/crimson_stems.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/crops.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/dark_oak_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/doors.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/dragon_immune.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/enderman_holdable.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/fence_gates.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/fences.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/fire.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/flower_pots.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/flowers.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/gold_ores.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/guarded_by_piglins.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/hoglin_repellents.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/ice.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/impermeable.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/infiniburn_end.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/infiniburn_nether.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/infiniburn_overworld.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/jungle_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/leaves.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/mushroom_grow_block.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/non_flammable_wood.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/nylium.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/oak_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/piglin_repellents.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/planks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/portals.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/pressure_plates.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/prevent_mob_spawning_inside.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/rails.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/sand.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/saplings.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/shulker_boxes.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/signs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/slabs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/small_flowers.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/soul_fire_base_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/soul_speed_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/spruce_logs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/stairs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/standing_signs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/stone_bricks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/stone_pressure_plates.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/strider_warm_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/tall_flowers.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/trapdoors.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/underwater_bonemeals.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/unstable_bottom_center.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/valid_spawn.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wall_corals.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wall_post_override.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wall_signs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/walls.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/warped_stems.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wither_immune.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wither_summon_base_blocks.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_fences.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/wool.json create mode 100644 src/generated/resources/data/minecraft/tags/worldgen/world_preset/normal.json create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/client/CompostColors.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/client/ItemColors.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/compat/jei/BarrelCompostCategory.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornJeiPlugin.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornPlugin.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/config/Config.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/Advancements.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/BlockLoot.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/BlockModels.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/BlockTags.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/EBlockTagsProvider.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/EItemTagProvider.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/ELangProvider.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/ELootProvider.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/EModelProvider.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/ERecipeProvider.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/English.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/FluidTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/ItemModels.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/ItemTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/LootTables.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/Recipes.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/StructureTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/TranslationKeys.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/data/WorldPresetTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/event/EventHandler.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluid.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluidType.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/item/EItemTags.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/item/ETab.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/item/FluidBucketItem.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/item/PorcelainBucketItem.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/item/WitchWaterBucketItem.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedString.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedStringCount.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/network/ClientMessageHandler.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/network/NetworkHandler.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/network/VoidWorldMessage.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/CompressedHammerRecipe.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/AbstractSieveRecipe.java delete mode 100644 src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/CompressedSieveRecipe.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/registry/EChunkGenerators.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/registry/ECreativeTabs.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/registry/EGlobalLootModifiers.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/tag/EItemTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/tag/EStructureSetTags.java create mode 100644 src/main/java/thedarkcolour/exnihiloreborn/voidworld/VoidChunkGenerator.java create mode 100644 src/main/resources/assets/exnihiloreborn/textures/block/dust_new.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/gui/advancements/backgrounds/void.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/copper_ore_chunk.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/gold_ore.pdn create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/gold_ore_chunk.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/iron_ore_chunk.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/netherite_hammer.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/ore_chunk_base.png create mode 100644 src/main/resources/assets/exnihiloreborn/textures/item/witch_water_bucket.png create mode 100644 src/main/resources/data/exnihiloreborn/worldgen/world_preset/void_world.json create mode 100644 src/main/resources/vanilla_compost_colors.txt diff --git a/build.gradle b/build.gradle index e5b07fe4..9a63aa1d 100644 --- a/build.gradle +++ b/build.gradle @@ -75,6 +75,11 @@ repositories { url = 'https://maven.blamejared.com/' content { includeGroup "mezz.jei" } } + maven { + name = 'ModKit' + url 'https://jitpack.io' + content { includeGroup 'com.github.thedarkcolour' } + } } dependencies { @@ -89,6 +94,8 @@ dependencies { compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")) // at runtime, use the full JEI jar for Forge runtimeOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")) + // not required for players + implementation fg.deobf('com.github.thedarkcolour:ModKit:ea67392fd6') } def replaceProperties = [ mc_version: mc_version, mod_version: version ] @@ -107,7 +114,12 @@ processResources { fileTree(dir: outputs.files.asPath, include: "**/*.json").each { File file -> //noinspection UnnecessaryQualifiedReference - file.text = groovy.json.JsonOutput.toJson(new groovy.json.JsonSlurper().parse(file)) + try { + file.text = groovy.json.JsonOutput.toJson(new groovy.json.JsonSlurper().parse(file)) + } catch (Exception e) { + println "Unable to minify file ${file.name}" + throw new RuntimeException(e) + } } } } diff --git a/src/generated/resources/.cache/16d3d037cd175f65564d786329ae2bea4e7de216 b/src/generated/resources/.cache/16d3d037cd175f65564d786329ae2bea4e7de216 new file mode 100644 index 00000000..d06616d8 --- /dev/null +++ b/src/generated/resources/.cache/16d3d037cd175f65564d786329ae2bea4e7de216 @@ -0,0 +1,79 @@ +// 1.20.1 2023-07-27T11:42:20.2178647 ModKit Block Models for mod 'exnihiloreborn' +8163eb5acfff90fdcc6b4e89bae66dc99f340409 assets/exnihiloreborn/blockstates/acacia_barrel.json +4f143688c75d1d22d87525db129c2deff4cb1b4d assets/exnihiloreborn/blockstates/acacia_crucible.json +550077caf300beba1a95493b946c07dfee12c986 assets/exnihiloreborn/blockstates/acacia_sieve.json +338d39bc4ec37a06ba015ce7f5558013196f8e30 assets/exnihiloreborn/blockstates/bamboo_barrel.json +893d6a4708785657e64ff649010da1141ba524ce assets/exnihiloreborn/blockstates/bamboo_crucible.json +012ecfe44656f606a5b4d2ac6541a2d000fb10b1 assets/exnihiloreborn/blockstates/bamboo_sieve.json +f2c1bde3b379038a91396bbe4fc01f1de9871e15 assets/exnihiloreborn/blockstates/birch_barrel.json +cc46ad2a0000d162216e4fda286d2a37aa142ea2 assets/exnihiloreborn/blockstates/birch_crucible.json +bd5d60c1bda2e8c2d9b6fd0f9e42fd23c812b040 assets/exnihiloreborn/blockstates/birch_sieve.json +334b213ec25a19675e00713b1115b0262f320357 assets/exnihiloreborn/blockstates/cherry_barrel.json +231e50ee2af8390c03269e862dd34899176d2b29 assets/exnihiloreborn/blockstates/cherry_crucible.json +d069ffa749d61cde7929cd2ef52a7a7c86dda953 assets/exnihiloreborn/blockstates/cherry_sieve.json +5f5bbbe9b79b72a8a3615d44269b7caaf3707f07 assets/exnihiloreborn/blockstates/crimson_barrel.json +a86be80998103157736f9212eeeaccddd770d310 assets/exnihiloreborn/blockstates/crimson_crucible.json +2f8815c476108b8156eb9cb209918fa4c87ebfa3 assets/exnihiloreborn/blockstates/crimson_sieve.json +d994e84ca5c59f49ebf7e0d69fbfd4a432ee4d8c assets/exnihiloreborn/blockstates/crushed_end_stone.json +f1f3b951efa204151692c5a798e757b39872d71c assets/exnihiloreborn/blockstates/crushed_netherrack.json +1a03858ba7b9060437950d542e08c96caa803755 assets/exnihiloreborn/blockstates/dark_oak_barrel.json +3cb092bdd393770aa457718081557167af93d845 assets/exnihiloreborn/blockstates/dark_oak_crucible.json +c27279c1bf4a728270e9fd950b065eb330c098c3 assets/exnihiloreborn/blockstates/dark_oak_sieve.json +9fb6363ff14ae201f1c3f171912de745eb11d1c0 assets/exnihiloreborn/blockstates/dust.json +ca6e8d0580af6b68d27485ddc071699701c80ede assets/exnihiloreborn/blockstates/jungle_barrel.json +20d1c92410e3fc83779be82162a442bd05511704 assets/exnihiloreborn/blockstates/jungle_crucible.json +a608efc4ada6730658887d1c5eb17f3c3268f07b assets/exnihiloreborn/blockstates/jungle_sieve.json +7fa7ff1512ff715e906b980c872e000e20ec9fa6 assets/exnihiloreborn/blockstates/mangrove_barrel.json +2b75b23a90ae473ff0fff1278abb347affb54df7 assets/exnihiloreborn/blockstates/mangrove_crucible.json +8864c1b9fc43ece435a9dc11f9d8776eeb4fcdee assets/exnihiloreborn/blockstates/mangrove_sieve.json +8b4cf44bc18727cecb685f6d32a8f0fccc834936 assets/exnihiloreborn/blockstates/oak_barrel.json +271c641c2e86b3fb90c1eb16523e217ca6cc5c50 assets/exnihiloreborn/blockstates/oak_crucible.json +30874c4216b5bc67e92e15829662b1525aa7bf22 assets/exnihiloreborn/blockstates/oak_sieve.json +29e1bf949cabf17725d373e850cbae6cc89ec815 assets/exnihiloreborn/blockstates/porcelain_crucible.json +065fed0f14ff11edb9246091dafe2d7f9939229d assets/exnihiloreborn/blockstates/spruce_barrel.json +9485fcbfd11d176e57a3298c0bb8a514812d9376 assets/exnihiloreborn/blockstates/spruce_crucible.json +a449e7932a89701456425e5dec1cca20ec6d94e8 assets/exnihiloreborn/blockstates/spruce_sieve.json +66e3f311f0845798f0f294cd9c11c6529b7f1db7 assets/exnihiloreborn/blockstates/stone_barrel.json +1af85ed7bc98bcddfe321f34673e9275f174638f assets/exnihiloreborn/blockstates/unfired_crucible.json +f50cbc9e0760d3f542b574a6a3a310e623ae066b assets/exnihiloreborn/blockstates/warped_barrel.json +749af58cf7f9fbc72e61610c113810cd387ec7b5 assets/exnihiloreborn/blockstates/warped_crucible.json +d17fe2b04d4f27cd73b83898bc0cef491f78916d assets/exnihiloreborn/blockstates/warped_sieve.json +800851bdfd1ffc488c2a312526efb5173e9968be assets/exnihiloreborn/models/block/acacia_barrel.json +311d32df49fe7d970255f09059d6dc65ede08b14 assets/exnihiloreborn/models/block/acacia_crucible.json +4cdbd8f238d0624e08d6830db22a86652aae19aa assets/exnihiloreborn/models/block/acacia_sieve.json +2cc962b9450bf61b2ddb0f5af7f71e59d77ee7a3 assets/exnihiloreborn/models/block/bamboo_barrel.json +f2154053b0fa4557f533a5feba757b85e127fd19 assets/exnihiloreborn/models/block/bamboo_crucible.json +e39a977cc17fe592dad67311e5d7c1bc68ff7ece assets/exnihiloreborn/models/block/bamboo_sieve.json +c61c5a8c9fb9eb6c32a583a572869e8b16d0c152 assets/exnihiloreborn/models/block/birch_barrel.json +274c114f58609be9f7caecca69ef223436fd75a9 assets/exnihiloreborn/models/block/birch_crucible.json +4de06324ede3adae0bff435b76f1c1a59430fb9c assets/exnihiloreborn/models/block/birch_sieve.json +5ae98369b88f47e0521913f1af506bb49bef590a assets/exnihiloreborn/models/block/cherry_barrel.json +533f73fbc16ca12358cc884b2cdf0e7e45455d26 assets/exnihiloreborn/models/block/cherry_crucible.json +a9f5516cbef883633a718bc9f95a77ecec61d5e3 assets/exnihiloreborn/models/block/cherry_sieve.json +92dfef4be5cae63c8825920395b511fc91f62ed8 assets/exnihiloreborn/models/block/crimson_barrel.json +31ce4c77543ac7d9ad0ff3a32546f466ea28ef5f assets/exnihiloreborn/models/block/crimson_crucible.json +81ce0138c033df5b185950e9ee092d6799c2488c assets/exnihiloreborn/models/block/crimson_sieve.json +fd0119a537924fc6850a920c43781fa819130752 assets/exnihiloreborn/models/block/crushed_end_stone.json +d14058f8d716b5be1bfed5b7d78966a7d61ae97b assets/exnihiloreborn/models/block/crushed_netherrack.json +dda0c86c6869280d63ddb8f22e067a94449ce2d8 assets/exnihiloreborn/models/block/dark_oak_barrel.json +f0f916b251004c37066a38bc89072f3c4ca44703 assets/exnihiloreborn/models/block/dark_oak_crucible.json +350ce308c2bbead4f9dc77f37ad3134a886d1c98 assets/exnihiloreborn/models/block/dark_oak_sieve.json +ab9d65a5026b75c35213a9d014cb45a0d43054dc assets/exnihiloreborn/models/block/dust.json +3db74a252880747aed13bc75efc9c4dc92167df5 assets/exnihiloreborn/models/block/jungle_barrel.json +9e5a7c4e0356c4cd5fabaf97a288cf1565a570a3 assets/exnihiloreborn/models/block/jungle_crucible.json +985edf29f622aa90be7112b111929ef1f6e740ad assets/exnihiloreborn/models/block/jungle_sieve.json +d0ee395bfa9a5c7a009dd8cf96a9084437e81937 assets/exnihiloreborn/models/block/mangrove_barrel.json +de6d3d30fe8f61f1fb4c05ddc2e3c435339f3dfa assets/exnihiloreborn/models/block/mangrove_crucible.json +a9bf76c9a96e77573c23ee28933297e096a93e4c assets/exnihiloreborn/models/block/mangrove_sieve.json +5135050ecd76cbbc9c324503ad48faa06d639ea5 assets/exnihiloreborn/models/block/oak_barrel.json +e995201240f3161c007f2aabeac3d4d0d9c9f49e assets/exnihiloreborn/models/block/oak_crucible.json +9e28b0bc586cdf6f6c946d9283e4ef608017ae06 assets/exnihiloreborn/models/block/oak_sieve.json +d2e3cfbfb1ac6ac83e2c35ce647bae5b1c8f0809 assets/exnihiloreborn/models/block/porcelain_crucible.json +a322848dc803f7454f25a55ee847885a5690bbbd assets/exnihiloreborn/models/block/spruce_barrel.json +8ea5abf7e79174f61a8d820f0dc81942d4dd65d9 assets/exnihiloreborn/models/block/spruce_crucible.json +4b27c2facb0468197e835bdff1b6c39731ca880a assets/exnihiloreborn/models/block/spruce_sieve.json +e9914dbb533786d4561d8bf0b18dad07b2cf49e0 assets/exnihiloreborn/models/block/stone_barrel.json +1391fefa4187d1b71f5b3524d5de397619b7233d assets/exnihiloreborn/models/block/unfired_crucible.json +cb13ae3f594b7fff531888e3ee08d6c908004f84 assets/exnihiloreborn/models/block/warped_barrel.json +039f49b0352ef994e6aa71e9393a50060a1e0bcc assets/exnihiloreborn/models/block/warped_crucible.json +0eaabda282e211f8e6c924160d708bd4073818e2 assets/exnihiloreborn/models/block/warped_sieve.json diff --git a/src/generated/resources/.cache/2b9da02b3b4dba3146ee268fd9b0da9e9263d537 b/src/generated/resources/.cache/2b9da02b3b4dba3146ee268fd9b0da9e9263d537 new file mode 100644 index 00000000..8fb16aa0 --- /dev/null +++ b/src/generated/resources/.cache/2b9da02b3b4dba3146ee268fd9b0da9e9263d537 @@ -0,0 +1,2 @@ +// 1.20.1 2023-07-25T10:12:25.4980895 Tags for minecraft:worldgen/world_preset mod id exnihiloreborn +7d122e55aaa83d40d660c0e52819203a467a8c65 data/minecraft/tags/worldgen/world_preset/normal.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 00000000..1f051af4 --- /dev/null +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1,16 @@ +// 1.20.1 2023-07-27T10:58:18.8937589 Loot Tables +326c04383bd2178850f0515fba6dc9c9bfce07cc data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json +7239ee3a1d8ca43b6ac84a308a4af5063241db24 data/exnihiloreborn/loot_tables/blocks/birch_barrel.json +55e7e691d4f48b13c4bbde87da7927e9bd983c3e data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json +0e7be00762d28aa5a28f564f232a18170a861a8a data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json +b5d0a1f20d7677abc42536c369b5702c67a676c1 data/exnihiloreborn/loot_tables/blocks/compressed_dust.json +350a3a81e4141b346808c77cfa4e8a5dbc3a5a2f data/exnihiloreborn/loot_tables/blocks/compressed_sand.json +c10ee8c3fe5e00ee3362596a2f5ed9349ca5d6c1 data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json +05efa87a7fb08d988544756d596ebe53dd0584c8 data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json +9354ad853e29c5a051f3319b66c19b0649be43a1 data/exnihiloreborn/loot_tables/blocks/dust.json +eebb19a95fba75bb9abaaad7a7cd731f06351d9b data/exnihiloreborn/loot_tables/blocks/infested_leaves.json +da7317e6905aee49b47b9cf98d89d6a38379a34e data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json +bd38cae64c70238e95529bd16f512f1a2ef2f69f data/exnihiloreborn/loot_tables/blocks/oak_barrel.json +93a2689c6f6fb689910982ddc9ac927c7432bfe2 data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json +5ab70649c89c6ab9d14fdd95e053d591d8941076 data/exnihiloreborn/loot_tables/blocks/stone_barrel.json +611f523b7a6b5b323e07d5e8a76620858559e8b8 data/exnihiloreborn/loot_tables/blocks/warped_barrel.json diff --git a/src/generated/resources/.cache/5f5ddf0caee48d851cd5055dbc7b23dfdcd4b8a5 b/src/generated/resources/.cache/5f5ddf0caee48d851cd5055dbc7b23dfdcd4b8a5 new file mode 100644 index 00000000..0952b63d --- /dev/null +++ b/src/generated/resources/.cache/5f5ddf0caee48d851cd5055dbc7b23dfdcd4b8a5 @@ -0,0 +1,2 @@ +// 1.20.1 2023-07-27T12:51:19.3141363 ModKit Language: en_us for mod 'exnihiloreborn' +7883d6bd9bf13e07fe9b9dca3a2b85891c0a34fb assets/exnihiloreborn/lang/en_us.json diff --git a/src/generated/resources/.cache/86e8fad2261d20af97e8edef657773f7c7b2823e b/src/generated/resources/.cache/86e8fad2261d20af97e8edef657773f7c7b2823e new file mode 100644 index 00000000..9e91412d --- /dev/null +++ b/src/generated/resources/.cache/86e8fad2261d20af97e8edef657773f7c7b2823e @@ -0,0 +1 @@ +// 1.20.1 2023-07-24T13:27:44.3296716 Tags for minecraft:block mod id exnihiloreborn diff --git a/src/generated/resources/.cache/88728e8b0aba78bc481ee96e4ac0a48656a2d2b8 b/src/generated/resources/.cache/88728e8b0aba78bc481ee96e4ac0a48656a2d2b8 new file mode 100644 index 00000000..e2c86408 --- /dev/null +++ b/src/generated/resources/.cache/88728e8b0aba78bc481ee96e4ac0a48656a2d2b8 @@ -0,0 +1,63 @@ +// 1.20.1 2023-07-27T11:42:20.2188641 ModKit Item Models for mod 'exnihiloreborn' +b04ca14f505feb0c3145a0ec24e482f569fa1f8b assets/exnihiloreborn/models/item/acacia_barrel.json +a3c0b9510b70d74c0c5430d782d9582378143599 assets/exnihiloreborn/models/item/acacia_crucible.json +535cff3f576461aebe434a1ec8f9711776898e5f assets/exnihiloreborn/models/item/acacia_sieve.json +a88334b623bd893eeb3068d6fb41879258a71043 assets/exnihiloreborn/models/item/bamboo_barrel.json +77e1e0a00a28bf81a6453ccd79ec2298bad6456d assets/exnihiloreborn/models/item/bamboo_crucible.json +96a8ac56018b941030e3723fd6c668d5e6f077b7 assets/exnihiloreborn/models/item/bamboo_sieve.json +65f9d89721ea0b2846169a2a2435333e7074f75b assets/exnihiloreborn/models/item/birch_barrel.json +d634e2fbb0b1149fcbbebbc45e619b4670f6703a assets/exnihiloreborn/models/item/birch_crucible.json +9c7155d5900dae3bdc0aeb705a0378375de26290 assets/exnihiloreborn/models/item/birch_sieve.json +11090f2ec5aed7682a5654bcb279398acaeafc8c assets/exnihiloreborn/models/item/bone_crook.json +3d62de5d153770d63d7fd3790476af784ef87167 assets/exnihiloreborn/models/item/cherry_barrel.json +857e1c605e0c00e54ff9815933cf62399e360cac assets/exnihiloreborn/models/item/cherry_crucible.json +203704e4f975d9fb6a5883e47dc986d3f7ff05f6 assets/exnihiloreborn/models/item/cherry_sieve.json +24a5c572fd594b8e5acce55cf529be866f4e886a assets/exnihiloreborn/models/item/cooked_silk_worm.json +039a1c59b83319648aba5daa1af2af2c9e73a505 assets/exnihiloreborn/models/item/copper_ore_pieces.json +80502debe44d9fcb8c01b307939d32c47d6b87f1 assets/exnihiloreborn/models/item/crimson_barrel.json +ea89af27e1fe1cb2303b38d79159e8902f97f4a3 assets/exnihiloreborn/models/item/crimson_crucible.json +7af13e06a0c7cb8341b654a6f8ae4dc6f1192a43 assets/exnihiloreborn/models/item/crimson_sieve.json +0b64a4876ee67058a8bda9cebb467a6d0848e8c5 assets/exnihiloreborn/models/item/crook.json +73d1a52fcaeab955e981ecc40e2cb623cee7bce2 assets/exnihiloreborn/models/item/crushed_end_stone.json +1e5ecd874415a91cad41bc7e3f0bcc90b47f3c52 assets/exnihiloreborn/models/item/crushed_netherrack.json +885165698a9d9c423126dca5709b4077527c81b8 assets/exnihiloreborn/models/item/dark_oak_barrel.json +9c2910a983a388a361e9fae75bef3a4b03ceb0f6 assets/exnihiloreborn/models/item/dark_oak_crucible.json +6846132cf2c8fc5b647bae32179f9dacd60b68bf assets/exnihiloreborn/models/item/dark_oak_sieve.json +eeb577a82f53d7402e319e885940c22dab7fc013 assets/exnihiloreborn/models/item/deepslate_pebble.json +1d9e7750ac92f1a7fb9eefefeabd88b007a418c9 assets/exnihiloreborn/models/item/diamond_hammer.json +6bfbf0110e79fc4a3d23f19c717b30fc0b802142 assets/exnihiloreborn/models/item/diamond_mesh.json +4c3b1319ea57598dad8c71f9aaa5676d2c37df57 assets/exnihiloreborn/models/item/dust.json +0c3725d74213d85a332226d2a2472a5c4a0f66cd assets/exnihiloreborn/models/item/flint_mesh.json +76282a4cd8b8f6aa0c5d72677be3173827eb3ff6 assets/exnihiloreborn/models/item/golden_hammer.json +22c8f2d53b0473d9df577536b5f0270ae63bf5bd assets/exnihiloreborn/models/item/gold_ore_pieces.json +30f28bafa588f7c036744d4507718734d4c781e7 assets/exnihiloreborn/models/item/iron_hammer.json +de8a49ab10ece0aab2442e774dde8dc183783401 assets/exnihiloreborn/models/item/iron_mesh.json +565691b30362d5c4587b9c7a4b3245f2f1023147 assets/exnihiloreborn/models/item/iron_ore_pieces.json +318d5f172fdb062a59953353de55d56ed9d76642 assets/exnihiloreborn/models/item/jungle_barrel.json +a4f6b856970f9f039deb71f07e02764be185a366 assets/exnihiloreborn/models/item/jungle_crucible.json +e449e5fab8da5d332373caa04929b901f83aeb78 assets/exnihiloreborn/models/item/jungle_sieve.json +2dca74120cbc21d014a8e03cc528a3a7d5839904 assets/exnihiloreborn/models/item/mangrove_barrel.json +4e7e8199055e31c5098207d342c179eceb44ee01 assets/exnihiloreborn/models/item/mangrove_crucible.json +f17f8f1832c87848526b3be9d5d76d7d87276014 assets/exnihiloreborn/models/item/mangrove_sieve.json +d9d4fa1025cd10b1d3739c855b1a991092514c85 assets/exnihiloreborn/models/item/netherite_hammer.json +4a7f79f0bd258ba1af477f322a25d7dfc62a1fff assets/exnihiloreborn/models/item/netherite_mesh.json +7a36929a1f8ce7da493d55f3960f1ebfeb413e6b assets/exnihiloreborn/models/item/oak_barrel.json +d1af6f8c91888cae507b642627cd2b2f528b53a0 assets/exnihiloreborn/models/item/oak_crucible.json +281b9f684bd2b2f85c304e5cbb74c4d837896043 assets/exnihiloreborn/models/item/oak_sieve.json +e3667f747270b4ff495a88c0d419fa132e3a5590 assets/exnihiloreborn/models/item/porcelain_bucket.json +7bc045865bb8e98fe7f055a3887568707aff93b2 assets/exnihiloreborn/models/item/porcelain_clay.json +ff053c93f97b9b94541ca54dae2d9df73981de90 assets/exnihiloreborn/models/item/porcelain_crucible.json +662673e3da7f33b4c517be52e3e8944236f19365 assets/exnihiloreborn/models/item/silk_worm.json +ca863a6c57b74743105f20bd9e84bddde78b754b assets/exnihiloreborn/models/item/spruce_barrel.json +4e3930d76c134ae5aa44413c2419484d96c83f90 assets/exnihiloreborn/models/item/spruce_crucible.json +38f1ec4266f28095cb91a2edbc02f83998ab6c4d assets/exnihiloreborn/models/item/spruce_sieve.json +459705117a8f3c8ee16cfff0ca53d15ea5083ae3 assets/exnihiloreborn/models/item/stone_barrel.json +66b6eaeeb75466603a8aa9438b11fc73e5c77f2f assets/exnihiloreborn/models/item/stone_hammer.json +44481e3cbb4765019d9cde572a18e17d0b878f24 assets/exnihiloreborn/models/item/stone_pebble.json +1eba49433a0cb08b803369899e10795c949bc45a assets/exnihiloreborn/models/item/string_mesh.json +786bc050fc466f27c3ae77524c36ebfa1c3de611 assets/exnihiloreborn/models/item/unfired_crucible.json +e8a646e41fbdf8748b28bdee70d2e5674fab35f4 assets/exnihiloreborn/models/item/warped_barrel.json +1510e5ebe284711da4a8b83ee4e5d17daa75d7ca assets/exnihiloreborn/models/item/warped_crucible.json +0ace5b4a2697b70a5521691fc1a4bedc0cfb1023 assets/exnihiloreborn/models/item/warped_sieve.json +fc186f9799e156646dd54eea795723dc8365f4d7 assets/exnihiloreborn/models/item/witch_water_bucket.json +08078b4e62d2d341509c131570f379618029e0e6 assets/exnihiloreborn/models/item/wooden_hammer.json diff --git a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e new file mode 100644 index 00000000..fe1b3f64 --- /dev/null +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -0,0 +1,141 @@ +// 1.20.1 2023-07-27T12:51:19.3161371 Recipes +a3e58be04205964a0b890880f040d2fc0b9249e0 data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm.json +e370135e6c1584c360ab7f5595d363f66b6665cb data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm_from_smoking.json +a997345e74cecf81d4ae9c38973630ce6edf00f5 data/exnihiloreborn/advancements/recipes/food/porcelain_crucible_from_campfire_cooking.json +54db00472cd9b30762b21263d721e91fae5c2858 data/exnihiloreborn/advancements/recipes/misc/acacia_barrel.json +90a26e2be958eb40c751a78360e606a681979075 data/exnihiloreborn/advancements/recipes/misc/acacia_crucible.json +460f1827f3870a74868c2fdc3109d21c848cd911 data/exnihiloreborn/advancements/recipes/misc/bamboo_barrel.json +81f0df6bd5f0291aeb1dc54ef6f3c600bcd57ad2 data/exnihiloreborn/advancements/recipes/misc/bamboo_crucible.json +9573f025a3fdd8b8c2fd10c80d71972cd3133a66 data/exnihiloreborn/advancements/recipes/misc/birch_barrel.json +61c0510138b5dc14f623c02e5cd99202e7292450 data/exnihiloreborn/advancements/recipes/misc/birch_crucible.json +528bb21007cc050a964654f8a437bc7bb4966e3b data/exnihiloreborn/advancements/recipes/misc/cherry_barrel.json +925e20e41534e50ba00ebfa5aaa0f3f171998a00 data/exnihiloreborn/advancements/recipes/misc/cherry_crucible.json +fd717e6474c96f26c2d72641cb67c19ecf4026b1 data/exnihiloreborn/advancements/recipes/misc/crimson_barrel.json +6a23ae2d2c46c827d0b7934410ac0e82fb3292e1 data/exnihiloreborn/advancements/recipes/misc/crimson_crucible.json +93b9339aae694eb850981382b7e0a84171185448 data/exnihiloreborn/advancements/recipes/misc/dark_oak_barrel.json +0267d7b9f193d7fb328920b17ea2fa09425d8594 data/exnihiloreborn/advancements/recipes/misc/dark_oak_crucible.json +37af38214d27787d743b0005e8feca0e0f100cea data/exnihiloreborn/advancements/recipes/misc/jungle_barrel.json +5360db4c3c1e92b4f158b6d8560d1d83ea164b9e data/exnihiloreborn/advancements/recipes/misc/jungle_crucible.json +fd9afece033aea82e8a3ee12d8ed45ca2ebf622d data/exnihiloreborn/advancements/recipes/misc/mangrove_barrel.json +5171da502b40cacca6e9744ecc0789a36f4151ab data/exnihiloreborn/advancements/recipes/misc/mangrove_crucible.json +2f6dc44b055105d2744f9b26f96e0453753b082b data/exnihiloreborn/advancements/recipes/misc/oak_barrel.json +79c43b5e199350c9ac8aaee6f998ef83a6c26951 data/exnihiloreborn/advancements/recipes/misc/oak_crucible.json +50fa3beee9627f3630f3182f6989c70cbfbcf33d data/exnihiloreborn/advancements/recipes/misc/porcelain_crucible.json +92dedd042dac942b381704d4ea3c1f5d9e235fd9 data/exnihiloreborn/advancements/recipes/misc/spruce_barrel.json +7febca27399bf00babc090143c96b5eca4d76a4b data/exnihiloreborn/advancements/recipes/misc/spruce_crucible.json +cf0dba5dc3969ab76d3175b7a3df332d54952526 data/exnihiloreborn/advancements/recipes/misc/stone_barrel.json +fc59e8cfe5a982f669dd9a44bc2156b88a5ad559 data/exnihiloreborn/advancements/recipes/misc/unfired_crucible.json +f3f469f966cfc8c2e43cc9d49dd13f9085d48ec7 data/exnihiloreborn/advancements/recipes/misc/warped_barrel.json +8c329ca51865a225bb50dfe7642a33e91a2db68f data/exnihiloreborn/advancements/recipes/misc/warped_crucible.json +aea79a767d7327f398b0c44120edffe58ebf494e data/exnihiloreborn/advancements/recipes/tools/bone_crook.json +25a47acab1fceae765a7906eced70c25259ab876 data/exnihiloreborn/advancements/recipes/tools/crook.json +33c96c58b8d097acd123b22deff3db3bb178bd62 data/exnihiloreborn/advancements/recipes/tools/diamond_hammer.json +ab6a0deca344914d436e7551b72e70a179e57a35 data/exnihiloreborn/advancements/recipes/tools/golden_hammer.json +8a067b4e913c8ad704d75e57ed72bf1a5c245625 data/exnihiloreborn/advancements/recipes/tools/iron_hammer.json +f1e5c3dcb58a67f20182260f90ab8345839bfa3a data/exnihiloreborn/advancements/recipes/tools/netherite_hammer.json +749678bd91ad3bb180f01ba27319682d73df1752 data/exnihiloreborn/advancements/recipes/tools/stone_hammer.json +c37bc0b1ac02ea202c2607d9b56d10e2adf8db1b data/exnihiloreborn/advancements/recipes/tools/wooden_hammer.json +15ab7f3a8fb33766ffcd0c479baad03464c84072 data/exnihiloreborn/recipes/acacia_barrel.json +1d052e4d187e6031475d152096231eb0b75b17e3 data/exnihiloreborn/recipes/acacia_crucible.json +7a75cd85dd46fd082f0b9c10bc97dda93b00ea46 data/exnihiloreborn/recipes/bamboo_barrel.json +687a62eda344b5adace2469dab89d6da30006417 data/exnihiloreborn/recipes/bamboo_crucible.json +0dace1f83ca8735522f33f5efc40bf3e7e247ebb data/exnihiloreborn/recipes/barrel_compost/apple.json +f1034b18c139bf896975ee3dbe7885242f98ffe0 data/exnihiloreborn/recipes/barrel_compost/beef.json +4d8a4682ce0d2f345f7c3f38e1008dd8b33dca42 data/exnihiloreborn/recipes/barrel_compost/berries.json +ca37f0367f66809284fb73b17f872d5957e8e4cb data/exnihiloreborn/recipes/barrel_compost/bread.json +829816be4bd341cd026512bc18939d6085bdb10a data/exnihiloreborn/recipes/barrel_compost/cake.json +cb9f526e6b90ed07885f9fe910c5b626e1401577 data/exnihiloreborn/recipes/barrel_compost/carrots.json +28565850fa8f1d7a12fe4e107e1c2ff7a85ffa66 data/exnihiloreborn/recipes/barrel_compost/chicken.json +053c3b85a3bd5db0e1406c36269a665740030ddc data/exnihiloreborn/recipes/barrel_compost/cod.json +ea59e2bce95cb524a5c6c8963dad5198686634af data/exnihiloreborn/recipes/barrel_compost/cookie.json +bb2aaf4eccffa94e78810a77ad48249f15e5282e data/exnihiloreborn/recipes/barrel_compost/egg.json +9d985e6c15681608861372cceb4b8131179e53a2 data/exnihiloreborn/recipes/barrel_compost/grass.json +da4bf93227246c55d0d57218549e56b6510cb802 data/exnihiloreborn/recipes/barrel_compost/kelp.json +3c002cc1a28d036a7447184e76639c75ae28b29b data/exnihiloreborn/recipes/barrel_compost/leaves.json +ad3dda7b41d9edbb36a9b101177fb12c12e82385 data/exnihiloreborn/recipes/barrel_compost/lily_pad.json +eeb3e591fec86ae8ab3b3bc2b18c7f0745ab07ec data/exnihiloreborn/recipes/barrel_compost/melon.json +6d6bca114c1597781c0ba81b6fc26c6b1b5ce68d data/exnihiloreborn/recipes/barrel_compost/melon_slice.json +3940ef44c75d0d74dcac1205638d6d2251a8f4a7 data/exnihiloreborn/recipes/barrel_compost/mushrooms.json +aa2eebdafa283da24e98573c17e58d6a5e1d32e1 data/exnihiloreborn/recipes/barrel_compost/mutton.json +09302eeb5b6b68f56d3be9398d95b62cca844d10 data/exnihiloreborn/recipes/barrel_compost/nether_wart.json +7c6d8d4bcbdb18a7a28e04dd90c775a27563ef33 data/exnihiloreborn/recipes/barrel_compost/pork.json +7373b50f3edc014c80a69edddc056d7570d8ddee data/exnihiloreborn/recipes/barrel_compost/potatoes.json +508b5dd0463aaf34beef633e20b872190f19cbd7 data/exnihiloreborn/recipes/barrel_compost/pufferfish.json +f3b4494438edb4a6dd65788703da6b3c61ea657e data/exnihiloreborn/recipes/barrel_compost/pumpkin.json +aecdad8bbb87e293964919ce736721292fd7d6ff data/exnihiloreborn/recipes/barrel_compost/pumpkin_pie.json +7559836b4b76e81b2eea6a5d3af7b1a724046669 data/exnihiloreborn/recipes/barrel_compost/rabbit.json +3120c565dc35fcdaf2a3b39a2576bebb69acb216 data/exnihiloreborn/recipes/barrel_compost/rotten_flesh.json +c4b239b31f83c1e0308da813e03649a55a147016 data/exnihiloreborn/recipes/barrel_compost/salmon.json +95747a00e458ffbbfdb35e74d740045830daf223 data/exnihiloreborn/recipes/barrel_compost/saplings.json +cd318e41c753b237db0d23f0f664a2067d00052a data/exnihiloreborn/recipes/barrel_compost/seagrass.json +69978512acbb22801ced85c33cee8ba5d42c4f59 data/exnihiloreborn/recipes/barrel_compost/seeds.json +ea95857e04f42b611be4308dcab306e0acd4731c data/exnihiloreborn/recipes/barrel_compost/silk_worms.json +5ce93122cd9311b420a51f7cef2b0121aff6fac1 data/exnihiloreborn/recipes/barrel_compost/small_flowers.json +1196e88fcdb93f0b15f597a27c5b6d149b6a9050 data/exnihiloreborn/recipes/barrel_compost/spider_eye.json +67248f665f8c8507ee1cf48b2501eef5e7cfc07a data/exnihiloreborn/recipes/barrel_compost/string.json +a2890194aed3620c2a096d66853f7dfff134f33b data/exnihiloreborn/recipes/barrel_compost/sugar_cane.json +9bc16c0e9f70a6fd2422c578f3ffb837cea3a7ca data/exnihiloreborn/recipes/barrel_compost/tall_flowers.json +813ea4bc0de704bc25644b1ef0a43ffca497ea34 data/exnihiloreborn/recipes/barrel_compost/tall_grass.json +1a93f6756bfabc23bc186fb8b2bfbbc48781b5ca data/exnihiloreborn/recipes/barrel_compost/tropical_fish.json +30617af84eef24a61805cef9f12f7df1819a2c28 data/exnihiloreborn/recipes/barrel_compost/vine.json +a1efb6dfadde94b73da785f3d9857eed2540c1f7 data/exnihiloreborn/recipes/barrel_compost/wheat.json +6e3df85650328bce42f118edb970947c33d21f87 data/exnihiloreborn/recipes/birch_barrel.json +b33e570733c5188df4e4fa23333688bbb41fd628 data/exnihiloreborn/recipes/birch_crucible.json +a77177a80976dadad475d076045ed0fe35ab728f data/exnihiloreborn/recipes/bone_crook.json +2262902695810de5890ea8eb49b1641007d46e53 data/exnihiloreborn/recipes/cherry_barrel.json +22abc7bc31f67b4e2242dc6686281a9b5c977713 data/exnihiloreborn/recipes/cherry_crucible.json +de36f05633916a8fab54b6b7814165314a7c41c4 data/exnihiloreborn/recipes/cooked_silk_worm.json +809138aa3568b0b805306ec5134f62a260437831 data/exnihiloreborn/recipes/cooked_silk_worm_from_smoking.json +ca5f097f3c474a582c54bd370897dea18a10daaa data/exnihiloreborn/recipes/crimson_barrel.json +6c6283ce04a0599f4e85f247e0e397f8ba5df8ee data/exnihiloreborn/recipes/crimson_crucible.json +ca5e9fd7400f3e44658911436d7e9e4da1095015 data/exnihiloreborn/recipes/crook.json +5bb2a9d487ebc80970caf29ecd3e528df01bbac4 data/exnihiloreborn/recipes/dark_oak_barrel.json +7eade02376b91508a564c06eed144104a0215869 data/exnihiloreborn/recipes/dark_oak_crucible.json +7a58ae52499005a8b194e406f31c1be4a223f483 data/exnihiloreborn/recipes/diamond_hammer.json +13540d2f5bb66b2bd194dca5ad8175f36c3625ca data/exnihiloreborn/recipes/golden_hammer.json +da98669d2e0d8a2b037498f63fdd534c4ad7f88c data/exnihiloreborn/recipes/hammer/crushed_netherrack.json +041032a45125fd9f8915a928ec7524c276bea4a8 data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json +968a3c7e89ec7c793bef9448eee61eb41c1e6292 data/exnihiloreborn/recipes/hammer/crushing_sandstone.json +4fae674b4893d89c06ab7cea1374e3cb6beb8bdc data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json +421e577d31ea9f29c94fc4accf2228cc82203fd1 data/exnihiloreborn/recipes/hammer/dust.json +24d6e7ad05b49201dd0fbc7d947ee1c7eaa536c6 data/exnihiloreborn/recipes/hammer/gravel.json +89e95a16b00d0fed6ded49c75573cd31dc636565 data/exnihiloreborn/recipes/hammer/sand.json +cc0996112cbb3bea9edb1e130044df4db2b11c75 data/exnihiloreborn/recipes/hammer/stone_pebbles.json +f52d66bd356d8a087380bcba6d2ace5aefd20634 data/exnihiloreborn/recipes/iron_hammer.json +f1c9f600738b54452c064fb87bfc2a7cd426fff8 data/exnihiloreborn/recipes/jungle_barrel.json +862ce48ca979cfe274b1c3ccb13d4b5a51ca9864 data/exnihiloreborn/recipes/jungle_crucible.json +4619cf9593d9c2703d4422614bce3e562ae91d76 data/exnihiloreborn/recipes/lava_crucible/cobblestone.json +a5a32976c9aa8af48025729c0e01bf71950a66e7 data/exnihiloreborn/recipes/lava_crucible/gravel.json +580a2e2e84fb2c6bd2116c9b0fc24404e9563cbb data/exnihiloreborn/recipes/lava_crucible/netherrack.json +53a8954abfdb86fcaa7b5022cc1f646573679c30 data/exnihiloreborn/recipes/lava_crucible/stone.json +4952952bf6bfa0e88503c762504920664cc83018 data/exnihiloreborn/recipes/mangrove_barrel.json +e74887ddb09e78aee413ec63aaa25a9ab0f0ebbf data/exnihiloreborn/recipes/mangrove_crucible.json +0b07e47e28f4d2a407813c41d3bad2c6c7cdde8c data/exnihiloreborn/recipes/netherite_hammer.json +95662bf65d07735d6fcd409f80133a1f3a82e100 data/exnihiloreborn/recipes/oak_barrel.json +a0501465b356002e17328ff509eecfa93e952a08 data/exnihiloreborn/recipes/oak_crucible.json +6c9f7a6da776a73b0daf13e431c7d5ac73a58bed data/exnihiloreborn/recipes/porcelain_crucible.json +19a026d0e8c0614cbc2b11150da49688ac0d3b0c data/exnihiloreborn/recipes/porcelain_crucible_from_campfire_cooking.json +884041f9ea725ca44ac80e9e111e63099c82f8df data/exnihiloreborn/recipes/sieve/beetroot_seeds.json +a8aef540a3d6b2b4ba30fc9813bd3e5df1d50ce6 data/exnihiloreborn/recipes/sieve/melon_seeds.json +de43f772121c76d9b86d38673be84816a067d7c1 data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json +f0afd639fc9238f4f23bd6f5a2066cf16101d39a data/exnihiloreborn/recipes/sieve/stone_pebble.json +5dfd628e764284176dbfc024c1abdd753148845e data/exnihiloreborn/recipes/sieve/wheat_seeds.json +ffb29840856a0e5feb21c6992bfccbd6cb177882 data/exnihiloreborn/recipes/spruce_barrel.json +4cadea3ddd3378b8eb3654f537b2355be053471b data/exnihiloreborn/recipes/spruce_crucible.json +1a1187987414031f287bf60ac07e2058f3795bd0 data/exnihiloreborn/recipes/stone_barrel.json +bdf1b94117a393d54bd291a41ab9d1f5d7828db0 data/exnihiloreborn/recipes/stone_hammer.json +8d8ef9f564035f52f3e4bc5ad04ba760721b43d6 data/exnihiloreborn/recipes/unfired_crucible.json +4fa9d5d6e61a8e318e861e76067d2f7b857d5d26 data/exnihiloreborn/recipes/warped_barrel.json +8f6e9c019bb9761a97a2287539e28dd4417261e2 data/exnihiloreborn/recipes/warped_crucible.json +ba01276a01024fcb4ff34b78d293182c0acb5e60 data/exnihiloreborn/recipes/water_crucible/apple.json +b212fa7443467fdefa77c017877bb04ec62eb07b data/exnihiloreborn/recipes/water_crucible/cactus.json +97101ccec5de5faa54359a286773386fdcf99a1b data/exnihiloreborn/recipes/water_crucible/leaves.json +0ca5096effcadcf734f705434d82a2bfa92848f8 data/exnihiloreborn/recipes/water_crucible/lily_pad.json +60e42c09994d864acb552d53d5db10e12d40a7c0 data/exnihiloreborn/recipes/water_crucible/melon.json +d692d563bcfd47b66ded7affddf3a83d6761079d data/exnihiloreborn/recipes/water_crucible/melon_slice.json +286e94d4f475355db321159e7eb0e87df371fe8f data/exnihiloreborn/recipes/water_crucible/pumpkin.json +d9904d9d24a932da8444e78f60f4a0785f4febc5 data/exnihiloreborn/recipes/water_crucible/saplings.json +72a94f33818d2175db5f68374b5fb9b8893ab570 data/exnihiloreborn/recipes/water_crucible/small_flowers.json +da2019d86304e54dbd2d063920b3759f10fb4053 data/exnihiloreborn/recipes/water_crucible/sweet_berries.json +c759cbfffc5440c1250eda82cb5b697b79dee6e0 data/exnihiloreborn/recipes/water_crucible/tall_flowers.json +074157fe6757fc65a48a3e0a923694cb3e2de4a0 data/exnihiloreborn/recipes/wooden_hammer.json diff --git a/src/generated/resources/.cache/adcb492c336614f4dabbf7b0ba1b80a1feec2905 b/src/generated/resources/.cache/adcb492c336614f4dabbf7b0ba1b80a1feec2905 new file mode 100644 index 00000000..bf36d943 --- /dev/null +++ b/src/generated/resources/.cache/adcb492c336614f4dabbf7b0ba1b80a1feec2905 @@ -0,0 +1,6 @@ +// 1.20.1 2023-07-27T10:58:18.8907585 Tags for minecraft:item mod id exnihiloreborn +3602c357ad3f65545614e0829504c3bd0e3b9925 data/exnihiloreborn/tags/items/barrels.json +d5441416296951ce5fd5ce14bc6d3753b4f26950 data/exnihiloreborn/tags/items/crooks.json +b08e46cd1efe72662e1fab1b90fe65ba31695695 data/exnihiloreborn/tags/items/hammers.json +4d0a7706e14b16cfe3c6f98c535afc582d714578 data/exnihiloreborn/tags/items/stone_barrels.json +b24f3ab9d607e3257d78d3a754a1255507e245f8 data/exnihiloreborn/tags/items/wooden_barrels.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache deleted file mode 100644 index 76c3dccc..00000000 --- a/src/generated/resources/.cache/cache +++ /dev/null @@ -1,308 +0,0 @@ -6b1f7c2a40a8907e7f7408f1abfb28078caa4fff assets/exnihiloreborn/blockstates/acacia_barrel.json -4cfcca92876cd40dce2731bf17e1c12bde0dc813 assets/exnihiloreborn/blockstates/acacia_crucible.json -ef543c60f5f20a84037814c027cfdecca0f4cea0 assets/exnihiloreborn/blockstates/acacia_sieve.json -239790a7c18c748b660d8ef88104bea785b6c8b2 assets/exnihiloreborn/blockstates/birch_barrel.json -d00f325339290b49a550cbe16457fcf99e5d5a0e assets/exnihiloreborn/blockstates/birch_crucible.json -da9be2724dd0b84eecab228d82785599313a025d assets/exnihiloreborn/blockstates/birch_sieve.json -96fb45b1314378aaa7fb3860ee0c551137607d23 assets/exnihiloreborn/blockstates/crimson_barrel.json -5dda0004c1720107f61245c74d9f382febb7c9ea assets/exnihiloreborn/blockstates/crimson_crucible.json -2fbf799c3aa62833b89eedcda3841115eb51d846 assets/exnihiloreborn/blockstates/crimson_sieve.json -cc9c3f04c5b8dab09cbe27daa63acd46d53d55e2 assets/exnihiloreborn/blockstates/crushed_end_stone.json -0cc83d101a7ba1c53e4233520603cb8ec90ea4e5 assets/exnihiloreborn/blockstates/crushed_netherrack.json -c57daf6b8fcfdedc131961f69c73b6507952afe3 assets/exnihiloreborn/blockstates/dark_oak_barrel.json -2e621058efc29a09a1a7ef63c8beff29629e949f assets/exnihiloreborn/blockstates/dark_oak_crucible.json -631b32a1d0ffaa6870a33b49c01ef90bcb1af498 assets/exnihiloreborn/blockstates/dark_oak_sieve.json -b80f3a9a366a319ffb13b430ac450f7e9a8da1c7 assets/exnihiloreborn/blockstates/dust.json -d6e60487cb7b9fe4895677bc27cf7ae460f4a6c8 assets/exnihiloreborn/blockstates/jungle_barrel.json -304d271ad49bc8295de2d10e16eb91506e1a3049 assets/exnihiloreborn/blockstates/jungle_crucible.json -bbad544438efbffb530fbafb3733069782c8a75f assets/exnihiloreborn/blockstates/jungle_sieve.json -7aa72fb4e265c728322964fdf9fd6ee36156cd00 assets/exnihiloreborn/blockstates/oak_barrel.json -21ad905736d2fdd2df8eb5a5e8263c6c1c23d799 assets/exnihiloreborn/blockstates/oak_crucible.json -3c2c217a2309840bb1d94dddd376f948617d43b8 assets/exnihiloreborn/blockstates/oak_sieve.json -1b11dc53dbabd2844e6763f47cae3388ad0c5264 assets/exnihiloreborn/blockstates/porcelain_crucible.json -859f034cece7abfa991b8b3cef4f194bbfafa2e8 assets/exnihiloreborn/blockstates/spruce_barrel.json -b60e62238d282b373cacdcaaa8f5cdfcf8773304 assets/exnihiloreborn/blockstates/spruce_crucible.json -b87591386e02d4f86a3faef2b43b89011d055542 assets/exnihiloreborn/blockstates/spruce_sieve.json -72a1cca44f9264a87045d73b6ba4b4422f893f7a assets/exnihiloreborn/blockstates/stone_barrel.json -035bba6565158e71f78ddc64421004001b72f9bd assets/exnihiloreborn/blockstates/unfired_crucible.json -43f536765740a10e87376f1868a352e9b3578e3b assets/exnihiloreborn/blockstates/warped_barrel.json -3da9a7f055c1ef45bddbbe4d2caab4010e4a94ba assets/exnihiloreborn/blockstates/warped_crucible.json -5bf22e4b5f24f6e634a7a5d2ffb507160d7df19b assets/exnihiloreborn/blockstates/warped_sieve.json -8593319de75b48dd4f6cd75c29344891b173b0e3 assets/exnihiloreborn/lang/en_us.json -fc7629ecbb61ad05a717b5399e494746aebd46f2 assets/exnihiloreborn/models/block/acacia_barrel.json -2faac013888461275178b85d135bee8c4587a1d3 assets/exnihiloreborn/models/block/acacia_crucible.json -8774297c443953ac2add65bfdd4eded703fbb412 assets/exnihiloreborn/models/block/acacia_sieve.json -0a0fd97607320822d7f126f6422922df0225c69a assets/exnihiloreborn/models/block/birch_barrel.json -732bd9803ef2351896e97f277eefc9f0857b34b0 assets/exnihiloreborn/models/block/birch_crucible.json -b03c2fe3e19cb42da6329bc0312b8bece38b0a01 assets/exnihiloreborn/models/block/birch_sieve.json -e78e763781a1dcd1919f9b466faa124048c703f0 assets/exnihiloreborn/models/block/crimson_barrel.json -d61d2a148163e9315d8ebd058323a59697503a8d assets/exnihiloreborn/models/block/crimson_crucible.json -ec509d5d0ce8307f4db0373effd841962fb444b2 assets/exnihiloreborn/models/block/crimson_sieve.json -a2dd7dc4b93718c1fa541cbbc4b707a0b10c7a45 assets/exnihiloreborn/models/block/crushed_end_stone.json -4a8f2f59570b6ee3abdd9332c422f0c4bd922a70 assets/exnihiloreborn/models/block/crushed_netherrack.json -da1a0e75d98233de9afc951a09d760ed8b17ba80 assets/exnihiloreborn/models/block/dark_oak_barrel.json -fcfa75f17fbf9ef1ab688920c9ad274f4a6af7c6 assets/exnihiloreborn/models/block/dark_oak_crucible.json -c55835b1aeba6642ddffe80282819cc31e75f1a1 assets/exnihiloreborn/models/block/dark_oak_sieve.json -bfc71b617371fc9b58281dab8db17e3022ed5976 assets/exnihiloreborn/models/block/dust.json -916d957dd5700f934d8b2e821762c812a23f244d assets/exnihiloreborn/models/block/jungle_barrel.json -63c0cbd8217e3b639b3a3187cd99a805f0cece29 assets/exnihiloreborn/models/block/jungle_crucible.json -b805f2bc24a1565fa0e86eeb5653e0d46a78e993 assets/exnihiloreborn/models/block/jungle_sieve.json -f8d2bd98ad407c49566ae911feba7abc531a4cd5 assets/exnihiloreborn/models/block/oak_barrel.json -08525e523958ca7b6c7540c2bef11f28fb7502c0 assets/exnihiloreborn/models/block/oak_crucible.json -39f9c13ade872068dbb48ecf7dc98c19d11fab75 assets/exnihiloreborn/models/block/oak_sieve.json -f124d29de3f40103c7e47b98c28f02f752e92f6c assets/exnihiloreborn/models/block/porcelain_crucible.json -34d343e599b93fad9b765dce84501504be0217c0 assets/exnihiloreborn/models/block/spruce_barrel.json -86245ab87ce1595f217d9a9d9c21f4d2303dfefe assets/exnihiloreborn/models/block/spruce_crucible.json -40db06387ec10438a8feb79ffdd6b53cd07e582d assets/exnihiloreborn/models/block/spruce_sieve.json -b2acd16c3cf321faee10b2a3863ce2797e1a026e assets/exnihiloreborn/models/block/stone_barrel.json -f454ed0ed5fa37fd1339f18063fb1cfdfd164669 assets/exnihiloreborn/models/block/unfired_crucible.json -ad9c5cf97b42805238a7edea2fdaeeb03e6da7d3 assets/exnihiloreborn/models/block/warped_barrel.json -953a84335205c9b8581d793d5c844f895a4f3135 assets/exnihiloreborn/models/block/warped_crucible.json -a89c05d07b7e05c6aaf2bb197aedb10786e1128f assets/exnihiloreborn/models/block/warped_sieve.json -b6b1c57f668edf98740db76fd14f133eaffd0720 assets/exnihiloreborn/models/item/acacia_barrel.json -183d0697b952c37b5c6818adb9fa8f6333693528 assets/exnihiloreborn/models/item/acacia_crucible.json -056527f91834d397e6e6d58ed593304290379d4a assets/exnihiloreborn/models/item/acacia_sieve.json -009913aff8f2b1c986022ae220711a6ae0a5b7b0 assets/exnihiloreborn/models/item/birch_barrel.json -38cbfac78e620cd843f87fb06bb82d0b782b10ce assets/exnihiloreborn/models/item/birch_crucible.json -1e55d3001b89131196e2633c5ca90b39a0fd3d85 assets/exnihiloreborn/models/item/birch_sieve.json -c5b025888aa5205fd99aa22ced491ab5d15d8367 assets/exnihiloreborn/models/item/bone_crook.json -14b3d5e284b7b3d39951712a1f1f7c4e1ff17d48 assets/exnihiloreborn/models/item/cooked_silk_worm.json -6bf1e8bafd9b964e601768304131f4f16d45cd0e assets/exnihiloreborn/models/item/crimson_barrel.json -a98fd77c49e09c5a3ddb17ff128157bd60ca9a8c assets/exnihiloreborn/models/item/crimson_crucible.json -b9a31f1db41dbd0b59f867b008ec55792061bdaa assets/exnihiloreborn/models/item/crimson_sieve.json -1cd6f833e1d0c8751cfc358d91d964c897de58d4 assets/exnihiloreborn/models/item/crook.json -28d934726ab844081edb590c59f3dcc3c2dc6bfb assets/exnihiloreborn/models/item/crushed_end_stone.json -6e2ecc834f0e35ed8f0f24b1bb2382c68f359a17 assets/exnihiloreborn/models/item/crushed_netherrack.json -3b66ea2aae7c884567ba388bf64e89c627d9ce23 assets/exnihiloreborn/models/item/dark_oak_barrel.json -a37fde390decb12fde8466cc3379ee12ab5fe25d assets/exnihiloreborn/models/item/dark_oak_crucible.json -8d83269151e363c2bdd9d0c428f856a0a05791fe assets/exnihiloreborn/models/item/dark_oak_sieve.json -e7c623c33a07c856eb70bb68c5504d64c1131d6a assets/exnihiloreborn/models/item/diamond_hammer.json -ce06221b61a1e59776244f6cd7297730dc6c44f7 assets/exnihiloreborn/models/item/dust.json -34b81e1056dc4a84b7cf40ca711e81a4d52d6113 assets/exnihiloreborn/models/item/golden_hammer.json -c568879b6ac167affec3e14eb12e5119178c8369 assets/exnihiloreborn/models/item/iron_hammer.json -f07bda7d8acb0858f4f5141496ec1b8f1ad8adca assets/exnihiloreborn/models/item/jungle_barrel.json -d6add4e04cec2661b245b69d228acc7237da42dc assets/exnihiloreborn/models/item/jungle_crucible.json -123aafb9e4c2d7b84a11788eb125f1dd4fb0f02f assets/exnihiloreborn/models/item/jungle_sieve.json -70120521c811abb2e8c81a6b06eb7d5c14219db4 assets/exnihiloreborn/models/item/oak_barrel.json -307de756c26a215396ab04a905ac79df5e96a948 assets/exnihiloreborn/models/item/oak_crucible.json -cabe1fe16d343bcd9338dcc1c7c52b9f992110e4 assets/exnihiloreborn/models/item/oak_sieve.json -6c25f161c7adc7db3961bbd9a24146b8edeb32b6 assets/exnihiloreborn/models/item/porcelain_crucible.json -d0baa6801590a4581fa94f168df5183730589fb1 assets/exnihiloreborn/models/item/silk_worm.json -8e0cecb3176800ff5972704e7251dffa7253d2e1 assets/exnihiloreborn/models/item/spruce_barrel.json -b853e1b5a36df4b5660e0fc413a9df9a145ce3f9 assets/exnihiloreborn/models/item/spruce_crucible.json -cc1c573870dac3f2a5c3e8e80964eb494cb2c3e9 assets/exnihiloreborn/models/item/spruce_sieve.json -7a1b6abcd79c1c797a0884380c926482e2323fb1 assets/exnihiloreborn/models/item/stone_barrel.json -b6aa4986ab295a968d7fb1630023714240a7b03f assets/exnihiloreborn/models/item/stone_hammer.json -b69a214d853d74c17a1a92114ab4c2f1316162fe assets/exnihiloreborn/models/item/unfired_crucible.json -42e0adade5d4e9f8c5bc0309ab9e82e375d77696 assets/exnihiloreborn/models/item/warped_barrel.json -afed51f68ebb12aaeffe6f8141b9c21ec950fb4f assets/exnihiloreborn/models/item/warped_crucible.json -b9fcf4827195310e0fc6120171bc0242bc440ef7 assets/exnihiloreborn/models/item/warped_sieve.json -fb15c1f086ed59aeb62879c7160f28a3d7ef4de3 assets/exnihiloreborn/models/item/wooden_hammer.json -6b13f0abd30f8e3935c86963e3b5b7a4258bd7dd data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_barrel.json -5c134ce0d7c57e569bbf1bb9a6905976b34c2540 data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_crucible.json -cbd050075da9b73b9738af87c8bb98b42510f452 data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_barrel.json -ee0e9d1c8c34cd7ff43b9ee286d9aa0a44dd6407 data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_crucible.json -bb7c50bcb94ee585343de89c7aca1713bc451b71 data/exnihiloreborn/advancements/recipes/exnihiloreborn/bone_crook.json -bcc07ba16eb241fe27411e70e9802fa9ccf1c725 data/exnihiloreborn/advancements/recipes/exnihiloreborn/compressed_crook.json -966e85a52859f9e071130353134d823b8e6d37f5 data/exnihiloreborn/advancements/recipes/exnihiloreborn/cooked_silk_worm.json -2eeffb066842df5bd36818c751e7e900bfab573c data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_barrel.json -07fb507a770c9d70e80bd1e7f3c1b50090087521 data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_crucible.json -4738a5e12744f6f0bc1411bd4a6d2d09f8c98930 data/exnihiloreborn/advancements/recipes/exnihiloreborn/crook.json -285be8d87ddf835429c7d6d61f5246c94faa54a3 data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_barrel.json -01bc75c0be5fa8d224cedbc963f07e80a5fbd7ac data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_crucible.json -ecc1a50dc52ef324615180e1b8caf4666d6bb0c6 data/exnihiloreborn/advancements/recipes/exnihiloreborn/diamond_hammer.json -f6b903bc4e0549a39d1319fea690090c52450373 data/exnihiloreborn/advancements/recipes/exnihiloreborn/golden_hammer.json -ea82d82f3598de41a34b675a87979bcf11c11908 data/exnihiloreborn/advancements/recipes/exnihiloreborn/iron_hammer.json -fa64e83b81957793f3e280e3295f70fb5a378e12 data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_barrel.json -0ba940ea12af29bacb95bcf0256335e3deaf7eaf data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_crucible.json -6c3cd676b4b31c9758a12b1f2207aa2b5a2f6dcc data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_barrel.json -c8ed20329333ddf22c2258ed797c1d3bb28490fe data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_crucible.json -bcbc1214981633751fbdbad75c1e15b2cc2c5e9c data/exnihiloreborn/advancements/recipes/exnihiloreborn/porcelain_crucible.json -e0de3a8f65d6f0ce24d3a73daa9ad49cd8f1eab0 data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_barrel.json -8f9a667b15d0ca9e61d55514be28d3d68ab960be data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_crucible.json -53237e2f0c0332e2b651a70caada4bf0883cd7d8 data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_barrel.json -1d6f6b945d4c8aea67e256309a2833ad62e40111 data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_hammer.json -23cad98d77125e56b162f66a4f7c063aaf976050 data/exnihiloreborn/advancements/recipes/exnihiloreborn/unfired_crucible.json -a833117f7ea1ea35025691aa1e9392de75b4d27a data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_barrel.json -95709fa9f528fe8864a380e47271fa136a4d23a4 data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_crucible.json -6bb59781f6303c94205223365921e3197f07eace data/exnihiloreborn/advancements/recipes/exnihiloreborn/wooden_hammer.json -7e1a9f4c6014042f1b37e13e5f41d7f1aa1c3782 data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json -55e3f3cfedf47ad775d1354ea0850fa6e2da1515 data/exnihiloreborn/loot_tables/blocks/birch_barrel.json -56f8a57d4951f080a470c6a993aded60978da8c5 data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json -96e3fd87da7d782ee296f92e0d21f7126952203c data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json -7dcf5bcc109a8232bad0eb5da20452751e28f742 data/exnihiloreborn/loot_tables/blocks/compressed_dust.json -d3c6080124dec154a147f7b387f7b45f7a69b08f data/exnihiloreborn/loot_tables/blocks/compressed_sand.json -13b8c702c4a29592805d50ad6be1fb418a762d68 data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json -0df0157da6efb67e302174b78a11336042b55029 data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json -153332e35013ac8ce00c3c7d9e96fcf2b7418f12 data/exnihiloreborn/loot_tables/blocks/dust.json -3f997adf0dbd796a553c901d44bf344d0758393a data/exnihiloreborn/loot_tables/blocks/infested_leaves.json -b72effb758675549b6bed2a131f9bbe3e46ea505 data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json -cf78b1f62fe2f14a3aeeab9c55a594d4fafd965d data/exnihiloreborn/loot_tables/blocks/oak_barrel.json -12541930dfff7ddf4fdaaeeb744ef361e9a85dcb data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json -5bc1d6f1f8f190d6da258c215b450156cb915853 data/exnihiloreborn/loot_tables/blocks/stone_barrel.json -bb4e1d6e0d46871a50fd12a0ee6ec2522044fd05 data/exnihiloreborn/loot_tables/blocks/warped_barrel.json -80cd88ac7cdf83c4d85ed33eaec23b1e5a30be37 data/exnihiloreborn/recipes/acacia_barrel.json -00289c1036ea6eb7b7bc352dfe730aefabcfccf3 data/exnihiloreborn/recipes/acacia_crucible.json -9a5593056cd0123fc99ceee4e8b4e0baab451e77 data/exnihiloreborn/recipes/barrel_compost/apple.json -17484460671baa5c0030bad675d7ef998c39df8b data/exnihiloreborn/recipes/barrel_compost/bread.json -924c20ccecc4549c3da5ebecbdd98bb737c896d4 data/exnihiloreborn/recipes/barrel_compost/cookie.json -ef70f45c9dae5e819ae41a3fce333cfdea509e4a data/exnihiloreborn/recipes/barrel_compost/kelp.json -7fa9a414885aeeba54fd530d895620f436991dcc data/exnihiloreborn/recipes/barrel_compost/leaves.json -153fcdc950855b9f18e417e249daa1bf22ee3af1 data/exnihiloreborn/recipes/barrel_compost/melon.json -d48c313e8904ac474d823ab9cb3f0028df15356f data/exnihiloreborn/recipes/barrel_compost/melon_slice.json -53d049cf51ddc6902503dafffc5298704dab0dc2 data/exnihiloreborn/recipes/barrel_compost/mushrooms.json -93c059428567a58439cfd7c999eb75a298a2419e data/exnihiloreborn/recipes/barrel_compost/nether_wart.json -5bf24aacd0eee32a5f8c89b22f108cb9715366d6 data/exnihiloreborn/recipes/barrel_compost/pumpkin.json -9bd10d56444191c6f88d9c8839446675de4eef37 data/exnihiloreborn/recipes/barrel_compost/pumpkin_pie.json -ff828be14e992c890b3066ac0f24f0f8d2f465e5 data/exnihiloreborn/recipes/barrel_compost/saplings.json -729c7a6d72e29103b1c6d265e02238ad1e8add20 data/exnihiloreborn/recipes/barrel_compost/seagrass.json -62ead8b6d3747c3467e7e14f6f34c816bfcbcd40 data/exnihiloreborn/recipes/barrel_compost/seeds.json -b8c51d6410b50dee022db5ccac01b9800bade308 data/exnihiloreborn/recipes/barrel_compost/silk_worms.json -2d14fef43c12935f895bfd958a14bb3ca5fc9223 data/exnihiloreborn/recipes/barrel_compost/small_flowers.json -fbe5d2c7c275df5683b20b1e15f12bec2f426f6d data/exnihiloreborn/recipes/barrel_compost/spider_eye.json -d3ab57bca3495e7537716f168554ce6ae9f72f9f data/exnihiloreborn/recipes/barrel_compost/sweet_berries.json -6f6f93ffa5bcc28948106e6efc0fe275b7fecb2e data/exnihiloreborn/recipes/barrel_compost/tall_flowers.json -74ddc2ca01f0e2a35e609633bc7a67793c63f473 data/exnihiloreborn/recipes/barrel_compost/wheat.json -00f9ee47d01b26ff9fdb01032c2629c9701ff5a1 data/exnihiloreborn/recipes/birch_barrel.json -c9d521c98e634eaee6a64a5ac152902ba10dd694 data/exnihiloreborn/recipes/birch_crucible.json -00c545fb1552eda6d048d2360ae59c8fc837dc7e data/exnihiloreborn/recipes/bone_crook.json -eeed21a616d81213a7fc605b51b0c18e46bde843 data/exnihiloreborn/recipes/compressed_crook.json -0830189e0e494f36030ed2511639528df4473d13 data/exnihiloreborn/recipes/cooked_silk_worm.json -327708e5cc4c5cb2c1c3ba88bb3cf3939039ec2b data/exnihiloreborn/recipes/crimson_barrel.json -37cc68ed5337fdf24bafeee830b327009ebaa33e data/exnihiloreborn/recipes/crimson_crucible.json -9f1f7d3b1498aea50cd4aca636fe97ff495073b3 data/exnihiloreborn/recipes/crook.json -3de823e6a637550f483788fbbf0bcf3eb754344f data/exnihiloreborn/recipes/dark_oak_barrel.json -91505bedc6771829bd6e2e3ced6e992c107c96b7 data/exnihiloreborn/recipes/dark_oak_crucible.json -2c6e77c878721480afc9f90262db4c037d651237 data/exnihiloreborn/recipes/diamond_hammer.json -4bfc3eabfc36a2d19f0c55227f0e4a322d823962 data/exnihiloreborn/recipes/golden_hammer.json -f57cb3b8bf65c90a48cc388152840f7b11ce3556 data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json -23e4048ef09ed61a26ba66da7aadd5adfb522415 data/exnihiloreborn/recipes/hammer/crushing_sandstone.json -2d4174edc94e859a604bed46199db915a6927260 data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json -b69e7d7dda133d91b025d36ef84566ac44f7f6dc data/exnihiloreborn/recipes/hammer/dust.json -f487e8a70d29641a70d76f274957ba42286963e0 data/exnihiloreborn/recipes/hammer/gravel.json -12e8c032a7db4148d0006d66ff1fbd0373935803 data/exnihiloreborn/recipes/hammer/sand.json -281e8e15a3159a508fe4262ad2ce2113d7ceac3c data/exnihiloreborn/recipes/hammer/stone_pebbles.json -ced6fb12c0fbc529e98572cbd3452891e0564fe7 data/exnihiloreborn/recipes/iron_hammer.json -c918efafcf434580d9b47d0a1ec3dbfdb28045f6 data/exnihiloreborn/recipes/jungle_barrel.json -a19f3bc2479dcacc247de14ba6869ffc001c8dea data/exnihiloreborn/recipes/jungle_crucible.json -d829ab200ba6efdc0d1a9758759289363c132f5d data/exnihiloreborn/recipes/lava_crucible/cobblestone.json -ffaec302cf020443f66ca28f8e8a8ed427bbd89b data/exnihiloreborn/recipes/lava_crucible/gravel.json -b3ebb98ef1ea9ac7e49d77d23ec0e984faf6537e data/exnihiloreborn/recipes/lava_crucible/netherrack.json -f8bb7bbed78bf4dae074eaa05326d803337a489c data/exnihiloreborn/recipes/lava_crucible/stone.json -af075fdc2fdc2cd328c6e7d5d22044780b5a00b9 data/exnihiloreborn/recipes/oak_barrel.json -70bc1f2f8c7d3da8eada077d8658185a8d6b5055 data/exnihiloreborn/recipes/oak_crucible.json -c05d612814c3125dc7c4e1a370cd073d3a63300c data/exnihiloreborn/recipes/porcelain_crucible.json -62037aa67646438cc78d36b3fc481f5e3d2f8fe5 data/exnihiloreborn/recipes/sieve/beetroot_seeds.json -60d53c7435b74119da7d0d94bf994831ad8eaed8 data/exnihiloreborn/recipes/sieve/melon_seeds.json -8c3674b088a37bf1fa425ac09c014a56d3799612 data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json -0c3425075a3cdd2170d75d3a0db1798ccce457d7 data/exnihiloreborn/recipes/sieve/stone_pebble.json -8e15ced335e2cbd6cd529f5f87484e22d9a53a87 data/exnihiloreborn/recipes/sieve/wheat_seeds.json -300c398ab36fc28e82f8cb8896dc904e600495d5 data/exnihiloreborn/recipes/spruce_barrel.json -a6b1b5fc9a290b5f8603510daf8d9399b4de9c10 data/exnihiloreborn/recipes/spruce_crucible.json -5de67d9a1ebd11bd5eacb443f94be5a47823e552 data/exnihiloreborn/recipes/stone_barrel.json -2e5789cb2eb0ba068bbf4f53d970b68fe2388e9e data/exnihiloreborn/recipes/stone_hammer.json -e08d2edc60f419dd2a508de85316391d67b9c207 data/exnihiloreborn/recipes/unfired_crucible.json -655c330907b76195e87fa161d146cb0100033ca4 data/exnihiloreborn/recipes/warped_barrel.json -a3e0957d9b6c1f42fed4d067bf9e9d9f318c4f93 data/exnihiloreborn/recipes/warped_crucible.json -f04fcb9681c6ff62234de6a4c63ac34bbb9b5d36 data/exnihiloreborn/recipes/water_crucible/apple.json -da94cf0fc55ba1eee518547737498bf97a7f4f86 data/exnihiloreborn/recipes/water_crucible/cactus.json -a142cf2209793519f0bce78be556a94f6537d4e8 data/exnihiloreborn/recipes/water_crucible/leaves.json -4287d1f9c6c075c455ad09494e61c972f084d779 data/exnihiloreborn/recipes/water_crucible/melon.json -854fded794e66307815bf312c49178f9913ac000 data/exnihiloreborn/recipes/water_crucible/melon_slice.json -7ca6f356f6aa83273998591beab8297eb0939e63 data/exnihiloreborn/recipes/water_crucible/pumpkin.json -0105732c70823f5d877c74e31bc7dca75016a02d data/exnihiloreborn/recipes/water_crucible/saplings.json -05b0098dcf57c14680657d6e4a53560ea4f93ed0 data/exnihiloreborn/recipes/water_crucible/small_flowers.json -89594753b56d1e8472441092228d11d8fb331740 data/exnihiloreborn/recipes/water_crucible/sweet_berries.json -356317e7828186a65e04c364f8b41466755cad82 data/exnihiloreborn/recipes/water_crucible/tall_flowers.json -8e71b4e52184f7b6997eca3c9b8df1b4d59d885b data/exnihiloreborn/recipes/wooden_hammer.json -28cc96bf923f4243eafb2f424562c080c13776b9 data/exnihiloreborn/tags/items/compressed_hammers.json -b66a5a958fc3d99897f32b6c50ead81d28a54434 data/exnihiloreborn/tags/items/crooks.json -98b73372f2e5fb304543394d7226cf167e489491 data/exnihiloreborn/tags/items/hammers.json -b05cd8294321449882aa1b4378b355a0357d29c0 data/minecraft/advancements/recipes/exnihiloreborn/cooked_silk_worm_from_smoking.json -d7f16a5ad2b46b72cc4270e809e342775fa1a91c data/minecraft/recipes/cooked_silk_worm_from_smoking.json -cc64a594a266c61f9b417095b48483644216923f data/minecraft/tags/blocks/acacia_logs.json -10bdf4ae09461a8befbc6db074f0c87810a179c8 data/minecraft/tags/blocks/anvil.json -98ed40a9ce70e2db6314eb20b0d798def90cd5ad data/minecraft/tags/blocks/bamboo_plantable_on.json -0bd4a7ad9fb3945080016c0c513a71666f1fa45c data/minecraft/tags/blocks/banners.json -eb26bd99d17e673ddcd07ef7f38dd6ebe4549404 data/minecraft/tags/blocks/base_stone_nether.json -5214bb43c66d495441732b69df204f2460edd494 data/minecraft/tags/blocks/base_stone_overworld.json -2c730d92b3c8bcae7f62381358d05a2994910647 data/minecraft/tags/blocks/beacon_base_blocks.json -cc19b2ce5b4f8d513515eaeff4f8aa1725b038b7 data/minecraft/tags/blocks/beds.json -28d9d739651aa47e95879352a12477c2955448bc data/minecraft/tags/blocks/bee_growables.json -7287fc69a24712818e7bb083eb0ec7eb8ad93d22 data/minecraft/tags/blocks/beehives.json -c4119acccb760f40cc53a372a663ef7202048573 data/minecraft/tags/blocks/birch_logs.json -331374fcc23ad23fe964854acef30097211d234e data/minecraft/tags/blocks/buttons.json -271abebf80b907324609fcf4515fd54d1256703e data/minecraft/tags/blocks/campfires.json -13952d80b58aeec6e0eedccd3ddf31a863df7945 data/minecraft/tags/blocks/carpets.json -f737e48a0a53d2326c89e7d22205ae282bf14ba8 data/minecraft/tags/blocks/climbable.json -351098f7d8142e1e4817b1f637a0f4d554cf0c7d data/minecraft/tags/blocks/coral_blocks.json -ffce4d9383da7dbaea8fc3beb3274a87f0fd58a6 data/minecraft/tags/blocks/coral_plants.json -8c2b7258d84870e024525f5c39a271c8d1229b63 data/minecraft/tags/blocks/corals.json -df61716e1ac18ac14aec90b5380f2912d003d3c6 data/minecraft/tags/blocks/crimson_stems.json -6a1d3975d7be1769c8ab82c38891f0eb5c4f7cf4 data/minecraft/tags/blocks/crops.json -66d8f495d38fd65a5d878009e381e229278a2e0e data/minecraft/tags/blocks/dark_oak_logs.json -41f37916879608eed7f4602ce79a1b21a14d0434 data/minecraft/tags/blocks/doors.json -09f673d40ce1656aa6762c7648373e1b2bca6245 data/minecraft/tags/blocks/dragon_immune.json -b9632e149fc25c3e732ed4c80577c3b88cba171d data/minecraft/tags/blocks/enderman_holdable.json -08f309abe5bee3cb77fa78626d0d11576b95eb31 data/minecraft/tags/blocks/fence_gates.json -8f291eb61c0fb314c0ad9c0253bcabbf93675a93 data/minecraft/tags/blocks/fences.json -515488fb4f5e6fdabfa79481571614283c3741a9 data/minecraft/tags/blocks/fire.json -e741db23dc6f63187460b39e2fd4b5989f6c268c data/minecraft/tags/blocks/flower_pots.json -14b8d5f845b0c48e3c62466258c5a1d508c59da5 data/minecraft/tags/blocks/flowers.json -62c882e7cfd5cd28d7640fe60c94e6817afb811e data/minecraft/tags/blocks/gold_ores.json -a53af57695f5ae2c7076fc645a798201f4eba593 data/minecraft/tags/blocks/guarded_by_piglins.json -07f68e4763cb27322af0824eae4a8d56e10b9246 data/minecraft/tags/blocks/hoglin_repellents.json -6a357118cbaf9faa2d0bd0495c5247dadce3fe52 data/minecraft/tags/blocks/ice.json -6a0a372baf9147d4b3e85cc46301e1e72c3b393c data/minecraft/tags/blocks/impermeable.json -98b39cf1f9ea43f3f4b22dbd718f3f8b30606fdd data/minecraft/tags/blocks/infiniburn_end.json -bb24015cb753c1592206891a800b04b5abda4339 data/minecraft/tags/blocks/infiniburn_nether.json -305fe272833afea72f97591d3555e3566f54eaba data/minecraft/tags/blocks/infiniburn_overworld.json -f26ca94468ebfc40099f3f2387a1a986403ffb36 data/minecraft/tags/blocks/jungle_logs.json -703bb97646721fc12e3c4ccd3dff9413add224f4 data/minecraft/tags/blocks/leaves.json -640c19329c7cbb0bb94a6416947857edc2ffea4d data/minecraft/tags/blocks/logs.json -db1ab1ed896a7e45212c93f307dee6f52d8dfa55 data/minecraft/tags/blocks/logs_that_burn.json -a61ce092a0cba8201832e3e71ea2dcfde6cbd867 data/minecraft/tags/blocks/mushroom_grow_block.json -40737af63de1cafd9baa1cef9bf08e7f5cf74079 data/minecraft/tags/blocks/non_flammable_wood.json -3885d5904ab09945dcff7697f01515438f30aeb2 data/minecraft/tags/blocks/nylium.json -6fb332fe9223f98ad2bfa07a673bd284f1a46127 data/minecraft/tags/blocks/oak_logs.json -b37b4708db0159c68602e2936ba133436a8b4dae data/minecraft/tags/blocks/piglin_repellents.json -4e29a5f501d2d4badb4090d06eddef9b25fe96d3 data/minecraft/tags/blocks/planks.json -e638584b6bd73b4740d21b71a2693044abe3d3ca data/minecraft/tags/blocks/portals.json -6d84dcae6236185e4b25df1c06bb34e5cbe04e8c data/minecraft/tags/blocks/pressure_plates.json -2d2c74dda901bbd6ba0c550c5382ab51a5a82745 data/minecraft/tags/blocks/prevent_mob_spawning_inside.json -fb703660094d60e13c6dcacee036356c207a0843 data/minecraft/tags/blocks/rails.json -b034b4a14f3411c66ed7088642d8369e157a4e93 data/minecraft/tags/blocks/sand.json -b5b0d52ba483e6d85bc0ff6ee81350a7120e708b data/minecraft/tags/blocks/saplings.json -6cc10fee1002cd63b3e1a791358c73fe7d671bb0 data/minecraft/tags/blocks/shulker_boxes.json -b22f77d82e51b5ba6d1b52e03f5912727b0457a4 data/minecraft/tags/blocks/signs.json -11aed5a73a4d9ab505170505f8b145edfb73a0c8 data/minecraft/tags/blocks/slabs.json -e9086500162394a98cfe9221e2081b49a277cc0c data/minecraft/tags/blocks/small_flowers.json -abe677791f6d916b3b307bd1270f4d6687516251 data/minecraft/tags/blocks/soul_fire_base_blocks.json -abe677791f6d916b3b307bd1270f4d6687516251 data/minecraft/tags/blocks/soul_speed_blocks.json -b004f3a3e1922a8b9a89b7b7cda7a7f2986d2f0a data/minecraft/tags/blocks/spruce_logs.json -1806d3b443a9654f81e8a0e9815a129ef17b33a6 data/minecraft/tags/blocks/stairs.json -d3e46da83d51b4d69b0c37e5dc4760934c36bf88 data/minecraft/tags/blocks/standing_signs.json -d35012ca4132eafef53e9ea68e84a7fc8fdd31f6 data/minecraft/tags/blocks/stone_bricks.json -a80bb35192330f6592610482814b73e32b5362b7 data/minecraft/tags/blocks/stone_pressure_plates.json -beb725be018ed98165b5c4c796b463baf18eba68 data/minecraft/tags/blocks/strider_warm_blocks.json -9b9d3f63cf193545f63194080fd1fc66ba69e7ff data/minecraft/tags/blocks/tall_flowers.json -15ee37a120b5ccd1d8986677bd26019e61b12bd5 data/minecraft/tags/blocks/trapdoors.json -dc3094aace807212a671548598e6ebf551f703d5 data/minecraft/tags/blocks/underwater_bonemeals.json -714c9ed3b16a4bbf99ed92a851c50e713f557f20 data/minecraft/tags/blocks/unstable_bottom_center.json -17248c8f056e7340f67ce50f0e3cedbc79832485 data/minecraft/tags/blocks/valid_spawn.json -cdaf7e91da81cec00b8d9bac65d54b6dd9f9d5b2 data/minecraft/tags/blocks/wall_corals.json -21b8bf0ef6b677f9b5b8d1e0398a6b4972c1ca1a data/minecraft/tags/blocks/wall_post_override.json -271c53cb9102f85dc318f1de46c2800ce3a1dc1f data/minecraft/tags/blocks/wall_signs.json -e3eeb6c6451a3d8d2c66ecf464bd8e8b7426c763 data/minecraft/tags/blocks/walls.json -fa0b5df5192cab3ac9a864f1ea9783ecf55db97c data/minecraft/tags/blocks/warped_stems.json -65d65a17100d9372f0adb5b1d6a91118ae9eb340 data/minecraft/tags/blocks/wart_blocks.json -dd2268ec7dfbec202c0946cfe4d7e29a6f904b89 data/minecraft/tags/blocks/wither_immune.json -abe677791f6d916b3b307bd1270f4d6687516251 data/minecraft/tags/blocks/wither_summon_base_blocks.json -b96e14548e654afcd1e02ff74c7087e65f90372a data/minecraft/tags/blocks/wooden_buttons.json -58c7f65650d0381cd95b86e8d1b2a9c40b61fcc3 data/minecraft/tags/blocks/wooden_doors.json -2395f3a3a34048c36bf81272e77d943de8d3f720 data/minecraft/tags/blocks/wooden_fences.json -1c30c5a0651b3223a562deb4e7389ab1675608cb data/minecraft/tags/blocks/wooden_pressure_plates.json -cd2a2d2457ca52209ebd0c54290d2c80579ad301 data/minecraft/tags/blocks/wooden_slabs.json -10a843d1d5098b35227da5304e96dc1156479a2d data/minecraft/tags/blocks/wooden_stairs.json -d25b93d3b70cb0c3ba7a8a0c93de95366c8dbccd data/minecraft/tags/blocks/wooden_trapdoors.json -721eaf2d7f45c4c481c9a86c14ebff6ffb83e3b3 data/minecraft/tags/blocks/wool.json diff --git a/src/generated/resources/.cache/d2a52f93f6a2dbbf9cb17e741383b71a5107d737 b/src/generated/resources/.cache/d2a52f93f6a2dbbf9cb17e741383b71a5107d737 new file mode 100644 index 00000000..025dc671 --- /dev/null +++ b/src/generated/resources/.cache/d2a52f93f6a2dbbf9cb17e741383b71a5107d737 @@ -0,0 +1,4 @@ +// 1.20.1 2023-07-25T16:40:21.4007052 Tags for minecraft:worldgen/structure_set mod id exnihiloreborn +35133e95f1c8fdd7a1c21afcc231fc0bffefb9a8 data/exnihiloreborn/tags/worldgen/structure_set/overworld_void_structure_sets.json +35133e95f1c8fdd7a1c21afcc231fc0bffefb9a8 data/exnihiloreborn/tags/worldgen/structure_set/the_end_void_structure_sets.json +14abefb27112e5ad3ebce0cb9618fb51c54e2f9d data/exnihiloreborn/tags/worldgen/structure_set/the_nether_void_structure_sets.json diff --git a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 new file mode 100644 index 00000000..10e6a87d --- /dev/null +++ b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 @@ -0,0 +1,6 @@ +// 1.20.1 2023-07-25T23:58:50.2136539 Advancements +82b18f9cd2e795822f726a2228b8afbe0725ec92 data/exnihiloreborn/advancements/core/barrel.json +a9e9465ae18de97071060c1e9bda17bf47951524 data/exnihiloreborn/advancements/core/crook.json +59a21529ea42ad657750110399ff1cabfead380f data/exnihiloreborn/advancements/core/root.json +7103c0d7631de60d10e77f1a87a3232a30005c26 data/exnihiloreborn/advancements/core/silk_worm.json +6a9f99474e987b4c6f9031f20a77508c00280217 data/exnihiloreborn/advancements/core/string_mesh.json diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_barrel.json b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_barrel.json new file mode 100644 index 00000000..ef5e4e25 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_barrel.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/bamboo_barrel" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_crucible.json b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_crucible.json new file mode 100644 index 00000000..cc1a625d --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_crucible.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/bamboo_crucible" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_sieve.json b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_sieve.json new file mode 100644 index 00000000..c8ac6670 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/bamboo_sieve.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/bamboo_sieve" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_barrel.json b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_barrel.json new file mode 100644 index 00000000..dc179fa8 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_barrel.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/cherry_barrel" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_crucible.json b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_crucible.json new file mode 100644 index 00000000..a9f2e539 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_crucible.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/cherry_crucible" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_sieve.json b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_sieve.json new file mode 100644 index 00000000..55c3cfbc --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/cherry_sieve.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/cherry_sieve" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_barrel.json b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_barrel.json new file mode 100644 index 00000000..09afb7c0 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_barrel.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/mangrove_barrel" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_crucible.json b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_crucible.json new file mode 100644 index 00000000..d81ab6b7 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_crucible.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/mangrove_crucible" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_sieve.json b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_sieve.json new file mode 100644 index 00000000..49b7029d --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/blockstates/mangrove_sieve.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "exnihiloreborn:block/mangrove_sieve" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/lang/en_us.json b/src/generated/resources/assets/exnihiloreborn/lang/en_us.json index 5fda2507..bc3040a8 100644 --- a/src/generated/resources/assets/exnihiloreborn/lang/en_us.json +++ b/src/generated/resources/assets/exnihiloreborn/lang/en_us.json @@ -1,8 +1,26 @@ { + "advancements.exnihiloreborn.core.barrel.description": "Use a barrel to compost organic material into dirt", + "advancements.exnihiloreborn.core.barrel.title": "That Goes in the GreenWaste", + "advancements.exnihiloreborn.core.crook.description": "Craft a Crook to double sapling drops from leaves", + "advancements.exnihiloreborn.core.crook.title": "This is a Robbery", + "advancements.exnihiloreborn.core.root.description": "Spawn into a SkyBlock void world", + "advancements.exnihiloreborn.core.root.title": "Don't Look Down...", + "advancements.exnihiloreborn.core.silk_worm.description": "Obtain a silk worm, then infest a tree with it to get string", + "advancements.exnihiloreborn.core.silk_worm.title": "Straight Outta China", + "advancements.exnihiloreborn.core.string_mesh.description": "Craft a string mesh to use in a sieve", + "advancements.exnihiloreborn.core.string_mesh.title": "All the Little Cogs", "block.exnihiloreborn.acacia_barrel": "Acacia Barrel", "block.exnihiloreborn.acacia_crucible": "Acacia Crucible", + "block.exnihiloreborn.acacia_sieve": "Acacia Sieve", + "block.exnihiloreborn.bamboo_barrel": "Bamboo Barrel", + "block.exnihiloreborn.bamboo_crucible": "Bamboo Crucible", + "block.exnihiloreborn.bamboo_sieve": "Bamboo Sieve", "block.exnihiloreborn.birch_barrel": "Birch Barrel", "block.exnihiloreborn.birch_crucible": "Birch Crucible", + "block.exnihiloreborn.birch_sieve": "Birch Sieve", + "block.exnihiloreborn.cherry_barrel": "Cherry Barrel", + "block.exnihiloreborn.cherry_crucible": "Cherry Crucible", + "block.exnihiloreborn.cherry_sieve": "Cherry Sieve", "block.exnihiloreborn.compressed_cobblestone": "Compressed Cobblestone", "block.exnihiloreborn.compressed_crushed_end_stone": "Compressed Crushed End Stone", "block.exnihiloreborn.compressed_crushed_netherrack": "Compressed Crushed Netherrack", @@ -11,42 +29,65 @@ "block.exnihiloreborn.compressed_sand": "Compressed Sand", "block.exnihiloreborn.crimson_barrel": "Crimson Barrel", "block.exnihiloreborn.crimson_crucible": "Crimson Crucible", + "block.exnihiloreborn.crimson_sieve": "Crimson Sieve", "block.exnihiloreborn.crushed_end_stone": "Crushed End Stone", "block.exnihiloreborn.crushed_netherrack": "Crushed Netherrack", - "block.exnihiloreborn.dark_oak_barrel": "Dark_oak Barrel", + "block.exnihiloreborn.dark_oak_barrel": "Dark Oak Barrel", "block.exnihiloreborn.dark_oak_crucible": "Dark Oak Crucible", + "block.exnihiloreborn.dark_oak_sieve": "Dark Oak Sieve", "block.exnihiloreborn.dust": "Dust", + "block.exnihiloreborn.infested_leaves": "Infested Leaves", "block.exnihiloreborn.jungle_barrel": "Jungle Barrel", "block.exnihiloreborn.jungle_crucible": "Jungle Crucible", + "block.exnihiloreborn.jungle_sieve": "Jungle Sieve", + "block.exnihiloreborn.mangrove_barrel": "Mangrove Barrel", + "block.exnihiloreborn.mangrove_crucible": "Mangrove Crucible", + "block.exnihiloreborn.mangrove_sieve": "Mangrove Sieve", "block.exnihiloreborn.oak_barrel": "Oak Barrel", "block.exnihiloreborn.oak_crucible": "Oak Crucible", + "block.exnihiloreborn.oak_sieve": "Oak Sieve", "block.exnihiloreborn.porcelain_crucible": "Porcelain Crucible", "block.exnihiloreborn.spruce_barrel": "Spruce Barrel", "block.exnihiloreborn.spruce_crucible": "Spruce Crucible", + "block.exnihiloreborn.spruce_sieve": "Spruce Sieve", "block.exnihiloreborn.stone_barrel": "Stone Barrel", "block.exnihiloreborn.unfired_crucible": "Unfired Crucible", "block.exnihiloreborn.warped_barrel": "Warped Barrel", "block.exnihiloreborn.warped_crucible": "Warped Crucible", + "block.exnihiloreborn.warped_sieve": "Warped Sieve", + "block.exnihiloreborn.witch_water": "Witch Water", + "generator.exnihiloreborn.void_world": "Void World", + "gui.exnihiloreborn.category.barrel_compost": "Barrel Compost", + "gui.exnihiloreborn.category.barrel_compost.volume": "Compost: %s", + "gui.exnihiloreborn.category.compressed_hammer": "Compressed Hammer", + "gui.exnihiloreborn.category.compressed_sieve": "Heavy Sieve", + "gui.exnihiloreborn.category.hammer": "Hammer Crucible", + "gui.exnihiloreborn.category.lava_crucible": "Lava Crucible", + "gui.exnihiloreborn.category.sieve": "Sieve", + "gui.exnihiloreborn.category.water_crucible": "Water Crucible", + "info.exnihiloreborn.silk_worm": "Silk worms have a 1 in 100 chance to drop from leaves harvested with a Crook. Using a silk worm on a tree's leaves will infest them, gradually spreading through the entire tree. 100% infested leaves can be harvested for string, but do not drop saplings.", "item.exnihiloreborn.bone_crook": "Bone Crook", - "item.exnihiloreborn.compressed_crook": "Compressed Crook", - "item.exnihiloreborn.compressed_diamond_hammer": "Compressed Diamond Hammer", - "item.exnihiloreborn.compressed_golden_hammer": "Compressed Golden Hammer", - "item.exnihiloreborn.compressed_iron_hammer": "Compressed Iron Hammer", - "item.exnihiloreborn.compressed_netherite_hammer": "Compressed Netherite Hammer", - "item.exnihiloreborn.compressed_stone_hammer": "Compressed Stone Hammer", - "item.exnihiloreborn.compressed_wooden_hammer": "Compressed Wooden Hammer", "item.exnihiloreborn.cooked_silk_worm": "Cooked Silk Worm", "item.exnihiloreborn.copper_ore_pieces": "Copper Ore Pieces", "item.exnihiloreborn.crook": "Crook", "item.exnihiloreborn.deepslate_pebble": "Deepslate Pebble", "item.exnihiloreborn.diamond_hammer": "Diamond Hammer", + "item.exnihiloreborn.diamond_mesh": "Diamond Mesh", + "item.exnihiloreborn.flint_mesh": "Flint Mesh", "item.exnihiloreborn.gold_ore_pieces": "Gold Ore Pieces", "item.exnihiloreborn.golden_hammer": "Golden Hammer", "item.exnihiloreborn.iron_hammer": "Iron Hammer", + "item.exnihiloreborn.iron_mesh": "Iron Mesh", "item.exnihiloreborn.iron_ore_pieces": "Iron Ore Pieces", "item.exnihiloreborn.netherite_hammer": "Netherite Hammer", + "item.exnihiloreborn.netherite_mesh": "Netherite Mesh", + "item.exnihiloreborn.porcelain_bucket": "Porcelain Bucket", + "item.exnihiloreborn.porcelain_clay": "Porcelain Clay", "item.exnihiloreborn.silk_worm": "Silk Worm", "item.exnihiloreborn.stone_hammer": "Stone Hammer", "item.exnihiloreborn.stone_pebble": "Stone Pebble", - "item.exnihiloreborn.wooden_hammer": "Wooden Hammer" + "item.exnihiloreborn.string_mesh": "String Mesh", + "item.exnihiloreborn.witch_water_bucket": "Witch Water Bucket", + "item.exnihiloreborn.wooden_hammer": "Wooden Hammer", + "itemGroup.exnihiloreborn.main": "Ex Nihilo Reborn" } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/acacia_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/acacia_crucible.json index d74a71e6..7c523d81 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/acacia_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/acacia_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/acacia_log", - "top": "minecraft:block/acacia_log", "bottom": "minecraft:block/acacia_log", - "side": "minecraft:block/acacia_log" + "inside": "minecraft:block/acacia_log", + "side": "minecraft:block/acacia_log", + "top": "minecraft:block/acacia_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_barrel.json new file mode 100644 index 00000000..6c4e8f7f --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_barrel.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_barrel", + "textures": { + "barrel": "minecraft:block/bamboo_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_crucible.json new file mode 100644 index 00000000..5b3dd0f6 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_crucible.json @@ -0,0 +1,9 @@ +{ + "parent": "exnihiloreborn:block/template_crucible", + "textures": { + "bottom": "minecraft:block/bamboo_block", + "inside": "minecraft:block/bamboo_block", + "side": "minecraft:block/bamboo_block", + "top": "minecraft:block/bamboo_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_sieve.json new file mode 100644 index 00000000..af2d3a5c --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/bamboo_sieve.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_sieve", + "textures": { + "texture": "minecraft:block/bamboo_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/birch_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/birch_crucible.json index 015f30ad..097a120b 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/birch_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/birch_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/birch_log", - "top": "minecraft:block/birch_log", "bottom": "minecraft:block/birch_log", - "side": "minecraft:block/birch_log" + "inside": "minecraft:block/birch_log", + "side": "minecraft:block/birch_log", + "top": "minecraft:block/birch_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/cherry_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_barrel.json new file mode 100644 index 00000000..a7da3854 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_barrel.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_barrel", + "textures": { + "barrel": "minecraft:block/cherry_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/cherry_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_crucible.json new file mode 100644 index 00000000..7f0907bd --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_crucible.json @@ -0,0 +1,9 @@ +{ + "parent": "exnihiloreborn:block/template_crucible", + "textures": { + "bottom": "minecraft:block/cherry_log", + "inside": "minecraft:block/cherry_log", + "side": "minecraft:block/cherry_log", + "top": "minecraft:block/cherry_log" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/cherry_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_sieve.json new file mode 100644 index 00000000..aeac6050 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/cherry_sieve.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_sieve", + "textures": { + "texture": "minecraft:block/cherry_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/crimson_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/crimson_crucible.json index d42d797a..840a6b8b 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/crimson_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/crimson_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/crimson_stem", - "top": "minecraft:block/crimson_stem", "bottom": "minecraft:block/crimson_stem", - "side": "minecraft:block/crimson_stem" + "inside": "minecraft:block/crimson_stem", + "side": "minecraft:block/crimson_stem", + "top": "minecraft:block/crimson_stem" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/dark_oak_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/dark_oak_crucible.json index 662e5f26..6771edc1 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/dark_oak_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/dark_oak_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/dark_oak_log", - "top": "minecraft:block/dark_oak_log", "bottom": "minecraft:block/dark_oak_log", - "side": "minecraft:block/dark_oak_log" + "inside": "minecraft:block/dark_oak_log", + "side": "minecraft:block/dark_oak_log", + "top": "minecraft:block/dark_oak_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/jungle_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/jungle_crucible.json index 95214e20..c7836d93 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/jungle_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/jungle_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/jungle_log", - "top": "minecraft:block/jungle_log", "bottom": "minecraft:block/jungle_log", - "side": "minecraft:block/jungle_log" + "inside": "minecraft:block/jungle_log", + "side": "minecraft:block/jungle_log", + "top": "minecraft:block/jungle_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_barrel.json new file mode 100644 index 00000000..d17e2a8f --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_barrel.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_barrel", + "textures": { + "barrel": "minecraft:block/mangrove_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_crucible.json new file mode 100644 index 00000000..55925864 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_crucible.json @@ -0,0 +1,9 @@ +{ + "parent": "exnihiloreborn:block/template_crucible", + "textures": { + "bottom": "minecraft:block/mangrove_log", + "inside": "minecraft:block/mangrove_log", + "side": "minecraft:block/mangrove_log", + "top": "minecraft:block/mangrove_log" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_sieve.json new file mode 100644 index 00000000..aa321f25 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/block/mangrove_sieve.json @@ -0,0 +1,6 @@ +{ + "parent": "exnihiloreborn:block/template_sieve", + "textures": { + "texture": "minecraft:block/mangrove_planks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/oak_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/oak_crucible.json index d54e99a2..3f3c0fc4 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/oak_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/oak_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/oak_log", - "top": "minecraft:block/oak_log", "bottom": "minecraft:block/oak_log", - "side": "minecraft:block/oak_log" + "inside": "minecraft:block/oak_log", + "side": "minecraft:block/oak_log", + "top": "minecraft:block/oak_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/porcelain_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/porcelain_crucible.json index 8f392eac..2e567fec 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/porcelain_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/porcelain_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "exnihiloreborn:block/porcelain_crucible", - "top": "exnihiloreborn:block/porcelain_crucible", "bottom": "exnihiloreborn:block/porcelain_crucible", - "side": "exnihiloreborn:block/porcelain_crucible" + "inside": "exnihiloreborn:block/porcelain_crucible", + "side": "exnihiloreborn:block/porcelain_crucible", + "top": "exnihiloreborn:block/porcelain_crucible" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/spruce_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/spruce_crucible.json index 00d24cab..10fb1745 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/spruce_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/spruce_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/spruce_log", - "top": "minecraft:block/spruce_log", "bottom": "minecraft:block/spruce_log", - "side": "minecraft:block/spruce_log" + "inside": "minecraft:block/spruce_log", + "side": "minecraft:block/spruce_log", + "top": "minecraft:block/spruce_log" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/unfired_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/unfired_crucible.json index c24fa9d8..76608aa3 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/unfired_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/unfired_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "exnihiloreborn:block/unfired_crucible", - "top": "exnihiloreborn:block/unfired_crucible", "bottom": "exnihiloreborn:block/unfired_crucible", - "side": "exnihiloreborn:block/unfired_crucible" + "inside": "exnihiloreborn:block/unfired_crucible", + "side": "exnihiloreborn:block/unfired_crucible", + "top": "exnihiloreborn:block/unfired_crucible" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/block/warped_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/block/warped_crucible.json index a3c79708..b3ac43c0 100644 --- a/src/generated/resources/assets/exnihiloreborn/models/block/warped_crucible.json +++ b/src/generated/resources/assets/exnihiloreborn/models/block/warped_crucible.json @@ -1,9 +1,9 @@ { "parent": "exnihiloreborn:block/template_crucible", "textures": { - "inside": "minecraft:block/warped_stem", - "top": "minecraft:block/warped_stem", "bottom": "minecraft:block/warped_stem", - "side": "minecraft:block/warped_stem" + "inside": "minecraft:block/warped_stem", + "side": "minecraft:block/warped_stem", + "top": "minecraft:block/warped_stem" } } \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_barrel.json new file mode 100644 index 00000000..640539d2 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_barrel.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/bamboo_barrel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_crucible.json new file mode 100644 index 00000000..482e205c --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_crucible.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/bamboo_crucible" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_sieve.json new file mode 100644 index 00000000..878cd157 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/bamboo_sieve.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/bamboo_sieve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/cherry_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_barrel.json new file mode 100644 index 00000000..3ffa5b17 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_barrel.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/cherry_barrel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/cherry_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_crucible.json new file mode 100644 index 00000000..62ee83b0 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_crucible.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/cherry_crucible" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/cherry_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_sieve.json new file mode 100644 index 00000000..a1dfe184 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/cherry_sieve.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/cherry_sieve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/copper_ore_pieces.json b/src/generated/resources/assets/exnihiloreborn/models/item/copper_ore_pieces.json new file mode 100644 index 00000000..e6b757d5 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/copper_ore_pieces.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/copper_ore_pieces" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/deepslate_pebble.json b/src/generated/resources/assets/exnihiloreborn/models/item/deepslate_pebble.json new file mode 100644 index 00000000..975b1bdc --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/deepslate_pebble.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/deepslate_pebble" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/diamond_mesh.json b/src/generated/resources/assets/exnihiloreborn/models/item/diamond_mesh.json new file mode 100644 index 00000000..d7fabb07 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/diamond_mesh.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/diamond_mesh" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/flint_mesh.json b/src/generated/resources/assets/exnihiloreborn/models/item/flint_mesh.json new file mode 100644 index 00000000..c6c205be --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/flint_mesh.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/flint_mesh" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/gold_ore_pieces.json b/src/generated/resources/assets/exnihiloreborn/models/item/gold_ore_pieces.json new file mode 100644 index 00000000..96b356ad --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/gold_ore_pieces.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/gold_ore_pieces" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/iron_mesh.json b/src/generated/resources/assets/exnihiloreborn/models/item/iron_mesh.json new file mode 100644 index 00000000..77425566 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/iron_mesh.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/iron_mesh" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/iron_ore_pieces.json b/src/generated/resources/assets/exnihiloreborn/models/item/iron_ore_pieces.json new file mode 100644 index 00000000..9b0f1d79 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/iron_ore_pieces.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/iron_ore_pieces" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_barrel.json b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_barrel.json new file mode 100644 index 00000000..f6f70470 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_barrel.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/mangrove_barrel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_crucible.json b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_crucible.json new file mode 100644 index 00000000..4f8ddf08 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_crucible.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/mangrove_crucible" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_sieve.json b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_sieve.json new file mode 100644 index 00000000..66673470 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/mangrove_sieve.json @@ -0,0 +1,3 @@ +{ + "parent": "exnihiloreborn:block/mangrove_sieve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/netherite_hammer.json b/src/generated/resources/assets/exnihiloreborn/models/item/netherite_hammer.json new file mode 100644 index 00000000..3296b7d1 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/netherite_hammer.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "exnihiloreborn:item/netherite_hammer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/netherite_mesh.json b/src/generated/resources/assets/exnihiloreborn/models/item/netherite_mesh.json new file mode 100644 index 00000000..c76f463a --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/netherite_mesh.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/netherite_mesh" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_bucket.json b/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_bucket.json new file mode 100644 index 00000000..d4df6d79 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/porcelain_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_clay.json b/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_clay.json new file mode 100644 index 00000000..7f142cc3 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/porcelain_clay.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/porcelain_clay" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/stone_pebble.json b/src/generated/resources/assets/exnihiloreborn/models/item/stone_pebble.json new file mode 100644 index 00000000..bbabe591 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/stone_pebble.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/stone_pebble" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/string_mesh.json b/src/generated/resources/assets/exnihiloreborn/models/item/string_mesh.json new file mode 100644 index 00000000..fe29b710 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/string_mesh.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/string_mesh" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/exnihiloreborn/models/item/witch_water_bucket.json b/src/generated/resources/assets/exnihiloreborn/models/item/witch_water_bucket.json new file mode 100644 index 00000000..37a38fc5 --- /dev/null +++ b/src/generated/resources/assets/exnihiloreborn/models/item/witch_water_bucket.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "exnihiloreborn:item/witch_water_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/core/barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/core/barrel.json new file mode 100644 index 00000000..b8fb5043 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/core/barrel.json @@ -0,0 +1,36 @@ +{ + "parent": "exnihiloreborn:core/root", + "criteria": { + "has_barrel": { + "conditions": { + "items": [ + { + "tag": "exnihiloreborn:barrels" + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.exnihiloreborn.core.barrel.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "exnihiloreborn:oak_barrel" + }, + "show_toast": true, + "title": { + "translate": "advancements.exnihiloreborn.core.barrel.title" + } + }, + "requirements": [ + [ + "has_barrel" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/core/crook.json b/src/generated/resources/data/exnihiloreborn/advancements/core/crook.json new file mode 100644 index 00000000..fa331352 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/core/crook.json @@ -0,0 +1,33 @@ +{ + "parent": "exnihiloreborn:core/root", + "criteria": { + "craft_crook": { + "conditions": { + "recipe_id": "exnihiloreborn:crook" + }, + "trigger": "minecraft:recipe_crafted" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.exnihiloreborn.core.crook.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "exnihiloreborn:crook", + "nbt": "{Damage:0}" + }, + "show_toast": true, + "title": { + "translate": "advancements.exnihiloreborn.core.crook.title" + } + }, + "requirements": [ + [ + "craft_crook" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/core/root.json b/src/generated/resources/data/exnihiloreborn/advancements/core/root.json new file mode 100644 index 00000000..34be8781 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/core/root.json @@ -0,0 +1,29 @@ +{ + "criteria": { + "in_void_world": { + "trigger": "minecraft:impossible" + } + }, + "display": { + "announce_to_chat": true, + "background": "exnihiloreborn:textures/gui/advancements/backgrounds/void.png", + "description": { + "translate": "advancements.exnihiloreborn.core.root.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "minecraft:oak_sapling" + }, + "show_toast": true, + "title": { + "translate": "advancements.exnihiloreborn.core.root.title" + } + }, + "requirements": [ + [ + "in_void_world" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/core/silk_worm.json b/src/generated/resources/data/exnihiloreborn/advancements/core/silk_worm.json new file mode 100644 index 00000000..9be12840 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/core/silk_worm.json @@ -0,0 +1,38 @@ +{ + "parent": "exnihiloreborn:core/crook", + "criteria": { + "has_silk_worm": { + "conditions": { + "items": [ + { + "items": [ + "exnihiloreborn:silk_worm" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.exnihiloreborn.core.silk_worm.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "exnihiloreborn:silk_worm" + }, + "show_toast": true, + "title": { + "translate": "advancements.exnihiloreborn.core.silk_worm.title" + } + }, + "requirements": [ + [ + "has_silk_worm" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/core/string_mesh.json b/src/generated/resources/data/exnihiloreborn/advancements/core/string_mesh.json new file mode 100644 index 00000000..1b4b49e3 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/core/string_mesh.json @@ -0,0 +1,38 @@ +{ + "parent": "exnihiloreborn:core/silk_worm", + "criteria": { + "has_string_mesh": { + "conditions": { + "items": [ + { + "items": [ + "exnihiloreborn:string_mesh" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.exnihiloreborn.core.string_mesh.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "exnihiloreborn:string_mesh" + }, + "show_toast": true, + "title": { + "translate": "advancements.exnihiloreborn.core.string_mesh.title" + } + }, + "requirements": [ + [ + "has_string_mesh" + ] + ], + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/compressed_crook.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/compressed_crook.json deleted file mode 100644 index 9b7f79a8..00000000 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/compressed_crook.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:compressed_crook" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:rods/wooden" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "exnihiloreborn:compressed_crook" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/cooked_silk_worm.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm.json similarity index 64% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/cooked_silk_worm.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm.json index 2b244864..5bbf72b3 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/cooked_silk_worm.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:cooked_silk_worm" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "item": "exnihiloreborn:silk_worm" + "items": [ + "exnihiloreborn:silk_worm" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:cooked_silk_worm" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:cooked_silk_worm" + ] + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm_from_smoking.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm_from_smoking.json new file mode 100644 index 00000000..db7f32dd --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/cooked_silk_worm_from_smoking.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "exnihiloreborn:silk_worm" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:cooked_silk_worm_from_smoking" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:cooked_silk_worm_from_smoking" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/porcelain_crucible_from_campfire_cooking.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/porcelain_crucible_from_campfire_cooking.json new file mode 100644 index 00000000..eccd506d --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/food/porcelain_crucible_from_campfire_cooking.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "exnihiloreborn:silk_worm" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:porcelain_crucible_from_campfire_cooking" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:porcelain_crucible_from_campfire_cooking" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_barrel.json index f22584f3..8d1328dc 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:acacia_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:acacia_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:acacia_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:acacia_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_crucible.json index c1f86d0b..457a204c 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/acacia_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/acacia_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:acacia_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:acacia_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:acacia_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:acacia_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_barrel.json new file mode 100644 index 00000000..d82947af --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_barrel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:bamboo_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:bamboo_barrel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:bamboo_barrel" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_crucible.json new file mode 100644 index 00000000..7c7ba166 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/bamboo_crucible.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:bamboo_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:bamboo_crucible" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:bamboo_crucible" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_barrel.json index 4592c89b..3e7fe824 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:birch_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:birch_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:birch_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:birch_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_crucible.json index 69ae1d7d..475a7872 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/birch_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/birch_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:birch_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:birch_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:birch_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:birch_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_barrel.json new file mode 100644 index 00000000..e10f4ce5 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_barrel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:cherry_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:cherry_barrel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:cherry_barrel" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_crucible.json new file mode 100644 index 00000000..ae05458e --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/cherry_crucible.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:cherry_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:cherry_crucible" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:cherry_crucible" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_barrel.json index 6f68a44a..13fbaf04 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:crimson_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:crimson_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:crimson_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:crimson_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_crucible.json index ff70e658..a7e25b5b 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crimson_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/crimson_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:crimson_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:crimson_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:crimson_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:crimson_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_barrel.json index f142529d..fb701802 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:dark_oak_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:dark_oak_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:dark_oak_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:dark_oak_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_crucible.json index 0e53fd84..348d2fd9 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/dark_oak_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/dark_oak_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:dark_oak_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:dark_oak_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:dark_oak_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:dark_oak_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_barrel.json index 0396a525..e32deced 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:jungle_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:jungle_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:jungle_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:jungle_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_crucible.json index 335d43e7..7c4ed4d7 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/jungle_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/jungle_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:jungle_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:jungle_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:jungle_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:jungle_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_barrel.json new file mode 100644 index 00000000..010ea55d --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_barrel.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:mangrove_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:mangrove_barrel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:mangrove_barrel" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_crucible.json new file mode 100644 index 00000000..896fe416 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/mangrove_crucible.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "minecraft:mangrove_slab" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "exnihiloreborn:mangrove_crucible" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:mangrove_crucible" + ] + }, + "sends_telemetry_event": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_barrel.json index 4af69e81..1561456a 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:oak_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:oak_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:oak_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:oak_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_crucible.json index 88ae9d78..fc101e26 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/oak_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/oak_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:oak_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:oak_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:oak_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:oak_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/porcelain_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/porcelain_crucible.json similarity index 64% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/porcelain_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/porcelain_crucible.json index e957f7ff..6cdad75c 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/porcelain_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/porcelain_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:porcelain_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "item": "exnihiloreborn:unfired_crucible" + "items": [ + "exnihiloreborn:unfired_crucible" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:porcelain_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:porcelain_crucible" + ] + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_barrel.json index 5af548e9..579a5f8f 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:spruce_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:spruce_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:spruce_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:spruce_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_crucible.json index 30cf4a2f..84c95c6f 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/spruce_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/spruce_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:spruce_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:spruce_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:spruce_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:spruce_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/stone_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/stone_barrel.json index 05db968e..cc273d4a 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/stone_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:stone_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:stone_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:stone_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:stone_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/unfired_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/unfired_crucible.json similarity index 64% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/unfired_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/unfired_crucible.json index de5c95bd..a94f97fc 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/unfired_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/unfired_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:unfired_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "exnihiloreborn:porcelain_clay" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:unfired_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:unfired_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_barrel.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_barrel.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_barrel.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_barrel.json index 7ec52a3f..c5d643d1 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_barrel.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:warped_barrel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:warped_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:warped_barrel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:warped_barrel" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_crucible.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_crucible.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_crucible.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_crucible.json index b5102f51..2990a3d0 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/warped_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/misc/warped_crucible.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:warped_crucible" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "items": [ + "minecraft:warped_slab" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:warped_crucible" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:warped_crucible" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/bone_crook.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/bone_crook.json similarity index 65% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/bone_crook.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/bone_crook.json index 7d4de8d5..35e0faa8 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/bone_crook.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/bone_crook.json @@ -1,26 +1,23 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:bone_crook" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "forge:rods/wooden" + "items": [ + "minecraft:bone" + ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:bone_crook" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +25,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:bone_crook" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crook.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/crook.json similarity index 74% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crook.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/crook.json index fb086191..45199ad5 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/crook.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/crook.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:crook" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:rods/wooden" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:crook" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:crook" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/diamond_hammer.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/diamond_hammer.json similarity index 68% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/diamond_hammer.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/diamond_hammer.json index 4d4db0be..0824cc64 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/diamond_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/diamond_hammer.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:diamond_hammer" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "tag": "forge:gems/diamond" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:diamond_hammer" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:diamond_hammer" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/golden_hammer.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/golden_hammer.json similarity index 68% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/golden_hammer.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/golden_hammer.json index e89b363f..09064e20 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/golden_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/golden_hammer.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:golden_hammer" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "tag": "forge:ingots/gold" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:golden_hammer" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:golden_hammer" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/iron_hammer.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/iron_hammer.json similarity index 68% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/iron_hammer.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/iron_hammer.json index 57c302c2..5161f6cc 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/iron_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/iron_hammer.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:iron_hammer" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "tag": "forge:ingots/iron" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:iron_hammer" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:iron_hammer" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_hammer.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/stone_hammer.json similarity index 66% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_hammer.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/stone_hammer.json index df5f4f5b..54306807 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/stone_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/stone_hammer.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:stone_hammer" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:planks" + "tag": "minecraft:stone_crafting_materials" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:stone_hammer" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:stone_hammer" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/wooden_hammer.json b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/wooden_hammer.json similarity index 75% rename from src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/wooden_hammer.json rename to src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/wooden_hammer.json index 4479285b..2b2673a5 100644 --- a/src/generated/resources/data/exnihiloreborn/advancements/recipes/exnihiloreborn/wooden_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/advancements/recipes/tools/wooden_hammer.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "exnihiloreborn:wooden_hammer" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "minecraft:planks" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "exnihiloreborn:wooden_hammer" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,11 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "exnihiloreborn:wooden_hammer" + ] + }, + "sends_telemetry_event": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json index dca4ecc3..be062b79 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/acacia_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:acacia_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/acacia_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/birch_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/birch_barrel.json index fa0b437c..9ed66a75 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/birch_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/birch_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:birch_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/birch_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json index 7d0f98c4..1d950281 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_cobblestone.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "exnihiloreborn:compressed_cobblestone" - } - ], + "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" } - ] + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:air" + } + ], + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/compressed_cobblestone" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json index f3d4f51a..27cbc7ec 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dirt.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "exnihiloreborn:compressed_dirt" - } - ], + "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" } - ] + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:air" + } + ], + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/compressed_dirt" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dust.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dust.json index 25144402..366e4b43 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dust.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_dust.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "exnihiloreborn:compressed_dust" - } - ], + "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" } - ] + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:air" + } + ], + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/compressed_dust" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_sand.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_sand.json index c9003664..acc1ab18 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_sand.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/compressed_sand.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "exnihiloreborn:compressed_sand" - } - ], + "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" } - ] + ], + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:air" + } + ], + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/compressed_sand" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json index e2ade3b6..4761cb18 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/crimson_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:crimson_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/crimson_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json index a3485390..6f1b9014 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dark_oak_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:dark_oak_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/dark_oak_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dust.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dust.json index 5acb19f6..fad0c9e1 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dust.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/dust.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:dust" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/dust" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/infested_leaves.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/infested_leaves.json index 971c50da..d9056bcc 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/infested_leaves.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/infested_leaves.json @@ -2,7 +2,7 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", @@ -13,7 +13,9 @@ ], "name": "minecraft:string" } - ] + ], + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/infested_leaves" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json index dfd9ef19..1af9ff70 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/jungle_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:jungle_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/jungle_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/oak_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/oak_barrel.json index 72f41e62..dc62f2b9 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/oak_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:oak_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/oak_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json index 1add1852..ae79cdee 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/spruce_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:spruce_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/spruce_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/stone_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/stone_barrel.json index aefd5ac0..77e0b186 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/stone_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/stone_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:stone_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/stone_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/warped_barrel.json b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/warped_barrel.json index c88c7d6a..d8248a46 100644 --- a/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/warped_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/loot_tables/blocks/warped_barrel.json @@ -2,18 +2,20 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "exnihiloreborn:warped_barrel" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } - ] + ], + "random_sequence": "exnihiloreborn:blocks/warped_barrel" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/acacia_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/acacia_barrel.json index b64212d9..9def31d5 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/acacia_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/acacia_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:acacia_planks" - }, - "z": { + "m": { "item": "minecraft:acacia_slab" + }, + "s": { + "item": "minecraft:acacia_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:acacia_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/acacia_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/acacia_crucible.json index ee9f9c3f..39293863 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/acacia_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/acacia_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:acacia_logs" - }, - "z": { + "m": { "item": "minecraft:acacia_slab" + }, + "s": { + "item": "minecraft:acacia_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:acacia_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/bamboo_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/bamboo_barrel.json new file mode 100644 index 00000000..d83f505a --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/bamboo_barrel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:bamboo_slab" + }, + "s": { + "item": "minecraft:bamboo_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:bamboo_barrel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/bamboo_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/bamboo_crucible.json new file mode 100644 index 00000000..3951d780 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/bamboo_crucible.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:bamboo_slab" + }, + "s": { + "item": "minecraft:bamboo_block" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:bamboo_crucible" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/beef.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/beef.json new file mode 100644 index 00000000..20959c0c --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/beef.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:beef" + }, + { + "item": "minecraft:cooked_beef" + } + ], + "volume": 150 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/berries.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/berries.json new file mode 100644 index 00000000..946189b1 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/berries.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:sweet_berries" + }, + { + "item": "minecraft:glow_berries" + } + ], + "volume": 80 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cake.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cake.json new file mode 100644 index 00000000..72f8d5bd --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cake.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:cake" + }, + "volume": 500 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/carrots.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/carrots.json new file mode 100644 index 00000000..45cfd45a --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/carrots.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:carrot" + }, + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/chicken.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/chicken.json new file mode 100644 index 00000000..ed9a9ebd --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/chicken.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:chicken" + }, + { + "item": "minecraft:cooked_chicken" + } + ], + "volume": 125 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cod.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cod.json new file mode 100644 index 00000000..93307f11 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/cod.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:cod" + }, + { + "item": "minecraft:cooked_cod" + } + ], + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/egg.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/egg.json new file mode 100644 index 00000000..b096d169 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/egg.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:egg" + }, + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/grass.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/grass.json new file mode 100644 index 00000000..8c5bc69c --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/grass.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:grass" + }, + { + "item": "minecraft:fern" + } + ], + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/kelp.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/kelp.json index 7cae207a..9752213e 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/kelp.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/kelp.json @@ -2,10 +2,10 @@ "type": "exnihiloreborn:barrel_compost", "ingredient": [ { - "item": "minecraft:dried_kelp" + "item": "minecraft:kelp" }, { - "item": "minecraft:kelp" + "item": "minecraft:dried_kelp" } ], "volume": 40 diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/lily_pad.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/lily_pad.json new file mode 100644 index 00000000..adeaa709 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/lily_pad.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:lily_pad" + }, + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/mutton.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/mutton.json new file mode 100644 index 00000000..f3f434ef --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/mutton.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:mutton" + }, + { + "item": "minecraft:cooked_mutton" + } + ], + "volume": 125 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pork.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pork.json new file mode 100644 index 00000000..f4beed6d --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pork.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:porkchop" + }, + { + "item": "minecraft:cooked_porkchop" + } + ], + "volume": 150 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/potatoes.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/potatoes.json new file mode 100644 index 00000000..875ac549 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/potatoes.json @@ -0,0 +1,15 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:potato" + }, + { + "item": "minecraft:baked_potato" + }, + { + "item": "minecraft:poisonous_potato" + } + ], + "volume": 80 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sweet_berries.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pufferfish.json similarity index 68% rename from src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sweet_berries.json rename to src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pufferfish.json index 31146da9..c38f1fd1 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sweet_berries.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pufferfish.json @@ -1,7 +1,7 @@ { "type": "exnihiloreborn:barrel_compost", "ingredient": { - "item": "minecraft:sweet_berries" + "item": "minecraft:pufferfish" }, "volume": 80 } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pumpkin.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pumpkin.json index 2fd7775b..bca9eef3 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pumpkin.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/pumpkin.json @@ -3,5 +3,5 @@ "ingredient": { "item": "minecraft:pumpkin" }, - "volume": 200 + "volume": 500 } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rabbit.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rabbit.json new file mode 100644 index 00000000..ec5acdad --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rabbit.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:rabbit" + }, + { + "item": "minecraft:cooked_rabbit" + } + ], + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rotten_flesh.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rotten_flesh.json new file mode 100644 index 00000000..546f11f6 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/rotten_flesh.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:rotten_flesh" + }, + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/salmon.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/salmon.json new file mode 100644 index 00000000..badee40b --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/salmon.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:salmon" + }, + { + "item": "minecraft:cooked_salmon" + } + ], + "volume": 125 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/string.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/string.json new file mode 100644 index 00000000..16a50384 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/string.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:string" + }, + "volume": 40 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sugar_cane.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sugar_cane.json new file mode 100644 index 00000000..5414facf --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/sugar_cane.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:sugar_cane" + }, + "volume": 80 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tall_grass.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tall_grass.json new file mode 100644 index 00000000..c9df0e21 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tall_grass.json @@ -0,0 +1,12 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": [ + { + "item": "minecraft:tall_grass" + }, + { + "item": "minecraft:large_fern" + } + ], + "volume": 150 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tropical_fish.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tropical_fish.json new file mode 100644 index 00000000..f807c1f3 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/tropical_fish.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:tropical_fish" + }, + "volume": 80 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/vine.json b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/vine.json new file mode 100644 index 00000000..9de2e3f4 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/barrel_compost/vine.json @@ -0,0 +1,7 @@ +{ + "type": "exnihiloreborn:barrel_compost", + "ingredient": { + "item": "minecraft:vine" + }, + "volume": 100 +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/birch_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/birch_barrel.json index 723895ef..c8983032 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/birch_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/birch_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:birch_planks" - }, - "z": { + "m": { "item": "minecraft:birch_slab" + }, + "s": { + "item": "minecraft:birch_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:birch_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/birch_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/birch_crucible.json index c2882f37..49d3c477 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/birch_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/birch_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:birch_logs" - }, - "z": { + "m": { "item": "minecraft:birch_slab" + }, + "s": { + "item": "minecraft:birch_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:birch_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/bone_crook.json b/src/generated/resources/data/exnihiloreborn/recipes/bone_crook.json index edbaad12..ca3e43d7 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/bone_crook.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/bone_crook.json @@ -1,16 +1,18 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "xx", - " x", - " x" - ], + "category": "equipment", "key": { "x": { "item": "minecraft:bone" } }, + "pattern": [ + "xx", + " x", + " x" + ], "result": { "item": "exnihiloreborn:bone_crook" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/cherry_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/cherry_barrel.json new file mode 100644 index 00000000..b787ce83 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/cherry_barrel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:cherry_slab" + }, + "s": { + "item": "minecraft:cherry_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:cherry_barrel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/cherry_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/cherry_crucible.json new file mode 100644 index 00000000..ee93420a --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/cherry_crucible.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:cherry_slab" + }, + "s": { + "item": "minecraft:cherry_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:cherry_crucible" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/compressed_crook.json b/src/generated/resources/data/exnihiloreborn/recipes/compressed_crook.json deleted file mode 100644 index 64ab09cc..00000000 --- a/src/generated/resources/data/exnihiloreborn/recipes/compressed_crook.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "xx", - " x", - " x" - ], - "key": { - "x": { - "item": "exnihiloreborn:crook" - } - }, - "result": { - "item": "exnihiloreborn:compressed_crook" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm.json b/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm.json index 15e6bf41..b8d8f4d5 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm.json @@ -1,9 +1,10 @@ { "type": "minecraft:smelting", + "category": "food", + "cookingtime": 200, + "experience": 0.1, "ingredient": { "item": "exnihiloreborn:silk_worm" }, - "result": "exnihiloreborn:cooked_silk_worm", - "experience": 0.1, - "cookingtime": 200 + "result": "exnihiloreborn:cooked_silk_worm" } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/recipes/cooked_silk_worm_from_smoking.json b/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm_from_smoking.json similarity index 56% rename from src/generated/resources/data/minecraft/recipes/cooked_silk_worm_from_smoking.json rename to src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm_from_smoking.json index 638386bc..20df5e03 100644 --- a/src/generated/resources/data/minecraft/recipes/cooked_silk_worm_from_smoking.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/cooked_silk_worm_from_smoking.json @@ -1,9 +1,10 @@ { "type": "minecraft:smoking", + "category": "food", + "cookingtime": 100, + "experience": 0.1, "ingredient": { "item": "exnihiloreborn:silk_worm" }, - "result": "exnihiloreborn:cooked_silk_worm", - "experience": 0.1, - "cookingtime": 200 + "result": "exnihiloreborn:cooked_silk_worm" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/crimson_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/crimson_barrel.json index 6074c09d..d74e3483 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/crimson_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/crimson_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:crimson_planks" - }, - "z": { + "m": { "item": "minecraft:crimson_slab" + }, + "s": { + "item": "minecraft:crimson_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:crimson_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/crimson_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/crimson_crucible.json index e859b23b..497a1033 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/crimson_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/crimson_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:crimson_stems" - }, - "z": { + "m": { "item": "minecraft:crimson_slab" + }, + "s": { + "item": "minecraft:crimson_stem" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:crimson_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/crook.json b/src/generated/resources/data/exnihiloreborn/recipes/crook.json index 270a7391..2a37156e 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/crook.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/crook.json @@ -1,16 +1,18 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "xx", - " x", - " x" - ], + "category": "equipment", "key": { "x": { "tag": "forge:rods/wooden" } }, + "pattern": [ + "xx", + " x", + " x" + ], "result": { "item": "exnihiloreborn:crook" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_barrel.json index 32113432..820dad97 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:dark_oak_planks" - }, - "z": { + "m": { "item": "minecraft:dark_oak_slab" + }, + "s": { + "item": "minecraft:dark_oak_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:dark_oak_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_crucible.json index 82cd014d..685341f2 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/dark_oak_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:dark_oak_logs" - }, - "z": { + "m": { "item": "minecraft:dark_oak_slab" + }, + "s": { + "item": "minecraft:dark_oak_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:dark_oak_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/diamond_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/diamond_hammer.json index ee88ee84..675ee220 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/diamond_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/diamond_hammer.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - " x ", - "xv ", - " v" - ], + "category": "equipment", "key": { - "x": { + "m": { "tag": "forge:gems/diamond" }, - "v": { + "s": { "tag": "forge:rods/wooden" } }, + "pattern": [ + " m ", + " sm", + "s " + ], "result": { "item": "exnihiloreborn:diamond_hammer" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/golden_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/golden_hammer.json index 135b6d16..06c1c100 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/golden_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/golden_hammer.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - " x ", - "xv ", - " v" - ], + "category": "equipment", "key": { - "x": { + "m": { "tag": "forge:ingots/gold" }, - "v": { + "s": { "tag": "forge:rods/wooden" } }, + "pattern": [ + " m ", + " sm", + "s " + ], "result": { "item": "exnihiloreborn:golden_hammer" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushed_netherrack.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushed_netherrack.json new file mode 100644 index 00000000..87476a67 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushed_netherrack.json @@ -0,0 +1,15 @@ +{ + "type": "exnihiloreborn:hammer", + "ingredient": { + "item": "minecraft:netherrack" + }, + "rewards": [ + { + "chance": 1.0, + "item": { + "Count": 1, + "id": "exnihiloreborn:crushed_netherrack" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json index 3bfc3c3a..ade16ed4 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_red_sandstone.json @@ -16,11 +16,11 @@ ], "rewards": [ { + "chance": 1.0, "item": { - "id": "minecraft:red_sand", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "minecraft:red_sand" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_sandstone.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_sandstone.json index fa2a85ac..d334e116 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_sandstone.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_sandstone.json @@ -16,11 +16,11 @@ ], "rewards": [ { + "chance": 1.0, "item": { - "id": "minecraft:sand", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "minecraft:sand" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json index 4b7ef5b8..754b7231 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/crushing_stone_bricks.json @@ -5,11 +5,11 @@ }, "rewards": [ { + "chance": 1.0, "item": { - "id": "minecraft:cracked_stone_bricks", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "minecraft:cracked_stone_bricks" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/dust.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/dust.json index 1b5ea5ff..77feb08b 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/dust.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/dust.json @@ -5,11 +5,11 @@ }, "rewards": [ { + "chance": 1.0, "item": { - "id": "exnihiloreborn:dust", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "exnihiloreborn:dust" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/gravel.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/gravel.json index 8e7a8c5d..9f3e3996 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/gravel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/gravel.json @@ -5,11 +5,11 @@ }, "rewards": [ { + "chance": 1.0, "item": { - "id": "minecraft:gravel", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "minecraft:gravel" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/sand.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/sand.json index 8260032c..04868da5 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/sand.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/sand.json @@ -5,11 +5,11 @@ }, "rewards": [ { + "chance": 1.0, "item": { - "id": "minecraft:sand", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "minecraft:sand" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/hammer/stone_pebbles.json b/src/generated/resources/data/exnihiloreborn/recipes/hammer/stone_pebbles.json index 3fa61e93..bd7b5675 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/hammer/stone_pebbles.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/hammer/stone_pebbles.json @@ -10,46 +10,46 @@ ], "rewards": [ { + "chance": 1.0, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.75, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.75 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.75, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.75 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.5, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.5 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.25, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.25 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.05, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.05 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/iron_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/iron_hammer.json index 4cec5979..7da66d52 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/iron_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/iron_hammer.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - " x ", - "xv ", - " v" - ], + "category": "equipment", "key": { - "x": { + "m": { "tag": "forge:ingots/iron" }, - "v": { + "s": { "tag": "forge:rods/wooden" } }, + "pattern": [ + " m ", + " sm", + "s " + ], "result": { "item": "exnihiloreborn:iron_hammer" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/jungle_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/jungle_barrel.json index a67816f8..bbea331c 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/jungle_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/jungle_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:jungle_planks" - }, - "z": { + "m": { "item": "minecraft:jungle_slab" + }, + "s": { + "item": "minecraft:jungle_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:jungle_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/jungle_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/jungle_crucible.json index 0f05e0f5..e2f9a790 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/jungle_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/jungle_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:jungle_logs" - }, - "z": { + "m": { "item": "minecraft:jungle_slab" + }, + "s": { + "item": "minecraft:jungle_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:jungle_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/cobblestone.json b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/cobblestone.json index fb33c6f5..9de8e8ae 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/cobblestone.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/cobblestone.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:lava_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:lava" + }, "ingredient": { "item": "minecraft:cobblestone" - }, - "fluid": { - "FluidName": "minecraft:lava", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/gravel.json b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/gravel.json index e73dbdfd..ea28a35c 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/gravel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/gravel.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:lava_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:lava" + }, "ingredient": { "item": "minecraft:gravel" - }, - "fluid": { - "FluidName": "minecraft:lava", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/netherrack.json b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/netherrack.json index 6eda43d1..4a8743ed 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/netherrack.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/netherrack.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:lava_crucible", + "fluid": { + "Amount": 1000, + "FluidName": "minecraft:lava" + }, "ingredient": { "item": "minecraft:netherrack" - }, - "fluid": { - "FluidName": "minecraft:lava", - "Amount": 1000 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/stone.json b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/stone.json index 2ee01186..25d354e3 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/stone.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/lava_crucible/stone.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:lava_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:lava" + }, "ingredient": { "item": "minecraft:stone" - }, - "fluid": { - "FluidName": "minecraft:lava", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/mangrove_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/mangrove_barrel.json new file mode 100644 index 00000000..30e15917 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/mangrove_barrel.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:mangrove_slab" + }, + "s": { + "item": "minecraft:mangrove_planks" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:mangrove_barrel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/mangrove_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/mangrove_crucible.json new file mode 100644 index 00000000..8836ef0a --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/mangrove_crucible.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "m": { + "item": "minecraft:mangrove_slab" + }, + "s": { + "item": "minecraft:mangrove_log" + } + }, + "pattern": [ + "s s", + "s s", + "sms" + ], + "result": { + "item": "exnihiloreborn:mangrove_crucible" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/netherite_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/netherite_hammer.json new file mode 100644 index 00000000..b3540673 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/netherite_hammer.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:smithing_transform", + "addition": { + "tag": "forge:ingots/netherite" + }, + "base": { + "item": "exnihiloreborn:diamond_hammer" + }, + "result": { + "item": "exnihiloreborn:netherite_hammer" + }, + "template": { + "item": "minecraft:netherite_upgrade_smithing_template" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/oak_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/oak_barrel.json index 41633bcf..98e68675 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/oak_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/oak_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:oak_planks" - }, - "z": { + "m": { "item": "minecraft:oak_slab" + }, + "s": { + "item": "minecraft:oak_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:oak_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/oak_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/oak_crucible.json index ec0b249a..1c4f6758 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/oak_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/oak_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:oak_logs" - }, - "z": { + "m": { "item": "minecraft:oak_slab" + }, + "s": { + "item": "minecraft:oak_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:oak_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible.json index 9bc8b870..24fce6d2 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible.json @@ -1,9 +1,10 @@ { "type": "minecraft:smelting", + "category": "blocks", + "cookingtime": 200, + "experience": 0.1, "ingredient": { "item": "exnihiloreborn:unfired_crucible" }, - "result": "exnihiloreborn:porcelain_crucible", - "experience": 0.1, - "cookingtime": 200 + "result": "exnihiloreborn:porcelain_crucible" } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible_from_campfire_cooking.json b/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible_from_campfire_cooking.json new file mode 100644 index 00000000..92880865 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/porcelain_crucible_from_campfire_cooking.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:campfire_cooking", + "category": "food", + "cookingtime": 600, + "experience": 0.1, + "ingredient": { + "item": "exnihiloreborn:silk_worm" + }, + "result": "exnihiloreborn:cooked_silk_worm" +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/sieve/beetroot_seeds.json b/src/generated/resources/data/exnihiloreborn/recipes/sieve/beetroot_seeds.json index e084350e..83c4dd43 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/sieve/beetroot_seeds.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/sieve/beetroot_seeds.json @@ -1,16 +1,16 @@ { "type": "exnihiloreborn:sieve", - "mesh": "exnihiloreborn:string_mesh", "ingredient": { "item": "minecraft:dirt" }, + "mesh": "exnihiloreborn:string_mesh", "rewards": [ { + "chance": 0.35, "item": { - "id": "minecraft:beetroot_seeds", - "Count": 1 - }, - "chance": 0.35 + "Count": 1, + "id": "minecraft:beetroot_seeds" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/sieve/melon_seeds.json b/src/generated/resources/data/exnihiloreborn/recipes/sieve/melon_seeds.json index 98cd99c8..e3756870 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/sieve/melon_seeds.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/sieve/melon_seeds.json @@ -1,16 +1,16 @@ { "type": "exnihiloreborn:sieve", - "mesh": "exnihiloreborn:string_mesh", "ingredient": { "item": "minecraft:dirt" }, + "mesh": "exnihiloreborn:string_mesh", "rewards": [ { + "chance": 0.35, "item": { - "id": "minecraft:melon_seeds", - "Count": 1 - }, - "chance": 0.35 + "Count": 1, + "id": "minecraft:melon_seeds" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json b/src/generated/resources/data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json index 39c16300..0993a31a 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/sieve/pumpkin_seeds.json @@ -1,16 +1,16 @@ { "type": "exnihiloreborn:sieve", - "mesh": "exnihiloreborn:string_mesh", "ingredient": { "item": "minecraft:dirt" }, + "mesh": "exnihiloreborn:string_mesh", "rewards": [ { + "chance": 0.35, "item": { - "id": "minecraft:pumpkin_seeds", - "Count": 1 - }, - "chance": 0.35 + "Count": 1, + "id": "minecraft:pumpkin_seeds" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/sieve/stone_pebble.json b/src/generated/resources/data/exnihiloreborn/recipes/sieve/stone_pebble.json index 030e901f..91f2db83 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/sieve/stone_pebble.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/sieve/stone_pebble.json @@ -1,58 +1,58 @@ { "type": "exnihiloreborn:sieve", - "mesh": "exnihiloreborn:string_mesh", "ingredient": { "item": "minecraft:dirt" }, + "mesh": "exnihiloreborn:string_mesh", "rewards": [ { + "chance": 1.0, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 1.0, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 1.0, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 1.0 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.5, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.5 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.5, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.5 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.1, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.1 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } }, { + "chance": 0.1, "item": { - "id": "exnihiloreborn:stone_pebble", - "Count": 1 - }, - "chance": 0.1 + "Count": 1, + "id": "exnihiloreborn:stone_pebble" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/sieve/wheat_seeds.json b/src/generated/resources/data/exnihiloreborn/recipes/sieve/wheat_seeds.json index ddfafeb4..615aabf2 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/sieve/wheat_seeds.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/sieve/wheat_seeds.json @@ -1,16 +1,16 @@ { "type": "exnihiloreborn:sieve", - "mesh": "exnihiloreborn:string_mesh", "ingredient": { "item": "minecraft:dirt" }, + "mesh": "exnihiloreborn:string_mesh", "rewards": [ { + "chance": 0.7, "item": { - "id": "minecraft:wheat_seeds", - "Count": 1 - }, - "chance": 0.7 + "Count": 1, + "id": "minecraft:wheat_seeds" + } } ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/spruce_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/spruce_barrel.json index 4f5800f6..b4b7286f 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/spruce_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/spruce_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:spruce_planks" - }, - "z": { + "m": { "item": "minecraft:spruce_slab" + }, + "s": { + "item": "minecraft:spruce_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:spruce_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/spruce_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/spruce_crucible.json index 99f01e21..d5488fca 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/spruce_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/spruce_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:spruce_logs" - }, - "z": { + "m": { "item": "minecraft:spruce_slab" + }, + "s": { + "item": "minecraft:spruce_log" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:spruce_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/stone_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/stone_barrel.json index 0677fbc4..f9eda8f0 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/stone_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/stone_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:stone" - }, - "z": { + "m": { "item": "minecraft:stone_slab" + }, + "s": { + "item": "minecraft:stone" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:stone_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/stone_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/stone_hammer.json index b5012d4e..c905f87d 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/stone_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/stone_hammer.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - " x ", - "xv ", - " v" - ], + "category": "equipment", "key": { - "x": { + "m": { "tag": "minecraft:stone_crafting_materials" }, - "v": { + "s": { "tag": "forge:rods/wooden" } }, + "pattern": [ + " m ", + " sm", + "s " + ], "result": { "item": "exnihiloreborn:stone_hammer" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/unfired_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/unfired_crucible.json index 8f4b427d..db3a2c87 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/unfired_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/unfired_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { + "m": { "item": "exnihiloreborn:porcelain_clay" }, - "z": { + "s": { "item": "exnihiloreborn:porcelain_clay" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:unfired_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/warped_barrel.json b/src/generated/resources/data/exnihiloreborn/recipes/warped_barrel.json index d0acebb2..e11f291a 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/warped_barrel.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/warped_barrel.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "item": "minecraft:warped_planks" - }, - "z": { + "m": { "item": "minecraft:warped_slab" + }, + "s": { + "item": "minecraft:warped_planks" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:warped_barrel" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/warped_crucible.json b/src/generated/resources/data/exnihiloreborn/recipes/warped_crucible.json index 56ba440e..09d9b296 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/warped_crucible.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/warped_crucible.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "x x", - "x x", - "xzx" - ], + "category": "misc", "key": { - "x": { - "tag": "minecraft:warped_stems" - }, - "z": { + "m": { "item": "minecraft:warped_slab" + }, + "s": { + "item": "minecraft:warped_stem" } }, + "pattern": [ + "s s", + "s s", + "sms" + ], "result": { "item": "exnihiloreborn:warped_crucible" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/apple.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/apple.json index 3d6bacae..7abb2af7 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/apple.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/apple.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 100, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:apple" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 100 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/cactus.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/cactus.json index 285dec90..b6d6d95d 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/cactus.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/cactus.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:cactus" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/leaves.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/leaves.json index c24f9c05..98d0094d 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/leaves.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/leaves.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:water" + }, "ingredient": { "tag": "minecraft:leaves" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/lily_pad.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/lily_pad.json new file mode 100644 index 00000000..89b22f88 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/lily_pad.json @@ -0,0 +1,10 @@ +{ + "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 100, + "FluidName": "minecraft:water" + }, + "ingredient": { + "item": "minecraft:lily_pad" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon.json index 47b28c20..4d85942e 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:melon" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon_slice.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon_slice.json index 9972e0dd..4709ccfa 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon_slice.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/melon_slice.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 50, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:melon_slice" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 50 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/pumpkin.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/pumpkin.json index 44cf2d2c..facc460a 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/pumpkin.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/pumpkin.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 250, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:pumpkin" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 250 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/saplings.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/saplings.json index cdfc90ee..3a88cfaa 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/saplings.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/saplings.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 100, + "FluidName": "minecraft:water" + }, "ingredient": { "tag": "minecraft:saplings" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 100 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/small_flowers.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/small_flowers.json index 231aeeae..faab5426 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/small_flowers.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/small_flowers.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 100, + "FluidName": "minecraft:water" + }, "ingredient": { "tag": "minecraft:small_flowers" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 100 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/sweet_berries.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/sweet_berries.json index c45a7f11..64daa170 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/sweet_berries.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/sweet_berries.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 50, + "FluidName": "minecraft:water" + }, "ingredient": { "item": "minecraft:sweet_berries" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 50 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/tall_flowers.json b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/tall_flowers.json index fb829258..56e85eeb 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/tall_flowers.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/water_crucible/tall_flowers.json @@ -1,10 +1,10 @@ { "type": "exnihiloreborn:water_crucible", + "fluid": { + "Amount": 200, + "FluidName": "minecraft:water" + }, "ingredient": { "tag": "minecraft:tall_flowers" - }, - "fluid": { - "FluidName": "minecraft:water", - "Amount": 200 } } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/recipes/wooden_hammer.json b/src/generated/resources/data/exnihiloreborn/recipes/wooden_hammer.json index a31faef6..d643964e 100644 --- a/src/generated/resources/data/exnihiloreborn/recipes/wooden_hammer.json +++ b/src/generated/resources/data/exnihiloreborn/recipes/wooden_hammer.json @@ -1,19 +1,21 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - " x ", - "xv ", - " v" - ], + "category": "equipment", "key": { - "x": { + "m": { "tag": "minecraft:planks" }, - "v": { + "s": { "tag": "forge:rods/wooden" } }, + "pattern": [ + " m ", + " sm", + "s " + ], "result": { "item": "exnihiloreborn:wooden_hammer" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/barrels.json b/src/generated/resources/data/exnihiloreborn/tags/items/barrels.json new file mode 100644 index 00000000..0ac0d523 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/items/barrels.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#exnihiloreborn:wooden_barrels", + "#exnihiloreborn:stone_barrels" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/compressed_hammers.json b/src/generated/resources/data/exnihiloreborn/tags/items/compressed_hammers.json deleted file mode 100644 index 6b106795..00000000 --- a/src/generated/resources/data/exnihiloreborn/tags/items/compressed_hammers.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "exnihiloreborn:compressed_wooden_hammer", - "exnihiloreborn:compressed_stone_hammer", - "exnihiloreborn:compressed_golden_hammer", - "exnihiloreborn:compressed_iron_hammer", - "exnihiloreborn:compressed_diamond_hammer", - "exnihiloreborn:compressed_netherite_hammer" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/crooks.json b/src/generated/resources/data/exnihiloreborn/tags/items/crooks.json index 205d1e71..7fb8d4fb 100644 --- a/src/generated/resources/data/exnihiloreborn/tags/items/crooks.json +++ b/src/generated/resources/data/exnihiloreborn/tags/items/crooks.json @@ -1,8 +1,6 @@ { - "replace": false, "values": [ "exnihiloreborn:crook", - "exnihiloreborn:compressed_crook", "exnihiloreborn:bone_crook" ] } \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/hammers.json b/src/generated/resources/data/exnihiloreborn/tags/items/hammers.json index 5e8ed510..2dba30d8 100644 --- a/src/generated/resources/data/exnihiloreborn/tags/items/hammers.json +++ b/src/generated/resources/data/exnihiloreborn/tags/items/hammers.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "exnihiloreborn:wooden_hammer", "exnihiloreborn:stone_hammer", diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/stone_barrels.json b/src/generated/resources/data/exnihiloreborn/tags/items/stone_barrels.json new file mode 100644 index 00000000..760dfe37 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/items/stone_barrels.json @@ -0,0 +1,5 @@ +{ + "values": [ + "exnihiloreborn:stone_barrel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/items/wooden_barrels.json b/src/generated/resources/data/exnihiloreborn/tags/items/wooden_barrels.json new file mode 100644 index 00000000..94f5af4a --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/items/wooden_barrels.json @@ -0,0 +1,13 @@ +{ + "values": [ + "exnihiloreborn:oak_barrel", + "exnihiloreborn:spruce_barrel", + "exnihiloreborn:birch_barrel", + "exnihiloreborn:jungle_barrel", + "exnihiloreborn:acacia_barrel", + "exnihiloreborn:dark_oak_barrel", + "exnihiloreborn:mangrove_barrel", + "exnihiloreborn:cherry_barrel", + "exnihiloreborn:bamboo_barrel" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/overworld_void_structure_sets.json b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/overworld_void_structure_sets.json new file mode 100644 index 00000000..f72d209d --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/overworld_void_structure_sets.json @@ -0,0 +1,3 @@ +{ + "values": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_end_void_structure_sets.json b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_end_void_structure_sets.json new file mode 100644 index 00000000..f72d209d --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_end_void_structure_sets.json @@ -0,0 +1,3 @@ +{ + "values": [] +} \ No newline at end of file diff --git a/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_nether_void_structure_sets.json b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_nether_void_structure_sets.json new file mode 100644 index 00000000..4911db67 --- /dev/null +++ b/src/generated/resources/data/exnihiloreborn/tags/worldgen/structure_set/the_nether_void_structure_sets.json @@ -0,0 +1,5 @@ +{ + "values": [ + "minecraft:nether_complexes" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/advancements/recipes/exnihiloreborn/cooked_silk_worm_from_smoking.json b/src/generated/resources/data/minecraft/advancements/recipes/exnihiloreborn/cooked_silk_worm_from_smoking.json deleted file mode 100644 index 5db42701..00000000 --- a/src/generated/resources/data/minecraft/advancements/recipes/exnihiloreborn/cooked_silk_worm_from_smoking.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "minecraft:cooked_silk_worm_from_smoking" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "exnihiloreborn:silk_worm" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "minecraft:cooked_silk_worm_from_smoking" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/acacia_logs.json b/src/generated/resources/data/minecraft/tags/blocks/acacia_logs.json deleted file mode 100644 index 2aa36aea..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/acacia_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:acacia_log", - "minecraft:acacia_wood", - "minecraft:stripped_acacia_log", - "minecraft:stripped_acacia_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/anvil.json b/src/generated/resources/data/minecraft/tags/blocks/anvil.json deleted file mode 100644 index d69773e1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/anvil.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:anvil", - "minecraft:chipped_anvil", - "minecraft:damaged_anvil" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json b/src/generated/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json deleted file mode 100644 index 53fe3036..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:sand", - "minecraft:bamboo", - "minecraft:bamboo_sapling", - "minecraft:gravel", - "minecraft:dirt", - "minecraft:grass_block", - "minecraft:podzol", - "minecraft:coarse_dirt", - "minecraft:mycelium" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/banners.json b/src/generated/resources/data/minecraft/tags/blocks/banners.json deleted file mode 100644 index df4ebc27..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/banners.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:white_banner", - "minecraft:orange_banner", - "minecraft:magenta_banner", - "minecraft:light_blue_banner", - "minecraft:yellow_banner", - "minecraft:lime_banner", - "minecraft:pink_banner", - "minecraft:gray_banner", - "minecraft:light_gray_banner", - "minecraft:cyan_banner", - "minecraft:purple_banner", - "minecraft:blue_banner", - "minecraft:brown_banner", - "minecraft:green_banner", - "minecraft:red_banner", - "minecraft:black_banner", - "minecraft:white_wall_banner", - "minecraft:orange_wall_banner", - "minecraft:magenta_wall_banner", - "minecraft:light_blue_wall_banner", - "minecraft:yellow_wall_banner", - "minecraft:lime_wall_banner", - "minecraft:pink_wall_banner", - "minecraft:gray_wall_banner", - "minecraft:light_gray_wall_banner", - "minecraft:cyan_wall_banner", - "minecraft:purple_wall_banner", - "minecraft:blue_wall_banner", - "minecraft:brown_wall_banner", - "minecraft:green_wall_banner", - "minecraft:red_wall_banner", - "minecraft:black_wall_banner" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/base_stone_nether.json b/src/generated/resources/data/minecraft/tags/blocks/base_stone_nether.json deleted file mode 100644 index 1bbeddb6..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/base_stone_nether.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:netherrack", - "minecraft:basalt", - "minecraft:blackstone" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json b/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json deleted file mode 100644 index 955eb346..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:stone", - "minecraft:granite", - "minecraft:diorite", - "minecraft:andesite" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json deleted file mode 100644 index a368aa50..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:netherite_block", - "minecraft:emerald_block", - "minecraft:diamond_block", - "minecraft:gold_block", - "minecraft:iron_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beds.json b/src/generated/resources/data/minecraft/tags/blocks/beds.json deleted file mode 100644 index 2e031f30..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/beds.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:red_bed", - "minecraft:black_bed", - "minecraft:blue_bed", - "minecraft:brown_bed", - "minecraft:cyan_bed", - "minecraft:gray_bed", - "minecraft:green_bed", - "minecraft:light_blue_bed", - "minecraft:light_gray_bed", - "minecraft:lime_bed", - "minecraft:magenta_bed", - "minecraft:orange_bed", - "minecraft:pink_bed", - "minecraft:purple_bed", - "minecraft:white_bed", - "minecraft:yellow_bed" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/bee_growables.json b/src/generated/resources/data/minecraft/tags/blocks/bee_growables.json deleted file mode 100644 index 9299ae2f..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/bee_growables.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:crops", - "minecraft:sweet_berry_bush" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beehives.json b/src/generated/resources/data/minecraft/tags/blocks/beehives.json deleted file mode 100644 index 3101ab6e..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/beehives.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:bee_nest", - "minecraft:beehive" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/birch_logs.json b/src/generated/resources/data/minecraft/tags/blocks/birch_logs.json deleted file mode 100644 index 7be61059..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/birch_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:birch_log", - "minecraft:birch_wood", - "minecraft:stripped_birch_log", - "minecraft:stripped_birch_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/buttons.json b/src/generated/resources/data/minecraft/tags/blocks/buttons.json deleted file mode 100644 index 37433a79..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/buttons.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_buttons", - "minecraft:stone_button", - "minecraft:polished_blackstone_button" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/campfires.json b/src/generated/resources/data/minecraft/tags/blocks/campfires.json deleted file mode 100644 index f57ad3d8..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/campfires.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:campfire", - "minecraft:soul_campfire" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/carpets.json b/src/generated/resources/data/minecraft/tags/blocks/carpets.json deleted file mode 100644 index 9b28b1fd..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/carpets.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:white_carpet", - "minecraft:orange_carpet", - "minecraft:magenta_carpet", - "minecraft:light_blue_carpet", - "minecraft:yellow_carpet", - "minecraft:lime_carpet", - "minecraft:pink_carpet", - "minecraft:gray_carpet", - "minecraft:light_gray_carpet", - "minecraft:cyan_carpet", - "minecraft:purple_carpet", - "minecraft:blue_carpet", - "minecraft:brown_carpet", - "minecraft:green_carpet", - "minecraft:red_carpet", - "minecraft:black_carpet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/climbable.json b/src/generated/resources/data/minecraft/tags/blocks/climbable.json deleted file mode 100644 index 76f8d613..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/climbable.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:ladder", - "minecraft:vine", - "minecraft:scaffolding", - "minecraft:weeping_vines", - "minecraft:weeping_vines_plant", - "minecraft:twisting_vines", - "minecraft:twisting_vines_plant" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/coral_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/coral_blocks.json deleted file mode 100644 index e2e55241..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/coral_blocks.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:tube_coral_block", - "minecraft:brain_coral_block", - "minecraft:bubble_coral_block", - "minecraft:fire_coral_block", - "minecraft:horn_coral_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/coral_plants.json b/src/generated/resources/data/minecraft/tags/blocks/coral_plants.json deleted file mode 100644 index 0aa32f52..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/coral_plants.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:tube_coral", - "minecraft:brain_coral", - "minecraft:bubble_coral", - "minecraft:fire_coral", - "minecraft:horn_coral" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/corals.json b/src/generated/resources/data/minecraft/tags/blocks/corals.json deleted file mode 100644 index 649b6ebc..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/corals.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:coral_plants", - "minecraft:tube_coral_fan", - "minecraft:brain_coral_fan", - "minecraft:bubble_coral_fan", - "minecraft:fire_coral_fan", - "minecraft:horn_coral_fan" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/crimson_stems.json b/src/generated/resources/data/minecraft/tags/blocks/crimson_stems.json deleted file mode 100644 index 333772e8..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/crimson_stems.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:crimson_stem", - "minecraft:stripped_crimson_stem", - "minecraft:crimson_hyphae", - "minecraft:stripped_crimson_hyphae" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/crops.json b/src/generated/resources/data/minecraft/tags/blocks/crops.json deleted file mode 100644 index cf219608..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/crops.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:beetroots", - "minecraft:carrots", - "minecraft:potatoes", - "minecraft:wheat", - "minecraft:melon_stem", - "minecraft:pumpkin_stem" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/dark_oak_logs.json b/src/generated/resources/data/minecraft/tags/blocks/dark_oak_logs.json deleted file mode 100644 index e1e3e165..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/dark_oak_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:dark_oak_log", - "minecraft:dark_oak_wood", - "minecraft:stripped_dark_oak_log", - "minecraft:stripped_dark_oak_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/doors.json b/src/generated/resources/data/minecraft/tags/blocks/doors.json deleted file mode 100644 index 0f9fe980..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/doors.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_doors", - "minecraft:iron_door" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/dragon_immune.json b/src/generated/resources/data/minecraft/tags/blocks/dragon_immune.json deleted file mode 100644 index 7f97f8ca..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/dragon_immune.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:barrier", - "minecraft:bedrock", - "minecraft:end_portal", - "minecraft:end_portal_frame", - "minecraft:end_gateway", - "minecraft:command_block", - "minecraft:repeating_command_block", - "minecraft:chain_command_block", - "minecraft:structure_block", - "minecraft:jigsaw", - "minecraft:moving_piston", - "minecraft:obsidian", - "minecraft:crying_obsidian", - "minecraft:end_stone", - "minecraft:iron_bars", - "minecraft:respawn_anchor" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/enderman_holdable.json b/src/generated/resources/data/minecraft/tags/blocks/enderman_holdable.json deleted file mode 100644 index 20bad1b1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/enderman_holdable.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:small_flowers", - "minecraft:grass_block", - "minecraft:dirt", - "minecraft:coarse_dirt", - "minecraft:podzol", - "minecraft:sand", - "minecraft:red_sand", - "minecraft:gravel", - "minecraft:brown_mushroom", - "minecraft:red_mushroom", - "minecraft:tnt", - "minecraft:cactus", - "minecraft:clay", - "minecraft:pumpkin", - "minecraft:carved_pumpkin", - "minecraft:melon", - "minecraft:mycelium", - "minecraft:crimson_fungus", - "minecraft:crimson_nylium", - "minecraft:crimson_roots", - "minecraft:warped_fungus", - "minecraft:warped_nylium", - "minecraft:warped_roots" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/fence_gates.json b/src/generated/resources/data/minecraft/tags/blocks/fence_gates.json deleted file mode 100644 index f94523b9..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/fence_gates.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:acacia_fence_gate", - "minecraft:birch_fence_gate", - "minecraft:dark_oak_fence_gate", - "minecraft:jungle_fence_gate", - "minecraft:oak_fence_gate", - "minecraft:spruce_fence_gate", - "minecraft:crimson_fence_gate", - "minecraft:warped_fence_gate" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/fences.json b/src/generated/resources/data/minecraft/tags/blocks/fences.json deleted file mode 100644 index 0ef08473..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/fences.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_fences", - "minecraft:nether_brick_fence" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/fire.json b/src/generated/resources/data/minecraft/tags/blocks/fire.json deleted file mode 100644 index 2ca0f384..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/fire.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:fire", - "minecraft:soul_fire" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/flower_pots.json b/src/generated/resources/data/minecraft/tags/blocks/flower_pots.json deleted file mode 100644 index b105b95e..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/flower_pots.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:flower_pot", - "minecraft:potted_poppy", - "minecraft:potted_blue_orchid", - "minecraft:potted_allium", - "minecraft:potted_azure_bluet", - "minecraft:potted_red_tulip", - "minecraft:potted_orange_tulip", - "minecraft:potted_white_tulip", - "minecraft:potted_pink_tulip", - "minecraft:potted_oxeye_daisy", - "minecraft:potted_dandelion", - "minecraft:potted_oak_sapling", - "minecraft:potted_spruce_sapling", - "minecraft:potted_birch_sapling", - "minecraft:potted_jungle_sapling", - "minecraft:potted_acacia_sapling", - "minecraft:potted_dark_oak_sapling", - "minecraft:potted_red_mushroom", - "minecraft:potted_brown_mushroom", - "minecraft:potted_dead_bush", - "minecraft:potted_fern", - "minecraft:potted_cactus", - "minecraft:potted_cornflower", - "minecraft:potted_lily_of_the_valley", - "minecraft:potted_wither_rose", - "minecraft:potted_bamboo", - "minecraft:potted_crimson_fungus", - "minecraft:potted_warped_fungus", - "minecraft:potted_crimson_roots", - "minecraft:potted_warped_roots" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/flowers.json b/src/generated/resources/data/minecraft/tags/blocks/flowers.json deleted file mode 100644 index 9d1ba3a1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/flowers.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:small_flowers", - "#minecraft:tall_flowers" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/gold_ores.json b/src/generated/resources/data/minecraft/tags/blocks/gold_ores.json deleted file mode 100644 index ee9b150a..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/gold_ores.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:gold_ore", - "minecraft:nether_gold_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/guarded_by_piglins.json b/src/generated/resources/data/minecraft/tags/blocks/guarded_by_piglins.json deleted file mode 100644 index e1d6ebb5..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/guarded_by_piglins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:gold_block", - "minecraft:barrel", - "minecraft:chest", - "minecraft:ender_chest", - "minecraft:gilded_blackstone", - "minecraft:trapped_chest", - "#minecraft:shulker_boxes", - "#minecraft:gold_ores" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/hoglin_repellents.json b/src/generated/resources/data/minecraft/tags/blocks/hoglin_repellents.json deleted file mode 100644 index 2da3b912..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/hoglin_repellents.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:warped_fungus", - "minecraft:potted_warped_fungus", - "minecraft:nether_portal", - "minecraft:respawn_anchor" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/ice.json b/src/generated/resources/data/minecraft/tags/blocks/ice.json deleted file mode 100644 index c5f45013..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/ice.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:ice", - "minecraft:packed_ice", - "minecraft:blue_ice", - "minecraft:frosted_ice" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/impermeable.json b/src/generated/resources/data/minecraft/tags/blocks/impermeable.json deleted file mode 100644 index 9a23d087..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/impermeable.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:glass", - "minecraft:white_stained_glass", - "minecraft:orange_stained_glass", - "minecraft:magenta_stained_glass", - "minecraft:light_blue_stained_glass", - "minecraft:yellow_stained_glass", - "minecraft:lime_stained_glass", - "minecraft:pink_stained_glass", - "minecraft:gray_stained_glass", - "minecraft:light_gray_stained_glass", - "minecraft:cyan_stained_glass", - "minecraft:purple_stained_glass", - "minecraft:blue_stained_glass", - "minecraft:brown_stained_glass", - "minecraft:green_stained_glass", - "minecraft:red_stained_glass", - "minecraft:black_stained_glass" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_end.json b/src/generated/resources/data/minecraft/tags/blocks/infiniburn_end.json deleted file mode 100644 index 9d8f1185..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_end.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:infiniburn_overworld", - "minecraft:bedrock" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_nether.json b/src/generated/resources/data/minecraft/tags/blocks/infiniburn_nether.json deleted file mode 100644 index 8ba042ec..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_nether.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:infiniburn_overworld" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_overworld.json b/src/generated/resources/data/minecraft/tags/blocks/infiniburn_overworld.json deleted file mode 100644 index 432cf25d..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/infiniburn_overworld.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:netherrack", - "minecraft:magma_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/jungle_logs.json b/src/generated/resources/data/minecraft/tags/blocks/jungle_logs.json deleted file mode 100644 index ec51d638..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/jungle_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:jungle_log", - "minecraft:jungle_wood", - "minecraft:stripped_jungle_log", - "minecraft:stripped_jungle_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/leaves.json b/src/generated/resources/data/minecraft/tags/blocks/leaves.json deleted file mode 100644 index 036ec387..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/leaves.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:jungle_leaves", - "minecraft:oak_leaves", - "minecraft:spruce_leaves", - "minecraft:dark_oak_leaves", - "minecraft:acacia_leaves", - "minecraft:birch_leaves" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/logs.json b/src/generated/resources/data/minecraft/tags/blocks/logs.json deleted file mode 100644 index a3d931c1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/logs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:logs_that_burn", - "#minecraft:crimson_stems", - "#minecraft:warped_stems" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json b/src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json deleted file mode 100644 index e5a8d0fc..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/logs_that_burn.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:dark_oak_logs", - "#minecraft:oak_logs", - "#minecraft:acacia_logs", - "#minecraft:birch_logs", - "#minecraft:jungle_logs", - "#minecraft:spruce_logs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mushroom_grow_block.json b/src/generated/resources/data/minecraft/tags/blocks/mushroom_grow_block.json deleted file mode 100644 index cf95ca25..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/mushroom_grow_block.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:mycelium", - "minecraft:podzol", - "minecraft:crimson_nylium", - "minecraft:warped_nylium" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/non_flammable_wood.json b/src/generated/resources/data/minecraft/tags/blocks/non_flammable_wood.json deleted file mode 100644 index 71270023..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/non_flammable_wood.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:warped_stem", - "minecraft:stripped_warped_stem", - "minecraft:warped_hyphae", - "minecraft:stripped_warped_hyphae", - "minecraft:crimson_stem", - "minecraft:stripped_crimson_stem", - "minecraft:crimson_hyphae", - "minecraft:stripped_crimson_hyphae", - "minecraft:crimson_planks", - "minecraft:warped_planks", - "minecraft:crimson_slab", - "minecraft:warped_slab", - "minecraft:crimson_pressure_plate", - "minecraft:warped_pressure_plate", - "minecraft:crimson_fence", - "minecraft:warped_fence", - "minecraft:crimson_trapdoor", - "minecraft:warped_trapdoor", - "minecraft:crimson_fence_gate", - "minecraft:warped_fence_gate", - "minecraft:crimson_stairs", - "minecraft:warped_stairs", - "minecraft:crimson_button", - "minecraft:warped_button", - "minecraft:crimson_door", - "minecraft:warped_door", - "minecraft:crimson_sign", - "minecraft:warped_sign", - "minecraft:crimson_wall_sign", - "minecraft:warped_wall_sign" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/nylium.json b/src/generated/resources/data/minecraft/tags/blocks/nylium.json deleted file mode 100644 index 7ce3a5a2..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/nylium.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:crimson_nylium", - "minecraft:warped_nylium" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/oak_logs.json b/src/generated/resources/data/minecraft/tags/blocks/oak_logs.json deleted file mode 100644 index 927086f6..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/oak_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_log", - "minecraft:oak_wood", - "minecraft:stripped_oak_log", - "minecraft:stripped_oak_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/piglin_repellents.json b/src/generated/resources/data/minecraft/tags/blocks/piglin_repellents.json deleted file mode 100644 index 407bd501..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/piglin_repellents.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:soul_fire", - "minecraft:soul_torch", - "minecraft:soul_lantern", - "minecraft:soul_wall_torch", - "minecraft:soul_campfire" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/planks.json b/src/generated/resources/data/minecraft/tags/blocks/planks.json deleted file mode 100644 index 34ef51ff..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/planks.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_planks", - "minecraft:spruce_planks", - "minecraft:birch_planks", - "minecraft:jungle_planks", - "minecraft:acacia_planks", - "minecraft:dark_oak_planks", - "minecraft:crimson_planks", - "minecraft:warped_planks" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/portals.json b/src/generated/resources/data/minecraft/tags/blocks/portals.json deleted file mode 100644 index e9f000ba..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/portals.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:nether_portal", - "minecraft:end_portal", - "minecraft:end_gateway" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/pressure_plates.json b/src/generated/resources/data/minecraft/tags/blocks/pressure_plates.json deleted file mode 100644 index b73310c7..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/pressure_plates.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:light_weighted_pressure_plate", - "minecraft:heavy_weighted_pressure_plate", - "#minecraft:wooden_pressure_plates", - "#minecraft:stone_pressure_plates" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/prevent_mob_spawning_inside.json b/src/generated/resources/data/minecraft/tags/blocks/prevent_mob_spawning_inside.json deleted file mode 100644 index 0f6530e7..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/prevent_mob_spawning_inside.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:rails" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/rails.json b/src/generated/resources/data/minecraft/tags/blocks/rails.json deleted file mode 100644 index 036ac7fc..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/rails.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:rail", - "minecraft:powered_rail", - "minecraft:detector_rail", - "minecraft:activator_rail" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/sand.json b/src/generated/resources/data/minecraft/tags/blocks/sand.json deleted file mode 100644 index fa7a9c4a..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/sand.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:sand", - "minecraft:red_sand" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/saplings.json b/src/generated/resources/data/minecraft/tags/blocks/saplings.json deleted file mode 100644 index 04fe81f9..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/saplings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_sapling", - "minecraft:spruce_sapling", - "minecraft:birch_sapling", - "minecraft:jungle_sapling", - "minecraft:acacia_sapling", - "minecraft:dark_oak_sapling" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/shulker_boxes.json b/src/generated/resources/data/minecraft/tags/blocks/shulker_boxes.json deleted file mode 100644 index 7bcd4108..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/shulker_boxes.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:shulker_box", - "minecraft:black_shulker_box", - "minecraft:blue_shulker_box", - "minecraft:brown_shulker_box", - "minecraft:cyan_shulker_box", - "minecraft:gray_shulker_box", - "minecraft:green_shulker_box", - "minecraft:light_blue_shulker_box", - "minecraft:light_gray_shulker_box", - "minecraft:lime_shulker_box", - "minecraft:magenta_shulker_box", - "minecraft:orange_shulker_box", - "minecraft:pink_shulker_box", - "minecraft:purple_shulker_box", - "minecraft:red_shulker_box", - "minecraft:white_shulker_box", - "minecraft:yellow_shulker_box" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/signs.json b/src/generated/resources/data/minecraft/tags/blocks/signs.json deleted file mode 100644 index 7677a609..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/signs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:standing_signs", - "#minecraft:wall_signs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/slabs.json b/src/generated/resources/data/minecraft/tags/blocks/slabs.json deleted file mode 100644 index 3dca479c..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/slabs.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_slabs", - "minecraft:stone_slab", - "minecraft:smooth_stone_slab", - "minecraft:stone_brick_slab", - "minecraft:sandstone_slab", - "minecraft:purpur_slab", - "minecraft:quartz_slab", - "minecraft:red_sandstone_slab", - "minecraft:brick_slab", - "minecraft:cobblestone_slab", - "minecraft:nether_brick_slab", - "minecraft:petrified_oak_slab", - "minecraft:prismarine_slab", - "minecraft:prismarine_brick_slab", - "minecraft:dark_prismarine_slab", - "minecraft:polished_granite_slab", - "minecraft:smooth_red_sandstone_slab", - "minecraft:mossy_stone_brick_slab", - "minecraft:polished_diorite_slab", - "minecraft:mossy_cobblestone_slab", - "minecraft:end_stone_brick_slab", - "minecraft:smooth_sandstone_slab", - "minecraft:smooth_quartz_slab", - "minecraft:granite_slab", - "minecraft:andesite_slab", - "minecraft:red_nether_brick_slab", - "minecraft:polished_andesite_slab", - "minecraft:diorite_slab", - "minecraft:cut_sandstone_slab", - "minecraft:cut_red_sandstone_slab", - "minecraft:blackstone_slab", - "minecraft:polished_blackstone_brick_slab", - "minecraft:polished_blackstone_slab" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/small_flowers.json b/src/generated/resources/data/minecraft/tags/blocks/small_flowers.json deleted file mode 100644 index 395128a6..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/small_flowers.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:dandelion", - "minecraft:poppy", - "minecraft:blue_orchid", - "minecraft:allium", - "minecraft:azure_bluet", - "minecraft:red_tulip", - "minecraft:orange_tulip", - "minecraft:white_tulip", - "minecraft:pink_tulip", - "minecraft:oxeye_daisy", - "minecraft:cornflower", - "minecraft:lily_of_the_valley", - "minecraft:wither_rose" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/soul_fire_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/soul_fire_base_blocks.json deleted file mode 100644 index 18c9c11a..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/soul_fire_base_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:soul_sand", - "minecraft:soul_soil" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/soul_speed_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/soul_speed_blocks.json deleted file mode 100644 index 18c9c11a..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/soul_speed_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:soul_sand", - "minecraft:soul_soil" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/spruce_logs.json b/src/generated/resources/data/minecraft/tags/blocks/spruce_logs.json deleted file mode 100644 index 87b5caf6..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/spruce_logs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:spruce_log", - "minecraft:spruce_wood", - "minecraft:stripped_spruce_log", - "minecraft:stripped_spruce_wood" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/stairs.json b/src/generated/resources/data/minecraft/tags/blocks/stairs.json deleted file mode 100644 index 1c435365..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/stairs.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_stairs", - "minecraft:cobblestone_stairs", - "minecraft:sandstone_stairs", - "minecraft:nether_brick_stairs", - "minecraft:stone_brick_stairs", - "minecraft:brick_stairs", - "minecraft:purpur_stairs", - "minecraft:quartz_stairs", - "minecraft:red_sandstone_stairs", - "minecraft:prismarine_brick_stairs", - "minecraft:prismarine_stairs", - "minecraft:dark_prismarine_stairs", - "minecraft:polished_granite_stairs", - "minecraft:smooth_red_sandstone_stairs", - "minecraft:mossy_stone_brick_stairs", - "minecraft:polished_diorite_stairs", - "minecraft:mossy_cobblestone_stairs", - "minecraft:end_stone_brick_stairs", - "minecraft:stone_stairs", - "minecraft:smooth_sandstone_stairs", - "minecraft:smooth_quartz_stairs", - "minecraft:granite_stairs", - "minecraft:andesite_stairs", - "minecraft:red_nether_brick_stairs", - "minecraft:polished_andesite_stairs", - "minecraft:diorite_stairs", - "minecraft:blackstone_stairs", - "minecraft:polished_blackstone_brick_stairs", - "minecraft:polished_blackstone_stairs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/standing_signs.json b/src/generated/resources/data/minecraft/tags/blocks/standing_signs.json deleted file mode 100644 index 6b6500e5..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/standing_signs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_sign", - "minecraft:spruce_sign", - "minecraft:birch_sign", - "minecraft:acacia_sign", - "minecraft:jungle_sign", - "minecraft:dark_oak_sign", - "minecraft:crimson_sign", - "minecraft:warped_sign" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/stone_bricks.json b/src/generated/resources/data/minecraft/tags/blocks/stone_bricks.json deleted file mode 100644 index 7cec36c5..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/stone_bricks.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:stone_bricks", - "minecraft:mossy_stone_bricks", - "minecraft:cracked_stone_bricks", - "minecraft:chiseled_stone_bricks" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/stone_pressure_plates.json b/src/generated/resources/data/minecraft/tags/blocks/stone_pressure_plates.json deleted file mode 100644 index c4e413b1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/stone_pressure_plates.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:stone_pressure_plate", - "minecraft:polished_blackstone_pressure_plate" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/strider_warm_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/strider_warm_blocks.json deleted file mode 100644 index b009780b..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/strider_warm_blocks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:lava" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/tall_flowers.json b/src/generated/resources/data/minecraft/tags/blocks/tall_flowers.json deleted file mode 100644 index 681427ff..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/tall_flowers.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:sunflower", - "minecraft:lilac", - "minecraft:peony", - "minecraft:rose_bush" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/trapdoors.json b/src/generated/resources/data/minecraft/tags/blocks/trapdoors.json deleted file mode 100644 index d9625857..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/trapdoors.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:wooden_trapdoors", - "minecraft:iron_trapdoor" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/underwater_bonemeals.json b/src/generated/resources/data/minecraft/tags/blocks/underwater_bonemeals.json deleted file mode 100644 index c1245146..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/underwater_bonemeals.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:seagrass", - "#minecraft:corals", - "#minecraft:wall_corals" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/unstable_bottom_center.json b/src/generated/resources/data/minecraft/tags/blocks/unstable_bottom_center.json deleted file mode 100644 index 6766bc43..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/unstable_bottom_center.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "#minecraft:fence_gates" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/valid_spawn.json b/src/generated/resources/data/minecraft/tags/blocks/valid_spawn.json deleted file mode 100644 index bcbc42e1..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/valid_spawn.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:grass_block", - "minecraft:podzol" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wall_corals.json b/src/generated/resources/data/minecraft/tags/blocks/wall_corals.json deleted file mode 100644 index db2c3304..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wall_corals.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:tube_coral_wall_fan", - "minecraft:brain_coral_wall_fan", - "minecraft:bubble_coral_wall_fan", - "minecraft:fire_coral_wall_fan", - "minecraft:horn_coral_wall_fan" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wall_post_override.json b/src/generated/resources/data/minecraft/tags/blocks/wall_post_override.json deleted file mode 100644 index 2fbdd646..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wall_post_override.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:torch", - "minecraft:soul_torch", - "minecraft:redstone_torch", - "minecraft:tripwire", - "#minecraft:signs", - "#minecraft:banners", - "#minecraft:pressure_plates" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wall_signs.json b/src/generated/resources/data/minecraft/tags/blocks/wall_signs.json deleted file mode 100644 index ca5cb43f..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wall_signs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_wall_sign", - "minecraft:spruce_wall_sign", - "minecraft:birch_wall_sign", - "minecraft:acacia_wall_sign", - "minecraft:jungle_wall_sign", - "minecraft:dark_oak_wall_sign", - "minecraft:crimson_wall_sign", - "minecraft:warped_wall_sign" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/walls.json b/src/generated/resources/data/minecraft/tags/blocks/walls.json deleted file mode 100644 index 2f0ae281..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/walls.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:cobblestone_wall", - "minecraft:mossy_cobblestone_wall", - "minecraft:brick_wall", - "minecraft:prismarine_wall", - "minecraft:red_sandstone_wall", - "minecraft:mossy_stone_brick_wall", - "minecraft:granite_wall", - "minecraft:stone_brick_wall", - "minecraft:nether_brick_wall", - "minecraft:andesite_wall", - "minecraft:red_nether_brick_wall", - "minecraft:sandstone_wall", - "minecraft:end_stone_brick_wall", - "minecraft:diorite_wall", - "minecraft:blackstone_wall", - "minecraft:polished_blackstone_brick_wall", - "minecraft:polished_blackstone_wall" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/warped_stems.json b/src/generated/resources/data/minecraft/tags/blocks/warped_stems.json deleted file mode 100644 index 4174cdbf..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/warped_stems.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:warped_stem", - "minecraft:stripped_warped_stem", - "minecraft:warped_hyphae", - "minecraft:stripped_warped_hyphae" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json deleted file mode 100644 index 97a811d6..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wart_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:nether_wart_block", - "minecraft:warped_wart_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wither_immune.json b/src/generated/resources/data/minecraft/tags/blocks/wither_immune.json deleted file mode 100644 index 995c6486..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wither_immune.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:barrier", - "minecraft:bedrock", - "minecraft:end_portal", - "minecraft:end_portal_frame", - "minecraft:end_gateway", - "minecraft:command_block", - "minecraft:repeating_command_block", - "minecraft:chain_command_block", - "minecraft:structure_block", - "minecraft:jigsaw", - "minecraft:moving_piston" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wither_summon_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/wither_summon_base_blocks.json deleted file mode 100644 index 18c9c11a..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wither_summon_base_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:soul_sand", - "minecraft:soul_soil" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json deleted file mode 100644 index 27515915..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_buttons.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_button", - "minecraft:spruce_button", - "minecraft:birch_button", - "minecraft:jungle_button", - "minecraft:acacia_button", - "minecraft:dark_oak_button", - "minecraft:crimson_button", - "minecraft:warped_button" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json deleted file mode 100644 index 161af841..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_doors.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_door", - "minecraft:spruce_door", - "minecraft:birch_door", - "minecraft:jungle_door", - "minecraft:acacia_door", - "minecraft:dark_oak_door", - "minecraft:crimson_door", - "minecraft:warped_door" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_fences.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_fences.json deleted file mode 100644 index e853ce55..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_fences.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_fence", - "minecraft:acacia_fence", - "minecraft:dark_oak_fence", - "minecraft:spruce_fence", - "minecraft:birch_fence", - "minecraft:jungle_fence", - "minecraft:crimson_fence", - "minecraft:warped_fence" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json deleted file mode 100644 index c80cf5c8..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_pressure_plate", - "minecraft:spruce_pressure_plate", - "minecraft:birch_pressure_plate", - "minecraft:jungle_pressure_plate", - "minecraft:acacia_pressure_plate", - "minecraft:dark_oak_pressure_plate", - "minecraft:crimson_pressure_plate", - "minecraft:warped_pressure_plate" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json deleted file mode 100644 index b3d1b0b5..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_slabs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_slab", - "minecraft:spruce_slab", - "minecraft:birch_slab", - "minecraft:jungle_slab", - "minecraft:acacia_slab", - "minecraft:dark_oak_slab", - "minecraft:crimson_slab", - "minecraft:warped_slab" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json deleted file mode 100644 index ff30545e..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_stairs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:oak_stairs", - "minecraft:spruce_stairs", - "minecraft:birch_stairs", - "minecraft:jungle_stairs", - "minecraft:acacia_stairs", - "minecraft:dark_oak_stairs", - "minecraft:crimson_stairs", - "minecraft:warped_stairs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json b/src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json deleted file mode 100644 index 7368d84c..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wooden_trapdoors.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:acacia_trapdoor", - "minecraft:birch_trapdoor", - "minecraft:dark_oak_trapdoor", - "minecraft:jungle_trapdoor", - "minecraft:oak_trapdoor", - "minecraft:spruce_trapdoor", - "minecraft:crimson_trapdoor", - "minecraft:warped_trapdoor" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/wool.json b/src/generated/resources/data/minecraft/tags/blocks/wool.json deleted file mode 100644 index c39732fc..00000000 --- a/src/generated/resources/data/minecraft/tags/blocks/wool.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:white_wool", - "minecraft:orange_wool", - "minecraft:magenta_wool", - "minecraft:light_blue_wool", - "minecraft:yellow_wool", - "minecraft:lime_wool", - "minecraft:pink_wool", - "minecraft:gray_wool", - "minecraft:light_gray_wool", - "minecraft:cyan_wool", - "minecraft:purple_wool", - "minecraft:blue_wool", - "minecraft:brown_wool", - "minecraft:green_wool", - "minecraft:red_wool", - "minecraft:black_wool" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/worldgen/world_preset/normal.json b/src/generated/resources/data/minecraft/tags/worldgen/world_preset/normal.json new file mode 100644 index 00000000..714e7569 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/worldgen/world_preset/normal.json @@ -0,0 +1,5 @@ +{ + "values": [ + "exnihiloreborn:void_world" + ] +} \ No newline at end of file diff --git a/src/main/java/thedarkcolour/exnihiloreborn/ExNihiloReborn.java b/src/main/java/thedarkcolour/exnihiloreborn/ExNihiloReborn.java index 81bfaeb6..bd8463fe 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/ExNihiloReborn.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/ExNihiloReborn.java @@ -1,67 +1,64 @@ package thedarkcolour.exnihiloreborn; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.AddReloadListenerEvent; -import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.InterModComms; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import thedarkcolour.exnihiloreborn.blockentity.LavaCrucibleBlockEntity; -import thedarkcolour.exnihiloreborn.blockentity.WaterCrucibleBlockEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import thedarkcolour.exnihiloreborn.client.ClientHandler; -import thedarkcolour.exnihiloreborn.compat.top.TopCompatExNihiloReborn; +import thedarkcolour.exnihiloreborn.config.Config; +import thedarkcolour.exnihiloreborn.event.EventHandler; +import thedarkcolour.exnihiloreborn.network.NetworkHandler; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.EBlocks; +import thedarkcolour.exnihiloreborn.registry.ECreativeTabs; import thedarkcolour.exnihiloreborn.registry.EFluids; +import thedarkcolour.exnihiloreborn.registry.EGlobalLootModifiers; import thedarkcolour.exnihiloreborn.registry.EItems; import thedarkcolour.exnihiloreborn.registry.ELootFunctions; import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; +import thedarkcolour.exnihiloreborn.registry.EChunkGenerators; -import java.util.concurrent.CompletableFuture; +import java.util.Calendar; @Mod(ExNihiloReborn.ID) public class ExNihiloReborn { public static final String ID = "exnihiloreborn"; + public static final Logger LOGGER = LoggerFactory.getLogger(ID); + public static final boolean DEBUG = ModList.get().isLoaded("modkit"); + public static final boolean IS_JUNE = Calendar.getInstance().get(Calendar.MONTH) == Calendar.JUNE; public ExNihiloReborn() { - final IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); - final IEventBus fmlBus = MinecraftForge.EVENT_BUS; - - // Mod init - ELootFunctions.init(); - ERecipeTypes.init(); - modBus.addListener(this::interModEnqueue); - - // Client init - DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> ClientHandler::register); - - // Registry Classes - EBlockEntities.BLOCK_ENTITIES.register(modBus); - EBlocks.BLOCKS.register(modBus); - EFluids.FLUIDS.register(modBus); - EItems.ITEMS.register(modBus); - ERecipeSerializers.RECIPE_SERIALIZERS.register(modBus); + createRegistries(); + NetworkHandler.register(); // Game Events - fmlBus.addListener(this::serverStart); + EventHandler.register(); + // Client init + DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> ClientHandler::register); + // Config init + ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Config.SERVER_SPEC); + ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Config.CLIENT_SPEC); } - // Send messages to other mods - public void interModEnqueue(InterModEnqueueEvent event) { - InterModComms.sendTo("theoneprobe", "getTheOneProbe", TopCompatExNihiloReborn::new); - } + private static void createRegistries() { + var modBus = FMLJavaModLoadingContext.get().getModEventBus(); - public void serverStart(AddReloadListenerEvent event) { - event.addListener((prepBarrier, resourceManager, prepProfiler, reloadProfiler, backgroundExecutor, gameExecutor) -> { - return CompletableFuture.allOf().thenCompose(prepBarrier::wait).thenRunAsync(() -> { - - LavaCrucibleBlockEntity.RECIPES_CACHE.invalidateAll(); - WaterCrucibleBlockEntity.RECIPES_CACHE.invalidateAll(); - }, gameExecutor); - }); + EBlockEntities.BLOCK_ENTITIES.register(modBus); + EBlocks.BLOCKS.register(modBus); + EChunkGenerators.CHUNK_GENERATORS.register(modBus); + ECreativeTabs.CREATIVE_TABS.register(modBus); + EFluids.FLUID_TYPES.register(modBus); + EFluids.FLUIDS.register(modBus); + EGlobalLootModifiers.GLOBAL_LOOT_MODIFIERS.register(modBus); + EItems.ITEMS.register(modBus); + ELootFunctions.LOOT_FUNCTIONS.register(modBus); + ERecipeSerializers.RECIPE_SERIALIZERS.register(modBus); + ERecipeTypes.RECIPE_TYPES.register(modBus); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/AbstractCrucibleBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/AbstractCrucibleBlock.java index 8e14b821..680bff41 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/AbstractCrucibleBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/AbstractCrucibleBlock.java @@ -1,21 +1,25 @@ package thedarkcolour.exnihiloreborn.block; import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; import thedarkcolour.exnihiloreborn.blockentity.AbstractCrucibleBlockEntity; import thedarkcolour.exnihiloreborn.blockentity.EBlockEntity; +import thedarkcolour.exnihiloreborn.registry.EBlockEntities; +import thedarkcolour.exnihiloreborn.registry.EItems; + +import java.util.function.Supplier; public abstract class AbstractCrucibleBlock extends EBlock { - public AbstractCrucibleBlock(Properties properties) { - super(properties); + public AbstractCrucibleBlock(Properties properties, Supplier> blockEntityType) { + super(properties, blockEntityType); } @Override @@ -30,4 +34,10 @@ public abstract class AbstractCrucibleBlock extends EBlock { } return 0; } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState pState, BlockEntityType type) { + return !level.isClientSide && (type == EBlockEntities.WATER_CRUCIBLE.get() || type == EBlockEntities.LAVA_CRUCIBLE.get()) ? (BlockEntityTicker) new AbstractCrucibleBlockEntity.Ticker() : null; + } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/BarrelBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/BarrelBlock.java index 4656a05c..f5409e5f 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/BarrelBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/BarrelBlock.java @@ -1,21 +1,33 @@ package thedarkcolour.exnihiloreborn.block; import net.minecraft.core.BlockPos; +import net.minecraft.core.NonNullList; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.Containers; 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.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.blockentity.AbstractCrucibleBlockEntity; import thedarkcolour.exnihiloreborn.blockentity.BarrelBlockEntity; +import thedarkcolour.exnihiloreborn.registry.EBlockEntities; +import thedarkcolour.exnihiloreborn.registry.EBlocks; public class BarrelBlock extends Block implements EntityBlock { public static final VoxelShape SHAPE = Shapes.join( @@ -33,6 +45,12 @@ public class BarrelBlock extends Block implements EntityBlock { return new BarrelBlockEntity(pos, state); } + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState pState, BlockEntityType type) { + return !level.isClientSide && type == EBlockEntities.BARREL.get() ? (BlockEntityTicker) new BarrelBlockEntity.Ticker() : null; + } + @Override public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { return SHAPE; @@ -46,4 +64,21 @@ public class BarrelBlock extends Block implements EntityBlock { return InteractionResult.PASS; } + + @Override + public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { + if (!level.isClientSide) { + if (!state.is(newState.getBlock())) { + if (level.getBlockEntity(pos) instanceof BarrelBlockEntity barrel) { + var item = barrel.getItem(); + + if (!item.isEmpty()) { + Containers.dropContents(level, pos, NonNullList.of(ItemStack.EMPTY, item)); + } + } + } + } + + super.onRemove(state, level, pos, newState, isMoving); + } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/InfestedLeavesBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/InfestedLeavesBlock.java index f7ad97f1..33e2209d 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/InfestedLeavesBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/InfestedLeavesBlock.java @@ -6,22 +6,27 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.LeavesBlock; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.HitResult; import org.jetbrains.annotations.Nullable; import thedarkcolour.exnihiloreborn.blockentity.InfestedLeavesBlockEntity; +import thedarkcolour.exnihiloreborn.registry.EBlockEntities; public class InfestedLeavesBlock extends LeavesBlock implements EntityBlock { public static final BooleanProperty FULLY_INFESTED = BooleanProperty.create("fully_infested"); public InfestedLeavesBlock(Properties properties) { super(properties); + registerDefaultState(defaultBlockState().setValue(FULLY_INFESTED, false)); } @Override @@ -33,7 +38,13 @@ public class InfestedLeavesBlock extends LeavesBlock implements EntityBlock { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new InfestedLeavesBlockEntity(pos, state); + return !state.getValue(FULLY_INFESTED) ? new InfestedLeavesBlockEntity(pos, state) : null; + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level pLevel, BlockState state, BlockEntityType type) { + return (type == EBlockEntities.INFESTED_LEAVES.get() && !state.getValue(FULLY_INFESTED)) ? (BlockEntityTicker) new InfestedLeavesBlockEntity.Ticker() : null; } @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/LavaCrucibleBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/LavaCrucibleBlock.java index f0b34a26..28ac9cdb 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/LavaCrucibleBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/LavaCrucibleBlock.java @@ -1,7 +1,9 @@ package thedarkcolour.exnihiloreborn.block; +import thedarkcolour.exnihiloreborn.registry.EBlockEntities; + public class LavaCrucibleBlock extends AbstractCrucibleBlock { public LavaCrucibleBlock(Properties properties) { - super(properties); + super(properties, EBlockEntities.LAVA_CRUCIBLE); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/SieveBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/SieveBlock.java index 7cf40287..27189340 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/SieveBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/SieveBlock.java @@ -6,7 +6,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import thedarkcolour.exnihiloreborn.blockentity.EBlockEntity; import thedarkcolour.exnihiloreborn.blockentity.SieveBlockEntity; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; @@ -17,8 +16,8 @@ public class SieveBlock extends EBlock { // todo @Override - public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { - return super.getShape(pState, pLevel, pPos, pContext); + public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return super.getShape(state, level, pos, context); } @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/block/WaterCrucibleBlock.java b/src/main/java/thedarkcolour/exnihiloreborn/block/WaterCrucibleBlock.java index 033f77c1..f9861543 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/block/WaterCrucibleBlock.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/block/WaterCrucibleBlock.java @@ -1,14 +1,20 @@ package thedarkcolour.exnihiloreborn.block; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.blockentity.AbstractCrucibleBlockEntity; import thedarkcolour.exnihiloreborn.blockentity.WaterCrucibleBlockEntity; +import thedarkcolour.exnihiloreborn.registry.EBlockEntities; public class WaterCrucibleBlock extends AbstractCrucibleBlock { public WaterCrucibleBlock(Properties properties) { - super(properties); + super(properties, EBlockEntities.WATER_CRUCIBLE); } @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/AbstractCrucibleBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/AbstractCrucibleBlockEntity.java index 62dbecb2..c49ca684 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/AbstractCrucibleBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/AbstractCrucibleBlockEntity.java @@ -11,15 +11,18 @@ 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.item.Items; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.Lazy; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; @@ -32,13 +35,23 @@ import thedarkcolour.exnihiloreborn.recipe.crucible.CrucibleRecipe; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.HashMap; import java.util.function.Consumer; public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { + public static final Lazy> MELT_OVERRIDES = Lazy.concurrentOf(() -> { + var map = new HashMap(); + addMeltOverrides(map); + return map; + }); + public static final int MAX_SOLIDS = 1_000; private final AbstractCrucibleBlockEntity.ItemHandler item = new AbstractCrucibleBlockEntity.ItemHandler(); private final AbstractCrucibleBlockEntity.FluidHandler tank = new AbstractCrucibleBlockEntity.FluidHandler(); + // Capabilities + private final LazyOptional itemHandler = LazyOptional.of(() -> item); + private final LazyOptional fluidHandler = LazyOptional.of(() -> tank); private Block lastMelted; private Fluid fluid; @@ -48,21 +61,17 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { super(type, pos, state); } - // Capabilities - private final LazyOptional itemHandler = LazyOptional.of(() -> item); - private final LazyOptional fluidHandler = LazyOptional.of(() -> tank); - @Nonnull @Override public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (cap == ForgeCapabilities.FLUID_HANDLER) { - return fluidHandler.cast(); - } else if (cap == ForgeCapabilities.ITEM_HANDLER) { - return itemHandler.cast(); + if (!remove) { + if (cap == ForgeCapabilities.FLUID_HANDLER) { + return fluidHandler.cast(); + } else if (cap == ForgeCapabilities.ITEM_HANDLER) { + return itemHandler.cast(); + } } - - return super.getCapability(cap, side); } @@ -85,7 +94,6 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { lastMelted = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(nbt.getString("LastMelted"))); fluid = ForgeRegistries.FLUIDS.getValue(new ResourceLocation(nbt.getString("Fluid"))); solids = nbt.getShort("Solids"); - } public InteractionResult use(Level level, Player player, InteractionHand hand) { @@ -96,12 +104,13 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { } if (!level.isClientSide) { - tryMelt(playerItem, stack -> stack.shrink(1)); + tryMelt(playerItem, player.getAbilities().instabuild ? stack -> {} : stack -> stack.shrink(1)); } return InteractionResult.sidedSuccess(level.isClientSide); } + // Gets a crucible recipe, using the cache if possible public CrucibleRecipe getRecipe(ItemStack item) { var pair = new CacheKey(item.getItem(), item.getTag()); var recipe = getRecipeCache().getIfPresent(pair); @@ -121,7 +130,8 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { /** * Tries to melt the specified item into the crucible. - * @param item Item to melt + * + * @param item Item to melt * @param shrinkAction What to do when item is melted */ private void tryMelt(ItemStack item, Consumer shrinkAction) { @@ -132,6 +142,7 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { FluidStack contained = tank.getFluid(); if (((result.isFluidEqual(contained) || contained.isEmpty()) && result.getAmount() + solids <= MAX_SOLIDS)) { + var meltItem = item.getItem(); shrinkAction.accept(item); solids += result.getAmount(); @@ -139,9 +150,11 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { fluid = result.getFluid(); } - // Hopefully invoking the state method doesn't screw with mods that depend on the block existing in the world - if (item.getItem() instanceof BlockItem && !(((BlockItem) item.getItem()).getBlock().defaultBlockState().getCollisionShape(level, getBlockPos()).isEmpty())) { - lastMelted = ((BlockItem) item.getItem()).getBlock(); + var melts = MELT_OVERRIDES.get(); + if (melts.containsKey(meltItem)) { + lastMelted = melts.get(meltItem); + } else if (meltItem instanceof BlockItem blockItem) { + lastMelted = blockItem.getBlock(); } else { // If we already have something else inside just use that instead of switching to default if (lastMelted == null) { @@ -176,9 +189,28 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { return lastMelted; } - public record CacheKey(Item item, CompoundTag tag) {} + @Override + public void setRemoved() { + itemHandler.invalidate(); + fluidHandler.invalidate(); + super.setRemoved(); + } - private class FluidHandler extends FluidTank { + private static void addMeltOverrides(HashMap overrides) { + overrides.put(Items.OAK_SAPLING, Blocks.OAK_LEAVES); + overrides.put(Items.SPRUCE_SAPLING, Blocks.SPRUCE_LEAVES); + overrides.put(Items.ACACIA_SAPLING, Blocks.ACACIA_LEAVES); + overrides.put(Items.JUNGLE_SAPLING, Blocks.JUNGLE_LEAVES); + overrides.put(Items.DARK_OAK_SAPLING, Blocks.DARK_OAK_LEAVES); + overrides.put(Items.BIRCH_SAPLING, Blocks.BIRCH_LEAVES); + overrides.put(Items.CHERRY_SAPLING, Blocks.CHERRY_LEAVES); + overrides.put(Items.MANGROVE_PROPAGULE, Blocks.MANGROVE_LEAVES); + } + + public record CacheKey(Item item, CompoundTag tag) { + } + + private static class FluidHandler extends FluidTank { public FluidHandler() { super(4_000); } @@ -189,6 +221,7 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { } } + // inner class private class ItemHandler extends ItemStackHandler { @Override protected void onContentsChanged(int slot) { @@ -210,31 +243,30 @@ public abstract class AbstractCrucibleBlockEntity extends EBlockEntity { } } + // Only ticks on client public static class Ticker implements BlockEntityTicker { @Override public void tick(Level level, BlockPos pos, BlockState state, AbstractCrucibleBlockEntity crucible) { // Update twice per tick if ((level.getGameTime() % 10L) == 0L) { - if (!level.isClientSide) { - int delta = Math.min(crucible.solids, crucible.getMelt()); + int delta = Math.min(crucible.solids, crucible.getMelt()); - // Skip if no heat - if (delta <= 0) return; + // Skip if no heat + if (delta <= 0) return; - if (crucible.tank.getSpace() >= delta) { - // Remove solids - crucible.solids -= delta; + if (crucible.tank.getSpace() >= delta) { + // Remove solids + crucible.solids -= delta; - // Add lava - if (crucible.tank.isEmpty()) { - crucible.tank.setFluid(new FluidStack(crucible.fluid, delta)); - } else { - crucible.tank.getFluid().grow(delta); - } - - // Sync to client - crucible.markUpdated(); + // Add lava + if (crucible.tank.isEmpty()) { + crucible.tank.setFluid(new FluidStack(crucible.fluid, delta)); + } else { + crucible.tank.getFluid().grow(delta); } + + // Sync to client + crucible.markUpdated(); } } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/BarrelBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/BarrelBlockEntity.java index 56c7b31c..7e368e59 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/BarrelBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/BarrelBlockEntity.java @@ -4,6 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.SimpleContainer; @@ -14,6 +15,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; @@ -26,6 +28,8 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.templates.FluidTank; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; +import org.joml.Vector3i; +import thedarkcolour.exnihiloreborn.client.CompostColors; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.EFluids; import thedarkcolour.exnihiloreborn.registry.EItems; @@ -42,6 +46,8 @@ public class BarrelBlockEntity extends EBlockEntity { private final BarrelBlockEntity.FluidHandler tank = new BarrelBlockEntity.FluidHandler(); public float progress; public short compost; + // compost colors + public short r, g, b; public BarrelBlockEntity(BlockPos pos, BlockState state) { super(EBlockEntities.BARREL.get(), pos, state); @@ -70,16 +76,22 @@ public class BarrelBlockEntity extends EBlockEntity { nbt.put("tank", tank.writeToNBT(new CompoundTag())); nbt.putShort("compost", compost); nbt.putFloat("progress", progress); + nbt.putShort("r", r); + nbt.putShort("g", g); + nbt.putShort("b", b); } @Override public void load(CompoundTag nbt) { super.load(nbt); - item.deserializeNBT(nbt.getCompound("item")); - tank.readFromNBT(nbt.getCompound("tank")); - compost = nbt.getShort("compost"); - progress = nbt.getFloat("progress"); + this.item.deserializeNBT(nbt.getCompound("item")); + this.tank.readFromNBT(nbt.getCompound("tank")); + this.compost = nbt.getShort("compost"); + this.progress = nbt.getFloat("progress"); + this.r = nbt.getShort("r"); + this.g = nbt.getShort("g"); + this.b = nbt.getShort("b"); } public boolean isBrewing() { @@ -108,72 +120,6 @@ public class BarrelBlockEntity extends EBlockEntity { return tank.getFluid().getFluid().getFluidType().getTemperature() > 575; } - @Override - public void tick() { - if (!level.isClientSide) { - // Turn compost to dirt - if (isComposting()) { - progress += PROGRESS_STEP; - markUpdated(); - - if (progress >= 1.0f) { - progress = 0.0f; - compost = 0; - setItem(new ItemStack(Items.DIRT)); - } - } else if (hasFullWater()) { - var pos = getBlockPos(); - var rand = level.random; - var mycelium = 0f; - - for (BlockPos cursor : BlockPos.betweenClosed(pos.getX() - 1, pos.getY() - 1, pos.getZ() - 1, pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) { - // todo make this not hardcoded - if (level.getBlockState(cursor).getBlock() == Blocks.MYCELIUM) { - mycelium += 0.15f; - - if (rand.nextInt(1500) == 0) { - BlockPos above = cursor.above(); - - if (level.getBlockState(above).isAir()) { - if (rand.nextBoolean()) { - level.setBlockAndUpdate(above, Blocks.RED_MUSHROOM.defaultBlockState()); - } else { - level.setBlockAndUpdate(above, Blocks.BROWN_MUSHROOM.defaultBlockState()); - } - } - } - } - } - - if (progress != (progress += mycelium * PROGRESS_STEP)) { - markUpdated(); - } - - if (progress >= 1.0f) { - // Reset progress - progress = 0.0f; - - tank.setFluid(new FluidStack(EFluids.WITCH_WATER_STILL.get(), tank.getFluidAmount())); - } - - } else if (hasHotFluid()) { - if (getBlockState().ignitedByLava()) { - if ((progress += PROGRESS_STEP) >= 1.0f) { - if (tank.getFluidAmount() == 1000) { - var fluid = tank.getFluid().getFluid(); - level.setBlockAndUpdate(getBlockPos(), fluid.getFluidType().getBlockForFluidState(level, getBlockPos(), fluid.defaultFluidState())); - } else { - level.setBlockAndUpdate(getBlockPos(), Blocks.FIRE.defaultBlockState()); - } - } - markUpdated(); - } - } - } else { - spawnBurningParticles(); - } - } - private void spawnBurningParticles() { if (isBurning()) { BlockPos pos = getBlockPos(); @@ -225,13 +171,29 @@ public class BarrelBlockEntity extends EBlockEntity { if (compost < 1000) { if (!level.isClientSide) { // todo cache items to recipe - level.getServer().getRecipeManager().getRecipeFor(ERecipeTypes.BARREL_COMPOST, inventory, level).ifPresent(recipe -> { - compost = (short) Math.min(1000, compost + recipe.getVolume()); - markUpdated(); + level.getServer().getRecipeManager().getRecipeFor(ERecipeTypes.BARREL_COMPOST.get(), inventory, level).ifPresent(recipe -> { + if (!CompostColors.isLoaded()) { + CompostColors.loadColors(); + } - // Consume item - if (!player.getAbilities().instabuild) { - playerItem.shrink(1); + int oldCompost = compost; + compost = (short) Math.min(1000, compost + recipe.getVolume()); + + if (compost != 0) { + float weightNew = (float) (compost - oldCompost) / compost; + float weightOld = 1 - weightNew; + var color = CompostColors.COLORS.getOrDefault(playerItem.getItem(), new Vector3i(53, 168, 42)); + + r = (short) (weightNew * color.x + weightOld * r); + g = (short) (weightNew * color.y + weightOld * g); + b = (short) (weightNew * color.z + weightOld * b); + + markUpdated(); + + // Consume item + if (!player.getAbilities().instabuild) { + playerItem.shrink(1); + } } }); } @@ -256,7 +218,7 @@ public class BarrelBlockEntity extends EBlockEntity { } } - return InteractionResult.FAIL; + return InteractionResult.CONSUME; } private InteractionResult giveItem(Level level, BlockPos pos, boolean isClientSide) { @@ -308,6 +270,73 @@ public class BarrelBlockEntity extends EBlockEntity { mix(Fluids.LAVA, Items.WATER_BUCKET, Items.OBSIDIAN, playerItem, simulate); } + public static class Ticker implements BlockEntityTicker { + @Override + public void tick(Level level, BlockPos pos, BlockState state, BarrelBlockEntity barrel) { + if (!level.isClientSide) { + // Turn compost to dirt + if (barrel.isComposting()) { + barrel.progress += PROGRESS_STEP; + barrel.markUpdated(); + + if (barrel.progress >= 1.0f) { + barrel.progress = 0.0f; + barrel.compost = 0; + barrel.setItem(new ItemStack(Items.DIRT)); + } + } else if (barrel.hasFullWater()) { + var rand = level.random; + var mycelium = 0f; + + for (BlockPos cursor : BlockPos.betweenClosed(pos.getX() - 1, pos.getY() - 1, pos.getZ() - 1, pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1)) { + // todo make this not hardcoded + if (level.getBlockState(cursor).getBlock() == Blocks.MYCELIUM) { + mycelium += 0.15f; + + if (rand.nextInt(1500) == 0) { + BlockPos above = cursor.above(); + + if (level.getBlockState(above).isAir()) { + if (rand.nextBoolean()) { + level.setBlockAndUpdate(above, Blocks.RED_MUSHROOM.defaultBlockState()); + } else { + level.setBlockAndUpdate(above, Blocks.BROWN_MUSHROOM.defaultBlockState()); + } + } + } + } + } + + if (barrel.progress != (barrel.progress += mycelium * PROGRESS_STEP)) { + barrel.markUpdated(); + } + + if (barrel.progress >= 1.0f) { + // Reset progress + barrel.progress = 0.0f; + + barrel.tank.setFluid(new FluidStack(EFluids.WITCH_WATER_STILL.get(), barrel.tank.getFluidAmount())); + } + + } else if (barrel.hasHotFluid()) { + if (state.ignitedByLava()) { + if ((barrel.progress += PROGRESS_STEP) >= 1.0f) { + if (barrel.tank.getFluidAmount() == 1000) { + var fluid = barrel.tank.getFluid().getFluid(); + level.setBlockAndUpdate(pos, fluid.getFluidType().getBlockForFluidState(level, pos, fluid.defaultFluidState())); + } else { + level.setBlockAndUpdate(pos, Blocks.FIRE.defaultBlockState()); + } + } + barrel.markUpdated(); + } + } + } else { + barrel.spawnBurningParticles(); + } + } + } + // Inner class private class ItemHandler extends ItemStackHandler { @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/InfestedLeavesBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/InfestedLeavesBlockEntity.java index 43dca544..078b20c7 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/InfestedLeavesBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/InfestedLeavesBlockEntity.java @@ -1,7 +1,14 @@ package thedarkcolour.exnihiloreborn.blockentity; import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.state.BlockState; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.EBlocks; @@ -21,25 +28,6 @@ public class InfestedLeavesBlockEntity extends EBlockEntity { super(EBlockEntities.INFESTED_LEAVES.get(), pos, state); } - @Override - public void tick() { - // Do progress - if (progress < 1.0f) { - progress = Math.min(1.0f, progress + PROGRESS_INTERVAL); - } - - // If the leave is infested enough, advance the spread timer - if (!level.isClientSide && progress > 0.6f) { - ++spreadTimer; - - // Attempt to spread and reset the timer - if (spreadTimer >= SPREAD_INTERVAL) { - trySpread(); - spreadTimer = level.random.nextInt(10); - } - } - } - // Attempt to convert a leaf block within 1 block radius around this block private void trySpread() { // Get random offset @@ -53,53 +41,38 @@ public class InfestedLeavesBlockEntity extends EBlockEntity { // Test block at the position if (state.is(BlockTags.LEAVES)) { - // Spread and keep distance/persistent properties level.setBlock(targetPos, EBlocks.INFESTED_LEAVES.get().defaultBlockState() .setValue(LeavesBlock.DISTANCE, state.getValue(LeavesBlock.DISTANCE)) .setValue(LeavesBlock.PERSISTENT, state.getValue(LeavesBlock.PERSISTENT)), 2); - TileEntity te = level.getBlockEntity(targetPos); + var te = level.getBlockEntity(targetPos); // Set mimic state of other block - if (te instanceof InfestedLeavesBlockEntity) { - ((InfestedLeavesBlockEntity) te).setMimic(state); - te.setChanged(); + if (te instanceof InfestedLeavesBlockEntity leaves) { + leaves.setMimic(state); + leaves.setChanged(); } } } @Override - public void load(BlockState state, CompoundNBT nbt) { - super.load(state, nbt); + public void load(CompoundTag nbt) { + super.load(nbt); - mimic = NBTUtil.readBlockState(nbt.getCompound("Mimic")); - progress = nbt.getFloat("Progress"); + // From PistonMovingBlockEntity + @SuppressWarnings("deprecation") + var holderLookup = this.level != null ? this.level.holderLookup(Registries.BLOCK) : BuiltInRegistries.BLOCK.asLookup(); + mimic = NbtUtils.readBlockState(holderLookup, nbt.getCompound("mimic")); + progress = nbt.getFloat("progress"); } @Override - public CompoundNBT save(CompoundNBT nbt) { - nbt.put("Mimic", NBTUtil.writeBlockState(mimic)); - nbt.putFloat("Progress", progress); - return super.save(nbt); - } + public void saveAdditional(CompoundTag nbt) { + super.saveAdditional(nbt); - @Override - public CompoundNBT getUpdateTag() { - // Used in getUpdatePacket - return save(new CompoundNBT()); - } - - @Override - public SUpdateTileEntityPacket getUpdatePacket() { - // Sends a packet with updated NBT whenever setChanged is called - return new SUpdateTileEntityPacket(getBlockPos(), 244, getUpdateTag()); - } - - @Override - public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) { - // load properties from server's NBT - load(null, pkt.getTag()); + nbt.put("mimic", NbtUtils.writeBlockState(mimic)); + nbt.putFloat("progress", progress); } public float getProgress() { @@ -113,4 +86,25 @@ public class InfestedLeavesBlockEntity extends EBlockEntity { public void setMimic(BlockState mimic) { this.mimic = mimic; } + + public static class Ticker implements BlockEntityTicker { + @Override + public void tick(Level level, BlockPos pos, BlockState state, InfestedLeavesBlockEntity leaves) { + // Do progress + if (leaves.progress < 1.0f) { + leaves.progress = Math.min(1.0f, leaves.progress + PROGRESS_INTERVAL); + } + + // If the leave is infested enough, advance the spread timer + if (!level.isClientSide && leaves.progress > 0.6f) { + ++leaves.spreadTimer; + + // Attempt to spread and reset the timer + if (leaves.spreadTimer >= SPREAD_INTERVAL) { + leaves.trySpread(); + leaves.spreadTimer = level.random.nextInt(10); + } + } + } + } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/LavaCrucibleBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/LavaCrucibleBlockEntity.java index 2a1cf990..69bdd91c 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/LavaCrucibleBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/LavaCrucibleBlockEntity.java @@ -16,7 +16,7 @@ import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; public class LavaCrucibleBlockEntity extends AbstractCrucibleBlockEntity { public static final Cache RECIPES_CACHE = CacheBuilder.newBuilder().maximumSize(12).build(); - // todo split this off somewhere else + // todo add KubeJS support for this private static final Object2IntMap HEAT_REGISTRY = new Object2IntOpenHashMap<>(); static { @@ -29,7 +29,6 @@ public class LavaCrucibleBlockEntity extends AbstractCrucibleBlockEntity { HEAT_REGISTRY.put(Blocks.SOUL_FIRE, 7); } - public LavaCrucibleBlockEntity(BlockPos pos, BlockState state) { super(EBlockEntities.LAVA_CRUCIBLE.get(), pos, state); } @@ -43,7 +42,7 @@ public class LavaCrucibleBlockEntity extends AbstractCrucibleBlockEntity { @Override protected RecipeType getRecipeType() { - return ERecipeTypes.LAVA_CRUCIBLE; + return ERecipeTypes.LAVA_CRUCIBLE.get(); } @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/RecipeUtil.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/RecipeUtil.java index 49ac7704..6e4ed79e 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/RecipeUtil.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/RecipeUtil.java @@ -6,7 +6,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeType; import thedarkcolour.exnihiloreborn.recipe.SingleIngredientRecipe; -import thedarkcolour.exnihiloreborn.recipe.sieve.AbstractSieveRecipe; +import thedarkcolour.exnihiloreborn.recipe.sieve.SieveRecipe; import java.util.ArrayList; import java.util.Collection; @@ -14,7 +14,7 @@ import java.util.Collections; import java.util.List; public final class RecipeUtil { - public static List getSieveResults(MinecraftServer server, RecipeType type, ItemStack mesh, ItemStack item) { + public static List getSieveResults(MinecraftServer server, RecipeType type, ItemStack mesh, ItemStack item) { ArrayList recipes = new ArrayList<>(); for (T recipe : byType(server, type)) { diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/SieveBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/SieveBlockEntity.java index 5e91657e..2d3e4506 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/SieveBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/SieveBlockEntity.java @@ -17,7 +17,7 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; import thedarkcolour.exnihiloreborn.recipe.Reward; -import thedarkcolour.exnihiloreborn.recipe.sieve.AbstractSieveRecipe; +import thedarkcolour.exnihiloreborn.recipe.sieve.SieveRecipe; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.EItems; import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; @@ -37,7 +37,7 @@ public class SieveBlockEntity extends EBlockEntity { // Does not persist in NBT, just a cache // todo invalidate on /reload - private List currentRecipe = Collections.emptyList(); + private List currentRecipe = Collections.emptyList(); public SieveBlockEntity(BlockPos pos, BlockState state) { super(EBlockEntities.SIEVE.get(), pos, state); @@ -100,7 +100,7 @@ public class SieveBlockEntity extends EBlockEntity { if (!isClientSide) { // Check against cached recipe if (!currentRecipe.isEmpty()) { - for (AbstractSieveRecipe recipe : currentRecipe) { + for (SieveRecipe recipe : currentRecipe) { if (!recipe.test(mesh.getItem(), playerItem)) { return InteractionResult.CONSUME; } @@ -114,7 +114,7 @@ public class SieveBlockEntity extends EBlockEntity { } } } else { - // todo mesh efficiency + // todo mesh efficiency enchantment progress -= SIEVE_INTERVAL; if (progress <= 0) { @@ -140,7 +140,7 @@ public class SieveBlockEntity extends EBlockEntity { var pos = getBlockPos(); var rand = level.random; - for (AbstractSieveRecipe recipe : currentRecipe) { + for (SieveRecipe recipe : currentRecipe) { for (Reward reward : recipe.getRewards()) { if (rand.nextFloat() < reward.getChance()) { var itemEntity = new ItemEntity(level, pos.getX() + 0.5, pos.getY() + 1.5, pos.getZ() + 0.5, reward.getItem().copy()); @@ -167,12 +167,12 @@ public class SieveBlockEntity extends EBlockEntity { return item.getStackInSlot(0); } - public List getResults(ItemStack stack) { + public List getResults(ItemStack stack) { return RecipeUtil.getSieveResults(level.getServer(), getRecipeType(), mesh, stack); } - public RecipeType getRecipeType() { - return ERecipeTypes.SIEVE; + public RecipeType getRecipeType() { + return ERecipeTypes.SIEVE.get(); } private class ItemHandler extends ItemStackHandler { diff --git a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/WaterCrucibleBlockEntity.java b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/WaterCrucibleBlockEntity.java index 78b55723..f37b3244 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/blockentity/WaterCrucibleBlockEntity.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/blockentity/WaterCrucibleBlockEntity.java @@ -2,23 +2,20 @@ package thedarkcolour.exnihiloreborn.blockentity; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; import net.minecraft.core.BlockPos; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import org.apache.commons.lang3.tuple.Pair; import thedarkcolour.exnihiloreborn.recipe.crucible.CrucibleRecipe; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; public class WaterCrucibleBlockEntity extends AbstractCrucibleBlockEntity { - public static final Cache, CrucibleRecipe> RECIPES_CACHE = CacheBuilder.newBuilder().maximumSize(12).build(); + public static final Cache RECIPES_CACHE = CacheBuilder.newBuilder().maximumSize(12).build(); public WaterCrucibleBlockEntity(BlockPos pos, BlockState state) { super(EBlockEntities.WATER_CRUCIBLE.get(), pos, state); @@ -31,7 +28,7 @@ public class WaterCrucibleBlockEntity extends AbstractCrucibleBlockEntity { @Override protected RecipeType getRecipeType() { - return ERecipeTypes.WATER_CRUCIBLE; + return ERecipeTypes.WATER_CRUCIBLE.get(); } @Override diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/ClientHandler.java b/src/main/java/thedarkcolour/exnihiloreborn/client/ClientHandler.java index 100508be..325de224 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/client/ClientHandler.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/client/ClientHandler.java @@ -1,89 +1,63 @@ package thedarkcolour.exnihiloreborn.client; -import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.texture.NativeImage; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.item.Item; -import net.minecraft.item.Items; +import net.minecraft.util.Mth; +import net.minecraftforge.client.event.ClientPlayerNetworkEvent; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.ForgeRegistries; import thedarkcolour.exnihiloreborn.client.ter.BarrelRenderer; import thedarkcolour.exnihiloreborn.client.ter.CrucibleRenderer; import thedarkcolour.exnihiloreborn.client.ter.InfestedLeavesRenderer; import thedarkcolour.exnihiloreborn.client.ter.SieveRenderer; +import thedarkcolour.exnihiloreborn.network.ClientMessageHandler; import thedarkcolour.exnihiloreborn.registry.EBlockEntities; import thedarkcolour.exnihiloreborn.registry.EFluids; +import java.awt.Color; + public class ClientHandler { public static void register() { - IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); + var modBus = FMLJavaModLoadingContext.get().getModEventBus(); + var fmlBus = MinecraftForge.EVENT_BUS; modBus.addListener(ClientHandler::clientSetup); - modBus.addListener(ClientHandler::stitchTextures); - modBus.addListener(ClientHandler::postStitchTextures); + modBus.addListener(ClientHandler::registerRenderers); + fmlBus.addListener(ClientHandler::onPlayerRespawn); + fmlBus.addListener(ClientHandler::onPlayerLogout); } private static void clientSetup(FMLClientSetupEvent event) { - // not sure why this isn't in render layers? - bindTers(); - event.enqueueWork(ClientHandler::setRenderLayers); } - private static void stitchTextures(TextureStitchEvent.Pre event) { - if (event.getMap().location().equals(PlayerContainer.BLOCK_ATLAS)) { - event.addSprite(BarrelRenderer.COMPOST_DIRT_TEXTURE); + private static void onPlayerRespawn(ClientPlayerNetworkEvent.Clone event) { + if (ClientMessageHandler.isInVoidWorld) { + ClientMessageHandler.disableVoidFogRendering(); } } - @SuppressWarnings("resource") - private static void postStitchTextures(TextureStitchEvent.Post event) { - if (event.getMap().location().equals(PlayerContainer.BLOCK_ATLAS)) { - int x = - try (NativeImage image = new NativeImage(x, y, false)) { - GlStateManager._bindTexture(event.getMap().getId()); - // alpha doesn't matter, only RGB - image.downloadTexture(0, false); - - for (Item item : ForgeRegistries.ITEMS) { - IBakedModel model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel(Items.HOPPER); - - if (model != null) { - TextureAtlasSprite sprite = model.getParticleTexture(EmptyModelData.INSTANCE); - - if (sprite.atlas() == event.getMap()) { - - continue; - } - } - // put default color - } - } - } + private static void onPlayerLogout(ClientPlayerNetworkEvent.LoggingOut event) { + ClientMessageHandler.isInVoidWorld = false; } private static void registerRenderers(EntityRenderersEvent.RegisterRenderers event) { - event.registerBlockEntityRenderer(EBlockEntities.INFESTED_LEAVES.get(), InfestedLeavesRenderer::new); + event.registerBlockEntityRenderer(EBlockEntities.INFESTED_LEAVES.get(), ctx -> new InfestedLeavesRenderer()); event.registerBlockEntityRenderer(EBlockEntities.BARREL.get(), BarrelRenderer::new); - event.registerBlockEntityRenderer(EBlockEntities.LAVA_CRUCIBLE.get(), CrucibleRenderer::new); - event.registerBlockEntityRenderer(EBlockEntities.WATER_CRUCIBLE.get(), CrucibleRenderer::new); + event.registerBlockEntityRenderer(EBlockEntities.LAVA_CRUCIBLE.get(), ctx -> new CrucibleRenderer()); + event.registerBlockEntityRenderer(EBlockEntities.WATER_CRUCIBLE.get(), ctx -> new CrucibleRenderer()); event.registerBlockEntityRenderer(EBlockEntities.SIEVE.get(), SieveRenderer::new); } private static void setRenderLayers() { // Fluids - RenderTypeLookup.setRenderLayer(EFluids.WITCH_WATER.get(), RenderType.translucent()); - RenderTypeLookup.setRenderLayer(EFluids.WITCH_WATER_FLOWING.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(EFluids.WITCH_WATER_STILL.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(EFluids.WITCH_WATER_FLOWING.get(), RenderType.translucent()); + } + + public static Color getRainbowColor(long time, float partialTicks) { + return Color.getHSBColor((180 * Mth.sin((time + partialTicks) / 16.0f) - 180) / 360.0f, 0.7f, 0.8f); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/CompostColors.java b/src/main/java/thedarkcolour/exnihiloreborn/client/CompostColors.java new file mode 100644 index 00000000..0b96a9ff --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/client/CompostColors.java @@ -0,0 +1,169 @@ +package thedarkcolour.exnihiloreborn.client; + +import com.mojang.blaze3d.platform.GlStateManager; +import com.mojang.blaze3d.platform.NativeImage; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.Item; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.registries.ForgeRegistries; +import org.joml.Vector3i; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +import java.awt.Color; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.StringTokenizer; + +// ExNihiloReborn comes with a precomputed list of vanilla colors, since textures don't exist on the server. +// However, modded textures usually DO exist on the server, so their colors can be computed by the server once +// and stored in a cache file which is regenerated whenever number of mods or versions of mods change. +public class CompostColors { + public static final String VANILLA_COMPOST_COLORS_FILE = "vanilla_compost_colors.txt"; + + public static final Object2ObjectMap COLORS = new Object2ObjectOpenHashMap<>(); + + public static void loadColors() { + COLORS.clear(); + + loadVanilla(); + loadModded(); + } + + private static void loadModded() { + + } + + public static boolean isLoaded() { + return COLORS.isEmpty(); + } + + private static void loadVanilla() { + var vanillaColors = ModList.get().getModFileById(ExNihiloReborn.ID).getFile().findResource(CompostColors.VANILLA_COMPOST_COLORS_FILE); + + if (!Files.exists(vanillaColors)) { + if (ExNihiloReborn.DEBUG) { + computeVanilla(); + exportVanilla(); + } else { + ExNihiloReborn.LOGGER.error("Failed to load vanilla colors!"); + } + } else { + readVanilla(vanillaColors); + } + } + + private static void readVanilla(Path vanillaColors) { + try (var stream = Files.newInputStream(vanillaColors)) { + try (var streamReader = new InputStreamReader(stream)) { + try (var reader = new BufferedReader(streamReader)) { + String line; + + while ((line = reader.readLine()) != null) { + var tokenizer = new StringTokenizer(line, ", #"); + var item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(tokenizer.nextToken())); + String token = tokenizer.nextToken(); + var color = Integer.parseInt(token, 16); + + if (item != null) { + COLORS.put(item, new Vector3i( + (color >> 16) & 255, + (color >> 8) & 255, + (color) & 255 + )); + } + } + } + } + } catch (IOException e) { + ExNihiloReborn.LOGGER.error("Error reading vanilla colors file", e); + } + } + + private static void computeVanilla() { + var atlas = Minecraft.getInstance().getModelManager().getAtlas(InventoryMenu.BLOCK_ATLAS); + int atlasWidth = atlas.width; + int atlasHeight = atlas.height; + + try (var image = new NativeImage(atlasWidth, atlasHeight, false)) { + // should already be bound but just in case + GlStateManager._bindTexture(atlas.getId()); + // alpha doesn't matter, only RGB + image.downloadTexture(0, false); + + for (var entry : ForgeRegistries.ITEMS.getEntries()) { + var item = entry.getValue(); + var model = Minecraft.getInstance().getItemRenderer().getItemModelShaper().getItemModel(item); + + if (model != null) { + var sprite = model.getParticleIcon(ModelData.EMPTY); + + if (sprite.atlasLocation().equals(InventoryMenu.BLOCK_ATLAS)) { + int width = sprite.contents().width(); + int height = sprite.contents().height(); + int pixels = 0; + int r = 0; + int g = 0; + int b = 0; + + for (int i = sprite.x; i < sprite.x + width; i++) { + for (int j = sprite.y; j < sprite.y + height; j++) { + int pixel = image.getPixelRGBA(i, j); + if (pixel != 0) { + // bgr because Minecraft has the pixels backwards + b += (pixel >> 16) & 0xff; + g += (pixel >> 8) & 0xff; + r += (pixel) & 0xff; + pixels++; + } + } + } + + if (pixels > 0 && (r | g | b) != 0) { + Color c = new Color(r / pixels, g / pixels, b / pixels).brighter(); + Vector3i color = new Vector3i(c.getRed(), c.getGreen(), c.getBlue()); + ExNihiloReborn.LOGGER.debug("Item '{}' has color ({}, {}, {})\n", entry.getKey().location(), color.x, color.y, color.z); + CompostColors.COLORS.put(item, color); + } + } + } + } + } + } + + public static void exportVanilla() { + var path = Paths.get(CompostColors.VANILLA_COMPOST_COLORS_FILE); + try { + var file = path.toFile(); + + if ((file.exists() && file.delete()) || file.createNewFile()) { + try (var fileWriter = new FileWriter(file)) { + try (var writer = new BufferedWriter(fileWriter)) { + for (var entry : CompostColors.COLORS.object2ObjectEntrySet()) { + var id = ForgeRegistries.ITEMS.getKey(entry.getKey()); + if (id.getNamespace().equals("minecraft")) { + writer.write(id.getPath()); + writer.write(", #"); + var colorVec = entry.getValue(); + writer.write(Integer.toHexString(new Color(colorVec.x, colorVec.y, colorVec.z).getRGB() & 0xffffff)); + writer.write('\n'); + } + } + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/ItemColors.java b/src/main/java/thedarkcolour/exnihiloreborn/client/ItemColors.java deleted file mode 100644 index e9c0057c..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/client/ItemColors.java +++ /dev/null @@ -1,9 +0,0 @@ -package thedarkcolour.exnihiloreborn.client; - -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import net.minecraft.item.Item; - -public class ItemColors { - public static final Object2IntMap STATIC_COLORS = new Object2IntOpenHashMap<>(); -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/BarrelRenderer.java b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/BarrelRenderer.java index 413b45a7..806c7cb8 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/BarrelRenderer.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/BarrelRenderer.java @@ -1,7 +1,9 @@ package thedarkcolour.exnihiloreborn.client.ter; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.BlockRenderDispatcher; @@ -9,24 +11,27 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.BlockItem; import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.fluids.FluidStack; import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.blockentity.BarrelBlockEntity; +import thedarkcolour.exnihiloreborn.client.ClientHandler; public class BarrelRenderer implements BlockEntityRenderer { public static final ResourceLocation COMPOST_DIRT_TEXTURE = new ResourceLocation(ExNihiloReborn.ID, "block/compost_dirt"); private final BlockRenderDispatcher blockRenderer; - public BarrelRenderer(BlockEntityRendererProvider.Context context) { - this.blockRenderer = context.getBlockRenderDispatcher(); + public BarrelRenderer(BlockEntityRendererProvider.Context ctx) { + this.blockRenderer = ctx.getBlockRenderDispatcher(); } @Override - public void render(BarrelBlockEntity barrel, float pPartialTick, PoseStack stack, MultiBufferSource buffers, int light, int overlay) { + public void render(BarrelBlockEntity barrel, float partialTicks, PoseStack stack, MultiBufferSource buffers, int light, int overlay) { var item = barrel.getItem().getItem(); // render an output @@ -39,60 +44,40 @@ public class BarrelRenderer implements BlockEntityRenderer { stack.scale(12 / 16f, 12 / 16f, 12 / 16f); blockRenderer.renderSingleBlock(state, stack, buffers, light, overlay, ModelData.EMPTY, null); + + stack.popPose(); } else { // todo render a flat item } barrel.getCapability(ForgeCapabilities.FLUID_HANDLER).ifPresent(tank -> { - var stack = tank.getFluidInTank(0); - }); - } - - @Override - public void render(BarrelBlockEntity barrel, float partialTicks, MatrixStack stack, IRenderTypeBuffer buffers, int light, int overlay) { - Item item = barrel.getItem().getItem(); - - // render an output - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - BlockState state = block.defaultBlockState(); - - stack.pushPose(); - stack.translate(2.0f / 16.0f, 2.0f / 16.0f, 2.0f / 16.0f); - stack.scale(12.0f / 16.0f, 12.0f / 16.0f, 12.0f / 16.0f); - - Minecraft.getInstance().getBlockRenderer().renderBlock(state, stack, buffers, light, overlay, EmptyModelData.INSTANCE); - - stack.popPose(); - } - // render a fluid - barrel.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY).ifPresent(tank -> { - FluidStack fluidStack = tank.getFluidInTank(0); + var fluidStack = tank.getFluidInTank(0); if (!fluidStack.isEmpty()) { // Get texture - Fluid fluidType = fluidStack.getFluid(); - World level = barrel.getLevel(); - BlockPos blockPos = barrel.getBlockPos(); - TextureAtlasSprite sprite = ForgeHooksClient.getFluidSprites(level, blockPos, fluidType.defaultFluidState())[0]; + var fluid = fluidStack.getFluid(); + var level = barrel.getLevel(); + var blockPos = barrel.getBlockPos(); + var sprite = ForgeHooksClient.getFluidSprites(level, blockPos, fluid.defaultFluidState())[0]; // Get color - int col = fluidType.getAttributes().getColor(level, blockPos); + var col = IClientFluidTypeExtensions.of(fluid).getTintColor(fluidStack); // Split into RGB components - int r = (col >> 16) & 0xff; - int g = (col >> 8) & 0xff; - int b = (col >> 0) & 0xff; + var r = (col >> 16) & 0xff; + var g = (col >> 8) & 0xff; + var b = (col >> 0) & 0xff; if (barrel.isBrewing()) { float progress = barrel.progress; // Transition between water color and witch water color (551ec6) - r = (int) MathHelper.lerp(progress, r, 85); - g = (int) MathHelper.lerp(progress, g, 30); - b = (int) MathHelper.lerp(progress, b, 198); + r = (int) Mth.lerp(progress, r, 85); + g = (int) Mth.lerp(progress, g, 30); + b = (int) Mth.lerp(progress, b, 198); } + // Setup rendering - IVertexBuilder builder = buffers.getBuffer(RenderTypeLookup.canRenderInLayer(fluidType.defaultFluidState(), RenderType.translucent()) ? RenderType.translucent() : RenderType.solid()); + var builder = buffers.getBuffer(ItemBlockRenderTypes.getRenderLayer(fluid.defaultFluidState())); renderContents(builder, stack, fluidStack.getAmount() / 1000.0f, r, g, b, sprite, light, 2.0f, 1.0f, 14.0f); } @@ -100,27 +85,38 @@ public class BarrelRenderer implements BlockEntityRenderer { // render compost if (barrel.compost > 0) { - TextureAtlasSprite sprite = Minecraft.getInstance().getTextureAtlas(PlayerContainer.BLOCK_ATLAS).apply(COMPOST_DIRT_TEXTURE); - IVertexBuilder builder = buffers.getBuffer(RenderType.solid()); + var sprite = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(COMPOST_DIRT_TEXTURE); + var builder = buffers.getBuffer(RenderType.solid()); float compostProgress = barrel.progress; + int r, g, b; + + if (ExNihiloReborn.IS_JUNE && barrel.getLevel() != null) { + var rainbow = ClientHandler.getRainbowColor(barrel.getLevel().getGameTime(), partialTicks); + r = rainbow.getRed(); + g = rainbow.getGreen(); + b = rainbow.getBlue(); + } else { + r = barrel.r; + g = barrel.g; + b = barrel.b; + } - // todo custom compost colors // Transition between default green and dirt brown - int r = (int) MathHelper.lerp(compostProgress, 53, 238); - int g = (int) MathHelper.lerp(compostProgress, 168, 169); - int b = (int) MathHelper.lerp(compostProgress, 42, 109); + r = (int) Mth.lerp(compostProgress, r, 238); // default green is + g = (int) Mth.lerp(compostProgress, g, 169); // default green is + b = (int) Mth.lerp(compostProgress, b, 109); // default green is renderContents(builder, stack, barrel.compost / 1000.0f, r, g, b, sprite, light, 2.0f, 1.0f, 14.0f); } } - public static void renderContents(IVertexBuilder builder, MatrixStack stack, float percentage, int color, TextureAtlasSprite sprite, int light, float edge, float yMin, float yMax) { + public static void renderContents(VertexConsumer builder, PoseStack stack, float percentage, int color, TextureAtlasSprite sprite, int light, float edge, float yMin, float yMax) { renderContents(builder, stack, percentage, (color >> 16) & 0xff, (color >> 8) & 0xff, (color >> 0) & 0xff, sprite, light, edge, yMin, yMax); } // Renders a sprite inside the barrel with the height determined by how full the barrel is. - public static void renderContents(IVertexBuilder builder, MatrixStack stack, float percentage, int r, int g, int b, TextureAtlasSprite sprite, int light, float edge, float yMin, float yMax) { + public static void renderContents(VertexConsumer builder, PoseStack stack, float percentage, int r, int g, int b, TextureAtlasSprite sprite, int light, float edge, float yMin, float yMax) { // Height float height = ((yMax - yMin) / 16.0f) * percentage; @@ -128,15 +124,14 @@ public class BarrelRenderer implements BlockEntityRenderer { stack.pushPose(); stack.translate(0.0, yMin / 16.0, 0.0); - // Render quad - renderQuad(builder, stack, height, r, g, b, sprite, light, edge); + putQuad(builder, stack, height, r, g, b, sprite, light, edge); stack.popPose(); } // Renders a sprite - private static void renderQuad(IVertexBuilder builder, MatrixStack stack, float quadHeight, int r, int g, int b, TextureAtlasSprite sprite, int light, float edge) { - Matrix4f pose = stack.last().pose(); + private static void putQuad(VertexConsumer builder, PoseStack stack, float quadHeight, int r, int g, int b, TextureAtlasSprite sprite, int light, float edge) { + var pose = stack.last().pose(); // Texture coordinates float uMin = sprite.getU0(); diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/CrucibleRenderer.java b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/CrucibleRenderer.java index b57a4ef8..771eb47c 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/CrucibleRenderer.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/CrucibleRenderer.java @@ -3,81 +3,90 @@ package thedarkcolour.exnihiloreborn.client.ter; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import net.minecraft.block.Block; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.fluid.Fluid; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.levelgen.LegacyRandomSource; import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.registries.ForgeRegistries; import thedarkcolour.exnihiloreborn.blockentity.AbstractCrucibleBlockEntity; -public class CrucibleRenderer extends TileEntityRenderer { - public static final LoadingCache TOP_TEXTURES = CacheBuilder.newBuilder().maximumSize(30).build(new CacheLoader() { +public class CrucibleRenderer implements BlockEntityRenderer { + public static final int TEXTURE_CACHE = 10; + public static final LoadingCache TOP_TEXTURES = CacheBuilder.newBuilder().weakValues().maximumSize(30).build(new CacheLoader<>() { @Override - public ResourceLocation load(Block key) { - ResourceLocation registryName = key.getRegistryName(); - return new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath()); + public TextureAtlasSprite load(Block key) { + ResourceLocation registryName = ForgeRegistries.BLOCKS.getKey(key); + var textureLoc = new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath()); + var sprite = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(textureLoc); + // for stuff like azalea bush + if (sprite.contents().name() == MissingTextureAtlasSprite.getLocation()) { + textureLoc = new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath() + "_top"); + } + return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(textureLoc); } }); - public static final LoadingCache TOP_LAYERS = CacheBuilder.newBuilder().maximumSize(30).build(new CacheLoader() { + public static final LoadingCache TOP_RENDER_TYPES = CacheBuilder.newBuilder().maximumSize(10).build(new CacheLoader<>() { @Override public RenderType load(Block key) { - return RenderType.chunkBufferLayers().stream().filter(layer -> RenderTypeLookup.canRenderInLayer(key.defaultBlockState(), layer)).findFirst().get(); + var rand = new LegacyRandomSource(key.hashCode()); + var blockTypes = Minecraft.getInstance().getBlockRenderer().getBlockModel(key.defaultBlockState()).getRenderTypes(key.defaultBlockState(), rand, ModelData.EMPTY); + return RenderType.chunkBufferLayers().stream().filter(blockTypes::contains).findFirst().get(); } }); - public CrucibleRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - @Override - public void render(AbstractCrucibleBlockEntity crucible, float partialTicks, MatrixStack stack, IRenderTypeBuffer buffers, int light, int overlay) { - crucible.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY).ifPresent(tank -> { - FluidStack fluidStack = tank.getFluidInTank(0); + public void render(AbstractCrucibleBlockEntity crucible, float partialTicks, PoseStack stack, MultiBufferSource buffers, int light, int overlay) { + crucible.getCapability(ForgeCapabilities.FLUID_HANDLER).ifPresent(tank -> { + var fluidStack = tank.getFluidInTank(0); - float solids = (float) crucible.getSolids() / (float) AbstractCrucibleBlockEntity.MAX_SOLIDS; - float liquid = (float) fluidStack.getAmount() / (float) tank.getTankCapacity(0); + var solids = (float) crucible.getSolids() / (float) AbstractCrucibleBlockEntity.MAX_SOLIDS; + var liquid = (float) fluidStack.getAmount() / (float) tank.getTankCapacity(0); if (solids != 0 || liquid != 0) { - World level = crucible.getLevel(); - BlockPos blockPos = crucible.getBlockPos(); + var level = crucible.getLevel(); + var blockPos = crucible.getBlockPos(); - IVertexBuilder builder; + VertexConsumer builder; TextureAtlasSprite sprite; float percentage; + int col; - if (solids != 0) { - percentage = solids; - builder = buffers.getBuffer(TOP_LAYERS.getUnchecked(crucible.getLastMelted())); - sprite = Minecraft.getInstance().getTextureAtlas(PlayerContainer.BLOCK_ATLAS).apply(TOP_TEXTURES.getUnchecked(crucible.getLastMelted())); + // Solids will render on top + if (liquid != 0) { + var fluid = fluidStack.getFluid(); - int col = Minecraft.getInstance().getBlockColors().getColor(crucible.getLastMelted().defaultBlockState(), level, blockPos, 0); + percentage = liquid; + builder = buffers.getBuffer(ItemBlockRenderTypes.getRenderLayer(fluid.defaultFluidState())); + sprite = ForgeHooksClient.getFluidSprites(level, blockPos, fluid.defaultFluidState())[0]; - if (col == -1) col = 0xffffff; + // Set biome colors + col = IClientFluidTypeExtensions.of(fluid).getTintColor(fluidStack); BarrelRenderer.renderContents(builder, stack, percentage, col, sprite, light, 2.0f, 4.0f, 14.0f); } - if (liquid != 0) { - Fluid fluidType = fluidStack.getFluid(); + if (solids != 0){ + percentage = solids; + builder = buffers.getBuffer(TOP_RENDER_TYPES.getUnchecked(crucible.getLastMelted())); + sprite = TOP_TEXTURES.getUnchecked(crucible.getLastMelted()); - percentage = liquid; - builder = buffers.getBuffer(RenderTypeLookup.canRenderInLayer(fluidType.defaultFluidState(), RenderType.translucent()) ? RenderType.translucent() : RenderType.solid()); - sprite = ForgeHooksClient.getFluidSprites(level, blockPos, fluidType.defaultFluidState())[0]; + col = Minecraft.getInstance().getBlockColors().getColor(crucible.getLastMelted().defaultBlockState(), level, blockPos, 0); - // Set biome colors - int col = fluidType.getAttributes().getColor(level, blockPos); + if (col == -1) col = 0xffffff; BarrelRenderer.renderContents(builder, stack, percentage, col, sprite, light, 2.0f, 4.0f, 14.0f); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/InfestedLeavesRenderer.java b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/InfestedLeavesRenderer.java index 89d12fa3..a48ecbc5 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/client/ter/InfestedLeavesRenderer.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/client/ter/InfestedLeavesRenderer.java @@ -1,34 +1,27 @@ package thedarkcolour.exnihiloreborn.client.ter; -import com.mojang.blaze3d.matrix.MatrixStack; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; +import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.util.Mth; +import net.minecraft.world.level.block.Blocks; +import net.minecraftforge.client.RenderTypeHelper; +import net.minecraftforge.client.model.data.ModelData; import thedarkcolour.exnihiloreborn.blockentity.InfestedLeavesBlockEntity; -public class InfestedLeavesRenderer extends TileEntityRenderer { - public InfestedLeavesRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - +public class InfestedLeavesRenderer implements BlockEntityRenderer { @Override - public void render(InfestedLeavesBlockEntity te, float partialTicks, MatrixStack stack, IRenderTypeBuffer buffer, int light, int overlay) { - Minecraft mc = Minecraft.getInstance(); - BlockState state = te.getMimic(); + public void render(InfestedLeavesBlockEntity te, float partialTicks, PoseStack stack, MultiBufferSource buffer, int light, int overlay) { + var mc = Minecraft.getInstance(); + var state = te.getMimic(); // Default to oak leaves if (state == null) state = Blocks.OAK_LEAVES.defaultBlockState(); // If something is wrong render default leaves if (!te.hasLevel()) { - Minecraft.getInstance().getBlockRenderer().renderBlock(state, stack, buffer, light, overlay, EmptyModelData.INSTANCE); + Minecraft.getInstance().getBlockRenderer().renderSingleBlock(state, stack, buffer, light, overlay, ModelData.EMPTY, null); return; } @@ -39,9 +32,9 @@ public class InfestedLeavesRenderer extends TileEntityRenderer> 16) & 0xff, 255.0f); - float g = MathHelper.lerp(progress, (col >> 8 ) & 0xff, 255.0f); - float b = MathHelper.lerp(progress, (col >> 0 ) & 0xff, 255.0f); + float r = Mth.lerp(progress, (col >> 16) & 0xff, 255.0f); + float g = Mth.lerp(progress, (col >> 8 ) & 0xff, 255.0f); + float b = Mth.lerp(progress, (col) & 0xff, 255.0f); // Cap to 255 float red = (Math.min(255, r)) / 255.0f; @@ -49,7 +42,9 @@ public class InfestedLeavesRenderer extends TileEntityRenderer { - public SieveRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } +public class SieveRenderer implements BlockEntityRenderer { + public SieveRenderer(BlockEntityRendererProvider.Context ctx) {} @Override - public void render(SieveBlockEntity sieve, float partialTicks, MatrixStack stack, IRenderTypeBuffer buffers, int light, int overlay) { - ItemStack contents = sieve.getItem(); + public void render(SieveBlockEntity sieve, float partialTicks, PoseStack stack, MultiBufferSource buffers, int light, int overlay) { + var contents = sieve.getItem(); - if (!contents.isEmpty() && contents.getItem() instanceof BlockItem) { - BlockItem item = (BlockItem) contents.getItem(); - float percentage = (float) sieve.getProgress() / 100.0f; - IVertexBuilder builder = buffers.getBuffer(CrucibleRenderer.TOP_LAYERS.getUnchecked(item.getBlock())); - TextureAtlasSprite sprite = Minecraft.getInstance().getTextureAtlas(PlayerContainer.BLOCK_ATLAS).apply(CrucibleRenderer.TOP_TEXTURES.getUnchecked(item.getBlock())); + if (!contents.isEmpty() && contents.getItem() instanceof BlockItem blockItem) { + var block = blockItem.getBlock(); + var percentage = (float) sieve.getProgress() / 100.0f; + var builder = buffers.getBuffer(CrucibleRenderer.TOP_RENDER_TYPES.getUnchecked(block)); + var sprite = CrucibleRenderer.TOP_TEXTURES.getUnchecked(block); BarrelRenderer.renderContents(builder, stack, percentage, 0xffffff, sprite, light, 1.0f, 11.0f, 15.0f); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/BarrelCompostCategory.java b/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/BarrelCompostCategory.java new file mode 100644 index 00000000..62a8c479 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/BarrelCompostCategory.java @@ -0,0 +1,76 @@ +package thedarkcolour.exnihiloreborn.compat.jei; + +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.helpers.IJeiHelpers; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; +import thedarkcolour.exnihiloreborn.block.EBlock; +import thedarkcolour.exnihiloreborn.data.TranslationKeys; +import thedarkcolour.exnihiloreborn.recipe.barrel.BarrelCompostRecipe; +import thedarkcolour.exnihiloreborn.registry.EBlocks; + +import java.util.Arrays; + +public class BarrelCompostCategory implements IRecipeCategory { + public static final int WIDTH = 120; + public static final int HEIGHT = 18; + + private final IDrawable background; + private final IDrawable slot; + private final IDrawable icon; + private final Component localizedName; + + public BarrelCompostCategory(IJeiHelpers helpers) { + IGuiHelper guiHelpers = helpers.getGuiHelper(); + + this.background = guiHelpers.createBlankDrawable(WIDTH, HEIGHT); + this.slot = guiHelpers.getSlotDrawable(); + this.icon = guiHelpers.createDrawableItemStack(new ItemStack(EBlocks.OAK_BARREL.get())); + this.localizedName = Component.translatable(TranslationKeys.BARREL_COMPOST_CATEGORY_TITLE); + } + + @Override + public RecipeType getRecipeType() { + return ExNihiloRebornJeiPlugin.BARREL_COMPOST; + } + + @Override + public Component getTitle() { + return localizedName; + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, BarrelCompostRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 1).addIngredients(recipe.getIngredient()); + } + + @Override + public void draw(BarrelCompostRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + slot.draw(graphics); + + var volume = recipe.getVolume(); + var volumeLabel = Component.translatable(TranslationKeys.BARREL_COMPOST_RECIPE_VOLUME, volume); + + graphics.drawString(Minecraft.getInstance().font, volumeLabel, 24, 5, 0xff808080, false); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornJeiPlugin.java b/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornJeiPlugin.java new file mode 100644 index 00000000..6ad106ea --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornJeiPlugin.java @@ -0,0 +1,58 @@ +package thedarkcolour.exnihiloreborn.compat.jei; + +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.registration.IRecipeCatalystRegistration; +import mezz.jei.api.registration.IRecipeCategoryRegistration; +import mezz.jei.api.registration.IRecipeRegistration; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.data.TranslationKeys; +import thedarkcolour.exnihiloreborn.recipe.barrel.BarrelCompostRecipe; +import thedarkcolour.exnihiloreborn.registry.EItems; +import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; + +import java.util.Objects; + +@JeiPlugin +public class ExNihiloRebornJeiPlugin implements IModPlugin { + public static final RecipeType BARREL_COMPOST = RecipeType.create(ExNihiloReborn.ID, "barrel_compost", BarrelCompostRecipe.class); + + @Override + public ResourceLocation getPluginUid() { + return new ResourceLocation(ExNihiloReborn.ID, "jei_plugin"); + } + + @Override + public void registerCategories(IRecipeCategoryRegistration registration) { + registration.addRecipeCategories(new BarrelCompostCategory(registration.getJeiHelpers())); + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addRecipeCatalyst(new ItemStack(EItems.OAK_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.SPRUCE_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.BIRCH_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.JUNGLE_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.ACACIA_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.DARK_OAK_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.MANGROVE_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.CHERRY_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.BAMBOO_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.CRIMSON_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.WARPED_BARREL.get()), BARREL_COMPOST); + registration.addRecipeCatalyst(new ItemStack(EItems.STONE_BARREL.get()), BARREL_COMPOST); + } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + registration.addIngredientInfo(new ItemStack(EItems.SILK_WORM.get()), VanillaTypes.ITEM_STACK, Component.translatable(TranslationKeys.SILK_WORM_JEI_INFO)); + registration.addRecipes(BARREL_COMPOST, Objects.requireNonNull(Minecraft.getInstance().level).getRecipeManager().getAllRecipesFor(ERecipeTypes.BARREL_COMPOST.get())); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornPlugin.java b/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornPlugin.java deleted file mode 100644 index f6d41d18..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/compat/jei/ExNihiloRebornPlugin.java +++ /dev/null @@ -1,20 +0,0 @@ -package thedarkcolour.exnihiloreborn.compat.jei; - -import mezz.jei.api.IModPlugin; -import mezz.jei.api.JeiPlugin; -import mezz.jei.api.registration.IRecipeCategoryRegistration; -import net.minecraft.util.ResourceLocation; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; - -@JeiPlugin -public class ExNihiloRebornPlugin implements IModPlugin { - @Override - public ResourceLocation getPluginUid() { - return new ResourceLocation(ExNihiloReborn.ID, "jei_plugin"); - } - - @Override - public void registerCategories(IRecipeCategoryRegistration registration) { - - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/compat/top/InfestedLeavesInfoProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/compat/top/InfestedLeavesInfoProvider.java index bafcb690..13c54fe6 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/compat/top/InfestedLeavesInfoProvider.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/compat/top/InfestedLeavesInfoProvider.java @@ -6,10 +6,10 @@ import mcjty.theoneprobe.api.IProbeInfo; import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; import mcjty.theoneprobe.api.TextStyleClass; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.blockentity.AbstractCrucibleBlockEntity; import thedarkcolour.exnihiloreborn.blockentity.BarrelBlockEntity; @@ -18,23 +18,21 @@ import thedarkcolour.exnihiloreborn.registry.EBlocks; public class InfestedLeavesInfoProvider implements IProbeInfoProvider { @Override - public String getID() { - return ExNihiloReborn.ID + ":infested_leaves"; + public ResourceLocation getID() { + return new ResourceLocation(ExNihiloReborn.ID, "infested_leaves"); } @Override - public void addProbeInfo(ProbeMode probeMode, IProbeInfo info, PlayerEntity playerEntity, World level, BlockState state, IProbeHitData data) { - TileEntity te = level.getBlockEntity(data.getPos()); + public void addProbeInfo(ProbeMode probeMode, IProbeInfo info, Player playerEntity, Level level, BlockState state, IProbeHitData data) { + var te = level.getBlockEntity(data.getPos()); if (state.getBlock() == EBlocks.INFESTED_LEAVES.get()) { - if (te instanceof InfestedLeavesBlockEntity) { int progress = (int) (((InfestedLeavesBlockEntity) te).getProgress() * 100.0f); info.text(CompoundText.create().style(TextStyleClass.LABEL).text("Progress: ").style(TextStyleClass.WARNING).text(progress + "%")); } - } else if (te instanceof BarrelBlockEntity) { - BarrelBlockEntity barrel = (BarrelBlockEntity) te; + } else if (te instanceof BarrelBlockEntity barrel) { short volume = barrel.compost; if (volume == 1000 || barrel.isBrewing()) { @@ -50,9 +48,7 @@ public class InfestedLeavesInfoProvider implements IProbeInfoProvider { info.text(CompoundText.create().style(TextStyleClass.ERROR).text("Burning! ").style(TextStyleClass.WARNING).text(progress / 20 + "s")); } - } else if (te instanceof AbstractCrucibleBlockEntity) { - AbstractCrucibleBlockEntity crucible = (AbstractCrucibleBlockEntity) te; - + } else if (te instanceof AbstractCrucibleBlockEntity crucible) { info.tankHandler(crucible.getTank()); info.text(CompoundText.create().style(TextStyleClass.LABEL).text("Rate: ").style(TextStyleClass.WARNING).text(crucible.getMelt() + "x")); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/compat/top/TopCompatExNihiloReborn.java b/src/main/java/thedarkcolour/exnihiloreborn/compat/top/TopCompatExNihiloReborn.java index 028f7fb2..ffb00de3 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/compat/top/TopCompatExNihiloReborn.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/compat/top/TopCompatExNihiloReborn.java @@ -6,8 +6,8 @@ import java.util.function.Function; public class TopCompatExNihiloReborn implements Function { @Override - public Void apply(ITheOneProbe iTheOneProbe) { - iTheOneProbe.registerProvider(new InfestedLeavesInfoProvider()); + public Void apply(ITheOneProbe top) { + top.registerProvider(new InfestedLeavesInfoProvider()); return null; } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/config/Config.java b/src/main/java/thedarkcolour/exnihiloreborn/config/Config.java new file mode 100644 index 00000000..5881e1cb --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/config/Config.java @@ -0,0 +1,37 @@ +package thedarkcolour.exnihiloreborn.config; + +import net.minecraftforge.common.ForgeConfigSpec; +import org.apache.commons.lang3.tuple.Pair; + +public class Config { + public static final ForgeConfigSpec SERVER_SPEC; + public static final ForgeConfigSpec CLIENT_SPEC; + public static final Server SERVER; + public static final Client CLIENT; + + public static class Server { + public Server(ForgeConfigSpec.Builder builder) { + builder.comment("Server configuration for Ex Nihilo Reborn") + .push("server"); + } + } + + public static class Client { + public Client(ForgeConfigSpec.Builder builder) { + + } + } + + static { + { + Pair specPair = new ForgeConfigSpec.Builder().configure(Server::new); + SERVER = specPair.getLeft(); + SERVER_SPEC = specPair.getRight(); + } + { + Pair specPair = new ForgeConfigSpec.Builder().configure(Client::new); + CLIENT = specPair.getLeft(); + CLIENT_SPEC = specPair.getRight(); + } + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/Advancements.java b/src/main/java/thedarkcolour/exnihiloreborn/data/Advancements.java new file mode 100644 index 00000000..44009b8d --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/Advancements.java @@ -0,0 +1,113 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.critereon.ImpossibleTrigger; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.PlayerTrigger; +import net.minecraft.advancements.critereon.RecipeCraftedTrigger; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Blocks; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.ForgeAdvancementProvider; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.registry.EItems; +import thedarkcolour.exnihiloreborn.tag.EItemTags; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.function.Consumer; + +import static net.minecraft.advancements.Advancement.Builder.advancement; +import static net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems; +import static net.minecraft.advancements.critereon.ItemPredicate.Builder.item; + +class Advancements extends ForgeAdvancementProvider { + public Advancements(PackOutput output, CompletableFuture registries, ExistingFileHelper existingFileHelper) { + super(output, registries, existingFileHelper, List.of(new CoreAchievements())); + } + + private static ResourceLocation modLoc(String path) { + return new ResourceLocation(ExNihiloReborn.ID, path); + } + + public static class CoreAchievements implements AdvancementGenerator { + @Override + public void generate(HolderLookup.Provider registries, Consumer saver, ExistingFileHelper helper) { + var root = advancement() + .display( + Blocks.OAK_SAPLING, + Component.translatable(TranslationKeys.ROOT_ADVANCEMENT_TITLE), + Component.translatable(TranslationKeys.ROOT_ADVANCEMENT_DESCRIPTION), + modLoc("textures/gui/advancements/backgrounds/void.png"), + FrameType.TASK, + true, + true, + false + ) + // hardcoded to EventHandler + .addCriterion("in_void_world", new ImpossibleTrigger.TriggerInstance()) + .save(saver, modLoc("core/root"), helper); + var crook = advancement() + .parent(root) + .display( + EItems.CROOK.get(), + Component.translatable(TranslationKeys.CROOK_ADVANCEMENT_TITLE), + Component.translatable(TranslationKeys.CROOK_ADVANCEMENT_DESCRIPTION), + null, + FrameType.TASK, + true, + true, + false + ) + .addCriterion("craft_crook", RecipeCraftedTrigger.TriggerInstance.craftedItem(EItems.CROOK.getId())) + .save(saver, modLoc("core/crook"), helper); + var barrel = advancement() + .parent(root) + .display( + EItems.OAK_BARREL.get(), + Component.translatable(TranslationKeys.BARREL_ADVANCEMENT_TITLE), + Component.translatable(TranslationKeys.BARREL_ADVANCEMENT_DESCRIPTION), + null, + FrameType.TASK, + true, + true, + false + ) + .addCriterion("has_barrel", hasItems(item().of(EItemTags.BARRELS).build())) + .save(saver, modLoc("core/barrel"), helper); + var silkWorm = advancement() + .parent(crook) + .display( + EItems.SILK_WORM.get(), + Component.translatable(TranslationKeys.SILK_WORM_ADVANCEMENT_TITLE), + Component.translatable(TranslationKeys.SILK_WORM_ADVANCEMENT_DESCRIPTION), + null, + FrameType.TASK, + true, + true, + false + ) + .addCriterion("has_silk_worm", hasItems(item().of(EItems.SILK_WORM.get()).build())) + .save(saver, modLoc("core/silk_worm"), helper); + var stringMesh = advancement() + .parent(silkWorm) + .display( + EItems.STRING_MESH.get(), + Component.translatable(TranslationKeys.STRING_MESH_ADVANCEMENT_TITLE), + Component.translatable(TranslationKeys.STRING_MESH_ADVANCEMENT_DESCRIPTION), + null, + FrameType.TASK, + true, + true, + false + ) + .addCriterion("has_string_mesh", hasItems(item().of(EItems.STRING_MESH.get()).build())) + .save(saver, modLoc("core/string_mesh"), helper); + } + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/BlockLoot.java b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockLoot.java new file mode 100644 index 00000000..b7f1b782 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockLoot.java @@ -0,0 +1,71 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.flag.FeatureFlagSet; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import thedarkcolour.exnihiloreborn.loot.InfestedStringCount; +import thedarkcolour.exnihiloreborn.registry.EBlocks; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.function.Supplier; + +class BlockLoot extends BlockLootSubProvider { + private final List added = new ArrayList<>(); + + protected BlockLoot() { + super(Set.of(), FeatureFlags.DEFAULT_FLAGS); + } + + @Override + protected void generate() { + add(EBlocks.INFESTED_LEAVES.get(), new LootTable.Builder() + .withPool(new LootPool.Builder() + .setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(Items.STRING).apply(InfestedStringCount.infestedString())))); + + addSelfDrops(); + } + + private void dropSelf(Supplier item) { + this.dropSelf(item.get()); + } + + private void addSelfDrops() { + dropSelf(EBlocks.DUST); + + dropSelf(EBlocks.COMPRESSED_COBBLESTONE); + dropSelf(EBlocks.COMPRESSED_DIRT); + dropSelf(EBlocks.COMPRESSED_SAND); + dropSelf(EBlocks.COMPRESSED_DUST); + + dropSelf(EBlocks.OAK_BARREL); + dropSelf(EBlocks.SPRUCE_BARREL); + dropSelf(EBlocks.BIRCH_BARREL); + dropSelf(EBlocks.JUNGLE_BARREL); + dropSelf(EBlocks.ACACIA_BARREL); + dropSelf(EBlocks.DARK_OAK_BARREL); + dropSelf(EBlocks.CRIMSON_BARREL); + dropSelf(EBlocks.WARPED_BARREL); + dropSelf(EBlocks.STONE_BARREL); + } + + @Override + protected Iterable getKnownBlocks() { + return added; + } + + @Override + protected void add(Block block, LootTable.Builder builder) { + super.add(block, builder); + added.add(block); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/BlockModels.java b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockModels.java new file mode 100644 index 00000000..ea9a85e7 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockModels.java @@ -0,0 +1,99 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraftforge.client.model.generators.BlockModelBuilder; +import net.minecraftforge.client.model.generators.ConfiguredModel; +import thedarkcolour.exnihiloreborn.registry.EBlocks; +import thedarkcolour.modkit.data.MKBlockModelProvider; + +class BlockModels { + public static void addBlockModels(MKBlockModelProvider models) { + models.simpleBlock(EBlocks.DUST.get()); + models.simpleBlock(EBlocks.CRUSHED_NETHERRACK.get()); + models.simpleBlock(EBlocks.CRUSHED_END_STONE.get()); + + // Barrels + barrel(models, EBlocks.OAK_BARREL.get(), Blocks.OAK_PLANKS); + barrel(models, EBlocks.SPRUCE_BARREL.get(), Blocks.SPRUCE_PLANKS); + barrel(models, EBlocks.BIRCH_BARREL.get(), Blocks.BIRCH_PLANKS); + barrel(models, EBlocks.JUNGLE_BARREL.get(), Blocks.JUNGLE_PLANKS); + barrel(models, EBlocks.ACACIA_BARREL.get(), Blocks.ACACIA_PLANKS); + barrel(models, EBlocks.DARK_OAK_BARREL.get(), Blocks.DARK_OAK_PLANKS); + barrel(models, EBlocks.MANGROVE_BARREL.get(), Blocks.MANGROVE_PLANKS); + barrel(models, EBlocks.CHERRY_BARREL.get(), Blocks.CHERRY_PLANKS); + barrel(models, EBlocks.BAMBOO_BARREL.get(), Blocks.BAMBOO_PLANKS); + barrel(models, EBlocks.CRIMSON_BARREL.get(), Blocks.CRIMSON_PLANKS); + barrel(models, EBlocks.WARPED_BARREL.get(), Blocks.WARPED_PLANKS); + barrel(models, EBlocks.STONE_BARREL.get(), Blocks.STONE); + + sieve(models, EBlocks.OAK_SIEVE.get(), Blocks.OAK_PLANKS); + sieve(models, EBlocks.SPRUCE_SIEVE.get(), Blocks.SPRUCE_PLANKS); + sieve(models, EBlocks.BIRCH_SIEVE.get(), Blocks.BIRCH_PLANKS); + sieve(models, EBlocks.JUNGLE_SIEVE.get(), Blocks.JUNGLE_PLANKS); + sieve(models, EBlocks.ACACIA_SIEVE.get(), Blocks.ACACIA_PLANKS); + sieve(models, EBlocks.DARK_OAK_SIEVE.get(), Blocks.DARK_OAK_PLANKS); + sieve(models, EBlocks.MANGROVE_SIEVE.get(), Blocks.MANGROVE_PLANKS); + sieve(models, EBlocks.CHERRY_SIEVE.get(), Blocks.CHERRY_PLANKS); + sieve(models, EBlocks.BAMBOO_SIEVE.get(), Blocks.BAMBOO_PLANKS); + sieve(models, EBlocks.CRIMSON_SIEVE.get(), Blocks.CRIMSON_PLANKS); + sieve(models, EBlocks.WARPED_SIEVE.get(), Blocks.WARPED_PLANKS); + + // Lava Crucible + crucible(models, EBlocks.UNFIRED_CRUCIBLE.get()); + crucible(models, EBlocks.PORCELAIN_CRUCIBLE.get()); + crucible(models, EBlocks.CRIMSON_CRUCIBLE.get(), Blocks.CRIMSON_STEM); + crucible(models, EBlocks.WARPED_CRUCIBLE.get(), Blocks.WARPED_STEM); + + // Water Crucible + crucible(models, EBlocks.OAK_CRUCIBLE.get(), Blocks.OAK_LOG); + crucible(models, EBlocks.SPRUCE_CRUCIBLE.get(), Blocks.SPRUCE_LOG); + crucible(models, EBlocks.BIRCH_CRUCIBLE.get(), Blocks.BIRCH_LOG); + crucible(models, EBlocks.JUNGLE_CRUCIBLE.get(), Blocks.JUNGLE_LOG); + crucible(models, EBlocks.ACACIA_CRUCIBLE.get(), Blocks.ACACIA_LOG); + crucible(models, EBlocks.DARK_OAK_CRUCIBLE.get(), Blocks.DARK_OAK_LOG); + crucible(models, EBlocks.MANGROVE_CRUCIBLE.get(), Blocks.MANGROVE_LOG); + crucible(models, EBlocks.CHERRY_CRUCIBLE.get(), Blocks.CHERRY_LOG); + crucible(models, EBlocks.BAMBOO_CRUCIBLE.get(), Blocks.BAMBOO_BLOCK); + } + + public static void crucible(MKBlockModelProvider models, Block block) { + crucible(models, block, block); + } + + public static void crucible(MKBlockModelProvider models, Block block, Block appearance) { + var texture = models.blockTexture(appearance); + + singleModel(models, block) + .parent(models.modFile("template_crucible")) + .texture("inside", texture) + .texture("top", texture) + .texture("bottom", texture) + .texture("side", texture); + } + + public static void barrel(MKBlockModelProvider models, Block block, Block appearance) { + singleModel(models, block) + .parent(models.modFile("template_barrel")) + .texture("barrel", models.blockTexture(appearance)); + } + + public static void sieve(MKBlockModelProvider models, Block block, Block appearance) { + singleModel(models, block) + .parent(models.modFile("template_sieve")) + .texture("texture", models.blockTexture(appearance)); + } + + public static BlockModelBuilder singleModel(MKBlockModelProvider models, Block block) { + BlockModelBuilder builder = blockModel(models, block); + + models.getVariantBuilder(block).partialState().addModels(new ConfiguredModel(builder)); + + return builder; + } + + + public static BlockModelBuilder blockModel(MKBlockModelProvider models, Block block) { + return models.models().getBuilder(models.name(block)); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/BlockTags.java b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockTags.java new file mode 100644 index 00000000..954ca1f2 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/BlockTags.java @@ -0,0 +1,20 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.data.BlockTagsProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; + +class BlockTags extends BlockTagsProvider { + public BlockTags(PackOutput output, CompletableFuture lookup, @Nullable ExistingFileHelper helper) { + super(output, lookup, ExNihiloReborn.ID, helper); + } + + @Override + protected void addTags(HolderLookup.Provider lookup) { + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/Data.java b/src/main/java/thedarkcolour/exnihiloreborn/data/Data.java index 8de46217..cc0732c0 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/Data.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/Data.java @@ -1,10 +1,13 @@ package thedarkcolour.exnihiloreborn.data; -import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.GatherDataEvent; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.modkit.data.DataHelper; // these two annotations basically mean modEventBus.addListener(Data::generateData) @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) @@ -12,20 +15,25 @@ public class Data { @SubscribeEvent public static void generateData(GatherDataEvent event) { // Two things used by data generators - DataGenerator gen = event.getGenerator(); // writes to json - ExistingFileHelper helper = event.getExistingFileHelper(); // reads existing files like pngs and parent models + var gen = event.getGenerator(); // writes to json + var output = gen.getPackOutput(); + var lookup = event.getLookupProvider(); + var helper = event.getExistingFileHelper(); // reads existing files like pngs and parent models - if (event.includeServer()) { - EBlockTagsProvider blockTags = new EBlockTagsProvider(gen, helper); + var dataHelper = new DataHelper(ExNihiloReborn.ID, event); + dataHelper.createEnglish(true, English::addTranslations); + dataHelper.createBlockModels(BlockModels::addBlockModels); + dataHelper.createItemModels(true, true, false, ItemModels::addItemModels); - gen.addProvider(new ERecipeProvider(gen)); - gen.addProvider(new ELootProvider(gen)); - gen.addProvider(blockTags); - gen.addProvider(new EItemTagProvider(gen, blockTags, helper)); - } - if (event.includeClient()) { - gen.addProvider(new EModelProvider(gen, helper)); - gen.addProvider(new ELangProvider(gen)); - } + dataHelper.createRecipes(Recipes::addRecipes); + + var blockTags = new BlockTags(output, lookup, helper); + + gen.addProvider(true, new LootTables(output)); + gen.addProvider(true, blockTags); + gen.addProvider(true, new ItemTags(output, lookup, blockTags.contentsGetter(), helper)); + gen.addProvider(true, new StructureTags(output, lookup, helper)); + gen.addProvider(true, new WorldPresetTags(output, lookup, helper)); + gen.addProvider(true, new Advancements(output, lookup, helper)); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/EBlockTagsProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/EBlockTagsProvider.java deleted file mode 100644 index 8a4d3889..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/EBlockTagsProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import net.minecraft.data.BlockTagsProvider; -import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.ExistingFileHelper; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; - -import javax.annotation.Nullable; - -public class EBlockTagsProvider extends BlockTagsProvider { - public EBlockTagsProvider(DataGenerator gen, @Nullable ExistingFileHelper helper) { - super(gen, ExNihiloReborn.ID, helper); - } - - @Override - protected void addTags() { - super.addTags(); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/EItemTagProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/EItemTagProvider.java deleted file mode 100644 index 06fe174b..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/EItemTagProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import net.minecraft.data.BlockTagsProvider; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.ItemTagsProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.item.EItemTags; -import thedarkcolour.exnihiloreborn.registry.EItems; - -import javax.annotation.Nullable; - -public class EItemTagProvider extends ItemTagsProvider { - public EItemTagProvider(DataGenerator gen, BlockTagsProvider blocKTags, @Nullable ExistingFileHelper helper) { - super(gen, blocKTags, ExNihiloReborn.ID, helper); - } - - @Override - protected void addTags() { - tag(EItemTags.HAMMERS).add(EItems.WOODEN_HAMMER.get(), EItems.STONE_HAMMER.get(), EItems.GOLDEN_HAMMER.get(), EItems.IRON_HAMMER.get(), EItems.DIAMOND_HAMMER.get(), EItems.NETHERITE_HAMMER.get()); - tag(EItemTags.CROOKS).add(EItems.CROOK.get(), EItems.COMPRESSED_CROOK.get(), EItems.BONE_CROOK.get()); - tag(EItemTags.COMPRESSED_HAMMERS).add(EItems.COMPRESSED_WOODEN_HAMMER.get(), EItems.COMPRESSED_STONE_HAMMER.get(), EItems.COMPRESSED_GOLDEN_HAMMER.get(), EItems.COMPRESSED_IRON_HAMMER.get(), EItems.COMPRESSED_DIAMOND_HAMMER.get(), EItems.COMPRESSED_NETHERITE_HAMMER.get()); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/ELangProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/ELangProvider.java deleted file mode 100644 index d8281d7f..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/ELangProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import net.minecraft.data.DataGenerator; -import net.minecraftforge.common.data.LanguageProvider; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.registry.EBlocks; -import thedarkcolour.exnihiloreborn.registry.EItems; - -public class ELangProvider extends LanguageProvider { - public ELangProvider(DataGenerator gen) { - super(gen, ExNihiloReborn.ID, "en_us"); - } - - @Override - protected void addTranslations() { - addItem(EItems.SILK_WORM, "Silk Worm"); - addItem(EItems.COOKED_SILK_WORM, "Cooked Silk Worm"); - - addItem(EItems.CROOK, "Crook"); - addItem(EItems.COMPRESSED_CROOK, "Compressed Crook"); - addItem(EItems.BONE_CROOK, "Bone Crook"); - - addItem(EItems.WOODEN_HAMMER, "Wooden Hammer"); - addItem(EItems.STONE_HAMMER, "Stone Hammer"); - addItem(EItems.GOLDEN_HAMMER, "Golden Hammer"); - addItem(EItems.IRON_HAMMER, "Iron Hammer"); - addItem(EItems.DIAMOND_HAMMER, "Diamond Hammer"); - addItem(EItems.NETHERITE_HAMMER, "Netherite Hammer"); - - addItem(EItems.COMPRESSED_WOODEN_HAMMER, "Compressed Wooden Hammer"); - addItem(EItems.COMPRESSED_STONE_HAMMER, "Compressed Stone Hammer"); - addItem(EItems.COMPRESSED_GOLDEN_HAMMER, "Compressed Golden Hammer"); - addItem(EItems.COMPRESSED_IRON_HAMMER, "Compressed Iron Hammer"); - addItem(EItems.COMPRESSED_DIAMOND_HAMMER, "Compressed Diamond Hammer"); - addItem(EItems.COMPRESSED_NETHERITE_HAMMER, "Compressed Netherite Hammer"); - - addItem(EItems.IRON_ORE_PIECES, "Iron Ore Pieces"); - addItem(EItems.COPPER_ORE_PIECES, "Copper Ore Pieces"); - addItem(EItems.GOLD_ORE_PIECES, "Gold Ore Pieces"); - - addItem(EItems.STONE_PEBBLE, "Stone Pebble"); - addItem(EItems.DEEPSLATE_PEBBLE, "Deepslate Pebble"); - - addBlock(EBlocks.DUST, "Dust"); - addBlock(EBlocks.CRUSHED_NETHERRACK, "Crushed Netherrack"); - addBlock(EBlocks.CRUSHED_END_STONE, "Crushed End Stone"); - - addBlock(EBlocks.COMPRESSED_COBBLESTONE, "Compressed Cobblestone"); - addBlock(EBlocks.COMPRESSED_DIRT, "Compressed Dirt"); - addBlock(EBlocks.COMPRESSED_SAND, "Compressed Sand"); - addBlock(EBlocks.COMPRESSED_DUST, "Compressed Dust"); - addBlock(EBlocks.COMPRESSED_CRUSHED_NETHERRACK, "Compressed Crushed Netherrack"); - addBlock(EBlocks.COMPRESSED_CRUSHED_END_STONE, "Compressed Crushed End Stone"); - - addBlock(EBlocks.OAK_BARREL, "Oak Barrel"); - addBlock(EBlocks.SPRUCE_BARREL, "Spruce Barrel"); - addBlock(EBlocks.BIRCH_BARREL, "Birch Barrel"); - addBlock(EBlocks.JUNGLE_BARREL, "Jungle Barrel"); - addBlock(EBlocks.ACACIA_BARREL, "Acacia Barrel"); - addBlock(EBlocks.DARK_OAK_BARREL, "Dark_oak Barrel"); - addBlock(EBlocks.CRIMSON_BARREL, "Crimson Barrel"); - addBlock(EBlocks.WARPED_BARREL, "Warped Barrel"); - addBlock(EBlocks.STONE_BARREL, "Stone Barrel"); - - addBlock(EBlocks.PORCELAIN_CRUCIBLE, "Porcelain Crucible"); - addBlock(EBlocks.WARPED_CRUCIBLE, "Warped Crucible"); - addBlock(EBlocks.CRIMSON_CRUCIBLE, "Crimson Crucible"); - addBlock(EBlocks.UNFIRED_CRUCIBLE, "Unfired Crucible"); - - addBlock(EBlocks.OAK_CRUCIBLE, "Oak Crucible"); - addBlock(EBlocks.SPRUCE_CRUCIBLE, "Spruce Crucible"); - addBlock(EBlocks.BIRCH_CRUCIBLE, "Birch Crucible"); - addBlock(EBlocks.JUNGLE_CRUCIBLE, "Jungle Crucible"); - addBlock(EBlocks.ACACIA_CRUCIBLE, "Acacia Crucible"); - addBlock(EBlocks.DARK_OAK_CRUCIBLE, "Dark Oak Crucible"); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/ELootProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/ELootProvider.java deleted file mode 100644 index 493946fa..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/ELootProvider.java +++ /dev/null @@ -1,103 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.minecraft.block.Block; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; -import net.minecraft.data.LootTableProvider; -import net.minecraft.item.Items; -import net.minecraft.loot.ConstantRange; -import net.minecraft.loot.ItemLootEntry; -import net.minecraft.loot.LootParameterSets; -import net.minecraft.loot.LootPool; -import net.minecraft.loot.LootTable; -import net.minecraft.loot.LootTableManager; -import net.minecraft.loot.conditions.SurvivesExplosion; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.RegistryObject; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import thedarkcolour.exnihiloreborn.loot.InfestedString; -import thedarkcolour.exnihiloreborn.registry.EBlocks; - -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; - -public class ELootProvider extends LootTableProvider { - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); - private static final Logger LOGGER = LogManager.getLogger(); - private final DataGenerator generator; - private final Map blockTables = Maps.newHashMap(); - - public ELootProvider(DataGenerator generator) { - super(generator); - this.generator = generator; - } - - private void addBlockLootTables() { - addLoot(EBlocks.INFESTED_LEAVES, new LootTable.Builder().withPool(new LootPool.Builder().setRolls(ConstantRange.exactly(1)).add(ItemLootEntry.lootTableItem(Items.STRING).apply(InfestedString.infestedString())))); - - addSelfDrops(); - } - - private void addSelfDrops() { - dropSelf(EBlocks.DUST); - - dropSelf(EBlocks.COMPRESSED_COBBLESTONE); - dropSelf(EBlocks.COMPRESSED_DIRT); - dropSelf(EBlocks.COMPRESSED_SAND); - dropSelf(EBlocks.COMPRESSED_DUST); - - dropSelf(EBlocks.OAK_BARREL); - dropSelf(EBlocks.SPRUCE_BARREL); - dropSelf(EBlocks.BIRCH_BARREL); - dropSelf(EBlocks.JUNGLE_BARREL); - dropSelf(EBlocks.ACACIA_BARREL); - dropSelf(EBlocks.DARK_OAK_BARREL); - dropSelf(EBlocks.CRIMSON_BARREL); - dropSelf(EBlocks.WARPED_BARREL); - dropSelf(EBlocks.STONE_BARREL); - } - - @Override - public void run(DirectoryCache directoryCache) { - addBlockLootTables(); - - HashMap tables = new HashMap<>(blockTables.size()); - - for (Map.Entry entry : blockTables.entrySet()) { - // Add tables to the block loot parameter set automatically - tables.put(entry.getKey().getLootTable(), entry.getValue().setParamSet(LootParameterSets.BLOCK).build()); - } - - writeLootTables(tables, directoryCache); - } - - // Loot table to drop the block itself. Think Diamond Block, Sand, etc. - private void dropSelf(RegistryObject block) { - // refer to the diamond block loot table for this one - addLoot(block, new LootTable.Builder().withPool(new LootPool.Builder().setRolls(ConstantRange.exactly(1)).add(ItemLootEntry.lootTableItem(block.get())).when(SurvivesExplosion.survivesExplosion()))); - } - - private void addLoot(RegistryObject block, LootTable.Builder builder) { - blockTables.put(block.get(), builder); - } - - private void writeLootTables(Map tables, DirectoryCache cache) { - Path outputFolder = generator.getOutputFolder(); - - for (Map.Entry entry : tables.entrySet()) { - Path path = outputFolder.resolve("data/" + entry.getKey().getNamespace() + "/loot_tables/" + entry.getKey().getPath() + ".json"); - - try { - IDataProvider.save(GSON, cache, LootTableManager.serialize(entry.getValue()), path); - } catch (Exception e) { - LOGGER.error("Couldn't write loot table {}", path, e); - } - } - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/EModelProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/EModelProvider.java deleted file mode 100644 index 652c4332..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/EModelProvider.java +++ /dev/null @@ -1,173 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Item; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.BlockModelBuilder; -import net.minecraftforge.client.model.generators.BlockStateProvider; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.client.model.generators.ModelProvider; -import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.fml.RegistryObject; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.registry.EBlocks; -import thedarkcolour.exnihiloreborn.registry.EItems; - -public class EModelProvider extends BlockStateProvider { - public EModelProvider(DataGenerator gen, ExistingFileHelper helper) { - super(gen, ExNihiloReborn.ID, helper); - } - - @Override - protected void registerStatesAndModels() { - registerBlockModels(); - registerItemModels(); - } - - public void registerBlockModels() { - // Materials - simpleCubeAll(EBlocks.DUST.get()); - simpleCubeAll(EBlocks.CRUSHED_NETHERRACK.get()); - simpleCubeAll(EBlocks.CRUSHED_END_STONE.get()); - - // Compressed Blocks - //simpleCubeAll(EBlocks.COMPRESSED_COBBLESTONE.get()); - //simpleCubeAll(EBlocks.COMPRESSED_DIRT.get()); - //simpleCubeAll(EBlocks.COMPRESSED_SAND.get()); - //simpleCubeAll(EBlocks.COMPRESSED_DUST.get()); - - //simpleCubeAll(EBlocks.COMPRESSED_CRUSHED_NETHERRACK.get()); - //simpleCubeAll(EBlocks.COMPRESSED_CRUSHED_END_STONE.get()); - - // Barrels - barrel(EBlocks.OAK_BARREL.get(), Blocks.OAK_PLANKS); - barrel(EBlocks.SPRUCE_BARREL.get(), Blocks.SPRUCE_PLANKS); - barrel(EBlocks.BIRCH_BARREL.get(), Blocks.BIRCH_PLANKS); - barrel(EBlocks.JUNGLE_BARREL.get(), Blocks.JUNGLE_PLANKS); - barrel(EBlocks.ACACIA_BARREL.get(), Blocks.ACACIA_PLANKS); - barrel(EBlocks.DARK_OAK_BARREL.get(), Blocks.DARK_OAK_PLANKS); - barrel(EBlocks.CRIMSON_BARREL.get(), Blocks.CRIMSON_PLANKS); - barrel(EBlocks.WARPED_BARREL.get(), Blocks.WARPED_PLANKS); - barrel(EBlocks.STONE_BARREL.get(), Blocks.STONE); - - sieve(EBlocks.OAK_SIEVE.get(), Blocks.OAK_PLANKS); - sieve(EBlocks.SPRUCE_SIEVE.get(), Blocks.SPRUCE_PLANKS); - sieve(EBlocks.BIRCH_SIEVE.get(), Blocks.BIRCH_PLANKS); - sieve(EBlocks.JUNGLE_SIEVE.get(), Blocks.JUNGLE_PLANKS); - sieve(EBlocks.ACACIA_SIEVE.get(), Blocks.ACACIA_PLANKS); - sieve(EBlocks.DARK_OAK_SIEVE.get(), Blocks.DARK_OAK_PLANKS); - sieve(EBlocks.CRIMSON_SIEVE.get(), Blocks.CRIMSON_PLANKS); - sieve(EBlocks.WARPED_SIEVE.get(), Blocks.WARPED_PLANKS); - - // Lava Crucible - crucible(EBlocks.UNFIRED_CRUCIBLE.get()); - crucible(EBlocks.PORCELAIN_CRUCIBLE.get()); - crucible(EBlocks.CRIMSON_CRUCIBLE.get(), Blocks.CRIMSON_STEM); - crucible(EBlocks.WARPED_CRUCIBLE.get(), Blocks.WARPED_STEM); - - // Water Crucible - crucible(EBlocks.OAK_CRUCIBLE.get(), Blocks.OAK_LOG); - crucible(EBlocks.SPRUCE_CRUCIBLE.get(), Blocks.SPRUCE_LOG); - crucible(EBlocks.BIRCH_CRUCIBLE.get(), Blocks.BIRCH_LOG); - crucible(EBlocks.JUNGLE_CRUCIBLE.get(), Blocks.JUNGLE_LOG); - crucible(EBlocks.ACACIA_CRUCIBLE.get(), Blocks.ACACIA_LOG); - crucible(EBlocks.DARK_OAK_CRUCIBLE.get(), Blocks.DARK_OAK_LOG); - } - - public void registerItemModels() { - generic2d(EItems.SILK_WORM); - generic2d(EItems.COOKED_SILK_WORM); - - handheld(EItems.WOODEN_HAMMER); - handheld(EItems.STONE_HAMMER); - handheld(EItems.GOLDEN_HAMMER); - handheld(EItems.IRON_HAMMER); - handheld(EItems.DIAMOND_HAMMER); - - handheld(EItems.CROOK); - handheld(EItems.BONE_CROOK); - } - - public void simpleCubeAll(Block block) { - blockItem(block); - simpleBlock(block); - } - - public void crucible(Block block) { - crucible(block, block); - } - - public void crucible(Block block, Block appearance) { - ResourceLocation texture = blockTexture(appearance); - - blockItem(block); - - singleModel(block) - .parent(modParent("template_crucible")) - .texture("inside", texture) - .texture("top", texture) - .texture("bottom", texture) - .texture("side", texture); - } - - public void barrel(Block block, Block appearance) { - ResourceLocation texture = blockTexture(appearance); - - blockItem(block); - - singleModel(block) - .parent(modParent("template_barrel")) - .texture("barrel", texture); - } - - public void sieve(Block block, Block appearance) { - ResourceLocation texture = blockTexture(appearance); - - blockItem(block); - - singleModel(block) - .parent(modParent("template_sieve")) - .texture("texture", texture); - } - - public void blockItem(Block block) { - simpleBlockItem(block, modParent(block.getRegistryName().getPath())); - } - - public ModelFile modParent(String name) { - return new ModelFile.UncheckedModelFile(modLoc(ModelProvider.BLOCK_FOLDER + "/" + name)); - } - - public ResourceLocation blockTexture(ResourceLocation id) { - return new ResourceLocation(id.getNamespace(), ModelProvider.BLOCK_FOLDER + "/" + id.getPath()); - } - - // Configures a block model with no block state properties - public BlockModelBuilder singleModel(Block block) { - BlockModelBuilder builder = blockModel(block); - - getVariantBuilder(block).partialState().addModels(new ConfiguredModel(builder)); - - return builder; - } - - public BlockModelBuilder blockModel(Block block) { - return models().getBuilder(block.getRegistryName().getPath()); - } - - // Generic 2d item model like lantern or hopper. Requires Item form. - private void generic2d(RegistryObject supplier) { - String path = supplier.getId().getPath(); - itemModels().getBuilder(path).parent(new ModelFile.UncheckedModelFile(mcLoc("item/generated"))).texture("layer0", modLoc("item/" + path)); - } - - private void handheld(RegistryObject item) { - String itemName = item.getId().getPath(); - - itemModels().singleTexture(itemName, mcLoc("item/handheld"), "layer0", modLoc("item/" + itemName)); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/ERecipeProvider.java b/src/main/java/thedarkcolour/exnihiloreborn/data/ERecipeProvider.java deleted file mode 100644 index ef523e72..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/data/ERecipeProvider.java +++ /dev/null @@ -1,260 +0,0 @@ -package thedarkcolour.exnihiloreborn.data; - -import com.google.common.collect.ImmutableList; -import net.minecraft.block.Blocks; -import net.minecraft.data.CookingRecipeBuilder; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.data.RecipeProvider; -import net.minecraft.data.ShapedRecipeBuilder; -import net.minecraft.data.SmithingRecipeBuilder; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.Tags; -import net.minecraftforge.fml.RegistryObject; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.recipe.Reward; -import thedarkcolour.exnihiloreborn.recipe.barrel.FinishedBarrelCompostRecipe; -import thedarkcolour.exnihiloreborn.recipe.crucible.FinishedCrucibleRecipe; -import thedarkcolour.exnihiloreborn.recipe.hammer.FinishedHammerRecipe; -import thedarkcolour.exnihiloreborn.recipe.sieve.FinishedSieveRecipe; -import thedarkcolour.exnihiloreborn.registry.EBlocks; -import thedarkcolour.exnihiloreborn.registry.EItems; -import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -public class ERecipeProvider extends RecipeProvider { - public ERecipeProvider(DataGenerator gen) { - super(gen); - } - - @Override - protected void buildShapelessRecipes(Consumer consumer) { - createCraftingRecipes(consumer); - createSieveRecipes(consumer); - createCrucibleRecipes(consumer); - createHammerRecipes(consumer); - createBarrelCompostRecipes(consumer); - } - - private void createCraftingRecipes(Consumer consumer) { - // Crook - shapedCrook(consumer, EItems.CROOK, Ingredient.of(Tags.Items.RODS_WOODEN)); - shapedCrook(consumer, EItems.COMPRESSED_CROOK, Ingredient.of(EItems.CROOK.get())); - shapedCrook(consumer, EItems.BONE_CROOK, Ingredient.of(Items.BONE)); - - // Hammer - shapedHammer(consumer, EItems.WOODEN_HAMMER, Ingredient.of(ItemTags.PLANKS)); - shapedHammer(consumer, EItems.STONE_HAMMER, Ingredient.of(ItemTags.STONE_CRAFTING_MATERIALS)); - shapedHammer(consumer, EItems.GOLDEN_HAMMER, Ingredient.of(Tags.Items.INGOTS_GOLD)); - shapedHammer(consumer, EItems.IRON_HAMMER, Ingredient.of(Tags.Items.INGOTS_IRON)); - shapedHammer(consumer, EItems.DIAMOND_HAMMER, Ingredient.of(Tags.Items.GEMS_DIAMOND)); - SmithingRecipeBuilder.smithing(Ingredient.of(EItems.DIAMOND_HAMMER.get()), Ingredient.of(Tags.Items.INGOTS_NETHERITE), EItems.NETHERITE_HAMMER.get()); - - // Barrels - shapedU(consumer, EItems.OAK_BARREL, Items.OAK_PLANKS, Items.OAK_SLAB); - shapedU(consumer, EItems.SPRUCE_BARREL, Items.SPRUCE_PLANKS, Items.SPRUCE_SLAB); - shapedU(consumer, EItems.BIRCH_BARREL, Items.BIRCH_PLANKS, Items.BIRCH_SLAB); - shapedU(consumer, EItems.JUNGLE_BARREL, Items.JUNGLE_PLANKS, Items.JUNGLE_SLAB); - shapedU(consumer, EItems.ACACIA_BARREL, Items.ACACIA_PLANKS, Items.ACACIA_SLAB); - shapedU(consumer, EItems.DARK_OAK_BARREL, Items.DARK_OAK_PLANKS, Items.DARK_OAK_SLAB); - shapedU(consumer, EItems.CRIMSON_BARREL, Items.CRIMSON_PLANKS, Items.CRIMSON_SLAB); - shapedU(consumer, EItems.WARPED_BARREL, Items.WARPED_PLANKS, Items.WARPED_SLAB); - shapedU(consumer, EItems.STONE_BARREL, Items.STONE, Items.STONE_SLAB); - - // Crucible - shapedU(consumer, EItems.OAK_CRUCIBLE, ItemTags.OAK_LOGS, Items.OAK_SLAB); - shapedU(consumer, EItems.SPRUCE_CRUCIBLE, ItemTags.SPRUCE_LOGS, Items.SPRUCE_SLAB); - shapedU(consumer, EItems.BIRCH_CRUCIBLE, ItemTags.BIRCH_LOGS, Items.BIRCH_SLAB); - shapedU(consumer, EItems.JUNGLE_CRUCIBLE, ItemTags.JUNGLE_LOGS, Items.JUNGLE_SLAB); - shapedU(consumer, EItems.ACACIA_CRUCIBLE, ItemTags.ACACIA_LOGS, Items.ACACIA_SLAB); - shapedU(consumer, EItems.DARK_OAK_CRUCIBLE, ItemTags.DARK_OAK_LOGS, Items.DARK_OAK_SLAB); - shapedU(consumer, EItems.CRIMSON_CRUCIBLE, ItemTags.CRIMSON_STEMS, Items.CRIMSON_SLAB); - shapedU(consumer, EItems.WARPED_CRUCIBLE, ItemTags.WARPED_STEMS, Items.WARPED_SLAB); - shapedU(consumer, EItems.UNFIRED_CRUCIBLE, EItems.PORCELAIN_CLAY.get(), EItems.PORCELAIN_CLAY.get()); - - // Furnace Recipe - CookingRecipeBuilder.smelting(Ingredient.of(EItems.UNFIRED_CRUCIBLE.get()), EItems.PORCELAIN_CRUCIBLE.get(), 0.1f, 200).unlockedBy("has_item", has(EItems.UNFIRED_CRUCIBLE.get())).save(consumer, EItems.PORCELAIN_CRUCIBLE.getId()); - CookingRecipeBuilder.smelting(Ingredient.of(EItems.SILK_WORM.get()), EItems.COOKED_SILK_WORM.get(), 0.1f, 200).unlockedBy("has_item", has(EItems.SILK_WORM.get())).save(consumer, EItems.COOKED_SILK_WORM.getId()); - - // Smoker Recipe - CookingRecipeBuilder.cooking(Ingredient.of(EItems.SILK_WORM.get()), EItems.COOKED_SILK_WORM.get(), 0.1f, 200, IRecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(EItems.SILK_WORM.get())).save(consumer, "cooked_silk_worm_from_smoking"); - } - - private void shapedHammer(Consumer consumer, RegistryObject hammer, Ingredient ingredient) { - shaped(consumer, hammer, 1, builder -> { - builder.define('x', ingredient); - builder.define('v', Tags.Items.RODS_WOODEN); - builder.pattern(" x "); - builder.pattern("xv "); - builder.pattern(" v"); - builder.unlockedBy("has_item", has(ItemTags.PLANKS)); - }); - } - - private void shapedCrook(Consumer consumer, RegistryObject crook, Ingredient stick) { - shaped(consumer, crook, 1, builder -> { - builder.define('x', stick); - builder.pattern("xx"); - builder.pattern(" x"); - builder.pattern(" x"); - builder.unlockedBy("has_item", has(Tags.Items.RODS_WOODEN)); - }); - } - - private void shapedU(Consumer consumer, RegistryObject barrel, ITag log, Item slab) { - shaped(consumer, barrel, 1, builder -> { - builder.define('x', log); - builder.define('z', slab); - builder.pattern("x x"); - builder.pattern("x x"); - builder.pattern("xzx"); - builder.unlockedBy("has_item", has(ItemTags.PLANKS)); - }); - } - - private void shapedU(Consumer consumer, RegistryObject barrel, Item plank, Item slab) { - shaped(consumer, barrel, 1, builder -> { - builder.define('x', plank); - builder.define('z', slab); - builder.pattern("x x"); - builder.pattern("x x"); - builder.pattern("xzx"); - builder.unlockedBy("has_item", has(ItemTags.PLANKS)); - }); - } - - private void shaped(Consumer consumer, RegistryObject jungleBarrel, int amount, Consumer recipe) { - Item item = jungleBarrel.get(); - - ShapedRecipeBuilder builder = ShapedRecipeBuilder.shaped(item, amount); - recipe.accept(builder); - builder.save(consumer, item.getRegistryName()); - } - - private void createSieveRecipes(Consumer consumer) { - sieveRecipe(consumer, "stone_pebble", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.withExtraChances(EItems.STONE_PEBBLE, new float[] {1.0f, 1.0f, 0.5f, 0.5f, 0.1f, 0.1f })); - sieveRecipe(consumer, "wheat_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.WHEAT_SEEDS, 0.7f)); - sieveRecipe(consumer, "beetroot_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.BEETROOT_SEEDS, 0.35f)); - sieveRecipe(consumer, "melon_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.MELON_SEEDS, 0.35f)); - sieveRecipe(consumer, "pumpkin_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.PUMPKIN_SEEDS, 0.35f)); - - //sieveRecipe(consumer, "", Ingredient.of()); - } - - private void createCrucibleRecipes(Consumer consumer) { - lavaCrucible(consumer, "cobblestone", Ingredient.of(Blocks.COBBLESTONE), 250); - lavaCrucible(consumer, "stone", Ingredient.of(Blocks.STONE), 250); - lavaCrucible(consumer, "gravel", Ingredient.of(Blocks.GRAVEL), 250); - lavaCrucible(consumer, "netherrack", Ingredient.of(Blocks.NETHERRACK), 1000); - - waterCrucible(consumer, "sweet_berries", Ingredient.of(Items.SWEET_BERRIES), 50); - waterCrucible(consumer, "melon_slice", Ingredient.of(Items.MELON_SLICE), 50); - - waterCrucible(consumer, "saplings", Ingredient.of(ItemTags.SAPLINGS), 100); - waterCrucible(consumer, "small_flowers", Ingredient.of(ItemTags.SMALL_FLOWERS), 100); - waterCrucible(consumer, "apple", Ingredient.of(Items.APPLE), 100); - - waterCrucible(consumer, "tall_flowers", Ingredient.of(ItemTags.TALL_FLOWERS), 200); - - waterCrucible(consumer, "cactus", Ingredient.of(Items.CACTUS), 250); - waterCrucible(consumer, "pumpkin", Ingredient.of(Items.PUMPKIN), 250); - waterCrucible(consumer, "melon", Ingredient.of(Items.MELON), 250); - waterCrucible(consumer, "leaves", Ingredient.of(ItemTags.LEAVES), 250); - } - - private void createHammerRecipes(Consumer consumer) { - // Cobblestone -> Gravel -> Sand -> Dust - hammerRecipe(consumer, "gravel", Blocks.COBBLESTONE, new Reward(Blocks.GRAVEL)); - hammerRecipe(consumer, "sand", Blocks.GRAVEL, new Reward(Blocks.SAND)); - hammerRecipe(consumer, "dust", Blocks.SAND, new Reward(EBlocks.DUST.get())); - - hammerRecipe(consumer, "crushed_netherrack", Blocks.NETHERRACK, new Reward(EBlocks.CRUSHED_NETHERRACK.get())); - - hammerRecipe(consumer, "crushing_sandstone", Ingredient.of(Items.SANDSTONE, Items.CUT_SANDSTONE, Items.CHISELED_SANDSTONE, Items.SMOOTH_SANDSTONE), ImmutableList.of(new Reward(Items.SAND))); - hammerRecipe(consumer, "crushing_red_sandstone", Ingredient.of(Items.RED_SANDSTONE, Items.CUT_RED_SANDSTONE, Items.CHISELED_RED_SANDSTONE, Items.SMOOTH_RED_SANDSTONE), ImmutableList.of(new Reward(Items.RED_SAND))); - hammerRecipe(consumer, "crushing_stone_bricks", Items.STONE_BRICKS, new Reward(Items.CRACKED_STONE_BRICKS)); - - hammerRecipe(consumer, "stone_pebbles", - Ingredient.of(Items.STONE, Items.CRACKED_STONE_BRICKS), - Reward.withExtraChances(EItems.STONE_PEBBLE, new float[] { 0.75f, 0.75f, 0.5f, 0.25f, 0.05f })); - } - - private void createBarrelCompostRecipes(Consumer consumer) { - barrelCompost(consumer, "melon_slice", Ingredient.of(Items.MELON_SLICE), 40); - barrelCompost(consumer, "kelp", Ingredient.of(Items.DRIED_KELP, Items.KELP), 40); - barrelCompost(consumer, "silk_worms", Ingredient.of(EItems.SILK_WORM.get(), EItems.COOKED_SILK_WORM.get()), 40); - - barrelCompost(consumer, "seeds", Ingredient.of(Tags.Items.SEEDS), 80); - barrelCompost(consumer, "seagrass", Ingredient.of(Items.SEAGRASS), 80); - barrelCompost(consumer, "sweet_berries", Ingredient.of(Items.SWEET_BERRIES), 80); - barrelCompost(consumer, "wheat", Ingredient.of(Tags.Items.CROPS_WHEAT), 80); - barrelCompost(consumer, "spider_eye", Ingredient.of(Items.SPIDER_EYE), 80); - - barrelCompost(consumer, "apple", Ingredient.of(Items.APPLE), 100); - barrelCompost(consumer, "small_flowers", Ingredient.of(ItemTags.SMALL_FLOWERS), 100); - barrelCompost(consumer, "cookie", Ingredient.of(Items.COOKIE), 100); - barrelCompost(consumer, "nether_wart", Ingredient.of(Items.NETHER_WART), 100); - barrelCompost(consumer, "mushrooms", Ingredient.of(Tags.Items.MUSHROOMS), 100); - - barrelCompost(consumer, "saplings", Ingredient.of(ItemTags.SAPLINGS), 125); - barrelCompost(consumer, "leaves", Ingredient.of(ItemTags.LEAVES), 125); - barrelCompost(consumer, "bread", Ingredient.of(Items.BREAD), 125); - - barrelCompost(consumer, "tall_flowers", Ingredient.of(ItemTags.TALL_FLOWERS), 150); - barrelCompost(consumer, "pumpkin_pie", Ingredient.of(Items.PUMPKIN_PIE), 150); - - barrelCompost(consumer, "melon", Ingredient.of(Items.MELON), 200); - barrelCompost(consumer, "pumpkin", Ingredient.of(Items.PUMPKIN), 200); - } - - private void lavaCrucible(Consumer consumer, String id, Ingredient ingredient, int volume) { - consumer.accept(new FinishedCrucibleRecipe(new ResourceLocation(ExNihiloReborn.ID, "lava_crucible/" + id), ERecipeSerializers.LAVA_CRUCIBLE.get(), ingredient, Fluids.LAVA, volume)); - } - - private void waterCrucible(Consumer consumer, String id, Ingredient ingredient, int volume) { - consumer.accept(new FinishedCrucibleRecipe(new ResourceLocation(ExNihiloReborn.ID, "water_crucible/" + id), ERecipeSerializers.WATER_CRUCIBLE.get(), ingredient, Fluids.WATER, volume)); - } - - private void barrelCompost(Consumer consumer, String id, Ingredient ingredient, int volume) { - consumer.accept(new FinishedBarrelCompostRecipe(new ResourceLocation(ExNihiloReborn.ID, "barrel_compost/" + id), ingredient, volume)); - } - - private void hammerRecipe(Consumer consumer, String name, Ingredient block, ImmutableList rewards) { - consumer.accept(new FinishedHammerRecipe(ERecipeSerializers.HAMMER.get(), new ResourceLocation(ExNihiloReborn.ID, "hammer/" + name), block, rewards)); - } - - private void hammerRecipe(Consumer consumer, String name, IItemProvider block, Reward... rewards) { - hammerRecipe(consumer, name, Ingredient.of(block), ImmutableList.builder().add(rewards).build()); - } - - private void hammerRecipe(Consumer consumer, ITag.INamedTag tag, Reward rewards) { - consumer.accept(new FinishedHammerRecipe(ERecipeSerializers.HAMMER.get(), new ResourceLocation(ExNihiloReborn.ID, tag.getName().getPath() + "_to_" + rewards.getItem().getItem().getRegistryName().getPath()), Ingredient.of(tag), ImmutableList.of(rewards))); - } - - private void compressedHammerRecipe(Consumer consumer, String name, Ingredient block, ImmutableList rewards) { - consumer.accept(new FinishedHammerRecipe(ERecipeSerializers.COMPRESSED_HAMMER.get(), new ResourceLocation(ExNihiloReborn.ID, "compressed_hammer/" + name), block, rewards)); - } - - private void sieveRecipe(Consumer consumer, String name, Ingredient block, Supplier mesh, ImmutableList rewards) { - consumer.accept(new FinishedSieveRecipe(ERecipeSerializers.SIEVE.get(), new ResourceLocation(ExNihiloReborn.ID, "sieve/" + name), mesh.get(), block, rewards)); - } - - private void sieveRecipe(Consumer consumer, String name, Ingredient block, Supplier mesh, Reward rewards) { - consumer.accept(new FinishedSieveRecipe(ERecipeSerializers.SIEVE.get(), new ResourceLocation(ExNihiloReborn.ID, "sieve/" + name), mesh.get(), block, ImmutableList.of(rewards))); - } - - private void compressedSieveRecipe(Consumer consumer, String name, Ingredient block, Supplier mesh, ImmutableList rewards) { - consumer.accept(new FinishedSieveRecipe(ERecipeSerializers.COMPRESSED_SIEVE.get(), new ResourceLocation(ExNihiloReborn.ID, "compressed_sieve/" + name), mesh.get(), block, rewards)); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/English.java b/src/main/java/thedarkcolour/exnihiloreborn/data/English.java new file mode 100644 index 00000000..6589157b --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/English.java @@ -0,0 +1,31 @@ +package thedarkcolour.exnihiloreborn.data; + +import thedarkcolour.modkit.data.MKEnglishProvider; + +class English { + static void addTranslations(MKEnglishProvider english) { + english.add(TranslationKeys.MAIN_CREATIVE_TAB, "Ex Nihilo Reborn"); + english.add(TranslationKeys.VOID_WORLD_TYPE, "Void World"); + + english.add(TranslationKeys.ROOT_ADVANCEMENT_TITLE, "Don't Look Down..."); + english.add(TranslationKeys.ROOT_ADVANCEMENT_DESCRIPTION, "Spawn into a SkyBlock void world"); + english.add(TranslationKeys.CROOK_ADVANCEMENT_TITLE, "This is a Robbery"); + english.add(TranslationKeys.CROOK_ADVANCEMENT_DESCRIPTION, "Craft a Crook to double sapling drops from leaves"); + english.add(TranslationKeys.BARREL_ADVANCEMENT_TITLE, "That Goes in the GreenWaste"); + english.add(TranslationKeys.BARREL_ADVANCEMENT_DESCRIPTION, "Use a barrel to compost organic material into dirt"); + english.add(TranslationKeys.SILK_WORM_ADVANCEMENT_TITLE, "Straight Outta China"); + english.add(TranslationKeys.SILK_WORM_ADVANCEMENT_DESCRIPTION, "Obtain a silk worm, then infest a tree with it to get string"); + english.add(TranslationKeys.STRING_MESH_ADVANCEMENT_TITLE, "All the Little Cogs"); + english.add(TranslationKeys.STRING_MESH_ADVANCEMENT_DESCRIPTION, "Craft a string mesh to use in a sieve"); + + english.add(TranslationKeys.SILK_WORM_JEI_INFO, "Silk worms have a 1 in 100 chance to drop from leaves harvested with a Crook. Using a silk worm on a tree's leaves will infest them, gradually spreading through the entire tree. 100% infested leaves can be harvested for string, but do not drop saplings."); + english.add(TranslationKeys.BARREL_COMPOST_CATEGORY_TITLE, "Barrel Compost"); + english.add(TranslationKeys.BARREL_COMPOST_RECIPE_VOLUME, "Compost: %s"); + english.add(TranslationKeys.WATER_CRUCIBLE_CATEGORY_TITLE, "Water Crucible"); + english.add(TranslationKeys.LAVA_CRUCIBLE_CATEGORY_TITLE, "Lava Crucible"); + english.add(TranslationKeys.HAMMER_CATEGORY_TITLE, "Hammer Crucible"); + english.add(TranslationKeys.COMPRESSED_HAMMER_CATEGORY_TITLE, "Compressed Hammer"); + english.add(TranslationKeys.SIEVE_CATEGORY_TITLE, "Sieve"); + english.add(TranslationKeys.COMPRESSED_SIEVE_CATEGORY_TITLE, "Heavy Sieve"); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/FluidTags.java b/src/main/java/thedarkcolour/exnihiloreborn/data/FluidTags.java new file mode 100644 index 00000000..63e9f3f3 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/FluidTags.java @@ -0,0 +1,4 @@ +package thedarkcolour.exnihiloreborn.data; + +public class FluidTags { +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/ItemModels.java b/src/main/java/thedarkcolour/exnihiloreborn/data/ItemModels.java new file mode 100644 index 00000000..b55fe05d --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/ItemModels.java @@ -0,0 +1,21 @@ +package thedarkcolour.exnihiloreborn.data; + +import thedarkcolour.exnihiloreborn.registry.EItems; +import thedarkcolour.modkit.data.MKItemModelProvider; + +class ItemModels { + public static void addItemModels(MKItemModelProvider models) { + models.generic2d(EItems.SILK_WORM); + models.generic2d(EItems.COOKED_SILK_WORM); + + models.handheld(EItems.WOODEN_HAMMER); + models.handheld(EItems.STONE_HAMMER); + models.handheld(EItems.GOLDEN_HAMMER); + models.handheld(EItems.IRON_HAMMER); + models.handheld(EItems.DIAMOND_HAMMER); + models.handheld(EItems.NETHERITE_HAMMER); + + models.handheld(EItems.CROOK); + models.handheld(EItems.BONE_CROOK); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/ItemTags.java b/src/main/java/thedarkcolour/exnihiloreborn/data/ItemTags.java new file mode 100644 index 00000000..316fff57 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/ItemTags.java @@ -0,0 +1,29 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.tag.EItemTags; +import thedarkcolour.exnihiloreborn.registry.EItems; + +import java.util.concurrent.CompletableFuture; + +class ItemTags extends ItemTagsProvider { + public ItemTags(PackOutput output, CompletableFuture lookupProvider, CompletableFuture> blockTags, @Nullable ExistingFileHelper existingFileHelper) { + super(output, lookupProvider, blockTags, ExNihiloReborn.ID, existingFileHelper); + } + + @SuppressWarnings("unchecked") + @Override + protected void addTags(HolderLookup.Provider lookup) { + tag(EItemTags.HAMMERS).add(EItems.WOODEN_HAMMER.get(), EItems.STONE_HAMMER.get(), EItems.GOLDEN_HAMMER.get(), EItems.IRON_HAMMER.get(), EItems.DIAMOND_HAMMER.get(), EItems.NETHERITE_HAMMER.get()); + tag(EItemTags.CROOKS).add(EItems.CROOK.get(), EItems.BONE_CROOK.get()); + tag(EItemTags.WOODEN_BARRELS).add(EItems.OAK_BARREL.get(), EItems.SPRUCE_BARREL.get(), EItems.BIRCH_BARREL.get(), EItems.JUNGLE_BARREL.get(), EItems.ACACIA_BARREL.get(), EItems.DARK_OAK_BARREL.get(), EItems.MANGROVE_BARREL.get(), EItems.CHERRY_BARREL.get(), EItems.BAMBOO_BARREL.get()); + tag(EItemTags.STONE_BARRELS).add(EItems.STONE_BARREL.get()); + tag(EItemTags.BARRELS).addTags(EItemTags.WOODEN_BARRELS, EItemTags.STONE_BARRELS); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/LootTables.java b/src/main/java/thedarkcolour/exnihiloreborn/data/LootTables.java new file mode 100644 index 00000000..09ee08c2 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/LootTables.java @@ -0,0 +1,14 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.data.PackOutput; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; + +import java.util.List; +import java.util.Set; + +class LootTables extends LootTableProvider { + public LootTables(PackOutput output) { + super(output, Set.of(), List.of(new SubProviderEntry(BlockLoot::new, LootContextParamSets.BLOCK))); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/Recipes.java b/src/main/java/thedarkcolour/exnihiloreborn/data/Recipes.java new file mode 100644 index 00000000..10299c5c --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/Recipes.java @@ -0,0 +1,270 @@ +package thedarkcolour.exnihiloreborn.data; + +import com.google.common.collect.ImmutableList; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeCategory; +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.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.material.Fluids; +import net.minecraftforge.common.Tags; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.recipe.Reward; +import thedarkcolour.exnihiloreborn.recipe.barrel.FinishedBarrelCompostRecipe; +import thedarkcolour.exnihiloreborn.recipe.crucible.FinishedCrucibleRecipe; +import thedarkcolour.exnihiloreborn.recipe.hammer.FinishedHammerRecipe; +import thedarkcolour.exnihiloreborn.recipe.sieve.FinishedSieveRecipe; +import thedarkcolour.exnihiloreborn.registry.EBlocks; +import thedarkcolour.exnihiloreborn.registry.EItems; +import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; +import thedarkcolour.modkit.data.MKRecipeProvider; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +import static net.minecraft.data.recipes.SimpleCookingRecipeBuilder.*; +import static net.minecraft.data.recipes.SmithingTransformRecipeBuilder.smithing; + +class Recipes { + public static void addRecipes(Consumer writer, MKRecipeProvider recipes) { + craftingRecipes(writer, recipes); + smeltingRecipes(writer, recipes); + sieveRecipes(writer, recipes); + crucibleRecipes(writer); + hammerRecipes(writer); + barrelCompostRecipes(writer); + } + + private static void craftingRecipes(Consumer writer, MKRecipeProvider recipes) { + // Crooks + shapedCrook(recipes, EItems.CROOK, Ingredient.of(Tags.Items.RODS_WOODEN)); + shapedCrook(recipes, EItems.BONE_CROOK, Ingredient.of(Items.BONE)); + + // Hammers + shapedHammer(recipes, EItems.WOODEN_HAMMER, Ingredient.of(ItemTags.PLANKS)); + shapedHammer(recipes, EItems.STONE_HAMMER, Ingredient.of(ItemTags.STONE_CRAFTING_MATERIALS)); + shapedHammer(recipes, EItems.GOLDEN_HAMMER, Ingredient.of(Tags.Items.INGOTS_GOLD)); + shapedHammer(recipes, EItems.IRON_HAMMER, Ingredient.of(Tags.Items.INGOTS_IRON)); + shapedHammer(recipes, EItems.DIAMOND_HAMMER, Ingredient.of(Tags.Items.GEMS_DIAMOND)); + MKRecipeProvider.unlockedByHaving(smithing( + Ingredient.of(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE), + Ingredient.of(EItems.DIAMOND_HAMMER.get()), + Ingredient.of(Tags.Items.INGOTS_NETHERITE), + RecipeCategory.TOOLS, + EItems.NETHERITE_HAMMER.get() + ), + Items.NETHERITE_INGOT + ).save(writer, RecipeBuilder.getDefaultRecipeId(EItems.NETHERITE_HAMMER.get())); + + // Crucibles + uShaped(recipes, EItems.OAK_CRUCIBLE, Ingredient.of(Items.OAK_LOG), Ingredient.of(Items.OAK_SLAB)); + uShaped(recipes, EItems.SPRUCE_CRUCIBLE, Ingredient.of(Items.SPRUCE_LOG), Ingredient.of(Items.SPRUCE_SLAB)); + uShaped(recipes, EItems.BIRCH_CRUCIBLE, Ingredient.of(Items.BIRCH_LOG), Ingredient.of(Items.BIRCH_SLAB)); + uShaped(recipes, EItems.JUNGLE_CRUCIBLE, Ingredient.of(Items.JUNGLE_LOG), Ingredient.of(Items.JUNGLE_SLAB)); + uShaped(recipes, EItems.ACACIA_CRUCIBLE, Ingredient.of(Items.ACACIA_LOG), Ingredient.of(Items.ACACIA_SLAB)); + uShaped(recipes, EItems.DARK_OAK_CRUCIBLE, Ingredient.of(Items.DARK_OAK_LOG), Ingredient.of(Items.DARK_OAK_SLAB)); + uShaped(recipes, EItems.MANGROVE_CRUCIBLE, Ingredient.of(Items.MANGROVE_LOG), Ingredient.of(Items.MANGROVE_SLAB)); + uShaped(recipes, EItems.CHERRY_CRUCIBLE, Ingredient.of(Items.CHERRY_LOG), Ingredient.of(Items.CHERRY_SLAB)); + uShaped(recipes, EItems.BAMBOO_CRUCIBLE, Ingredient.of(Items.BAMBOO_BLOCK), Ingredient.of(Items.BAMBOO_SLAB)); + uShaped(recipes, EItems.CRIMSON_CRUCIBLE, Ingredient.of(Items.CRIMSON_STEM), Ingredient.of(Items.CRIMSON_SLAB)); + uShaped(recipes, EItems.WARPED_CRUCIBLE, Ingredient.of(Items.WARPED_STEM), Ingredient.of(Items.WARPED_SLAB)); + uShaped(recipes, EItems.UNFIRED_CRUCIBLE, Ingredient.of(EItems.PORCELAIN_CLAY.get()), Ingredient.of(EItems.PORCELAIN_CLAY.get())); + + // Barrels + uShaped(recipes, EItems.OAK_BARREL, Ingredient.of(Items.OAK_PLANKS), Ingredient.of(Items.OAK_SLAB)); + uShaped(recipes, EItems.SPRUCE_BARREL, Ingredient.of(Items.SPRUCE_PLANKS), Ingredient.of(Items.SPRUCE_SLAB)); + uShaped(recipes, EItems.BIRCH_BARREL, Ingredient.of(Items.BIRCH_PLANKS), Ingredient.of(Items.BIRCH_SLAB)); + uShaped(recipes, EItems.JUNGLE_BARREL, Ingredient.of(Items.JUNGLE_PLANKS), Ingredient.of(Items.JUNGLE_SLAB)); + uShaped(recipes, EItems.ACACIA_BARREL, Ingredient.of(Items.ACACIA_PLANKS), Ingredient.of(Items.ACACIA_SLAB)); + uShaped(recipes, EItems.DARK_OAK_BARREL, Ingredient.of(Items.DARK_OAK_PLANKS), Ingredient.of(Items.DARK_OAK_SLAB)); + uShaped(recipes, EItems.MANGROVE_BARREL, Ingredient.of(Items.MANGROVE_PLANKS), Ingredient.of(Items.MANGROVE_SLAB)); + uShaped(recipes, EItems.CHERRY_BARREL, Ingredient.of(Items.CHERRY_PLANKS), Ingredient.of(Items.CHERRY_SLAB)); + uShaped(recipes, EItems.BAMBOO_BARREL, Ingredient.of(Items.BAMBOO_PLANKS), Ingredient.of(Items.BAMBOO_SLAB)); + uShaped(recipes, EItems.CRIMSON_BARREL, Ingredient.of(Items.CRIMSON_PLANKS), Ingredient.of(Items.CRIMSON_SLAB)); + uShaped(recipes, EItems.WARPED_BARREL, Ingredient.of(Items.WARPED_PLANKS), Ingredient.of(Items.WARPED_SLAB)); + uShaped(recipes, EItems.STONE_BARREL, Ingredient.of(Items.STONE), Ingredient.of(Items.STONE_SLAB)); + } + + private static void shapedCrook(MKRecipeProvider recipes, RegistryObject crook, Ingredient stick) { + recipes.shapedCrafting(RecipeCategory.TOOLS, crook.get(), recipe -> { + recipe.define('x', stick); + recipe.pattern("xx"); + recipe.pattern(" x"); + recipe.pattern(" x"); + }); + } + + private static void shapedHammer(MKRecipeProvider recipes, RegistryObject hammer, Ingredient material) { + recipes.shapedCrafting(RecipeCategory.TOOLS, hammer.get(), recipe -> { + recipe.define('m', material); + recipe.define('s', Tags.Items.RODS_WOODEN); + recipe.pattern(" m "); + recipe.pattern(" sm"); + recipe.pattern("s "); + }); + } + + private static void uShaped(MKRecipeProvider recipes, RegistryObject result, Ingredient sides, Ingredient middle) { + recipes.shapedCrafting(RecipeCategory.MISC, result.get(), recipe -> { + recipe.define('s', sides); + recipe.define('m', middle); + recipe.pattern("s s"); + recipe.pattern("s s"); + recipe.pattern("sms"); + }); + } + + // todo add support in modkit + private static void smeltingRecipes(Consumer writer, MKRecipeProvider recipes) { + MKRecipeProvider.unlockedByHaving( + smelting(Ingredient.of(EItems.UNFIRED_CRUCIBLE.get()), RecipeCategory.MISC, EItems.PORCELAIN_CRUCIBLE.get(), 0.1f, 200), + EItems.UNFIRED_CRUCIBLE.get() + ).save(writer, EItems.PORCELAIN_CRUCIBLE.getId()); + MKRecipeProvider.unlockedByHaving( + smelting(Ingredient.of(EItems.SILK_WORM.get()), RecipeCategory.FOOD, EItems.COOKED_SILK_WORM.get(), 0.1f, 200), + EItems.SILK_WORM.get() + ).save(writer, EItems.COOKED_SILK_WORM.getId()); + MKRecipeProvider.unlockedByHaving( + smoking(Ingredient.of(EItems.SILK_WORM.get()), RecipeCategory.FOOD, EItems.COOKED_SILK_WORM.get(), 0.1f, 100), + EItems.SILK_WORM.get() + ).save(writer, EItems.COOKED_SILK_WORM.getId().withSuffix("_from_smoking")); + MKRecipeProvider.unlockedByHaving( + campfireCooking(Ingredient.of(EItems.SILK_WORM.get()), RecipeCategory.FOOD, EItems.COOKED_SILK_WORM.get(), 0.1f, 600), + EItems.SILK_WORM.get() + ).save(writer, EItems.PORCELAIN_CRUCIBLE.getId().withSuffix("_from_campfire_cooking")); + } + + private static void sieveRecipes(Consumer writer, MKRecipeProvider recipes) { + sieveRecipe(writer, "stone_pebble", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.withExtraChances(EItems.STONE_PEBBLE, new float[] {1.0f, 1.0f, 0.5f, 0.5f, 0.1f, 0.1f })); + sieveRecipe(writer, "wheat_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.WHEAT_SEEDS, 0.7f)); + sieveRecipe(writer, "beetroot_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.BEETROOT_SEEDS, 0.35f)); + sieveRecipe(writer, "melon_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.MELON_SEEDS, 0.35f)); + sieveRecipe(writer, "pumpkin_seeds", Ingredient.of(Items.DIRT), EItems.STRING_MESH, Reward.of(Items.PUMPKIN_SEEDS, 0.35f)); + } + + private static void sieveRecipe(Consumer consumer, String name, Ingredient block, Supplier mesh, ImmutableList rewards) { + consumer.accept(new FinishedSieveRecipe(ERecipeSerializers.SIEVE.get(), new ResourceLocation(ExNihiloReborn.ID, "sieve/" + name), mesh.get(), block, rewards)); + } + + private static void sieveRecipe(Consumer consumer, String name, Ingredient block, Supplier mesh, Reward rewards) { + consumer.accept(new FinishedSieveRecipe(ERecipeSerializers.SIEVE.get(), new ResourceLocation(ExNihiloReborn.ID, "sieve/" + name), mesh.get(), block, ImmutableList.of(rewards))); + } + + private static void crucibleRecipes(Consumer writer) { + lavaCrucible(writer, "cobblestone", Ingredient.of(Blocks.COBBLESTONE), 250); + lavaCrucible(writer, "stone", Ingredient.of(Blocks.STONE), 250); + lavaCrucible(writer, "gravel", Ingredient.of(Blocks.GRAVEL), 250); + lavaCrucible(writer, "netherrack", Ingredient.of(Blocks.NETHERRACK), 1000); + + waterCrucible(writer, "sweet_berries", Ingredient.of(Items.SWEET_BERRIES), 50); + waterCrucible(writer, "melon_slice", Ingredient.of(Items.MELON_SLICE), 50); + + waterCrucible(writer, "saplings", Ingredient.of(ItemTags.SAPLINGS), 100); + waterCrucible(writer, "small_flowers", Ingredient.of(ItemTags.SMALL_FLOWERS), 100); + waterCrucible(writer, "apple", Ingredient.of(Items.APPLE), 100); + + waterCrucible(writer, "tall_flowers", Ingredient.of(ItemTags.TALL_FLOWERS), 200); + + waterCrucible(writer, "cactus", Ingredient.of(Items.CACTUS), 250); + waterCrucible(writer, "pumpkin", Ingredient.of(Items.PUMPKIN), 250); + waterCrucible(writer, "melon", Ingredient.of(Items.MELON), 250); + waterCrucible(writer, "leaves", Ingredient.of(ItemTags.LEAVES), 250); + waterCrucible(writer, "lily_pad", Ingredient.of(Items.LILY_PAD), 100); + } + + private static void lavaCrucible(Consumer consumer, String id, Ingredient ingredient, int volume) { + consumer.accept(new FinishedCrucibleRecipe(new ResourceLocation(ExNihiloReborn.ID, "lava_crucible/" + id), ERecipeSerializers.LAVA_CRUCIBLE.get(), ingredient, Fluids.LAVA, volume)); + } + + private static void waterCrucible(Consumer consumer, String id, Ingredient ingredient, int volume) { + consumer.accept(new FinishedCrucibleRecipe(new ResourceLocation(ExNihiloReborn.ID, "water_crucible/" + id), ERecipeSerializers.WATER_CRUCIBLE.get(), ingredient, Fluids.WATER, volume)); + } + + private static void hammerRecipes(Consumer writer) { + // Cobblestone -> Gravel -> Sand -> Dust + hammerRecipe(writer, "gravel", Blocks.COBBLESTONE, new Reward(Blocks.GRAVEL)); + hammerRecipe(writer, "sand", Blocks.GRAVEL, new Reward(Blocks.SAND)); + hammerRecipe(writer, "dust", Blocks.SAND, new Reward(EBlocks.DUST.get())); + + hammerRecipe(writer, "crushed_netherrack", Blocks.NETHERRACK, new Reward(EBlocks.CRUSHED_NETHERRACK.get())); + + hammerRecipe(writer, "crushing_sandstone", Ingredient.of(Items.SANDSTONE, Items.CUT_SANDSTONE, Items.CHISELED_SANDSTONE, Items.SMOOTH_SANDSTONE), ImmutableList.of(new Reward(Items.SAND))); + hammerRecipe(writer, "crushing_red_sandstone", Ingredient.of(Items.RED_SANDSTONE, Items.CUT_RED_SANDSTONE, Items.CHISELED_RED_SANDSTONE, Items.SMOOTH_RED_SANDSTONE), ImmutableList.of(new Reward(Items.RED_SAND))); + hammerRecipe(writer, "crushing_stone_bricks", Items.STONE_BRICKS, new Reward(Items.CRACKED_STONE_BRICKS)); + + hammerRecipe(writer, "stone_pebbles", + Ingredient.of(Items.STONE, Items.CRACKED_STONE_BRICKS), + Reward.withExtraChances(EItems.STONE_PEBBLE, new float[] { 0.75f, 0.75f, 0.5f, 0.25f, 0.05f })); + } + + private static void hammerRecipe(Consumer consumer, String name, Ingredient block, ImmutableList rewards) { + consumer.accept(new FinishedHammerRecipe(ERecipeSerializers.HAMMER.get(), new ResourceLocation(ExNihiloReborn.ID, "hammer/" + name), block, rewards)); + } + + private static void hammerRecipe(Consumer consumer, String name, ItemLike block, Reward... rewards) { + hammerRecipe(consumer, name, Ingredient.of(block), ImmutableList.builder().add(rewards).build()); + } + + private static void hammerRecipe(Consumer consumer, TagKey tag, Reward rewards) { + consumer.accept(new FinishedHammerRecipe(ERecipeSerializers.HAMMER.get(), new ResourceLocation(ExNihiloReborn.ID, tag.location().getPath() + "_to_" + ForgeRegistries.ITEMS.getKey(rewards.getItem().getItem()).getPath()), Ingredient.of(tag), ImmutableList.of(rewards))); + } + + private static void barrelCompostRecipes(Consumer writer) { + // plants + barrelCompost(writer, "saplings", Ingredient.of(ItemTags.SAPLINGS), 125); + barrelCompost(writer, "leaves", Ingredient.of(ItemTags.LEAVES), 125); + barrelCompost(writer, "small_flowers", Ingredient.of(ItemTags.SMALL_FLOWERS), 100); + barrelCompost(writer, "tall_flowers", Ingredient.of(ItemTags.TALL_FLOWERS), 150); + barrelCompost(writer, "mushrooms", Ingredient.of(Tags.Items.MUSHROOMS), 100); + barrelCompost(writer, "lily_pad", Ingredient.of(Items.LILY_PAD), 100); + barrelCompost(writer, "sugar_cane", Ingredient.of(Items.SUGAR_CANE), 80); + barrelCompost(writer, "vine", Ingredient.of(Items.VINE), 100); + barrelCompost(writer, "grass", Ingredient.of(Items.GRASS, Items.FERN), 100); + barrelCompost(writer, "tall_grass", Ingredient.of(Items.TALL_GRASS, Items.LARGE_FERN), 150); + barrelCompost(writer, "seagrass", Ingredient.of(Items.SEAGRASS), 80); + barrelCompost(writer, "nether_wart", Ingredient.of(Items.NETHER_WART), 100); + barrelCompost(writer, "seeds", Ingredient.of(Tags.Items.SEEDS), 80); + barrelCompost(writer, "wheat", Ingredient.of(Tags.Items.CROPS_WHEAT), 80); + barrelCompost(writer, "berries", Ingredient.of(Items.SWEET_BERRIES, Items.GLOW_BERRIES), 80); + barrelCompost(writer, "melon", Ingredient.of(Items.MELON), 200); + barrelCompost(writer, "cake", Ingredient.of(Items.CAKE), 500); + barrelCompost(writer, "pumpkin", Ingredient.of(Items.PUMPKIN), 500); + barrelCompost(writer, "carrots", Ingredient.of(Items.CARROT), 100); + barrelCompost(writer, "potatoes", Ingredient.of(Items.POTATO, Items.BAKED_POTATO, Items.POISONOUS_POTATO), 80); + // flesh + barrelCompost(writer, "rotten_flesh", Ingredient.of(Items.ROTTEN_FLESH), 100); + barrelCompost(writer, "spider_eye", Ingredient.of(Items.SPIDER_EYE), 80); + barrelCompost(writer, "bread", Ingredient.of(Items.BREAD), 125); + barrelCompost(writer, "string", Ingredient.of(Items.STRING), 40); + // meats + barrelCompost(writer, "pork", Ingredient.of(Items.PORKCHOP, Items.COOKED_PORKCHOP), 150); + barrelCompost(writer, "beef", Ingredient.of(Items.BEEF, Items.COOKED_BEEF), 150); + barrelCompost(writer, "chicken", Ingredient.of(Items.CHICKEN, Items.COOKED_CHICKEN), 125); + barrelCompost(writer, "mutton", Ingredient.of(Items.MUTTON, Items.COOKED_MUTTON), 125); + barrelCompost(writer, "salmon", Ingredient.of(Items.SALMON, Items.COOKED_SALMON), 125); + barrelCompost(writer, "rabbit", Ingredient.of(Items.RABBIT, Items.COOKED_RABBIT), 100); + barrelCompost(writer, "cod", Ingredient.of(Items.COD, Items.COOKED_COD), 100); + barrelCompost(writer, "tropical_fish", Ingredient.of(Items.TROPICAL_FISH), 80); + barrelCompost(writer, "pufferfish", Ingredient.of(Items.PUFFERFISH), 80); + barrelCompost(writer, "egg", Ingredient.of(Items.EGG), 100); + // foods + barrelCompost(writer, "melon_slice", Ingredient.of(Items.MELON_SLICE), 40); + barrelCompost(writer, "kelp", Ingredient.of(Items.KELP, Items.DRIED_KELP), 40); + barrelCompost(writer, "silk_worms", Ingredient.of(EItems.SILK_WORM.get(), EItems.COOKED_SILK_WORM.get()), 40); + barrelCompost(writer, "apple", Ingredient.of(Items.APPLE), 100); + barrelCompost(writer, "cookie", Ingredient.of(Items.COOKIE), 100); + barrelCompost(writer, "pumpkin_pie", Ingredient.of(Items.PUMPKIN_PIE), 150); + } + + private static void barrelCompost(Consumer consumer, String id, Ingredient ingredient, int volume) { + consumer.accept(new FinishedBarrelCompostRecipe(new ResourceLocation(ExNihiloReborn.ID, "barrel_compost/" + id), ingredient, volume)); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/StructureTags.java b/src/main/java/thedarkcolour/exnihiloreborn/data/StructureTags.java new file mode 100644 index 00000000..25aa71d2 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/StructureTags.java @@ -0,0 +1,31 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.StructureTagsProvider; +import net.minecraft.data.tags.TagsProvider; +import net.minecraft.data.worldgen.StructureSets; +import net.minecraft.world.level.levelgen.structure.BuiltinStructureSets; +import net.minecraft.world.level.levelgen.structure.BuiltinStructures; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.tag.EStructureSetTags; + +import java.util.concurrent.CompletableFuture; + +class StructureTags extends TagsProvider { + public StructureTags(PackOutput output, CompletableFuture lookup, @Nullable ExistingFileHelper helper) { + super(output, Registries.STRUCTURE_SET, lookup, ExNihiloReborn.ID, helper); + } + + @Override + protected void addTags(HolderLookup.Provider lookup) { + tag(EStructureSetTags.OVERWORLD_VOID_STRUCTURES); + tag(EStructureSetTags.THE_NETHER_VOID_STRUCTURES).add(BuiltinStructureSets.NETHER_COMPLEXES); + tag(EStructureSetTags.THE_END_VOID_STRUCTURES); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/TranslationKeys.java b/src/main/java/thedarkcolour/exnihiloreborn/data/TranslationKeys.java new file mode 100644 index 00000000..55a8da91 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/TranslationKeys.java @@ -0,0 +1,31 @@ +package thedarkcolour.exnihiloreborn.data; + +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +public class TranslationKeys { + public static final String MAIN_CREATIVE_TAB = "itemGroup." + ExNihiloReborn.ID + ".main"; + public static final String VOID_WORLD_TYPE = "generator." + ExNihiloReborn.ID + ".void_world"; + + // Advancements + public static final String ROOT_ADVANCEMENT_TITLE = "advancements." + ExNihiloReborn.ID + ".core.root.title"; + public static final String ROOT_ADVANCEMENT_DESCRIPTION = "advancements." + ExNihiloReborn.ID + ".core.root.description"; + public static final String CROOK_ADVANCEMENT_TITLE = "advancements." + ExNihiloReborn.ID + ".core.crook.title"; + public static final String CROOK_ADVANCEMENT_DESCRIPTION = "advancements." + ExNihiloReborn.ID + ".core.crook.description"; + public static final String BARREL_ADVANCEMENT_TITLE = "advancements." + ExNihiloReborn.ID + ".core.barrel.title"; + public static final String BARREL_ADVANCEMENT_DESCRIPTION = "advancements." + ExNihiloReborn.ID + ".core.barrel.description"; + public static final String SILK_WORM_ADVANCEMENT_TITLE = "advancements." + ExNihiloReborn.ID + ".core.silk_worm.title"; + public static final String SILK_WORM_ADVANCEMENT_DESCRIPTION = "advancements." + ExNihiloReborn.ID + ".core.silk_worm.description"; + public static final String STRING_MESH_ADVANCEMENT_TITLE = "advancements." + ExNihiloReborn.ID + ".core.string_mesh.title"; + public static final String STRING_MESH_ADVANCEMENT_DESCRIPTION = "advancements." + ExNihiloReborn.ID + ".core.string_mesh.description"; + + // JEI + public static final String SILK_WORM_JEI_INFO = "info." + ExNihiloReborn.ID + ".silk_worm"; + public static final String BARREL_COMPOST_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.barrel_compost"; + public static final String BARREL_COMPOST_RECIPE_VOLUME = "gui." + ExNihiloReborn.ID + ".category.barrel_compost.volume"; + public static final String WATER_CRUCIBLE_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.water_crucible"; + public static final String LAVA_CRUCIBLE_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.lava_crucible"; + public static final String HAMMER_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.hammer"; + public static final String COMPRESSED_HAMMER_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.compressed_hammer"; + public static final String SIEVE_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.sieve"; + public static final String COMPRESSED_SIEVE_CATEGORY_TITLE = "gui." + ExNihiloReborn.ID + ".category.compressed_sieve"; +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/data/WorldPresetTags.java b/src/main/java/thedarkcolour/exnihiloreborn/data/WorldPresetTags.java new file mode 100644 index 00000000..d6a19ce8 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/data/WorldPresetTags.java @@ -0,0 +1,24 @@ +package thedarkcolour.exnihiloreborn.data; + +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.data.tags.WorldPresetTagsProvider; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +import java.util.concurrent.CompletableFuture; + +public class WorldPresetTags extends WorldPresetTagsProvider { + public WorldPresetTags(PackOutput output, CompletableFuture lookup, @Nullable ExistingFileHelper helper) { + super(output, lookup, ExNihiloReborn.ID, helper); + } + + @Override + protected void addTags(HolderLookup.Provider lookup) { + tag(net.minecraft.tags.WorldPresetTags.NORMAL).add(ResourceKey.create(Registries.WORLD_PRESET, new ResourceLocation(ExNihiloReborn.ID, "void_world"))); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/event/EventHandler.java b/src/main/java/thedarkcolour/exnihiloreborn/event/EventHandler.java new file mode 100644 index 00000000..6d07292f --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/event/EventHandler.java @@ -0,0 +1,112 @@ +package thedarkcolour.exnihiloreborn.event; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.features.TreeFeatures; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.XoroshiroRandomSource; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraftforge.client.event.ClientChatEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.AddReloadListenerEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.level.LevelEvent; +import net.minecraftforge.fml.InterModComms; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.blockentity.LavaCrucibleBlockEntity; +import thedarkcolour.exnihiloreborn.blockentity.WaterCrucibleBlockEntity; +import thedarkcolour.exnihiloreborn.client.CompostColors; +import thedarkcolour.exnihiloreborn.voidworld.VoidChunkGenerator; +import thedarkcolour.exnihiloreborn.compat.top.TopCompatExNihiloReborn; +import thedarkcolour.exnihiloreborn.item.HammerItem; +import thedarkcolour.exnihiloreborn.network.NetworkHandler; + +import java.util.concurrent.CompletableFuture; + +public final class EventHandler { + public static void register() { + var fmlBus = MinecraftForge.EVENT_BUS; + var modBus = FMLJavaModLoadingContext.get().getModEventBus(); + + fmlBus.addListener(EventHandler::onPlayerLogin); + fmlBus.addListener(EventHandler::addReloadListeners); + modBus.addListener(EventHandler::interModEnqueue); + fmlBus.addListener(EventHandler::createSpawnTree); + + if (ExNihiloReborn.DEBUG) { + fmlBus.addListener(EventHandler::handleDebugCommands); + } + } + + private static void handleDebugCommands(ClientChatEvent event) { + if (event.getMessage().equals(".compost_colors")) { + event.setCanceled(true); + + try { + CompostColors.loadColors(); + } catch (Exception e) { + ExNihiloReborn.LOGGER.error("Failed to load vanilla compost colors", e); + } + } + } + + private static void createSpawnTree(LevelEvent.CreateSpawnPosition event) { + if (event.getLevel() instanceof ServerLevel level) { + // todo have config option for more kinds of platforms + var rand = new XoroshiroRandomSource(level.getSeed()); + var pos = new BlockPos.MutableBlockPos(rand.nextIntBetweenInclusive(-200, 200), 64, rand.nextIntBetweenInclusive(-200, 200)); + level.setBlock(pos, Blocks.DIRT.defaultBlockState(), 2); + pos.move(0, 1, 0); + + // grow tree, has 5% chance to spawn bees based on world seed + var feature = TreeFeatures.OAK_BEES_005; + Holder> holder = level.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).getHolder(feature).orElse(null); + if (holder == null || !holder.value().place(level, level.getChunkSource().getGenerator(), rand, pos)) { + ExNihiloReborn.LOGGER.error("Failed to generate spawn tree :("); + } else { + ExNihiloReborn.LOGGER.info("Generated spawn tree at {}", pos); + } + event.setCanceled(true); + event.getSettings().setSpawn(level.getHeightmapPos(Heightmap.Types.WORLD_SURFACE_WG, pos), 90.0F); + ((ServerLevel) event.getLevel()).getGameRules().getRule(GameRules.RULE_SPAWN_RADIUS).set(0, level.getServer()); + } + } + + private static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { + if (event.getEntity() instanceof ServerPlayer player) { + if (player.serverLevel().getChunkSource().getGenerator() instanceof VoidChunkGenerator) { + NetworkHandler.sendVoidWorld(player); + var advancement = player.server.getAdvancements().getAdvancement(new ResourceLocation(ExNihiloReborn.ID, "core/root")); + if (advancement != null) { + player.getAdvancements().award(advancement, "in_void_world"); + } else { + ExNihiloReborn.LOGGER.error("Unable to grant player the Void World advancement. Ex Nihilo Reborn advancements will not show"); + } + } + } + } + + // Send messages to other mods + public static void interModEnqueue(InterModEnqueueEvent event) { + InterModComms.sendTo("theoneprobe", "getTheOneProbe", TopCompatExNihiloReborn::new); + } + + public static void addReloadListeners(AddReloadListenerEvent event) { + var recipes = event.getServerResources().getRecipeManager(); + event.addListener((prepBarrier, resourceManager, prepProfiler, reloadProfiler, backgroundExecutor, gameExecutor) -> { + return CompletableFuture.allOf().thenCompose(prepBarrier::wait).thenRunAsync(() -> { + LavaCrucibleBlockEntity.RECIPES_CACHE.invalidateAll(); + WaterCrucibleBlockEntity.RECIPES_CACHE.invalidateAll(); + HammerItem.refreshValidBlocks(recipes); + }, gameExecutor); + }); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluid.java b/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluid.java new file mode 100644 index 00000000..83bd2b27 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluid.java @@ -0,0 +1,60 @@ +package thedarkcolour.exnihiloreborn.fluid; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.common.SoundActions; +import net.minecraftforge.fluids.FluidType; +import net.minecraftforge.fluids.ForgeFlowingFluid; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.registry.EBlocks; +import thedarkcolour.exnihiloreborn.registry.EFluids; +import thedarkcolour.exnihiloreborn.registry.EItems; + +import java.util.function.Consumer; + +public class WitchWaterFluid extends FluidType { + private static final ResourceLocation STILL_TEXTURE = new ResourceLocation(ExNihiloReborn.ID, "block/witch_water_still"); + private static final ResourceLocation FLOWING_TEXTURE = new ResourceLocation(ExNihiloReborn.ID, "block/witch_water_flowing"); + private static final ResourceLocation OVERLAY_TEXTURE = new ResourceLocation("block/water_overlay"); + + public static ForgeFlowingFluid.Properties properties() { + return new ForgeFlowingFluid.Properties(EFluids.WITCH_WATER, EFluids.WITCH_WATER_STILL, EFluids.WITCH_WATER_FLOWING).block(EBlocks.WITCH_WATER).bucket(EItems.WITCH_WATER_BUCKET); + } + + public WitchWaterFluid() { + super(FluidType.Properties.create() + .fallDistanceModifier(0F) + .canExtinguish(true) + .supportsBoating(true) + .sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL) + .sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY) + .sound(SoundActions.FLUID_VAPORIZE, SoundEvents.FIRE_EXTINGUISH) + ); + } + + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientFluidTypeExtensions() { + @Override + public ResourceLocation getStillTexture() { + return STILL_TEXTURE; + } + + @Override + public ResourceLocation getFlowingTexture() { + return FLOWING_TEXTURE; + } + + @Override + public ResourceLocation getOverlayTexture() { + return OVERLAY_TEXTURE; + } + + @Override + public int getTintColor() { + return 0xFFFFFFFF; + } + }); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluidType.java b/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluidType.java deleted file mode 100644 index 08a94c6d..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/fluid/WitchWaterFluidType.java +++ /dev/null @@ -1,60 +0,0 @@ -package thedarkcolour.exnihiloreborn.fluid; - -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import org.jetbrains.annotations.Nullable; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.registry.EFluids; - -import java.util.function.Consumer; - -public class WitchWaterFluidType extends FluidType { - private static final ResourceLocation STILL_TEXTURE = new ResourceLocation(ExNihiloReborn.ID, "block/witch_water_still"); - private static final ResourceLocation FLOWING_TEXTURE = new ResourceLocation(ExNihiloReborn.ID, "block/witch_water_flowing"); - private static final ResourceLocation OVERLAY_TEXTURE = new ResourceLocation("block/water_overlay"); - - public WitchWaterFluidType() { - super(FluidType.Properties.create()); - } - - @Override - public void initializeClient(Consumer consumer) { - consumer.accept(new IClientFluidTypeExtensions() { - @Override - public ResourceLocation getStillTexture() { - return IClientFluidTypeExtensions.super.getStillTexture(); - } - - @Override - public ResourceLocation getFlowingTexture() { - return IClientFluidTypeExtensions.super.getFlowingTexture(); - } - - @Override - public @Nullable ResourceLocation getOverlayTexture() { - return IClientFluidTypeExtensions.super.getOverlayTexture(); - } - }); - } - - /*, FluidAttributes.builder(STILL_TEXTURE, FLOWING_TEXTURE) - .color(0xff551ec6) - .translationKey("block." + ExNihiloReborn.ID + ".witch_water") - .sound(SoundEvents.BUCKET_FILL, SoundEvents.BUCKET_EMPTY) - .overlay(new ResourceLocation("block/water_overlay")) - ).block(EBlocks.WITCH_WATER).bucket(EItems.WITCH_WATER_BUCKET);*/ - - public static class Flowing extends ForgeFlowingFluid.Flowing { - public Flowing() { - super(new ForgeFlowingFluid.Properties(EFluids.WITCH_WATER, EFluids.WITCH_WATER_STILL, EFluids.WITCH_WATER_FLOWING)); - } - } - - public static class Source extends ForgeFlowingFluid.Source { - public Source() { - super(new ForgeFlowingFluid.Properties(EFluids.WITCH_WATER, EFluids.WITCH_WATER_STILL, EFluids.WITCH_WATER_FLOWING)); - } - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/CrookItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/CrookItem.java index 1a1db901..ac423743 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/CrookItem.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/item/CrookItem.java @@ -1,18 +1,22 @@ package thedarkcolour.exnihiloreborn.item; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import net.minecraft.core.BlockPos; import net.minecraft.tags.ItemTags; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.Tags; import thedarkcolour.exnihiloreborn.registry.EItems; -// Silk worms have a 1 in 100 chance to drop from regular leaves, 1 in 15 if the block is infested +// Silk worms have a 1 in 100 chance to drop from regular leaves, 1 in 15 if the block is infested. // Infested leaves have a 1 in 4 * progress to drop 1 string // Infested leaves have a 1 in 16 * progress to drop another string public class CrookItem extends Item { @@ -20,29 +24,45 @@ public class CrookItem extends Item { super(properties); } + @Override + public boolean mineBlock(ItemStack stack, Level level, BlockState state, BlockPos pos, LivingEntity living) { + if (!level.isClientSide && state.getDestroySpeed(level, pos) != 0.0F) { + stack.hurtAndBreak(1, living, (p_40992_) -> { + p_40992_.broadcastBreakEvent(EquipmentSlot.MAINHAND); + }); + } + + return true; + } + + @Override + public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { + return enchantment == Enchantments.BLOCK_FORTUNE || enchantment == Enchantments.UNBREAKING || enchantment == Enchantments.BLOCK_EFFICIENCY; + } + @Override public boolean isValidRepairItem(ItemStack tool, ItemStack material) { if (this == EItems.BONE_CROOK.get()) { - return material.getItem().is(Tags.Items.BONES); + return material.is(Tags.Items.BONES); } else { - return material.getItem().is(ItemTags.PLANKS); + return material.is(ItemTags.PLANKS); } } - // Pulls the entity towards the player like a cartoon hook + // Pulls the entity towards the player like in a cartoon @Override - public ActionResultType interactLivingEntity(ItemStack stack, PlayerEntity playerIn, LivingEntity living, Hand hand) { - Vector3d difference = playerIn.position().subtract(living.position()); - double distance = Math.sqrt(Entity.getHorizontalDistanceSqr(difference)); + public InteractionResult interactLivingEntity(ItemStack stack, Player playerIn, LivingEntity living, InteractionHand hand) { + var difference = playerIn.position().subtract(living.position()); + var distance = difference.horizontalDistance(); - double scalarX = difference.x / distance; - double scalarZ = difference.z / distance; + var scalarX = difference.x / distance; + var scalarZ = difference.z / distance; - double dx = scalarX * 1.5; - double dz = scalarZ * 1.5; + var dx = scalarX * 1.5; + var dz = scalarZ * 1.5; living.setDeltaMovement(living.getDeltaMovement().add(dx, 0.0, dz)); - return ActionResultType.SUCCESS; + return InteractionResult.SUCCESS; } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/EItemTags.java b/src/main/java/thedarkcolour/exnihiloreborn/item/EItemTags.java deleted file mode 100644 index 41412dab..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/EItemTags.java +++ /dev/null @@ -1,16 +0,0 @@ -package thedarkcolour.exnihiloreborn.item; - -import net.minecraft.item.Item; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; - -public class EItemTags { - public static final ITag.INamedTag CROOKS = tag("crooks"); - public static final ITag.INamedTag HAMMERS = tag("hammers"); - public static final ITag.INamedTag COMPRESSED_HAMMERS = tag("compressed_hammers"); - - public static ITag.INamedTag tag(String name) { - return ItemTags.bind(ExNihiloReborn.ID + ":" + name); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/ETab.java b/src/main/java/thedarkcolour/exnihiloreborn/item/ETab.java deleted file mode 100644 index d5337c7e..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/ETab.java +++ /dev/null @@ -1,19 +0,0 @@ -package thedarkcolour.exnihiloreborn.item; - -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.registry.EItems; - -public final class ETab extends ItemGroup { - public static final ETab INSTANCE = new ETab(); - - private ETab() { - super(ExNihiloReborn.ID); - } - - @Override - public ItemStack makeIcon() { - return new ItemStack(EItems.CROOK.get()); - } -} \ No newline at end of file diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/FluidBucketItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/FluidBucketItem.java deleted file mode 100644 index 332d53bf..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/FluidBucketItem.java +++ /dev/null @@ -1,20 +0,0 @@ -package thedarkcolour.exnihiloreborn.item; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.common.capabilities.ICapabilityProvider; -import net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper; - -import javax.annotation.Nullable; - -public class FluidBucketItem extends Item { - public FluidBucketItem(Properties properties) { - super(properties); - } - - @Override - public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { - return new FluidBucketWrapper(stack); - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/HammerItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/HammerItem.java index c087d20e..7631cb58 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/HammerItem.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/item/HammerItem.java @@ -1,32 +1,70 @@ package thedarkcolour.exnihiloreborn.item; -import com.google.common.collect.Sets; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolItem; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.DiggerItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; import thedarkcolour.exnihiloreborn.registry.EItems; +import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; import java.util.Set; -public class HammerItem extends ToolItem { - public static final Set EFFECTIVE_ON = Sets.newHashSet( - Blocks.COBBLESTONE, - Blocks.GRAVEL, - Blocks.SAND, - Blocks.SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.SMOOTH_SANDSTONE, - Blocks.RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.SMOOTH_RED_SANDSTONE, - Blocks.STONE_BRICKS, - Blocks.CRACKED_STONE_BRICKS, Blocks.STONE - ); +public class HammerItem extends DiggerItem { + public static final Set VALID_BLOCKS = new ObjectOpenHashSet<>(); - public HammerItem(IItemTier tier, Properties properties) { - super(1.0f, -2.8f, tier, EFFECTIVE_ON, properties); // set is ignored in getDestroySpeed + public HammerItem(Tier tier, Properties properties) { + super(1.0f, -2.8f, tier, null, properties); + } + + public static void refreshValidBlocks(RecipeManager recipes) { + for (var recipe : recipes.byType(ERecipeTypes.HAMMER.get()).values()) { + for (var item : recipe.getIngredient().getItems()) { + if (item.getItem() instanceof BlockItem blockItem) { + VALID_BLOCKS.add(blockItem.getBlock()); + } + } + } + } + + protected Set getValidBlocks() { + return VALID_BLOCKS; } @Override - public int getBurnTime(ItemStack itemStack) { + public float getDestroySpeed(ItemStack stack, BlockState state) { + return getValidBlocks().contains(state.getBlock()) ? this.speed : 1.0f; + } + + @Override + public boolean isCorrectToolForDrops(BlockState state) { + if (net.minecraftforge.common.TierSortingRegistry.isTierSorted(getTier())) { + return net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), state) && getValidBlocks().contains(state.getBlock()); + } + int i = this.getTier().getLevel(); + if (i < 3 && state.is(BlockTags.NEEDS_DIAMOND_TOOL)) { + return false; + } else if (i < 2 && state.is(BlockTags.NEEDS_IRON_TOOL)) { + return false; + } else { + return (i >= 1 || !state.is(BlockTags.NEEDS_STONE_TOOL)) && getValidBlocks().contains(state.getBlock()); + } + } + + // FORGE START + @Override + public boolean isCorrectToolForDrops(ItemStack stack, BlockState state) { + return getValidBlocks().contains(state.getBlock()) && net.minecraftforge.common.TierSortingRegistry.isCorrectTierForDrops(getTier(), state); + } + + @Override + public int getBurnTime(ItemStack stack, @Nullable RecipeType recipeType) { return this == EItems.WOODEN_HAMMER.get() ? 200 : 0; } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/PorcelainBucketItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/PorcelainBucketItem.java new file mode 100644 index 00000000..543f7b00 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/item/PorcelainBucketItem.java @@ -0,0 +1,9 @@ +package thedarkcolour.exnihiloreborn.item; + +import net.minecraft.world.item.Item; + +public class PorcelainBucketItem extends Item { + public PorcelainBucketItem(Properties pProperties) { + super(pProperties); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/SilkWormItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/SilkWormItem.java index 811b1e79..9f487c31 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/item/SilkWormItem.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/item/SilkWormItem.java @@ -1,50 +1,43 @@ package thedarkcolour.exnihiloreborn.item; -import net.minecraft.block.BlockState; -import net.minecraft.block.LeavesBlock; -import net.minecraft.item.Item; -import net.minecraft.item.ItemUseContext; import net.minecraft.tags.BlockTags; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.block.LeavesBlock; import thedarkcolour.exnihiloreborn.blockentity.InfestedLeavesBlockEntity; import thedarkcolour.exnihiloreborn.registry.EBlocks; public class SilkWormItem extends Item { - public SilkWormItem(Properties properties) { + public SilkWormItem(Item.Properties properties) { super(properties); } @Override - public ActionResultType useOn(ItemUseContext context) { - BlockPos pos = context.getClickedPos(); - World level = context.getLevel(); - BlockState state = level.getBlockState(pos); + public InteractionResult useOn(UseOnContext context) { + var pos = context.getClickedPos(); + var level = context.getLevel(); + var state = level.getBlockState(pos); if (!state.isAir()) { if (state.is(BlockTags.LEAVES)) { - // Replace with infested block - level.setBlock(pos, EBlocks.INFESTED_LEAVES.get().defaultBlockState() - .setValue(LeavesBlock.DISTANCE, state.getValue(LeavesBlock.DISTANCE)) - .setValue(LeavesBlock.PERSISTENT, state.getValue(LeavesBlock.PERSISTENT)), 2); + if (!level.isClientSide) { + // Replace with infested block + level.setBlock(pos, EBlocks.INFESTED_LEAVES.get().defaultBlockState() + .setValue(LeavesBlock.DISTANCE, state.getValue(LeavesBlock.DISTANCE)) + .setValue(LeavesBlock.PERSISTENT, state.getValue(LeavesBlock.PERSISTENT)), 2); - // Set mimic - TileEntity te = level.getBlockEntity(pos); - if (te instanceof InfestedLeavesBlockEntity) { - ((InfestedLeavesBlockEntity) te).setMimic(state); - } else { - return ActionResultType.FAIL; + // Set mimic + if (level.getBlockEntity(pos) instanceof InfestedLeavesBlockEntity leaves) { + leaves.setMimic(state); + } + context.getItemInHand().shrink(1); } - // Decrease item - context.getItemInHand().shrink(1); - - return ActionResultType.sidedSuccess(level.isClientSide); + return InteractionResult.sidedSuccess(level.isClientSide); } } - return ActionResultType.FAIL; + return InteractionResult.PASS; } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/item/WitchWaterBucketItem.java b/src/main/java/thedarkcolour/exnihiloreborn/item/WitchWaterBucketItem.java new file mode 100644 index 00000000..b2ab0c3c --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/item/WitchWaterBucketItem.java @@ -0,0 +1,20 @@ +package thedarkcolour.exnihiloreborn.item; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper; +import org.jetbrains.annotations.Nullable; +import thedarkcolour.exnihiloreborn.registry.EFluids; + +public class WitchWaterBucketItem extends BucketItem { + public WitchWaterBucketItem(Properties properties) { + super(EFluids.WITCH_WATER_STILL, properties); + } + + @Override + public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + return new FluidBucketWrapper(stack); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/loot/CrookLootModifier.java b/src/main/java/thedarkcolour/exnihiloreborn/loot/CrookLootModifier.java index 19563f38..0b1dd69f 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/loot/CrookLootModifier.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/loot/CrookLootModifier.java @@ -1,56 +1,79 @@ package thedarkcolour.exnihiloreborn.loot; -import com.google.gson.JsonObject; -import net.minecraft.block.BlockState; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.loot.conditions.ILootCondition; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.tags.BlockTags; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.loot.GlobalLootModifierSerializer; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.LootParams; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +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; import thedarkcolour.exnihiloreborn.registry.EItems; -import javax.annotation.Nonnull; -import java.util.List; -import java.util.Random; - public class CrookLootModifier extends LootModifier { + public static final Codec CODEC = RecordCodecBuilder.create(inst -> { + return LootModifier.codecStart(inst).apply(inst, CrookLootModifier::new); + }); + private static final float[] SILK_WORM_FORTUNE_CHANCES = new float[] { 0.01f, 0.0111111114f, 0.0125f, 0.016666668f, 0.05f }; - protected CrookLootModifier(ILootCondition[] conditionsIn) { - super(conditionsIn); + protected CrookLootModifier(LootItemCondition[] conditions) { + super(conditions); } - @Nonnull @Override - protected List doApply(List generatedLoot, LootContext context) { - BlockState state = context.getParamOrNull(LootParameters.BLOCK_STATE); + protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { + var state = context.getParamOrNull(LootContextParams.BLOCK_STATE); + var stack = context.getParamOrNull(LootContextParams.TOOL); - if (state.is(BlockTags.LEAVES)) { - Random level = context.getRandom(); - ItemStack stack = context.getParamOrNull(LootParameters.TOOL); + if (state != null && stack != null && state.is(BlockTags.LEAVES)) { + var rand = context.getRandom(); - if (level.nextFloat() < SILK_WORM_FORTUNE_CHANCES[EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, stack)]) { - generatedLoot.add(new ItemStack(EItems.SILK_WORM.get())); + if (stack.getEnchantmentLevel(Enchantments.SILK_TOUCH) == 0) { + var fortune = stack.getEnchantmentLevel(Enchantments.BLOCK_FORTUNE); + var repeats = Math.max(1, Mth.ceil(fortune / 3f)); + + if (rand.nextInt(100) == 0) { + generatedLoot.add(new ItemStack(EItems.SILK_WORM.get())); + } + + for (int i = 0; i < repeats; i++) { + if (rand.nextFloat() < SILK_WORM_FORTUNE_CHANCES[fortune % 3]) { + generatedLoot.add(new ItemStack(EItems.SILK_WORM.get())); + } + + // crook gives an additional roll for drops + var builder = new LootParams.Builder(context.getLevel()); + builder.withParameter(LootContextParams.BLOCK_STATE, context.getParam(LootContextParams.BLOCK_STATE)); + // avoid recursion + var dummy = new ItemStack(Items.DEAD_BUSH); + dummy.setTag(stack.getTag()); + builder.withParameter(LootContextParams.TOOL, dummy); + + if (context.hasParam(LootContextParams.THIS_ENTITY)) { + builder.withParameter(LootContextParams.THIS_ENTITY, context.getParam(LootContextParams.THIS_ENTITY)); + } + if (context.hasParam(LootContextParams.ORIGIN)) { + builder.withParameter(LootContextParams.ORIGIN, context.getParam(LootContextParams.ORIGIN)); + } + var reRoll = state.getDrops(builder); + generatedLoot.addAll(reRoll); + } } } return generatedLoot; } - public static class Serializer extends GlobalLootModifierSerializer { - @Override - public CrookLootModifier read(ResourceLocation location, JsonObject object, ILootCondition[] conditions) { - return new CrookLootModifier(conditions); - } - - @Override - public JsonObject write(CrookLootModifier instance) { - return makeConditions(instance.conditions); - } + @Override + public Codec codec() { + return CODEC; } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/loot/HammerLootModifier.java b/src/main/java/thedarkcolour/exnihiloreborn/loot/HammerLootModifier.java index fbbed887..98fc0d83 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/loot/HammerLootModifier.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/loot/HammerLootModifier.java @@ -1,51 +1,47 @@ package thedarkcolour.exnihiloreborn.loot; -import com.google.gson.JsonObject; -import net.minecraft.block.BlockState; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.loot.GlobalLootModifierSerializer; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.common.loot.LootModifier; +import net.minecraftforge.registries.ForgeRegistries; import thedarkcolour.exnihiloreborn.recipe.RewardRecipe; -import thedarkcolour.exnihiloreborn.recipe.Reward; import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Random; public class HammerLootModifier extends LootModifier { - private final IRecipeType type; + public static final Codec CODEC = RecordCodecBuilder.create(inst -> LootModifier.codecStart(inst).and(ForgeRegistries.RECIPE_TYPES.getCodec().fieldOf("reward_recipe_type").forGetter(modifier -> modifier.type)).apply(inst, HammerLootModifier::new)); + private final RecipeType type; - protected HammerLootModifier(ILootCondition[] conditionsIn, IRecipeType type) { + @SuppressWarnings("unchecked") + protected HammerLootModifier(LootItemCondition[] conditionsIn, RecipeType type) { super(conditionsIn); - this.type = type; + this.type = (RecipeType) type; } @Nonnull @Override - protected List doApply(List generatedLoot, LootContext context) { - ServerWorld level = context.getLevel(); - Inventory temporaryItem = new Inventory(1); // wrap IInventory - BlockState state = context.getParamOrNull(LootParameters.BLOCK_STATE); + protected ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { + var level = context.getLevel(); + var state = context.getParamOrNull(LootContextParams.BLOCK_STATE); - if (state.getBlock().asItem() != Items.AIR) { - temporaryItem.setItem(0, new ItemStack(state.getBlock().asItem())); - Optional recipe = level.getRecipeManager().getRecipeFor(type, temporaryItem, level); + if (state != null && state.getBlock().asItem() != Items.AIR) { + var temporaryItem = new SimpleContainer(new ItemStack(state.getBlock().asItem())); + var recipe = level.getRecipeManager().getRecipeFor(type, temporaryItem, level); if (recipe.isPresent()) { - Random rand = level.random; - ArrayList newLoot = new ArrayList<>(); + var rand = level.random; + ObjectArrayList newLoot = new ObjectArrayList<>(); - for (Reward reward : recipe.get().getRewards()) { + for (var reward : recipe.get().getRewards()) { if (rand.nextFloat() < reward.getChance()) { newLoot.add(reward.getItem().copy()); } @@ -58,21 +54,9 @@ public class HammerLootModifier extends LootModifier { return generatedLoot; } - public static class Serializer extends GlobalLootModifierSerializer { - private final IRecipeType type; - - public Serializer(IRecipeType type) { - this.type = type; - } - - @Override - public HammerLootModifier read(ResourceLocation location, JsonObject object, ILootCondition[] conditions) { - return new HammerLootModifier(conditions, type); - } - - @Override - public JsonObject write(HammerLootModifier instance) { - return makeConditions(instance.conditions); - } + @Override + public Codec codec() { + return CODEC; } } + diff --git a/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedString.java b/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedString.java deleted file mode 100644 index 09baf97d..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedString.java +++ /dev/null @@ -1,69 +0,0 @@ -package thedarkcolour.exnihiloreborn.loot; - -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonObject; -import com.google.gson.JsonSerializationContext; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootFunction; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.loot.LootParameters; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.tileentity.TileEntity; -import thedarkcolour.exnihiloreborn.blockentity.InfestedLeavesBlockEntity; -import thedarkcolour.exnihiloreborn.registry.ELootFunctions; - -import java.util.Random; - -// Sets the correct amount based on the progress of the infested leaves -public class InfestedString extends LootFunction { - protected InfestedString(ILootCondition[] conditions) { - super(conditions); - } - - @Override - protected ItemStack run(ItemStack stack, LootContext context) { - TileEntity te = context.getParamOrNull(LootParameters.BLOCK_ENTITY); - - if (te instanceof InfestedLeavesBlockEntity) { - float progress = ((InfestedLeavesBlockEntity) te).getProgress(); - Random rand = context.getRandom(); - int count = 0; - - if (rand.nextFloat() < progress * 0.4) { - if (rand.nextFloat() < progress * 0.1) { - ++count; - } - ++count; - } - - if (count > 0) { - stack.setCount(count); - return stack; - } - } - - return ItemStack.EMPTY; - } - - @Override - public LootFunctionType getType() { - return ELootFunctions.INFESTED_STRING; - } - - public static LootFunction.Builder infestedString() { - return simpleBuilder(InfestedString::new); - } - - public static class Serializer extends LootFunction.Serializer { - @Override - public void serialize(JsonObject json, InfestedString p_230424_2_, JsonSerializationContext p_230424_3_) { - super.serialize(json, p_230424_2_, p_230424_3_); - } - - @Override - public InfestedString deserialize(JsonObject json, JsonDeserializationContext ctx, ILootCondition[] conditions) { - return new InfestedString(conditions); - } - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedStringCount.java b/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedStringCount.java new file mode 100644 index 00000000..4c3b20d8 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/loot/InfestedStringCount.java @@ -0,0 +1,67 @@ +package thedarkcolour.exnihiloreborn.loot; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import thedarkcolour.exnihiloreborn.block.InfestedLeavesBlock; +import thedarkcolour.exnihiloreborn.blockentity.InfestedLeavesBlockEntity; +import thedarkcolour.exnihiloreborn.registry.ELootFunctions; + +// Sets the correct amount based on the progress of the infested leaves +public class InfestedStringCount extends LootItemConditionalFunction { + // todo move to config + public static final float STRING_CHANCE = 0.4f; + + protected InfestedStringCount(LootItemCondition[] conditions) { + super(conditions); + } + + @Override + protected ItemStack run(ItemStack stack, LootContext context) { + var te = context.getParamOrNull(LootContextParams.BLOCK_ENTITY); + var state = context.getParamOrNull(LootContextParams.BLOCK_STATE); + + if (state != null && state.getValue(InfestedLeavesBlock.FULLY_INFESTED)) { + if (te instanceof InfestedLeavesBlockEntity leaves) { + var progress = leaves.getProgress(); + var rand = context.getRandom(); + var count = 0; + + if (rand.nextFloat() < progress * STRING_CHANCE) { + if (rand.nextFloat() < progress * STRING_CHANCE / 4f) { + ++count; + } + ++count; + } + + if (count > 0) { + stack.setCount(count); + return stack; + } + } + } + + return ItemStack.EMPTY; + } + + @Override + public LootItemFunctionType getType() { + return ELootFunctions.INFESTED_STRING.get(); + } + + public static LootItemConditionalFunction.Builder infestedString() { + return LootItemConditionalFunction.simpleBuilder(InfestedStringCount::new); + } + + public static class LootSerializer extends LootItemConditionalFunction.Serializer { + @Override + public InfestedStringCount deserialize(JsonObject json, JsonDeserializationContext ctx, LootItemCondition[] conditions) { + return new InfestedStringCount(conditions); + } + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/network/ClientMessageHandler.java b/src/main/java/thedarkcolour/exnihiloreborn/network/ClientMessageHandler.java new file mode 100644 index 00000000..f72c1eaf --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/network/ClientMessageHandler.java @@ -0,0 +1,53 @@ +package thedarkcolour.exnihiloreborn.network; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraftforge.fml.unsafe.UnsafeHacks; +import net.minecraftforge.fml.util.ObfuscationReflectionHelper; +import sun.misc.Unsafe; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +import java.lang.reflect.Field; + +public class ClientMessageHandler { + private static final Field CLIENT_LEVEL_DATA_FIELD; + private static final Field IS_FLAT_FIELD; + private static final boolean PATCH_VOID; + private static final Unsafe UNSAFE; + + public static boolean isInVoidWorld; + + static { + Field clientLevelDataField = null; + Field isFlatField = null; + Unsafe unsafe = null; + + try { + clientLevelDataField = ObfuscationReflectionHelper.findField(ClientLevel.class, "f_104563_"); + isFlatField = ObfuscationReflectionHelper.findField(ClientLevel.ClientLevelData.class, "f_104832_"); + + // copied from UnsafeHacks + final Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe"); + theUnsafe.setAccessible(true); + unsafe = (Unsafe)theUnsafe.get(null); + } catch (Exception e) { + e.printStackTrace(); + ExNihiloReborn.LOGGER.error("Error: Could not patch void renderer. Please open an issue on ExNihiloReborn GitHub!"); + } + CLIENT_LEVEL_DATA_FIELD = clientLevelDataField; + IS_FLAT_FIELD = isFlatField; + UNSAFE = unsafe; + PATCH_VOID = CLIENT_LEVEL_DATA_FIELD != null && IS_FLAT_FIELD != null && UNSAFE != null; + } + + // Removes the black sky/fog that appears when the player is below y=62 + public static void disableVoidFogRendering() { + isInVoidWorld = true; + + if (PATCH_VOID) { + var obj = UnsafeHacks.getField(CLIENT_LEVEL_DATA_FIELD, Minecraft.getInstance().level); + long offset = UNSAFE.objectFieldOffset(IS_FLAT_FIELD); + UNSAFE.putBoolean(obj, offset, true); + } + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/network/NetworkHandler.java b/src/main/java/thedarkcolour/exnihiloreborn/network/NetworkHandler.java new file mode 100644 index 00000000..99d24034 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/network/NetworkHandler.java @@ -0,0 +1,31 @@ +package thedarkcolour.exnihiloreborn.network; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.simple.SimpleChannel; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +public final class NetworkHandler { + public static final String PROTOCOL_VERSION = "1"; + public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(ExNihiloReborn.ID, "channel"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + + public static void register() { + CHANNEL.registerMessage(0, VoidWorldMessage.class, VoidWorldMessage::encode, VoidWorldMessage::decode, VoidWorldMessage::handle); + } + + public static void sendVoidWorld(ServerPlayer pPlayer) { + CHANNEL.sendTo(new VoidWorldMessage(), pPlayer.connection.connection, NetworkDirection.PLAY_TO_CLIENT); + } + + static void handle(Supplier ctxSupplier, Consumer handler) { + var ctx = ctxSupplier.get(); + ctx.enqueueWork(() -> handler.accept(ctx)); + ctx.setPacketHandled(true); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/network/VoidWorldMessage.java b/src/main/java/thedarkcolour/exnihiloreborn/network/VoidWorldMessage.java new file mode 100644 index 00000000..d14a76d5 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/network/VoidWorldMessage.java @@ -0,0 +1,25 @@ +package thedarkcolour.exnihiloreborn.network; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.network.NetworkEvent; + +import java.util.function.Supplier; + +// Server -> Client +// used to tell the client to disable the cave darkness rendering in a void world +public class VoidWorldMessage { + public static void encode(VoidWorldMessage msg, FriendlyByteBuf packet) { + } + + public static VoidWorldMessage decode(FriendlyByteBuf packet) { + return new VoidWorldMessage(); + } + + public void handle(Supplier ctxSupplier) { + NetworkHandler.handle(ctxSupplier, ctx -> { + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClientMessageHandler::disableVoidFogRendering); + }); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/CodecUtil.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/CodecUtil.java index afabd1d3..075d85c3 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/CodecUtil.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/CodecUtil.java @@ -3,9 +3,10 @@ package thedarkcolour.exnihiloreborn.recipe; import com.google.gson.JsonElement; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.NBTDynamicOps; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +@SuppressWarnings("OptionalGetWithoutIsPresent") public class CodecUtil { public static JsonElement encode(Codec codec, T object) { return codec.encodeStart(JsonOps.INSTANCE, object).result().get(); @@ -15,11 +16,11 @@ public class CodecUtil { return codec.parse(JsonOps.INSTANCE, json).result().get(); } - public static INBT encodeNbt(Codec codec, T object) { - return codec.encodeStart(NBTDynamicOps.INSTANCE, object).result().get(); + public static Tag encodeNbt(Codec codec, T object) { + return codec.encodeStart(NbtOps.INSTANCE, object).result().get(); } - public static T decodeNbt(Codec codec, INBT json) { - return codec.parse(NBTDynamicOps.INSTANCE, json).result().get(); + public static T decodeNbt(Codec codec, Tag json) { + return codec.parse(NbtOps.INSTANCE, json).result().get(); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/BarrelCompostRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/BarrelCompostRecipe.java index 74ea7008..0beb4d4d 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/BarrelCompostRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/BarrelCompostRecipe.java @@ -1,14 +1,12 @@ package thedarkcolour.exnihiloreborn.recipe.barrel; import com.google.gson.JsonObject; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.registries.ForgeRegistryEntry; +import net.minecraft.world.item.crafting.RecipeType; import thedarkcolour.exnihiloreborn.recipe.SingleIngredientRecipe; import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; @@ -27,39 +25,39 @@ public class BarrelCompostRecipe extends SingleIngredientRecipe { } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ERecipeSerializers.BARREL_COMPOST.get(); } @Override - public IRecipeType getType() { - return ERecipeTypes.BARREL_COMPOST; + public RecipeType getType() { + return ERecipeTypes.BARREL_COMPOST.get(); } - public static class Serializer extends ForgeRegistryEntry> implements RecipeSerializer { + public static class Serializer implements RecipeSerializer { @Override // Creates the recipe object from a JSON file public BarrelCompostRecipe fromJson(ResourceLocation name, JsonObject json) { Ingredient ingredient; - if (JSONUtils.isArrayNode(json, "ingredient")) { - ingredient = Ingredient.fromJson(JSONUtils.getAsJsonArray(json, "ingredient")); + if (GsonHelper.isArrayNode(json, "ingredient")) { + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonArray(json, "ingredient")); } else { - ingredient = Ingredient.fromJson(JSONUtils.getAsJsonObject(json, "ingredient")); + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonObject(json, "ingredient")); } - int volume = JSONUtils.getAsInt(json, "volume"); + int volume = GsonHelper.getAsInt(json, "volume"); return new BarrelCompostRecipe(name, ingredient, volume); } @Override - public void toNetwork(PacketBuffer buffer, BarrelCompostRecipe recipe) { + public void toNetwork(FriendlyByteBuf buffer, BarrelCompostRecipe recipe) { recipe.getIngredient().toNetwork(buffer); buffer.writeVarInt(recipe.getVolume()); } @Override - public BarrelCompostRecipe fromNetwork(ResourceLocation name, PacketBuffer buffer) { + public BarrelCompostRecipe fromNetwork(ResourceLocation name, FriendlyByteBuf buffer) { Ingredient ingredient = Ingredient.fromNetwork(buffer); int volume = buffer.readVarInt(); diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/FinishedBarrelCompostRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/FinishedBarrelCompostRecipe.java index 20e5a940..dfea370c 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/FinishedBarrelCompostRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/barrel/FinishedBarrelCompostRecipe.java @@ -2,15 +2,15 @@ package thedarkcolour.exnihiloreborn.recipe.barrel; import com.google.gson.JsonObject; import net.minecraft.advancements.Advancement; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; import javax.annotation.Nullable; -public class FinishedBarrelCompostRecipe implements IFinishedRecipe { +public class FinishedBarrelCompostRecipe implements FinishedRecipe { private final Advancement.Builder advancement = Advancement.Builder.advancement(); private final ResourceLocation id; private final Ingredient ingredient; @@ -34,7 +34,7 @@ public class FinishedBarrelCompostRecipe implements IFinishedRecipe { } @Override - public IRecipeSerializer getType() { + public RecipeSerializer getType() { return ERecipeSerializers.BARREL_COMPOST.get(); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/crucible/FinishedCrucibleRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/crucible/FinishedCrucibleRecipe.java index 62753acc..3435dfd0 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/crucible/FinishedCrucibleRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/crucible/FinishedCrucibleRecipe.java @@ -1,27 +1,27 @@ package thedarkcolour.exnihiloreborn.recipe.crucible; import com.google.gson.JsonObject; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; import thedarkcolour.exnihiloreborn.recipe.CodecUtil; import javax.annotation.Nullable; -public class FinishedCrucibleRecipe implements IFinishedRecipe { +public class FinishedCrucibleRecipe implements FinishedRecipe { private final ResourceLocation id; - private final IRecipeSerializer serializer; + private final RecipeSerializer serializer; private final Ingredient ingredient; private final FluidStack fluidStack; - public FinishedCrucibleRecipe(ResourceLocation id, IRecipeSerializer serializer, Ingredient ingredient, Fluid fluid, int amount) { + public FinishedCrucibleRecipe(ResourceLocation id, RecipeSerializer serializer, Ingredient ingredient, Fluid fluid, int amount) { this(id, serializer, ingredient, new FluidStack(fluid, amount)); } - public FinishedCrucibleRecipe(ResourceLocation id, IRecipeSerializer serializer, Ingredient ingredient, FluidStack fluidStack) { + public FinishedCrucibleRecipe(ResourceLocation id, RecipeSerializer serializer, Ingredient ingredient, FluidStack fluidStack) { this.id = id; this.serializer = serializer; this.ingredient = ingredient; @@ -41,7 +41,7 @@ public class FinishedCrucibleRecipe implements IFinishedRecipe { } @Override - public IRecipeSerializer getType() { + public RecipeSerializer getType() { return serializer; } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/CompressedHammerRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/CompressedHammerRecipe.java deleted file mode 100644 index b4d56814..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/CompressedHammerRecipe.java +++ /dev/null @@ -1,28 +0,0 @@ -package thedarkcolour.exnihiloreborn.recipe.hammer; - -import com.google.common.collect.ImmutableList; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; -import thedarkcolour.exnihiloreborn.recipe.Reward; -import thedarkcolour.exnihiloreborn.recipe.RewardRecipe; -import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; -import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; - -public class CompressedHammerRecipe extends RewardRecipe { - public CompressedHammerRecipe(ResourceLocation id, Ingredient ingredient, ImmutableList rewards) { - super(id, ingredient, rewards); - } - - @Override - public IRecipeSerializer getSerializer() { - return ERecipeSerializers.COMPRESSED_HAMMER.get(); - } - - @Override - public IRecipeType getType() { - return ERecipeTypes.COMPRESSED_HAMMER; - } -} - diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/FinishedHammerRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/FinishedHammerRecipe.java index 4375077e..5436abe2 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/FinishedHammerRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/FinishedHammerRecipe.java @@ -3,22 +3,22 @@ package thedarkcolour.exnihiloreborn.recipe.hammer; import com.google.common.collect.ImmutableList; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; import thedarkcolour.exnihiloreborn.recipe.CodecUtil; import thedarkcolour.exnihiloreborn.recipe.Reward; import javax.annotation.Nullable; -public class FinishedHammerRecipe implements IFinishedRecipe { +public class FinishedHammerRecipe implements FinishedRecipe { private final ResourceLocation id; private final Ingredient ingredient; private final ImmutableList rewards; - private final IRecipeSerializer serializer; + private final RecipeSerializer serializer; - public FinishedHammerRecipe(IRecipeSerializer serializer, ResourceLocation id, Ingredient ingredient, ImmutableList rewards) { + public FinishedHammerRecipe(RecipeSerializer serializer, ResourceLocation id, Ingredient ingredient, ImmutableList rewards) { this.serializer = serializer; this.id = id; this.ingredient = ingredient; @@ -44,7 +44,7 @@ public class FinishedHammerRecipe implements IFinishedRecipe { } @Override - public IRecipeSerializer getType() { + public RecipeSerializer getType() { return serializer; } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/HammerRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/HammerRecipe.java index 19580ef0..ac19c43b 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/HammerRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/hammer/HammerRecipe.java @@ -22,6 +22,6 @@ public class HammerRecipe extends RewardRecipe { @Override public RecipeType getType() { - return ERecipeTypes.HAMMER; + return ERecipeTypes.HAMMER.get(); } } \ No newline at end of file diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/AbstractSieveRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/AbstractSieveRecipe.java deleted file mode 100644 index 1cb06982..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/AbstractSieveRecipe.java +++ /dev/null @@ -1,84 +0,0 @@ -package thedarkcolour.exnihiloreborn.recipe.sieve; - -import com.google.common.collect.ImmutableList; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.mojang.datafixers.util.Function4; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.registries.ForgeRegistries; -import thedarkcolour.exnihiloreborn.recipe.CodecUtil; -import thedarkcolour.exnihiloreborn.recipe.Reward; -import thedarkcolour.exnihiloreborn.recipe.RewardRecipe; - -import javax.annotation.Nullable; - -public abstract class AbstractSieveRecipe extends RewardRecipe { - public final Item mesh; - - public AbstractSieveRecipe(ResourceLocation id, Item mesh, Ingredient ingredient, ImmutableList rewards) { - super(id, ingredient, rewards); - this.mesh = mesh; - } - - public boolean test(Item mesh, ItemStack item) { - return this.mesh == mesh && getIngredient().test(item); - } - - public static class Serializer implements RecipeSerializer { - private final Function4, T> factory; - - public Serializer(Function4, T> factory) { - this.factory = factory; - } - - @Override - public T fromJson(ResourceLocation name, JsonObject json) { - Item mesh = ForgeRegistries.ITEMS.getValue(new ResourceLocation(GsonHelper.getAsString(json, "mesh"))); - Ingredient ingredient = readIngredient(json, "ingredient"); - - // Rewards must be a list - JsonArray rewardsJson = GsonHelper.getAsJsonArray(json, "rewards"); - ImmutableList.Builder rewards = ImmutableList.builder(); - - for (JsonElement element : rewardsJson) { - rewards.add(CodecUtil.decode(Reward.CODEC, element)); - } - - return factory.apply(name, mesh, ingredient, rewards.build()); - } - - @Nullable - @Override - public T fromNetwork(ResourceLocation name, FriendlyByteBuf buffer) { - var mesh = buffer.readRegistryIdUnsafe(ForgeRegistries.ITEMS); - var ingredient = Ingredient.fromNetwork(buffer); - var rewards = ImmutableList.builder(); - - for (int i = 0; i < buffer.readVarInt(); i++) { - rewards.add(Reward.fromNetwork(buffer)); - } - - return factory.apply(name, mesh, ingredient, rewards.build()); - } - - @Override - public void toNetwork(FriendlyByteBuf buffer, T recipe) { - buffer.writeRegistryIdUnsafe(ForgeRegistries.ITEMS, recipe.mesh); - recipe.getIngredient().toNetwork(buffer); - - ImmutableList rewards = recipe.getRewards(); - buffer.writeVarInt(rewards.size()); - - for (Reward reward : rewards) { - reward.toNetwork(buffer); - } - } - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/CompressedSieveRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/CompressedSieveRecipe.java deleted file mode 100644 index a7757be3..00000000 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/CompressedSieveRecipe.java +++ /dev/null @@ -1,27 +0,0 @@ -package thedarkcolour.exnihiloreborn.recipe.sieve; - -import com.google.common.collect.ImmutableList; -import net.minecraft.item.Item; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; -import thedarkcolour.exnihiloreborn.recipe.Reward; -import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; -import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; - -public class CompressedSieveRecipe extends AbstractSieveRecipe { - public CompressedSieveRecipe(ResourceLocation id, Item mesh, Ingredient ingredient, ImmutableList rewards) { - super(id, mesh, ingredient, rewards); - } - - @Override - public IRecipeSerializer getSerializer() { - return ERecipeSerializers.COMPRESSED_SIEVE.get(); - } - - @Override - public IRecipeType getType() { - return ERecipeTypes.COMPRESSED_SIEVE; - } -} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/FinishedSieveRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/FinishedSieveRecipe.java index 48c9902e..e823e055 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/FinishedSieveRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/FinishedSieveRecipe.java @@ -3,25 +3,25 @@ package thedarkcolour.exnihiloreborn.recipe.sieve; import com.google.common.collect.ImmutableList; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraftforge.registries.ForgeRegistries; import thedarkcolour.exnihiloreborn.recipe.CodecUtil; import thedarkcolour.exnihiloreborn.recipe.Reward; import javax.annotation.Nullable; -public class FinishedSieveRecipe implements IFinishedRecipe { +public class FinishedSieveRecipe implements FinishedRecipe { private final ResourceLocation id; private final Item mesh; private final Ingredient ingredient; private final ImmutableList rewards; - private final IRecipeSerializer serializer; + private final RecipeSerializer serializer; - public FinishedSieveRecipe(IRecipeSerializer serializer, ResourceLocation id, Item mesh, Ingredient ingredient, ImmutableList rewards) { + public FinishedSieveRecipe(RecipeSerializer serializer, ResourceLocation id, Item mesh, Ingredient ingredient, ImmutableList rewards) { this.serializer = serializer; this.id = id; this.mesh = mesh; @@ -49,7 +49,7 @@ public class FinishedSieveRecipe implements IFinishedRecipe { } @Override - public IRecipeSerializer getType() { + public RecipeSerializer getType() { return serializer; } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/SieveRecipe.java b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/SieveRecipe.java index b0c9e565..1b069b5b 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/SieveRecipe.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/recipe/sieve/SieveRecipe.java @@ -1,27 +1,101 @@ package thedarkcolour.exnihiloreborn.recipe.sieve; import com.google.common.collect.ImmutableList; -import net.minecraft.item.Item; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Function4; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraftforge.registries.ForgeRegistries; +import thedarkcolour.exnihiloreborn.recipe.CodecUtil; import thedarkcolour.exnihiloreborn.recipe.Reward; +import thedarkcolour.exnihiloreborn.recipe.RewardRecipe; +import thedarkcolour.exnihiloreborn.recipe.SingleIngredientRecipe; import thedarkcolour.exnihiloreborn.registry.ERecipeSerializers; import thedarkcolour.exnihiloreborn.registry.ERecipeTypes; -public class SieveRecipe extends AbstractSieveRecipe { +import javax.annotation.Nullable; + +// in the future, this could be extended to have a heavy sieve recipe type +public class SieveRecipe extends RewardRecipe { + public final Item mesh; + public SieveRecipe(ResourceLocation id, Item mesh, Ingredient ingredient, ImmutableList rewards) { - super(id, mesh, ingredient, rewards); + super(id, ingredient, rewards); + this.mesh = mesh; + } + + public boolean test(Item mesh, ItemStack item) { + return this.mesh == mesh && getIngredient().test(item); } @Override - public IRecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return ERecipeSerializers.SIEVE.get(); } @Override - public IRecipeType getType() { - return ERecipeTypes.SIEVE; + public RecipeType getType() { + return ERecipeTypes.SIEVE.get(); + } + + public static class Serializer implements RecipeSerializer { + private final Function4, T> factory; + + public Serializer(Function4, T> factory) { + this.factory = factory; + } + + @Override + public T fromJson(ResourceLocation name, JsonObject json) { + Item mesh = ForgeRegistries.ITEMS.getValue(new ResourceLocation(GsonHelper.getAsString(json, "mesh"))); + Ingredient ingredient = readIngredient(json, "ingredient"); + + // Rewards must be a list + JsonArray rewardsJson = GsonHelper.getAsJsonArray(json, "rewards"); + ImmutableList.Builder rewards = ImmutableList.builder(); + + for (JsonElement element : rewardsJson) { + rewards.add(CodecUtil.decode(Reward.CODEC, element)); + } + + return factory.apply(name, mesh, ingredient, rewards.build()); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation name, FriendlyByteBuf buffer) { + var mesh = buffer.readRegistryIdUnsafe(ForgeRegistries.ITEMS); + var ingredient = Ingredient.fromNetwork(buffer); + var rewards = ImmutableList.builder(); + + for (int i = 0; i < buffer.readVarInt(); i++) { + rewards.add(Reward.fromNetwork(buffer)); + } + + return factory.apply(name, mesh, ingredient, rewards.build()); + } + + @Override + public void toNetwork(FriendlyByteBuf buffer, T recipe) { + buffer.writeRegistryIdUnsafe(ForgeRegistries.ITEMS, recipe.mesh); + recipe.getIngredient().toNetwork(buffer); + + var rewards = recipe.getRewards(); + buffer.writeVarInt(rewards.size()); + + for (Reward reward : rewards) { + reward.toNetwork(buffer); + } + } } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlockEntities.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlockEntities.java index b07477a8..027a0b03 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlockEntities.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlockEntities.java @@ -1,8 +1,6 @@ package thedarkcolour.exnihiloreborn.registry; -import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; @@ -20,14 +18,19 @@ public class EBlockEntities { public static final RegistryObject> LAVA_CRUCIBLE = BLOCK_ENTITIES.register("lava_crucible", () -> BlockEntityType.Builder.of(LavaCrucibleBlockEntity::new, EBlocks.WARPED_CRUCIBLE.get(), EBlocks.CRIMSON_CRUCIBLE.get(), - EBlocks.PORCELAIN_CRUCIBLE.get()).build(null)); + EBlocks.PORCELAIN_CRUCIBLE.get() + ).build(null)); public static final RegistryObject> WATER_CRUCIBLE = BLOCK_ENTITIES.register("water_crucible", () -> BlockEntityType.Builder.of(WaterCrucibleBlockEntity::new, EBlocks.OAK_CRUCIBLE.get(), EBlocks.SPRUCE_CRUCIBLE.get(), EBlocks.BIRCH_CRUCIBLE.get(), EBlocks.JUNGLE_CRUCIBLE.get(), EBlocks.ACACIA_CRUCIBLE.get(), - EBlocks.DARK_OAK_CRUCIBLE.get()).build(null)); + EBlocks.DARK_OAK_CRUCIBLE.get(), + EBlocks.MANGROVE_CRUCIBLE.get(), + EBlocks.CHERRY_CRUCIBLE.get(), + EBlocks.BAMBOO_CRUCIBLE.get() + ).build(null)); public static final RegistryObject> BARREL = BLOCK_ENTITIES.register("barrel", () -> BlockEntityType.Builder.of(BarrelBlockEntity::new, EBlocks.OAK_BARREL.get(), EBlocks.SPRUCE_BARREL.get(), @@ -35,9 +38,13 @@ public class EBlockEntities { EBlocks.JUNGLE_BARREL.get(), EBlocks.ACACIA_BARREL.get(), EBlocks.DARK_OAK_BARREL.get(), + EBlocks.MANGROVE_BARREL.get(), + EBlocks.CHERRY_BARREL.get(), + EBlocks.BAMBOO_BARREL.get(), EBlocks.CRIMSON_BARREL.get(), EBlocks.WARPED_BARREL.get(), - EBlocks.STONE_BARREL.get()).build(null)); + EBlocks.STONE_BARREL.get() + ).build(null)); public static final RegistryObject> SIEVE = BLOCK_ENTITIES.register("sieve", () -> BlockEntityType.Builder.of(SieveBlockEntity::new, EBlocks.OAK_SIEVE.get(), EBlocks.SPRUCE_SIEVE.get(), @@ -45,7 +52,10 @@ public class EBlockEntities { EBlocks.JUNGLE_SIEVE.get(), EBlocks.ACACIA_SIEVE.get(), EBlocks.DARK_OAK_SIEVE.get(), + EBlocks.MANGROVE_SIEVE.get(), + EBlocks.CHERRY_SIEVE.get(), + EBlocks.BAMBOO_SIEVE.get(), EBlocks.CRIMSON_SIEVE.get(), EBlocks.WARPED_SIEVE.get() - ).build(null)); + ).build(null)); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlocks.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlocks.java index 7cf8f79b..1afca901 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlocks.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EBlocks.java @@ -2,20 +2,21 @@ package thedarkcolour.exnihiloreborn.registry; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.MapColor; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.block.BarrelBlock; -import thedarkcolour.exnihiloreborn.block.HeavySieveBlock; import thedarkcolour.exnihiloreborn.block.InfestedLeavesBlock; import thedarkcolour.exnihiloreborn.block.LavaCrucibleBlock; import thedarkcolour.exnihiloreborn.block.SieveBlock; import thedarkcolour.exnihiloreborn.block.UnfiredCrucibleBlock; import thedarkcolour.exnihiloreborn.block.WaterCrucibleBlock; +import static net.minecraft.world.level.block.state.BlockBehaviour.Properties.copy; import static net.minecraft.world.level.block.state.BlockBehaviour.Properties.of; public class EBlocks { @@ -27,23 +28,26 @@ public class EBlocks { public static final RegistryObject CRUSHED_END_STONE = BLOCKS.register("crushed_end_stone", () -> new Block(of().sound(SoundType.WOOL).strength(0.6f))); // Compressed Blocks - public static final RegistryObject COMPRESSED_COBBLESTONE = BLOCKS.register("compressed_cobblestone", () -> new Block(Block.Properties.copy(Blocks.STONE))); - public static final RegistryObject COMPRESSED_DIRT = BLOCKS.register("compressed_dirt", () -> new Block(Block.Properties.copy(Blocks.DIRT))); - public static final RegistryObject COMPRESSED_SAND = BLOCKS.register("compressed_sand", () -> new Block(Block.Properties.copy(Blocks.SAND))); - public static final RegistryObject COMPRESSED_DUST = BLOCKS.register("compressed_dust", () -> new Block(Block.Properties.copy(DUST.get()))); - public static final RegistryObject COMPRESSED_CRUSHED_NETHERRACK = BLOCKS.register("compressed_crushed_netherrack", () -> new Block(Block.Properties.copy(CRUSHED_NETHERRACK.get()))); - public static final RegistryObject COMPRESSED_CRUSHED_END_STONE = BLOCKS.register("compressed_crushed_end_stone", () -> new Block(Block.Properties.copy(CRUSHED_END_STONE.get()))); + public static final RegistryObject COMPRESSED_COBBLESTONE = BLOCKS.register("compressed_cobblestone", () -> new Block(copy(Blocks.STONE))); + public static final RegistryObject COMPRESSED_DIRT = BLOCKS.register("compressed_dirt", () -> new Block(copy(Blocks.DIRT))); + public static final RegistryObject COMPRESSED_SAND = BLOCKS.register("compressed_sand", () -> new Block(copy(Blocks.SAND))); + public static final RegistryObject COMPRESSED_DUST = BLOCKS.register("compressed_dust", () -> new Block(copy(DUST.get()))); + public static final RegistryObject COMPRESSED_CRUSHED_NETHERRACK = BLOCKS.register("compressed_crushed_netherrack", () -> new Block(copy(CRUSHED_NETHERRACK.get()))); + public static final RegistryObject COMPRESSED_CRUSHED_END_STONE = BLOCKS.register("compressed_crushed_end_stone", () -> new Block(copy(CRUSHED_END_STONE.get()))); // Barrels - public static final RegistryObject OAK_BARREL = registerBarrel("oak_barrel", false); - public static final RegistryObject SPRUCE_BARREL = registerBarrel("spruce_barrel", false); - public static final RegistryObject BIRCH_BARREL = registerBarrel("birch_barrel", false); - public static final RegistryObject JUNGLE_BARREL = registerBarrel("jungle_barrel", false); - public static final RegistryObject ACACIA_BARREL = registerBarrel("acacia_barrel", false); - public static final RegistryObject DARK_OAK_BARREL = registerBarrel("dark_oak_barrel", false); - public static final RegistryObject CRIMSON_BARREL = registerBarrel("crimson_barrel", false); - public static final RegistryObject WARPED_BARREL = registerBarrel("warped_barrel", false); - public static final RegistryObject STONE_BARREL = registerBarrel("stone_barrel", true); + public static final RegistryObject OAK_BARREL = registerBarrel("oak_barrel", false, false); + public static final RegistryObject SPRUCE_BARREL = registerBarrel("spruce_barrel", false, false); + public static final RegistryObject BIRCH_BARREL = registerBarrel("birch_barrel", false, false); + public static final RegistryObject JUNGLE_BARREL = registerBarrel("jungle_barrel", false, false); + public static final RegistryObject ACACIA_BARREL = registerBarrel("acacia_barrel", false, false); + public static final RegistryObject DARK_OAK_BARREL = registerBarrel("dark_oak_barrel", false, false); + public static final RegistryObject MANGROVE_BARREL = registerBarrel("mangrove_barrel", false, false); + public static final RegistryObject CHERRY_BARREL = registerBarrel("cherry_barrel", false, false); + public static final RegistryObject BAMBOO_BARREL = registerBarrel("bamboo_barrel", false, false); + public static final RegistryObject CRIMSON_BARREL = registerBarrel("crimson_barrel", false, true); + public static final RegistryObject WARPED_BARREL = registerBarrel("warped_barrel", false, true); + public static final RegistryObject STONE_BARREL = registerBarrel("stone_barrel", true, true); // Sieves public static final RegistryObject OAK_SIEVE = registerSieve("oak_sieve"); @@ -52,6 +56,9 @@ public class EBlocks { public static final RegistryObject JUNGLE_SIEVE = registerSieve("jungle_sieve"); public static final RegistryObject ACACIA_SIEVE = registerSieve("acacia_sieve"); public static final RegistryObject DARK_OAK_SIEVE = registerSieve("dark_oak_sieve"); + public static final RegistryObject MANGROVE_SIEVE = registerSieve("mangrove_sieve"); + public static final RegistryObject CHERRY_SIEVE = registerSieve("cherry_sieve"); + public static final RegistryObject BAMBOO_SIEVE = registerSieve("bamboo_sieve"); public static final RegistryObject CRIMSON_SIEVE = registerSieve("crimson_sieve"); public static final RegistryObject WARPED_SIEVE = registerSieve("warped_sieve"); @@ -69,7 +76,7 @@ public class EBlocks { public static final RegistryObject PORCELAIN_CRUCIBLE = registerLavaCrucible("porcelain_crucible", false); public static final RegistryObject WARPED_CRUCIBLE = registerLavaCrucible("warped_crucible", true); public static final RegistryObject CRIMSON_CRUCIBLE = registerLavaCrucible("crimson_crucible", true); - public static final RegistryObject UNFIRED_CRUCIBLE = BLOCKS.register("unfired_crucible", () -> new UnfiredCrucibleBlock(of(Material.STONE).strength(2.0f).harvestTool(ToolType.PICKAXE))); + public static final RegistryObject UNFIRED_CRUCIBLE = BLOCKS.register("unfired_crucible", () -> new UnfiredCrucibleBlock(of().strength(2.0f))); // Water Crucibles public static final RegistryObject OAK_CRUCIBLE = registerWaterCrucible("oak_crucible"); @@ -78,21 +85,34 @@ public class EBlocks { public static final RegistryObject JUNGLE_CRUCIBLE = registerWaterCrucible("jungle_crucible"); public static final RegistryObject ACACIA_CRUCIBLE = registerWaterCrucible("acacia_crucible"); public static final RegistryObject DARK_OAK_CRUCIBLE = registerWaterCrucible("dark_oak_crucible"); + public static final RegistryObject MANGROVE_CRUCIBLE = registerWaterCrucible("mangrove_crucible"); + public static final RegistryObject CHERRY_CRUCIBLE = registerWaterCrucible("cherry_crucible"); + public static final RegistryObject BAMBOO_CRUCIBLE = registerWaterCrucible("bamboo_crucible"); // Misc - public static final RegistryObject INFESTED_LEAVES = BLOCKS.register("infested_leaves", () -> new InfestedLeavesBlock(AbstractBlock.Properties.copy(Blocks.OAK_LEAVES))); - public static final RegistryObject WITCH_WATER = BLOCKS.register("witch_water", () -> new FlowingFluidBlock(EFluids.WITCH_WATER, AbstractBlock.Properties.of(Material.WATER).noCollission().strength(100.0F).noDrops())); + public static final RegistryObject INFESTED_LEAVES = BLOCKS.register("infested_leaves", () -> new InfestedLeavesBlock(copy(Blocks.OAK_LEAVES))); + public static final RegistryObject WITCH_WATER = BLOCKS.register("witch_water", () -> new LiquidBlock(EFluids.WITCH_WATER_STILL, copy(Blocks.WATER).mapColor(MapColor.COLOR_PURPLE))); public static RegistryObject registerSieve(String name) { return BLOCKS.register(name, () -> new SieveBlock(of().strength(2.0f).noOcclusion().sound(SoundType.WOOD))); } - public static RegistryObject registerHeavySieve(String name) { - return BLOCKS.register(name, () -> new HeavySieveBlock(of(material).strength(2.0f).sound(SoundType.WOOD))); - } + //public static RegistryObject registerHeavySieve(String name) { + // return BLOCKS.register(name, () -> new HeavySieveBlock(of(material).strength(2.0f).sound(SoundType.WOOD))); + //} - public static RegistryObject registerBarrel(String name, boolean stone) { - return BLOCKS.register(name, () -> new BarrelBlock(of(material).noOcclusion().strength(stone ? 4.0f : 2.0f).sound(stone ? SoundType.STONE : SoundType.WOOD))); + public static RegistryObject registerBarrel(String name, boolean stone, boolean fireproof) { + return BLOCKS.register(name, () -> { + var props = of().noOcclusion().strength(stone ? 4.0f : 2.0f).sound(stone ? SoundType.STONE : SoundType.WOOD); + if (!stone) { + if (!fireproof) { + props.ignitedByLava(); + } + } else { + props.requiresCorrectToolForDrops(); + } + return new BarrelBlock(props); + }); } public static RegistryObject registerLavaCrucible(String name, boolean stem) { @@ -106,6 +126,6 @@ public class EBlocks { } public static RegistryObject registerWaterCrucible(String name) { - return BLOCKS.register(name, () -> new WaterCrucibleBlock(of(Material.WOOD).strength(1.5f).harvestTool(ToolType.AXE).sound(SoundType.WOOD))); + return BLOCKS.register(name, () -> new WaterCrucibleBlock(of().strength(1.5f).sound(SoundType.WOOD))); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EChunkGenerators.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EChunkGenerators.java new file mode 100644 index 00000000..52257460 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EChunkGenerators.java @@ -0,0 +1,15 @@ +package thedarkcolour.exnihiloreborn.registry; + +import com.mojang.serialization.Codec; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.voidworld.VoidChunkGenerator; + +public class EChunkGenerators { + public static final DeferredRegister> CHUNK_GENERATORS = DeferredRegister.create(Registries.CHUNK_GENERATOR, ExNihiloReborn.ID); + + public static final RegistryObject> VOID = CHUNK_GENERATORS.register("void", () -> VoidChunkGenerator.CODEC); +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/ECreativeTabs.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/ECreativeTabs.java new file mode 100644 index 00000000..82a527f6 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/ECreativeTabs.java @@ -0,0 +1,31 @@ +package thedarkcolour.exnihiloreborn.registry; + +import net.minecraft.Util; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.data.TranslationKeys; + +import java.util.function.Consumer; + +public class ECreativeTabs { + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ExNihiloReborn.ID); + + public static final RegistryObject MAIN = register("main", ECreativeTabs::mainTab); + + private static RegistryObject register(String id, Consumer create) { + return CREATIVE_TABS.register(id, () -> Util.make(new CreativeModeTab.Builder(CreativeModeTab.Row.TOP, 0), create).build()); + } + + private static void mainTab(CreativeModeTab.Builder builder) { + builder.icon(() -> new ItemStack(EItems.CROOK.get())); + builder.title(Component.translatable(TranslationKeys.MAIN_CREATIVE_TAB)); + builder.withTabsBefore(CreativeModeTabs.SPAWN_EGGS); + builder.displayItems((enabledFeatures, output) -> EItems.addItemsToMainTab(output)); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EFluids.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EFluids.java index 64ff742c..365505b9 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/EFluids.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EFluids.java @@ -2,18 +2,19 @@ package thedarkcolour.exnihiloreborn.registry; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidType; +import net.minecraftforge.fluids.ForgeFlowingFluid; import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.fluid.WitchWaterFluidType; +import thedarkcolour.exnihiloreborn.fluid.WitchWaterFluid; public class EFluids { - public static final DeferredRegister FLUID_TYPES = DeferredRegister.create(ForgeRegistries.FLUID_TYPES, ExNihiloReborn.ID); + public static final DeferredRegister FLUID_TYPES = DeferredRegister.create(ForgeRegistries.Keys.FLUID_TYPES, ExNihiloReborn.ID); public static final DeferredRegister FLUIDS = DeferredRegister.create(ForgeRegistries.FLUIDS, ExNihiloReborn.ID); - public static final RegistryObject WITCH_WATER = FLUID_TYPES.register("witch_water", () -> new WitchWaterFluidType()); + public static final RegistryObject WITCH_WATER = FLUID_TYPES.register("witch_water", WitchWaterFluid::new); - public static final RegistryObject WITCH_WATER_STILL = FLUIDS.register("witch_water", WitchWaterFluidType.Source::new); - public static final RegistryObject WITCH_WATER_FLOWING = FLUIDS.register("flowing_witch_water", WitchWaterFluidType.Flowing::new); + public static final RegistryObject WITCH_WATER_STILL = FLUIDS.register("witch_water", () -> new ForgeFlowingFluid.Source(WitchWaterFluid.properties())); + public static final RegistryObject WITCH_WATER_FLOWING = FLUIDS.register("flowing_witch_water", () -> new ForgeFlowingFluid.Flowing(WitchWaterFluid.properties())); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EGlobalLootModifiers.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EGlobalLootModifiers.java new file mode 100644 index 00000000..bd78d835 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EGlobalLootModifiers.java @@ -0,0 +1,17 @@ +package thedarkcolour.exnihiloreborn.registry; + +import com.mojang.serialization.Codec; +import net.minecraftforge.common.loot.IGlobalLootModifier; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; +import thedarkcolour.exnihiloreborn.loot.CrookLootModifier; +import thedarkcolour.exnihiloreborn.loot.HammerLootModifier; + +public class EGlobalLootModifiers { + public static final DeferredRegister> GLOBAL_LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, ExNihiloReborn.ID); + + public static final RegistryObject> CROOK = GLOBAL_LOOT_MODIFIERS.register("crook", () -> CrookLootModifier.CODEC); + public static final RegistryObject> HAMMER = GLOBAL_LOOT_MODIFIERS.register("hammer", () -> HammerLootModifier.CODEC); +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/EItems.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/EItems.java index 9c400644..7587d2b2 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/EItems.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/EItems.java @@ -1,29 +1,32 @@ package thedarkcolour.exnihiloreborn.registry; +import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Tiers; import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.item.CrookItem; -import thedarkcolour.exnihiloreborn.item.ETab; -import thedarkcolour.exnihiloreborn.item.FluidBucketItem; import thedarkcolour.exnihiloreborn.item.HammerItem; +import thedarkcolour.exnihiloreborn.item.PorcelainBucketItem; import thedarkcolour.exnihiloreborn.item.SilkWormItem; +import thedarkcolour.exnihiloreborn.item.WitchWaterBucketItem; public class EItems { public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExNihiloReborn.ID); // Silk Worm public static final RegistryObject SILK_WORM = ITEMS.register("silk_worm", () -> new SilkWormItem(props())); - public static final RegistryObject COOKED_SILK_WORM = ITEMS.register("cooked_silk_worm", () -> new Item(props().food(new Food.Builder().nutrition(2).saturationMod(0.6f).build()))); + public static final RegistryObject COOKED_SILK_WORM = ITEMS.register("cooked_silk_worm", () -> new Item(props().food(new FoodProperties.Builder().nutrition(2).saturationMod(0.6f).build()))); // Crooks - public static final RegistryObject CROOK = ITEMS.register("crook", () -> new CrookItem(props().durability(64))); - public static final RegistryObject COMPRESSED_CROOK = ITEMS.register("compressed_crook", () -> new CrookItem(props().durability(192))); - public static final RegistryObject BONE_CROOK = ITEMS.register("bone_crook", () -> new CrookItem(props().durability(256))); + public static final RegistryObject CROOK = ITEMS.register("crook", () -> new CrookItem(props().durability(128))); + public static final RegistryObject BONE_CROOK = ITEMS.register("bone_crook", () -> new CrookItem(props().durability(312))); // Sieve Meshes public static final RegistryObject STRING_MESH = ITEMS.register("string_mesh", () -> new Item(props().stacksTo(1))); @@ -33,20 +36,12 @@ public class EItems { public static final RegistryObject NETHERITE_MESH = ITEMS.register("netherite_mesh", () -> new Item(props().stacksTo(1))); // Hammers - public static final RegistryObject WOODEN_HAMMER = ITEMS.register("wooden_hammer", () -> new HammerItem(ItemTier.WOOD, props())); - public static final RegistryObject STONE_HAMMER = ITEMS.register("stone_hammer", () -> new HammerItem(ItemTier.STONE, props())); - public static final RegistryObject GOLDEN_HAMMER = ITEMS.register("golden_hammer", () -> new HammerItem(ItemTier.GOLD, props())); - public static final RegistryObject IRON_HAMMER = ITEMS.register("iron_hammer", () -> new HammerItem(ItemTier.IRON, props())); - public static final RegistryObject DIAMOND_HAMMER = ITEMS.register("diamond_hammer", () -> new HammerItem(ItemTier.DIAMOND, props())); - public static final RegistryObject NETHERITE_HAMMER = ITEMS.register("netherite_hammer", () -> new HammerItem(ItemTier.NETHERITE, props())); - - // Compressed Hammers - public static final RegistryObject COMPRESSED_WOODEN_HAMMER = ITEMS.register("compressed_wooden_hammer", () -> new HammerItem(ItemTier.WOOD, props())); - public static final RegistryObject COMPRESSED_STONE_HAMMER = ITEMS.register("compressed_stone_hammer", () -> new HammerItem(ItemTier.STONE, props())); - public static final RegistryObject COMPRESSED_GOLDEN_HAMMER = ITEMS.register("compressed_golden_hammer", () -> new HammerItem(ItemTier.GOLD, props())); - public static final RegistryObject COMPRESSED_IRON_HAMMER = ITEMS.register("compressed_iron_hammer", () -> new HammerItem(ItemTier.IRON, props())); - public static final RegistryObject COMPRESSED_DIAMOND_HAMMER = ITEMS.register("compressed_diamond_hammer", () -> new HammerItem(ItemTier.DIAMOND, props())); - public static final RegistryObject COMPRESSED_NETHERITE_HAMMER = ITEMS.register("compressed_netherite_hammer", () -> new HammerItem(ItemTier.NETHERITE, props())); + public static final RegistryObject WOODEN_HAMMER = ITEMS.register("wooden_hammer", () -> new HammerItem(Tiers.WOOD, props())); + public static final RegistryObject STONE_HAMMER = ITEMS.register("stone_hammer", () -> new HammerItem(Tiers.STONE, props())); + public static final RegistryObject GOLDEN_HAMMER = ITEMS.register("golden_hammer", () -> new HammerItem(Tiers.GOLD, props())); + public static final RegistryObject IRON_HAMMER = ITEMS.register("iron_hammer", () -> new HammerItem(Tiers.IRON, props())); + public static final RegistryObject DIAMOND_HAMMER = ITEMS.register("diamond_hammer", () -> new HammerItem(Tiers.DIAMOND, props())); + public static final RegistryObject NETHERITE_HAMMER = ITEMS.register("netherite_hammer", () -> new HammerItem(Tiers.NETHERITE, props())); // Ore Pieces todo re evaluate public static final RegistryObject IRON_ORE_PIECES = registerSimpleItem("iron_ore_pieces"); @@ -59,9 +54,10 @@ public class EItems { // Misc public static final RegistryObject PORCELAIN_CLAY = registerSimpleItem("porcelain_clay"); + public static final RegistryObject PORCELAIN_BUCKET = ITEMS.register("porcelain_bucket", () -> new PorcelainBucketItem(props().stacksTo(1))); // Fluids - public static final RegistryObject WITCH_WATER_BUCKET = ITEMS.register("witch_water_bucket", () -> new FluidBucketItem(props().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final RegistryObject WITCH_WATER_BUCKET = ITEMS.register("witch_water_bucket", () -> new WitchWaterBucketItem(props().craftRemainder(Items.BUCKET).stacksTo(1))); public static RegistryObject registerSimpleItem(String name) { return ITEMS.register(name, () -> new Item(props())); @@ -82,74 +78,129 @@ public class EItems { public static final RegistryObject CRUSHED_NETHERRACK; public static final RegistryObject CRUSHED_END_STONE; - public static final RegistryObject COMPRESSED_COBBLESTONE; - public static final RegistryObject COMPRESSED_DIRT; - public static final RegistryObject COMPRESSED_SAND; - public static final RegistryObject COMPRESSED_DUST; - public static final RegistryObject COMPRESSED_CRUSHED_NETHERRACK; - public static final RegistryObject COMPRESSED_CRUSHED_END_STONE; - // Barrels - public static final RegistryObject OAK_BARREL = registerItemBlock(EBlocks.OAK_BARREL); - public static final RegistryObject SPRUCE_BARREL = registerItemBlock(EBlocks.SPRUCE_BARREL); - public static final RegistryObject BIRCH_BARREL = registerItemBlock(EBlocks.BIRCH_BARREL); - public static final RegistryObject JUNGLE_BARREL = registerItemBlock(EBlocks.JUNGLE_BARREL); - public static final RegistryObject ACACIA_BARREL = registerItemBlock(EBlocks.ACACIA_BARREL); - public static final RegistryObject DARK_OAK_BARREL = registerItemBlock(EBlocks.DARK_OAK_BARREL); - public static final RegistryObject CRIMSON_BARREL = registerItemBlock(EBlocks.CRIMSON_BARREL); - public static final RegistryObject WARPED_BARREL = registerItemBlock(EBlocks.WARPED_BARREL); - public static final RegistryObject STONE_BARREL = registerItemBlock(EBlocks.STONE_BARREL); + public static final RegistryObject OAK_BARREL; + public static final RegistryObject SPRUCE_BARREL; + public static final RegistryObject BIRCH_BARREL; + public static final RegistryObject JUNGLE_BARREL; + public static final RegistryObject ACACIA_BARREL; + public static final RegistryObject DARK_OAK_BARREL; + public static final RegistryObject MANGROVE_BARREL; + public static final RegistryObject CHERRY_BARREL; + public static final RegistryObject BAMBOO_BARREL; + public static final RegistryObject CRIMSON_BARREL; + public static final RegistryObject WARPED_BARREL; + public static final RegistryObject STONE_BARREL; // Sieves - public static final RegistryObject OAK_SIEVE = registerItemBlock(EBlocks.OAK_SIEVE); - public static final RegistryObject SPRUCE_SIEVE = registerItemBlock(EBlocks.SPRUCE_SIEVE); - public static final RegistryObject BIRCH_SIEVE = registerItemBlock(EBlocks.BIRCH_SIEVE); - public static final RegistryObject JUNGLE_SIEVE = registerItemBlock(EBlocks.JUNGLE_SIEVE); - public static final RegistryObject ACACIA_SIEVE = registerItemBlock(EBlocks.ACACIA_SIEVE); - public static final RegistryObject DARK_OAK_SIEVE = registerItemBlock(EBlocks.DARK_OAK_SIEVE); - public static final RegistryObject CRIMSON_SIEVE = registerItemBlock(EBlocks.CRIMSON_SIEVE); - public static final RegistryObject WARPED_SIEVE = registerItemBlock(EBlocks.WARPED_SIEVE); - - // Compressed Sieves - //public static final RegistryObject HEAVY_OAK_SIEVE; - //public static final RegistryObject HEAVY_SPRUCE_SIEVE; - //public static final RegistryObject HEAVY_BIRCH_SIEVE; - //public static final RegistryObject HEAVY_JUNGLE_SIEVE; - //public static final RegistryObject HEAVY_ACACIA_SIEVE; - //public static final RegistryObject HEAVY_DARK_OAK_SIEVE; - //public static final RegistryObject HEAVY_CRIMSON_SIEVE; - //public static final RegistryObject HEAVY_WARPED_SIEVE; + public static final RegistryObject OAK_SIEVE; + public static final RegistryObject SPRUCE_SIEVE; + public static final RegistryObject BIRCH_SIEVE; + public static final RegistryObject JUNGLE_SIEVE; + public static final RegistryObject ACACIA_SIEVE; + public static final RegistryObject DARK_OAK_SIEVE; + public static final RegistryObject MANGROVE_SIEVE; + public static final RegistryObject CHERRY_SIEVE; + public static final RegistryObject BAMBOO_SIEVE; + public static final RegistryObject CRIMSON_SIEVE; + public static final RegistryObject WARPED_SIEVE; // Lava Crucibles - public static final RegistryObject PORCELAIN_CRUCIBLE = registerItemBlock(EBlocks.PORCELAIN_CRUCIBLE); - public static final RegistryObject WARPED_CRUCIBLE = registerItemBlock(EBlocks.WARPED_CRUCIBLE); - public static final RegistryObject CRIMSON_CRUCIBLE = registerItemBlock(EBlocks.CRIMSON_CRUCIBLE); - public static final RegistryObject UNFIRED_CRUCIBLE = registerItemBlock(EBlocks.UNFIRED_CRUCIBLE); + public static final RegistryObject PORCELAIN_CRUCIBLE; + public static final RegistryObject WARPED_CRUCIBLE; + public static final RegistryObject CRIMSON_CRUCIBLE; + public static final RegistryObject UNFIRED_CRUCIBLE; // Water Crucibles - public static final RegistryObject OAK_CRUCIBLE = registerItemBlock(EBlocks.OAK_CRUCIBLE); - public static final RegistryObject SPRUCE_CRUCIBLE = registerItemBlock(EBlocks.SPRUCE_CRUCIBLE); - public static final RegistryObject BIRCH_CRUCIBLE = registerItemBlock(EBlocks.BIRCH_CRUCIBLE); - public static final RegistryObject JUNGLE_CRUCIBLE = registerItemBlock(EBlocks.JUNGLE_CRUCIBLE); - public static final RegistryObject ACACIA_CRUCIBLE = registerItemBlock(EBlocks.ACACIA_CRUCIBLE); - public static final RegistryObject DARK_OAK_CRUCIBLE = registerItemBlock(EBlocks.DARK_OAK_CRUCIBLE); + public static final RegistryObject OAK_CRUCIBLE; + public static final RegistryObject SPRUCE_CRUCIBLE; + public static final RegistryObject BIRCH_CRUCIBLE; + public static final RegistryObject JUNGLE_CRUCIBLE; + public static final RegistryObject ACACIA_CRUCIBLE; + public static final RegistryObject DARK_OAK_CRUCIBLE; + public static final RegistryObject MANGROVE_CRUCIBLE; + public static final RegistryObject CHERRY_CRUCIBLE; + public static final RegistryObject BAMBOO_CRUCIBLE; + + public static void addItemsToMainTab(CreativeModeTab.Output output) { + output.accept(OAK_BARREL.get()); + output.accept(SPRUCE_BARREL.get()); + output.accept(BIRCH_BARREL.get()); + output.accept(JUNGLE_BARREL.get()); + output.accept(ACACIA_BARREL.get()); + output.accept(DARK_OAK_BARREL.get()); + output.accept(MANGROVE_BARREL.get()); + output.accept(CHERRY_BARREL.get()); + output.accept(BAMBOO_BARREL.get()); + output.accept(CRIMSON_BARREL.get()); + output.accept(WARPED_BARREL.get()); + output.accept(STONE_BARREL.get()); + output.accept(OAK_SIEVE.get()); + output.accept(SPRUCE_SIEVE.get()); + output.accept(BIRCH_SIEVE.get()); + output.accept(JUNGLE_SIEVE.get()); + output.accept(ACACIA_SIEVE.get()); + output.accept(DARK_OAK_SIEVE.get()); + output.accept(MANGROVE_SIEVE.get()); + output.accept(CHERRY_SIEVE.get()); + output.accept(BAMBOO_SIEVE.get()); + output.accept(CRIMSON_SIEVE.get()); + output.accept(WARPED_SIEVE.get()); + output.accept(PORCELAIN_CRUCIBLE.get()); + output.accept(WARPED_CRUCIBLE.get()); + output.accept(CRIMSON_CRUCIBLE.get()); + output.accept(UNFIRED_CRUCIBLE.get()); + output.accept(OAK_CRUCIBLE.get()); + output.accept(SPRUCE_CRUCIBLE.get()); + output.accept(BIRCH_CRUCIBLE.get()); + output.accept(JUNGLE_CRUCIBLE.get()); + output.accept(ACACIA_CRUCIBLE.get()); + output.accept(DARK_OAK_CRUCIBLE.get()); + output.accept(MANGROVE_CRUCIBLE.get()); + output.accept(CHERRY_CRUCIBLE.get()); + output.accept(BAMBOO_CRUCIBLE.get()); + output.accept(DUST.get()); + output.accept(CRUSHED_NETHERRACK.get()); + output.accept(CRUSHED_END_STONE.get()); + + output.accept(SILK_WORM.get()); + output.accept(COOKED_SILK_WORM.get()); + output.accept(CROOK.get()); + output.accept(BONE_CROOK.get()); + output.accept(STRING_MESH.get()); + output.accept(FLINT_MESH.get()); + output.accept(IRON_MESH.get()); + output.accept(DIAMOND_MESH.get()); + output.accept(NETHERITE_MESH.get()); + output.accept(WOODEN_HAMMER.get()); + output.accept(STONE_HAMMER.get()); + output.accept(GOLDEN_HAMMER.get()); + output.accept(IRON_HAMMER.get()); + output.accept(DIAMOND_HAMMER.get()); + output.accept(NETHERITE_HAMMER.get()); + output.accept(IRON_ORE_PIECES.get()); + output.accept(COPPER_ORE_PIECES.get()); + output.accept(GOLD_ORE_PIECES.get()); + output.accept(STONE_PEBBLE.get()); + output.accept(DEEPSLATE_PEBBLE.get()); + output.accept(PORCELAIN_CLAY.get()); + output.accept(PORCELAIN_BUCKET.get()); + output.accept(WITCH_WATER_BUCKET.get()); + } static { DUST = registerItemBlock(EBlocks.DUST); CRUSHED_NETHERRACK = registerItemBlock(EBlocks.CRUSHED_NETHERRACK); CRUSHED_END_STONE = registerItemBlock(EBlocks.CRUSHED_END_STONE); - COMPRESSED_COBBLESTONE = registerItemBlock(EBlocks.COMPRESSED_COBBLESTONE); - COMPRESSED_DIRT = registerItemBlock(EBlocks.COMPRESSED_DIRT); - COMPRESSED_SAND = registerItemBlock(EBlocks.COMPRESSED_SAND); - COMPRESSED_DUST = registerItemBlock(EBlocks.COMPRESSED_DUST); - COMPRESSED_CRUSHED_NETHERRACK = registerItemBlock(EBlocks.COMPRESSED_CRUSHED_NETHERRACK); - COMPRESSED_CRUSHED_END_STONE = registerItemBlock(EBlocks.COMPRESSED_CRUSHED_END_STONE); OAK_BARREL = registerItemBlock(EBlocks.OAK_BARREL); SPRUCE_BARREL = registerItemBlock(EBlocks.SPRUCE_BARREL); BIRCH_BARREL = registerItemBlock(EBlocks.BIRCH_BARREL); JUNGLE_BARREL = registerItemBlock(EBlocks.JUNGLE_BARREL); ACACIA_BARREL = registerItemBlock(EBlocks.ACACIA_BARREL); DARK_OAK_BARREL = registerItemBlock(EBlocks.DARK_OAK_BARREL); + MANGROVE_BARREL = registerItemBlock(EBlocks.MANGROVE_BARREL); + CHERRY_BARREL = registerItemBlock(EBlocks.CHERRY_BARREL); + BAMBOO_BARREL = registerItemBlock(EBlocks.BAMBOO_BARREL); CRIMSON_BARREL = registerItemBlock(EBlocks.CRIMSON_BARREL); WARPED_BARREL = registerItemBlock(EBlocks.WARPED_BARREL); STONE_BARREL = registerItemBlock(EBlocks.STONE_BARREL); @@ -159,6 +210,9 @@ public class EItems { JUNGLE_SIEVE = registerItemBlock(EBlocks.JUNGLE_SIEVE); ACACIA_SIEVE = registerItemBlock(EBlocks.ACACIA_SIEVE); DARK_OAK_SIEVE = registerItemBlock(EBlocks.DARK_OAK_SIEVE); + MANGROVE_SIEVE = registerItemBlock(EBlocks.MANGROVE_SIEVE); + CHERRY_SIEVE = registerItemBlock(EBlocks.CHERRY_SIEVE); + BAMBOO_SIEVE = registerItemBlock(EBlocks.BAMBOO_SIEVE); CRIMSON_SIEVE = registerItemBlock(EBlocks.CRIMSON_SIEVE); WARPED_SIEVE = registerItemBlock(EBlocks.WARPED_SIEVE); //HEAVY_OAK_SIEVE = registerItemBlock(EBlocks.HEAVY_OAK_SIEVE); @@ -179,5 +233,8 @@ public class EItems { JUNGLE_CRUCIBLE = registerItemBlock(EBlocks.JUNGLE_CRUCIBLE); ACACIA_CRUCIBLE = registerItemBlock(EBlocks.ACACIA_CRUCIBLE); DARK_OAK_CRUCIBLE = registerItemBlock(EBlocks.DARK_OAK_CRUCIBLE); + MANGROVE_CRUCIBLE = registerItemBlock(EBlocks.MANGROVE_CRUCIBLE); + CHERRY_CRUCIBLE = registerItemBlock(EBlocks.CHERRY_CRUCIBLE); + BAMBOO_CRUCIBLE = registerItemBlock(EBlocks.BAMBOO_CRUCIBLE); } } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/ELootFunctions.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/ELootFunctions.java index 94868709..96bb1be7 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/ELootFunctions.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/ELootFunctions.java @@ -1,18 +1,13 @@ package thedarkcolour.exnihiloreborn.registry; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; import thedarkcolour.exnihiloreborn.ExNihiloReborn; -import thedarkcolour.exnihiloreborn.loot.InfestedString; +import thedarkcolour.exnihiloreborn.loot.InfestedStringCount; public class ELootFunctions { - public static final LootFunctionType INFESTED_STRING = register("infested_string", new LootFunctionType(new InfestedString.Serializer())); - - // Trigger classloading - public static void init() {} - - private static LootFunctionType register(String name, LootFunctionType type) { - return Registry.register(Registry.LOOT_FUNCTION_TYPE, new ResourceLocation(ExNihiloReborn.ID, name), type); - } + public static final DeferredRegister LOOT_FUNCTIONS = DeferredRegister.create(Registries.LOOT_FUNCTION_TYPE, ExNihiloReborn.ID); + public static final RegistryObject INFESTED_STRING = LOOT_FUNCTIONS.register("infested_string", () -> new LootItemFunctionType(new InfestedStringCount.LootSerializer())); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeSerializers.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeSerializers.java index 9d0b6a65..9e9cddf2 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeSerializers.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeSerializers.java @@ -8,10 +8,7 @@ import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.recipe.RewardRecipe; import thedarkcolour.exnihiloreborn.recipe.barrel.BarrelCompostRecipe; import thedarkcolour.exnihiloreborn.recipe.crucible.CrucibleRecipe; -import thedarkcolour.exnihiloreborn.recipe.hammer.CompressedHammerRecipe; import thedarkcolour.exnihiloreborn.recipe.hammer.HammerRecipe; -import thedarkcolour.exnihiloreborn.recipe.sieve.AbstractSieveRecipe; -import thedarkcolour.exnihiloreborn.recipe.sieve.CompressedSieveRecipe; import thedarkcolour.exnihiloreborn.recipe.sieve.SieveRecipe; public class ERecipeSerializers { @@ -20,11 +17,9 @@ public class ERecipeSerializers { public static final RegistryObject> BARREL_COMPOST = RECIPE_SERIALIZERS.register("barrel_compost", BarrelCompostRecipe.Serializer::new); public static final RegistryObject> HAMMER = RECIPE_SERIALIZERS.register("hammer", () -> new RewardRecipe.Serializer<>(HammerRecipe::new)); - public static final RegistryObject> COMPRESSED_HAMMER = RECIPE_SERIALIZERS.register("compressed_hammer", () -> new RewardRecipe.Serializer<>(CompressedHammerRecipe::new)); - public static final RegistryObject> LAVA_CRUCIBLE = RECIPE_SERIALIZERS.register("lava_crucible", () -> new CrucibleRecipe.Serializer(ERecipeTypes.LAVA_CRUCIBLE)); - public static final RegistryObject> WATER_CRUCIBLE = RECIPE_SERIALIZERS.register("water_crucible", () -> new CrucibleRecipe.Serializer(ERecipeTypes.WATER_CRUCIBLE)); + public static final RegistryObject> LAVA_CRUCIBLE = RECIPE_SERIALIZERS.register("lava_crucible", () -> new CrucibleRecipe.Serializer(ERecipeTypes.LAVA_CRUCIBLE.get())); + public static final RegistryObject> WATER_CRUCIBLE = RECIPE_SERIALIZERS.register("water_crucible", () -> new CrucibleRecipe.Serializer(ERecipeTypes.WATER_CRUCIBLE.get())); - public static final RegistryObject> SIEVE = RECIPE_SERIALIZERS.register("sieve", () -> new AbstractSieveRecipe.Serializer<>(SieveRecipe::new)); - public static final RegistryObject> COMPRESSED_SIEVE = RECIPE_SERIALIZERS.register("compressed_sieve", () -> new AbstractSieveRecipe.Serializer<>(CompressedSieveRecipe::new)); + public static final RegistryObject> SIEVE = RECIPE_SERIALIZERS.register("sieve", () -> new SieveRecipe.Serializer<>(SieveRecipe::new)); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeTypes.java b/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeTypes.java index d891438f..8906dcc3 100644 --- a/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeTypes.java +++ b/src/main/java/thedarkcolour/exnihiloreborn/registry/ERecipeTypes.java @@ -1,27 +1,24 @@ package thedarkcolour.exnihiloreborn.registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; import thedarkcolour.exnihiloreborn.ExNihiloReborn; import thedarkcolour.exnihiloreborn.recipe.barrel.BarrelCompostRecipe; import thedarkcolour.exnihiloreborn.recipe.crucible.CrucibleRecipe; -import thedarkcolour.exnihiloreborn.recipe.hammer.CompressedHammerRecipe; import thedarkcolour.exnihiloreborn.recipe.hammer.HammerRecipe; -import thedarkcolour.exnihiloreborn.recipe.sieve.CompressedSieveRecipe; import thedarkcolour.exnihiloreborn.recipe.sieve.SieveRecipe; public class ERecipeTypes { - public static final RecipeType BARREL_COMPOST = RecipeType.register(ExNihiloReborn.ID + ":barrel_compost"); + public static final DeferredRegister> RECIPE_TYPES = DeferredRegister.create(Registries.RECIPE_TYPE, ExNihiloReborn.ID); - public static final RecipeType LAVA_CRUCIBLE = RecipeType.register(ExNihiloReborn.ID + ":lava_crucible"); - public static final RecipeType WATER_CRUCIBLE = RecipeType.register(ExNihiloReborn.ID + ":water_crucible"); + public static final RegistryObject> BARREL_COMPOST = RECIPE_TYPES.register("barrel_compost", () -> RecipeType.simple(ERecipeTypes.BARREL_COMPOST.getId())); - public static final RecipeType HAMMER = RecipeType.register(ExNihiloReborn.ID + ":hammer"); - public static final RecipeType COMPRESSED_HAMMER = RecipeType.register(ExNihiloReborn.ID + ":compressed_hammer"); + public static final RegistryObject> LAVA_CRUCIBLE = RECIPE_TYPES.register("lava_crucible", () -> RecipeType.simple(ERecipeTypes.LAVA_CRUCIBLE.getId())); + public static final RegistryObject> WATER_CRUCIBLE = RECIPE_TYPES.register("water_crucible", () -> RecipeType.simple(ERecipeTypes.WATER_CRUCIBLE.getId())); + public static final RegistryObject> HAMMER = RECIPE_TYPES.register("hammer", () -> RecipeType.simple(ERecipeTypes.HAMMER.getId())); - public static final RecipeType SIEVE = RecipeType.register(ExNihiloReborn.ID + ":sieve"); - public static final RecipeType COMPRESSED_SIEVE = RecipeType.register(ExNihiloReborn.ID + ":compressed_sieve"); - - // Trigger classloading - public static void init() {} + public static final RegistryObject> SIEVE = RECIPE_TYPES.register("sieve", () -> RecipeType.simple(ERecipeTypes.SIEVE.getId())); } diff --git a/src/main/java/thedarkcolour/exnihiloreborn/tag/EItemTags.java b/src/main/java/thedarkcolour/exnihiloreborn/tag/EItemTags.java new file mode 100644 index 00000000..855741b7 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/tag/EItemTags.java @@ -0,0 +1,19 @@ +package thedarkcolour.exnihiloreborn.tag; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +public class EItemTags { + public static final TagKey CROOKS = tag("crooks"); + public static final TagKey HAMMERS = tag("hammers"); + public static final TagKey WOODEN_BARRELS = tag("wooden_barrels"); + public static final TagKey STONE_BARRELS = tag("stone_barrels"); + public static final TagKey BARRELS = tag("barrels"); + + public static TagKey tag(String name) { + return ItemTags.create(new ResourceLocation(ExNihiloReborn.ID, name)); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/tag/EStructureSetTags.java b/src/main/java/thedarkcolour/exnihiloreborn/tag/EStructureSetTags.java new file mode 100644 index 00000000..a9af25a8 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/tag/EStructureSetTags.java @@ -0,0 +1,18 @@ +package thedarkcolour.exnihiloreborn.tag; + +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import thedarkcolour.exnihiloreborn.ExNihiloReborn; + +public class EStructureSetTags { + public static final TagKey OVERWORLD_VOID_STRUCTURES = tag("overworld_void_structure_sets"); + public static final TagKey THE_NETHER_VOID_STRUCTURES = tag("the_nether_void_structure_sets"); + public static final TagKey THE_END_VOID_STRUCTURES = tag("the_end_void_structure_sets"); + + public static TagKey tag(String name) { + return TagKey.create(Registries.STRUCTURE_SET, new ResourceLocation(ExNihiloReborn.ID, name)); + } +} diff --git a/src/main/java/thedarkcolour/exnihiloreborn/voidworld/VoidChunkGenerator.java b/src/main/java/thedarkcolour/exnihiloreborn/voidworld/VoidChunkGenerator.java new file mode 100644 index 00000000..0f461b29 --- /dev/null +++ b/src/main/java/thedarkcolour/exnihiloreborn/voidworld/VoidChunkGenerator.java @@ -0,0 +1,133 @@ +package thedarkcolour.exnihiloreborn.voidworld; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.WorldGenRegion; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.LevelHeightAccessor; +import net.minecraft.world.level.NoiseColumn; +import net.minecraft.world.level.StructureManager; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.biome.BiomeManager; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.chunk.ChunkGeneratorStructureState; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; +import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.RandomState; +import net.minecraft.world.level.levelgen.blending.Blender; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; + +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.stream.Stream; + +public class VoidChunkGenerator extends NoiseBasedChunkGenerator { + public static final Codec CODEC = RecordCodecBuilder.create((inst) -> { + return inst.group( + BiomeSource.CODEC.fieldOf("biome_source").forGetter(gen -> gen.biomeSource), + NoiseGeneratorSettings.CODEC.fieldOf("settings").forGetter(gen -> gen.settings), + TagKey.codec(Registries.STRUCTURE_SET).fieldOf("allowed_structure_sets").forGetter(gen -> gen.allowedStructureSets) + ).apply(inst, inst.stable(VoidChunkGenerator::new)); + }); + private final Holder settings; + private final TagKey allowedStructureSets; + + public VoidChunkGenerator(BiomeSource biomeSource, Holder settings, TagKey allowedStructureSets) { + super(biomeSource, settings); + this.settings = settings; + this.allowedStructureSets = allowedStructureSets; + } + + @Override + protected Codec codec() { + return CODEC; + } + + @Override + public void applyCarvers(WorldGenRegion pLevel, long pSeed, RandomState pRandom, BiomeManager pBiomeManager, StructureManager pStructureManager, ChunkAccess pChunk, GenerationStep.Carving pStep) { + } + + // Filter structures + @Override + public ChunkGeneratorStructureState createState(HolderLookup lookup, RandomState pRandomState, long pSeed) { + return super.createState(new FilteredLookup(lookup, allowedStructureSets), pRandomState, pSeed); + } + + @Override + public void buildSurface(WorldGenRegion pLevel, StructureManager pStructureManager, RandomState pRandom, ChunkAccess pChunk) { + } + + @Override + public void spawnOriginalMobs(WorldGenRegion pLevel) { + } + + @Override + public CompletableFuture fillFromNoise(Executor pExecutor, Blender pBlender, RandomState pRandom, StructureManager pStructureManager, ChunkAccess chunk) { + return CompletableFuture.completedFuture(chunk); + } + + @Override + public int getBaseHeight(int pX, int pZ, Heightmap.Types pType, LevelHeightAccessor pLevel, RandomState pRandom) { + return getMinY(); + } + + @Override + public NoiseColumn getBaseColumn(int pX, int pZ, LevelHeightAccessor pHeight, RandomState pRandom) { + return new NoiseColumn(0, new BlockState[0]); + } + + @Override + public void addDebugScreenInfo(List pInfo, RandomState pRandom, BlockPos pPos) { + } + + @Override + public void createReferences(WorldGenLevel level, StructureManager pStructureManager, ChunkAccess pChunk) { + if (hasStructures(level.registryAccess())) { + super.createReferences(level, pStructureManager, pChunk); + } + } + + @Override + public void createStructures(RegistryAccess registries, ChunkGeneratorStructureState pStructureState, StructureManager pStructureManager, ChunkAccess pChunk, StructureTemplateManager pStructureTemplateManager) { + if (hasStructures(registries)) { + super.createStructures(registries, pStructureState, pStructureManager, pChunk, pStructureTemplateManager); + } + } + + private boolean hasStructures(RegistryAccess registries) { + return registries.registryOrThrow(Registries.STRUCTURE_SET).getTagOrEmpty(allowedStructureSets).iterator().hasNext(); + } + + private static class FilteredLookup extends HolderLookup.Delegate { + private final TagKey allowedValues; + + private FilteredLookup(HolderLookup pParent, TagKey allowedValues) { + super(pParent); + this.allowedValues = allowedValues; + } + + @Override + public Optional> get(ResourceKey key) { + return this.parent.get(key).filter(obj -> obj.is(allowedValues)); + } + + @Override + public Stream> listElements() { + return this.parent.listElements().filter(obj -> obj.is(allowedValues)); + } + } +} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 9f0a08ed..9be0d6cb 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,3 +1,5 @@ public net.minecraft.world.item.crafting.RecipeManager m_44054_(Lnet/minecraft/world/item/crafting/RecipeType;)Ljava/util/Map; # byType public net.minecraft.client.renderer.texture.TextureAtlasSprite f_118349_ # x public net.minecraft.client.renderer.texture.TextureAtlasSprite f_118350_ # y +public net.minecraft.client.renderer.texture.TextureAtlas f_276067_ # width +public net.minecraft.client.renderer.texture.TextureAtlas f_276070_ # height diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 4723424a..f2bf7117 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,26 +1,26 @@ modLoader="javafml" -loaderVersion="[36,)" +loaderVersion="[47,)" license="All rights reserved" [[mods]] modId="exnihiloreborn" -version="${file.jarVersion}" +version="${mod_version}" displayName="Ex Nihilo Reborn" -credits="Herobrine knows all." +credits="Herobrine knows all. Thanks to Erasmus_Crowley for the original 1.7 mod" authors="TheDarkColour" description=''' -Gives life to the original Ex Nihilo. +Bringing back the original Ex Nihilo. ''' [[dependencies.exnihiloreborn]] modId="forge" mandatory=true - versionRange="[36,)" + versionRange="[47,)" ordering="NONE" side="BOTH" [[dependencies.exnihiloreborn]] modId="minecraft" mandatory=true - versionRange="[1.16.5,1.17)" + versionRange="[${mc_version}]" ordering="NONE" side="BOTH" diff --git a/src/main/resources/assets/exnihiloreborn/textures/block/compost_dirt.png b/src/main/resources/assets/exnihiloreborn/textures/block/compost_dirt.png index 5044f4b439a26a775267ad804f8ca96afe5fa6f9..5a2e9c49504b3ddb023b929d4ae18e16f5da06ea 100644 GIT binary patch delta 232 zcmZo=`oTCsqMn7Bfq~)e-A6${im^Dz-HBn{IhmJ04okYDuOkD)#(wTUiL5}rXn;?M z>x2mtoSmIxV`EE8OWWJqb8>Rx;^Iti`W^r(;4JWnEM{QfI}E~%$MaXD00nbAT^vIs zF3X-d$jju&!*VcDy>YVt_wC088ggA21Q>rNsvqu3_g;F;*G^K0MfdGlw*EYM{~exj zUK;zSxIUh8qvT+*db2?HE|)3CH+dcoUKp{b*)a0nw%*z!*Z)cE{dxTHLOX;0fNz>Q d-(Fq$!(efpUsC*w_gy781Au(V>@fFoz{DQuIn1u_kG~Yw{6=J=WH>O=!D$w`<^}sZ6_8q*r?*Wt2xJc zEo|p`PKUdxQfe2IfM5c7Z0#mYq3Rnm;E~B_)w8ipC(8_i3~tW}p15Uljt-pQPDrX9 z;vWRn>64c0W5+)KLDgOBR1F{n7SsOl*n00000NkvXXu0mjfgeBz`g9#w+Zur_Az+6 L`njxgN@xNAh?-Ak literal 1646 zcmbVNc}x^%6kjz}B!Ys*w%b;xqf#X9&dgryYESln+0E%ab zbYKSrm7jAC7-h0CIkY2LOtvjFkQ}2V{5DDtRykVWDYJU0q5dJGZ)14IJyFxjkN@R;BsUW2suA0sd{ zWFlsn;FnG%+Y%u&#{)>K)GA0+g+YZ6!i*6H3lK=2 zc8N5{LViZV$>oYBSn~8`2#m{SdqvC&!-%c#8>^z9=c0GN@3X2P#dP z0@LcHj1n4^La)~86ck0`S`27OpaLU2ufved4mpxJii5Z;82^pLVGMl0Br8G-%Zeh0n zhF%720X&@tC@aq~&`^pE^lRi%y@t@JrKoYIH0Uu6slb7gQc!w4(y7+!v|20;9>!Du zH+6{Q6ymRw|J2RMkyMQS<*P1`Hm~{!uu}8zQkOg&=o4kK(dF@$XoshLX4&~g@}wyx zB^4nvBSOMA$}O7cg~js8n@6pcFNI>D52$Rux^XAP7!NG?QXCC|HhdZdpX0tu<7|YMSNZNiw z5E^3OkSpEZXI}30_qbmfY{*`e6{P}|+rx!)JC zM?*lwj^2>4XTl@?8)}tTv&gu7^qsn@!bArYe_k@~$O&znzdLXXo%=2y$ xS`*vS^<>+`@sFw_YUGn!pKkSiwtFxTmF27xCSFatveW+uh>uCI)XYm=`wu2>ecS*5 diff --git a/src/main/resources/assets/exnihiloreborn/textures/block/dust_new.png b/src/main/resources/assets/exnihiloreborn/textures/block/dust_new.png new file mode 100644 index 0000000000000000000000000000000000000000..024b0af6a490b76fb01edf1f767b4b8134fe2be5 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFlFzk+>{+=Ahsq2LWcsp9k-2TQdISV0i1u@PK2%345_K+gGP;2q@buxU&E0 z?nB4ddU08pd<#>2ucqCSRqn=WZfi9El4iPjxZ<{l>psOQ4u5O|1oJF@vY8pUXO@geCyF)>?W1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/gui/advancements/backgrounds/void.png b/src/main/resources/assets/exnihiloreborn/textures/gui/advancements/backgrounds/void.png new file mode 100644 index 0000000000000000000000000000000000000000..d5fe043b3bcecc1932c768b2495ba2169cf2e2d3 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK|xO!#}EtuWC_;A2_g=R%*+hT0t}2hawb~> PB^f+j{an^LB{Ts5?dKYP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/bone_crook.png b/src/main/resources/assets/exnihiloreborn/textures/item/bone_crook.png index f8282b39aba11a4a50d422dedea4733252a30d6c..f375bb8e17dcc70642ae9068ab0572ff97cd9d62 100644 GIT binary patch delta 2863 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/crook.png b/src/main/resources/assets/exnihiloreborn/textures/item/crook.png index dcbfe96e5e640ed8a9f70a7aae325de709a71b0f..61e4db41022688b8b4c0799fbdb47aa89c63ce2f 100644 GIT binary patch delta 220 zcmew>_LgyiWIZzj1A~Sxe=v|@EDmyaVpw-h<|UBBlJ4m1$iT3%pZiZDE08Z5;1l9% zt|{PYCYs?V*OscLA;;aBt`3wr_q=C2kYX8=;OXk; Jvd$@?2>>5zOw0fP literal 2941 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 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/diamond_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/diamond_hammer.png index a8294bd4726f1f7689b503ae0930aafed60d9e8d..b0e2f36d98a282a925d61590653a8f2b639b9935 100644 GIT binary patch delta 2892 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 Hu0mjf%Q}|T diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore.pdn b/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore.pdn new file mode 100644 index 0000000000000000000000000000000000000000..acd65b1b1a7114cf7ee19705ac0b041ca3d85eeb GIT binary patch literal 4171 zcmd^BYiwJ06~DK!9p5yiS+|lsSnIk|x5=sP_z^o&9L?8GoR=Lx>exxtCfE1=W8eDP z*S!xrju`#0N=z^`jZKVA6B3V&FE9yJ*|%y;2q>_vfF}3=MIfOLiAN+5ErUTg=h~U= zu44m+&$-EH!nLF(j&FG(HGT>k;d~;KcF%?t)yI#ea3EbxWk+Fk zWbLj$@y@9T$r9)%({A?FuSm^r5f{d{8VX$hdogh&liY>d7*wTh6iG|GTAh{ z6e*p`^P}vPnk`1c$yAZ$WN+Q!NCsmb(eIcp>wJ8BJ2AlF{pCn*|!6txQvzVR8{2O^Q=#HtpRwFJ?eQBLDVY4m?0M#SN#%6}_wO)0P1kica8=O%$Mhx&3yV1j)##a9XoQLUxbcW&nijd~CW_ zsHXHnWyw7o&Fb-p&l?VhLYOq^zk*-Ux0b;kEk4w80ES#0EuL{GpN1B|ZYhDn*;W!R zhFgGt-UB??1L#LUysCjNz#sq_fWbXLu%ivQ+{*DNTfjSez=wK(#}N3=n}OkA9~F2A zFBe`V<}MV6QG6W4z~C^*o=Ops71BwL|5K$v9mCz}oE5bSS2L2jQ7meTTqBAm6188| zl?{$3L&l_|Q$_Z-28<#y*lM>*Nqc1n!bm-)lOLeZ(WN{2o?7JJo!vV!tz)1!Xsh*D z_f$){A$tLgOn5i!VD16Y$>=NgOFbcf5NDA477P zMi!t;I}V{SzQ!Devv+QPXB|boc=WSY+zGthe(DDdb!^D=#_QC(?_3v$POSgZx&34J z<-v!3H1N6aYtQE9cDK_%{CrjY=C=QP`Aat%FQ}7+UmuUu-+br#?=F0+_+rN5|Ktnj z-+nw*K5)-BE`It~3xl)jlibC(zPoj-~kT7G-9{%ZD_?I-TrefB!_%;D!Qwv57T*?PjA6Z7kLo4>u;W)iTkc4-yZzVpvNT{*8@wf=O!w@)}?eflfI*FN>dGwG{O bO2ZHT<};2z%=jP6Zy$%d^qTbbI_mg0rts8Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore_chunk.png b/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore_chunk.png new file mode 100644 index 0000000000000000000000000000000000000000..5b55f56a76915e136126b12a9eab3d519a6002ec GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|&0G|+7Z*T9In3#%+ijz>~_={Zl*|EH`EW}ajHocOuN>e+|We>)P|;;(D-%1xZK$VB2(+`Gfc zTsOF1$IWbH&syW6))mc?dd$7$Wj3SMC9gwkdBf)L#$3Iyi0>O)7uVsPiT19RA5!1T ZU$kcXe(~7buR!Y=JYD@<);T3K0RY^6a#sKV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/golden_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/golden_hammer.png index 9821b7a7e7ffed3185a7e7eafbb455a3ce352788..c79ba112f87b224cdfac8a2c358cfc80dcd6da66 100644 GIT binary patch delta 2892 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 JPDHLkV1kXEn^^z= diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/iron_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/iron_hammer.png index 1cd543da561967c2eb0e833fd7327aa349c3bd75..4e12ec9dc825445b4e2a2237141a4c61d1632547 100644 GIT binary patch delta 2892 zcmV-S3$yg77u*(*8Gi!+001a04^sdD00d`2O+f$vv5tKEQIh}w03c&XQcVB=hYtV% zj1K?+{Zaq`fj|HNeR%)?>5BjWJmmlY8O(D$g?9h|3NL9xLr_UWLm*IcZ)Rz1WdHz3 z$DNjUR8-d%htIutdZEoQ0#b(FyTAa_dy`&8VVD_UC<6{NG=H%nq5=^`M4BQavC@~mCR4i{s){CyJy!Z0*`{S%{?X&l}`|Q2XS{DG4r!SY621@~u z$`kN|Je=tfkx_K)0Du7=V1OwAOjbs^U$A=!5XsBUg`OdD0$&6H@OoIh0&vsNGk{J9 z|DU8;>3o6cn128fo3l9?ED;xoI3-JvF1F8#m>QQXW*8-Az9>Nv%ZWK*kqtikEV84R z*{M9Xh{ZXlvs2k(?iKO2Od&_ah_8qXGr62B5#JKAMv5?%E8;ie*i;TP0{|3BY!`4? zi6S-;F^L}%iKdLpOAxi2$L0#SX*@cY_n(^h55xYX#km%V()bZjV~l{*bt*u9 z?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXMe$^;w6Kd@Hx&UD1^=u@-r9r#Lp6- z0Rcz?Dv$@tKpp4+LtqB1fGuzYZonJ(gAfo2Rs$AD1gU@zvOpf#1PVbh*a`N4YETCn zK{IFt$3Z7J13Xv3lIchAu>dPU)xk0{A z5PuX2#X<=X4-!Io&}OI@Dub$_dZ-!t9y$q~hps?_&|PQ@nudOd-oXe=f~l|)tOXmx z4A=?wfkWU`a00vr&V>u$9dISw03U@r;Pdb`_%=KWKZEBGfDjQHqKX(I48#TTN1~8; zgpaI8ijWGV0cl0Lkv`-mGK$O~Z&4T&1%E|H8KP`ao~Te13$+Hd9#w*>Mjb|Vpn6d^ zQDdlC)JHTKt%%k~+n~MB5$FVT7P=5!fo?*#qc5UwqbJa>F&GRDqm8k`cw!#HrxSaPGJ$9Dfg& zkE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v2qA9-IjYNPnUO-PnO>$-zoo40i~d)5U7x) zuwUV#!pu_YQro4hrA14RFTJM-E9xl*DXvvKsMxPKr=+app_HyvrF21QMwzDUsGOu+ zu6#y$T7{xwufkO+S2?Tllz%QuccQ1zE9t%TSye?LvhF_J8+x#wg4JU~RxNXfPNt zBpEsxW*W8_jv3L6e2wyrI*pziYZylv?=tQ){%B%hl487t{$#Mt^;l| zZlP|~Zjap6+!Nee+-E&3Jl1-g^F(|4c<%BX@lx_)c{O{@dVgDauk-HpA^8ORRQo*k z)$`^1cKgA8-hR9N9<0z@!CTSk5B$CScl$pK&<jDH?prM)V9)s@u>t5a5=j**OE#+-;n$A-rqiG9!XXEreB;=JN&<7Qbd zti7yfY)5uEdzxd%DdSAW+r^i~PbJtT>`s_YbV#g7oZ-4~tGO?dJd^5@=9B%C4<&y} z2~TND#ihokp5)2!l6k#p%4ykYgX#L|h3TVfY}V{qGk?qX;WuSK8LKk71XR(_RKHM1 zxJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dwS|7K* zXM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL-8R%V z?zVyL=6~C(wtp;Q7hNqjDXu7fU&1Q6`iQBE%}Du1;nX3v$1WfgUM344WmM=O0RyQ(y*c2>QwPOQFN<6P5Lt600e zc77jw-_U-?{jGIMb;Wh>4sZ|LsrRVwXwYh?IDd#an0fF?V_0L~w~TL_n-rRgn?4-k z9U46xbhx+Ks=4`y;*ru8xJB49eKh*$jqhB)>uNP@t#6~X6(0k~gvXwKAN&3Aai8No zCm1JMf6)A)ww=;m)B$zmbj)@pc8+#Mb`75NKH1Z4+ui=7(T|5tsh+AiEql834Ba$PfXAK3lSG?^#=A1T=cnk`I7sk3w=&~XD{1bK6SDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(epKlG z==1Txr_@iM{sjY=^Zain+z$W%03J|GR7FHYMF0Q)*x1;?!NF)w9vB!HNj4RUXD28g z3jhEBiS7b20000AbW%=J|NsC0|NsC0{{XVgEYFc47i|DnNkl}sP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002fNkl+@#4G$trB&RkDS*`PZD01A&VrgarKe zZQ}qS_+{bGm>ItnhGBqOZ1ERTXJcYjg{lGohzNO4$a@+C)@2UN3{}N>o(+VE?g5|o ztL)4ihzKImKyJ(NJ+NI>hmdXt7V9!2?+G=e0a)!Gur4!>ErQ|%5eYNS%G|&0G|+7Z*T9In3#%+ij3{fI;Z~xpP2q&H|6fVg?4jLmxrbX0+Z`9g!( zihKX}*&p22J->C*bDpICPgx(#JjePu@pF&Wvk#~Lb|kdLU)Sc9n>cBaiNvS4cZZX? zZg9Vjo7u>owZ=uQE1D(sn0w31Y(}k1UWeB5hRxxPxq4v{-#4}{uERSM?OiQDq`sHG YXwCNh;<2}1fz~s4y85}Sb4q9e01upS^Z)<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/netherite_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/netherite_hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..a10c21ea32f3686f7b9bf2141190aad062c6b10a GIT binary patch literal 2917 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/silk_worm.png b/src/main/resources/assets/exnihiloreborn/textures/item/silk_worm.png index 90a981e2929e2f347c8f73351da0e1ad345a1ffe..f9b3330a26d1e8ea3361f5b54ba44bd309bdcf8e 100644 GIT binary patch delta 1285 zcmV+g1^W853FZorBWeHyXF*Lt007wQ^&Awc0000WV@Og>004&%004{)008-u004yL z004V}008TC002L<001Ibb!%Rn000CGX+uL$Nkc;*P;zf(X>4Tx07%D;Rb6NtRTMtE zb7vzY&QokOg>=_%#mn7e=1v+o)iHV4A+*5S@F5UN5q~LNWw$V3xm)r zD~^?^Rwn_Qr-i%Pt?wb>y|3)*ZvW5LTc?f!khl-AS$C8L#K!>m(~4!g7+*i~<40Y~ z!(I&iHU^0JMGrT9?0R_4$FDKXjFdxs8nK|Lavkv!;*q%+-;7~D2G;tE)S$Mee~4Z# zsuocZZP_#Vc!zfza;9v(%!q{xM7#E&4p*4Ab#0lsay zSqbrD0LksG`C10?PQ;~#eW2$1N!n_w6ykSIs58$Z-h%kNF;|%i#$HvN9OewRBfhQD zvX|c>08Z50@{B*0+i#oFls_-mf2h-Z!OJ7!*XPYclJArI%xO;-LZ2tpTqWQyy(Ay3 zA|6Ei3)PE~KNt6p?y3yhbjB^oWbjQlK9`|ZKRHO>2d@2KC zYG-O9HI_Q);c(W}e-5-wU|+bSI+aaUN?m%)yH6lzTE}gzsk-9sboxm#gI60B%Z4&K zBFefhGLs|P)S-5p)h($32;bRa{vGi!vFvd!vV){sAK>D0K`c|K~y+TV;BXL14bx~6+FK* z>pvqC6T`1>Ul`=f3b3lh5PWo^^*J{p|7G~~i-p0j@Fa$wQ82K8fdK%3FG8HFgHON!3jhEBNkvXXu0mjfWleGe delta 1124 zcmV-q1e^Qj3bYB3BSi!aX+uL$Nkc;*P;zf(X>4Tx062|}Rb6NtRTMtEb7vzY&QokO zg>Hg1+lHrgWSWcKdPn90tOq(FbFSeB6#0T!CBEf+H4bBB+J zJu8rehoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00) z%XR^J`jH<$>RKN5V(7OqK*TS4xZz{h!*f17-gpFV`|VO;wwH6`caQN&BClAlKW z2;ysPeYPCn+m@S=5kCfy+}@h6rV;N%T&&v%s=lA3t+k3Fe&>WX^DN>mh|f3Y%2UDE ztE!X5oWXX)w>4Vw@;d~;iMm^w@yBxeZBw4|=jDIuHJZzNc|`pBym?6WeR7{U?dg2z z^MsZy2mGa%l!Fz-gNT2jMnU%H;{LJRN)Q7XY8vH9e=d@v4qGqdU2Uf5&r1v!H`E_X z7VG+fQlS4tvx{2>-kZ|&KG>2e1$fvfq%XYvk3(#m@tRE3Qbr8 z5oCWTKnC9y*l4MP4hAw5trQuGU!i6f8|T10@;bDc&B4CHl>W%bUxWF$&a^6IhdzQ9 zvKsu3tQON{@vDVgV-r7qEH?r_CK(_S*@MqsGD-H4aWVlSd5Szu_LCg46J+oD*h*|g zUOYF}{k)7bQl^_l-8rUA_FqU$I>2EH_cM;u)Q~ zSI+rg`Rn{L_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>^iR zJIkHpzTqx#A9G*E_G6UA(N+Ba`6&@CH!ZzViVKVY33gb557>3A9j%ZVd+HG1J1@GSUkMx@|yAKmvE=QdE48XoW@$CC9;*PWc zmK=bA$0KeS&&mhh1vvAB+Opfh9g#?U3*glE?DoIw=%XN`XWpr3qIP+(L~zwU4eLxUVISQAV$jK*dNh5`Q`Ho`SC$=8E@fX^l9 q27olcy@2FoY+_);M~T4@0ss^wI2{JJq?zyl00009kF2VnY`WeKhO>aPgg&ebxsLQ00@s*VE_OC literal 2992 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 diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/witch_water_bucket.png b/src/main/resources/assets/exnihiloreborn/textures/item/witch_water_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..12fb51bd17b89c21355c21833e3acb3f3551a5fc GIT binary patch literal 323 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