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 5044f4b4..5a2e9c49 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/block/compost_dirt.png and b/src/main/resources/assets/exnihiloreborn/textures/block/compost_dirt.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/block/crushed_netherrack.png b/src/main/resources/assets/exnihiloreborn/textures/block/crushed_netherrack.png index affd1052..993d4149 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/block/crushed_netherrack.png and b/src/main/resources/assets/exnihiloreborn/textures/block/crushed_netherrack.png differ 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 00000000..024b0af6 Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/block/dust_new.png differ 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 00000000..d5fe043b Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/gui/advancements/backgrounds/void.png differ 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 f8282b39..f375bb8e 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/bone_crook.png and b/src/main/resources/assets/exnihiloreborn/textures/item/bone_crook.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/cooked_silk_worm.png b/src/main/resources/assets/exnihiloreborn/textures/item/cooked_silk_worm.png index 8cbd0aca..71249301 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/cooked_silk_worm.png and b/src/main/resources/assets/exnihiloreborn/textures/item/cooked_silk_worm.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/copper_ore_chunk.png b/src/main/resources/assets/exnihiloreborn/textures/item/copper_ore_chunk.png new file mode 100644 index 00000000..88b0cabf Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/copper_ore_chunk.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/crook.png b/src/main/resources/assets/exnihiloreborn/textures/item/crook.png index dcbfe96e..61e4db41 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/crook.png and b/src/main/resources/assets/exnihiloreborn/textures/item/crook.png differ 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 a8294bd4..b0e2f36d 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/diamond_hammer.png and b/src/main/resources/assets/exnihiloreborn/textures/item/diamond_hammer.png differ 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 00000000..acd65b1b Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore.pdn differ 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 00000000..5b55f56a Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/gold_ore_chunk.png differ 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 9821b7a7..c79ba112 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/golden_hammer.png and b/src/main/resources/assets/exnihiloreborn/textures/item/golden_hammer.png differ 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 1cd543da..4e12ec9d 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/iron_hammer.png and b/src/main/resources/assets/exnihiloreborn/textures/item/iron_hammer.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/iron_ore_chunk.png b/src/main/resources/assets/exnihiloreborn/textures/item/iron_ore_chunk.png new file mode 100644 index 00000000..ca3523cb Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/iron_ore_chunk.png differ 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 00000000..a10c21ea Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/netherite_hammer.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/ore_chunk_base.png b/src/main/resources/assets/exnihiloreborn/textures/item/ore_chunk_base.png new file mode 100644 index 00000000..611daabd Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/ore_chunk_base.png differ 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 90a981e2..f9b3330a 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/silk_worm.png and b/src/main/resources/assets/exnihiloreborn/textures/item/silk_worm.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/stone_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/stone_hammer.png index 8b54ecbc..fcc8e3b4 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/stone_hammer.png and b/src/main/resources/assets/exnihiloreborn/textures/item/stone_hammer.png differ 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 00000000..12fb51bd Binary files /dev/null and b/src/main/resources/assets/exnihiloreborn/textures/item/witch_water_bucket.png differ diff --git a/src/main/resources/assets/exnihiloreborn/textures/item/wooden_hammer.png b/src/main/resources/assets/exnihiloreborn/textures/item/wooden_hammer.png index 9c440330..7c83acd1 100644 Binary files a/src/main/resources/assets/exnihiloreborn/textures/item/wooden_hammer.png and b/src/main/resources/assets/exnihiloreborn/textures/item/wooden_hammer.png differ diff --git a/src/main/resources/data/exnihiloreborn/loot_modifiers/compressed_hammer.json b/src/main/resources/data/exnihiloreborn/loot_modifiers/compressed_hammer.json index aab14377..d4125edb 100644 --- a/src/main/resources/data/exnihiloreborn/loot_modifiers/compressed_hammer.json +++ b/src/main/resources/data/exnihiloreborn/loot_modifiers/compressed_hammer.json @@ -1,4 +1,6 @@ { + "type": "exnihiloreborn:hammer", + "reward_recipe_type": "exnihiloreborn:compressed_hammer", "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/main/resources/data/exnihiloreborn/loot_modifiers/crook.json b/src/main/resources/data/exnihiloreborn/loot_modifiers/crook.json index 3204ef8d..0e7d6643 100644 --- a/src/main/resources/data/exnihiloreborn/loot_modifiers/crook.json +++ b/src/main/resources/data/exnihiloreborn/loot_modifiers/crook.json @@ -1,4 +1,5 @@ { + "type": "exnihiloreborn:crook", "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/main/resources/data/exnihiloreborn/loot_modifiers/hammer.json b/src/main/resources/data/exnihiloreborn/loot_modifiers/hammer.json index a464d3e8..513d20e0 100644 --- a/src/main/resources/data/exnihiloreborn/loot_modifiers/hammer.json +++ b/src/main/resources/data/exnihiloreborn/loot_modifiers/hammer.json @@ -1,4 +1,6 @@ { + "type": "exnihiloreborn:hammer", + "reward_recipe_type": "exnihiloreborn:hammer", "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/main/resources/data/exnihiloreborn/worldgen/world_preset/void_world.json b/src/main/resources/data/exnihiloreborn/worldgen/world_preset/void_world.json new file mode 100644 index 00000000..52314ad4 --- /dev/null +++ b/src/main/resources/data/exnihiloreborn/worldgen/world_preset/void_world.json @@ -0,0 +1,39 @@ +{ + "dimensions": { + "minecraft:overworld": { + "type": "minecraft:overworld", + "generator": { + "type": "exnihiloreborn:void", + "biome_source": { + "type": "minecraft:multi_noise", + "preset": "minecraft:overworld" + }, + "settings": "minecraft:overworld", + "allowed_structure_sets": "exnihiloreborn:overworld_void_structure_sets" + } + }, + "minecraft:the_end": { + "type": "minecraft:the_end", + "generator": { + "type": "exnihiloreborn:void", + "biome_source": { + "type": "minecraft:the_end" + }, + "settings": "minecraft:end", + "allowed_structure_sets": "exnihiloreborn:the_nether_void_structure_sets" + } + }, + "minecraft:the_nether": { + "type": "minecraft:the_nether", + "generator": { + "type": "exnihiloreborn:void", + "biome_source": { + "type": "minecraft:multi_noise", + "preset": "minecraft:nether" + }, + "settings": "minecraft:nether", + "allowed_structure_sets": "exnihiloreborn:the_end_void_structure_sets" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json index de7885f8..00c04e1b 100644 --- a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json @@ -2,7 +2,6 @@ "replace": false, "entries":[ "exnihiloreborn:crook", - "exnihiloreborn:hammer", - "exnihiloreborn:compressed_hammer" + "exnihiloreborn:hammer" ] } \ No newline at end of file diff --git a/src/main/resources/vanilla_compost_colors.txt b/src/main/resources/vanilla_compost_colors.txt new file mode 100644 index 00000000..90e96457 --- /dev/null +++ b/src/main/resources/vanilla_compost_colors.txt @@ -0,0 +1,1254 @@ +jungle_sapling, #437316 +blackstone, #3c3239 +spruce_planks, #a27844 +stripped_bamboo_block, #fff772 +target, #fffbf0 +stripped_mangrove_log, #aa4d43 +enchanting_table, #150e22 +oak_sapling, #6e9739 +waxed_copper_block, #ff9870 +oak_log, #9b7947 +mud_bricks, #c39370 +crimson_nylium, #982525 +yellow_stained_glass_pane, #ffff48 +stripped_acacia_wood, #f88354 +rib_armor_trim_smithing_template, #433c47 +waxed_oxidized_cut_copper_stairs, #70dab4 +lime_glazed_terracotta, #e7ff4e +sponge, #ffff69 +fire_charge, #835e3a +hopper_minecart, #737679 +black_bed, #1c1e23 +cauldron, #555458 +player_head, #735847 +vine, #a5a5a5 +birch_door, #ffffe6 +skull_banner_pattern, #fffff1 +brick_wall, #d68a76 +crafting_table, #b89664 +cracked_polished_blackstone_bricks, #3e343d +smooth_stone, #e1e1e1 +shelter_pottery_sherd, #985446 +polished_blackstone_button, #4b4450 +cut_copper_stairs, #ff9772 +blade_pottery_sherd, #9d5747 +black_banner, #e7b96f +lava_bucket, #d4b69e +sugar_cane, #79cf32 +deepslate_copper_ore, #83847f +cooked_chicken, #fca069 +exposed_cut_copper, #dcac90 +farmland, #bf895f +scaffolding, #fecc80 +bamboo_fence_gate, #ffff78 +book, #80643a +black_glazed_terracotta, #5f2a2d +music_disc_otherside, #4a5552 +clock, #fccc5a +dragon_head, #735847 +magenta_candle, #e647d9 +deepslate_brick_stairs, #646465 +warped_nylium, #665754 +honey_bottle, #ffdab1 +ice, #cfffff +warped_button, #3d948d +horn_coral_block, #ffff5e +suspicious_gravel, #b8b2b1 +magenta_stained_glass_pane, #fe6cff +creeper_banner_pattern, #fffff1 +cobweb, #ffffff +polished_diorite, #ffffff +bamboo_button, #fff772 +deepslate_coal_ore, #69696c +dark_oak_hanging_sign, #705232 +ender_chest, #150e22 +turtle_egg, #e8f1c2 +cornflower, #ffffff +music_disc_5, #445c62 +flower_banner_pattern, #fffff1 +torchflower, #8e906e +zoglin_spawn_egg, #f7ffff +bamboo_fence, #b100b1 +brown_concrete_powder, #b2784b +elytra, #868691 +cherry_chest_boat, #e8a78c +infested_chiseled_stone_bricks, #aaa8aa +gray_stained_glass, #6c6c6c +sculk_catalyst, #6c8480 +cracked_deepslate_tiles, #4a4a4a +vex_armor_trim_smithing_template, #708989 +nether_wart, #a42630 +stone_hoe, #6e6147 +decorated_pot, #b86654 +polished_deepslate_wall, #666668 +spruce_leaves, #b4b4b4 +cod_bucket, #b8afaf +red_banner, #e7b96f +gunpowder, #767676 +netherite_ingot, #585152 +waxed_oxidized_copper, #75e7bc +purple_bed, #ac3cf5 +heavy_weighted_pressure_plate, #ffffff +tropical_fish_spawn_egg, #f7ffff +polished_blackstone_wall, #4b4450 +tinted_glass, #3d3640 +oak_fence, #e7b96f +nether_gold_ore, #a44d3c +light_gray_stained_glass_pane, #dadada +black_stained_glass, #232323 +blaze_spawn_egg, #f7ffff +melon_seeds, #514420 +dark_oak_trapdoor, #6b4620 +diamond_ore, #acc9c8 +red_nether_brick_slab, #620a0c +green_stained_glass, #91b548 +jukebox, #7d5239 +popped_chorus_fruit, #ae73ae +orange_concrete_powder, #ffbb2c +lapis_lazuli, #3a75ee +birch_log, #ffffff +mossy_stone_brick_slab, #a4ac96 +wolf_spawn_egg, #f7ffff +stone_pickaxe, #6f624b +warped_stem, #52526e +tipped_arrow, #f4f4f4 +salmon, #8a6258 +quartz_slab, #ffffff +gray_wool, #586165 +quartz, #fff5e6 +purple_terracotta, #a8647a +music_disc_chirp, #574143 +chest_minecart, #8e7f61 +bread, #c59029 +music_disc_cat, #4a5c41 +light_gray_terracotta, #c0978a +gray_stained_glass_pane, #6c6c6c +moss_carpet, #7f9b40 +chiseled_quartz_block, #ffffff +brush, #edb48c +cyan_terracotta, #7a8282 +jungle_sign, #b58252 +jungle_hanging_sign, #b4845e +lever, #9e845f +infested_stone_bricks, #aeacae +magenta_concrete, #f144e3 +zombie_head, #735847 +dead_brain_coral_block, #b1a7a2 +brewer_pottery_sherd, #985444 +name_tag, #ebddb4 +cracked_stone_bricks, #a8a7a8 +chiseled_red_sandstone, #ff8926 +crossbow, #786151 +brown_carpet, #a26539 +dead_fire_coral_fan, #f2edea +reinforced_deepslate, #919b8e +golden_hoe, #9d7d28 +music_disc_strad, #616161 +orange_terracotta, #e67634 +dried_kelp_block, #364429 +purple_carpet, #ac3cf5 +iron_helmet, #828282 +netherite_leggings, #4a4143 +acacia_door, #e88755 +hanging_roots, #e6a482 +honeycomb_block, #ffd329 +spire_armor_trim_smithing_template, #d0a0e3 +netherite_shovel, #644a52 +black_shulker_box, #232329 +hay_block, #edc236 +mangrove_wood, #765e3a +green_bed, #789b26 +orange_stained_glass_pane, #ffb548 +birch_fence, #fffaac +white_bed, #ffffff +terracotta, #d9865f +sandstone_wall, #ffffdd +redstone_block, #fa2207 +brown_terracotta, #6e4832 +heart_pottery_sherd, #915141 +black_terracotta, #341f16 +emerald_block, #3cff7c +lightning_rod, #ff9e76 +vex_spawn_egg, #f7ffff +iron_axe, #9b9079 +lectern, #d4a75f +wooden_hoe, #694e1e +potion, #e8e8e8 +bamboo_planks, #fff772 +dark_oak_planks, #5e3d1c +spider_eye, #8a1839 +nether_wart_block, #a20404 +mossy_cobblestone_slab, #9da886 +mangrove_leaves, #b8b6b6 +stripped_acacia_log, #f88354 +mangrove_trapdoor, #9d413c +pink_terracotta, #e66f6f +note_block, #7d5239 +light_blue_stained_glass_pane, #91daff +blue_concrete, #3e41cc +polished_blackstone_slab, #4b4450 +cherry_door, #ffeee6 +chainmail_chestplate, #b1b1b1 +mossy_stone_bricks, #a4ac96 +dead_fire_coral_block, #bbafaa +pink_wool, #ffc9f5 +oak_button, #e7b96f +cherry_sapling, #eaa7cc +coal_block, #161515 +light_gray_concrete_powder, #dcdcd3 +spruce_sign, #835e33 +skeleton_horse_spawn_egg, #f7ffff +leather_leggings, #9e9e9e +polished_blackstone_bricks, #443c46 +mud_brick_stairs, #c39370 +apple, #fa292c +pink_stained_glass, #ffb5eb +cherry_pressure_plate, #fffef5 +warped_planks, #3d948d +mossy_stone_brick_wall, #a4ac96 +white_carpet, #ffffff +polished_deepslate_stairs, #666668 +dark_oak_sapling, #57802a +red_wool, #e43730 +white_tulip, #91ea72 +slime_spawn_egg, #f7ffff +copper_ore, #b1b2ab +bundle, #a45b30 +diorite_stairs, #ffffff +salmon_spawn_egg, #f7ffff +light_gray_dye, #d9d9ea +pink_candle, #ffa0d3 +crimson_slab, #904464 +stone_sword, #7c7973 +gold_ore, #cfbe97 +cyan_shulker_box, #1cacc0 +brown_dye, #9a521f +amethyst_cluster, #e8b4ff +smooth_red_sandstone, #ff8a2c +smooth_quartz_stairs, #ffffff +orange_tulip, #a0d262 +furnace_minecart, #787a7a +creeper_spawn_egg, #f7ffff +dead_horn_coral, #cac0b8 +bookshelf, #a78654 +wheat, #c8ae5f +calcite, #ffffff +iron_nugget, #abb6c0 +white_terracotta, #fffee6 +blaze_powder, #ff8e15 +magenta_concrete_powder, #ff76ff +end_crystal, #ffcfff +iron_ore, #c2b8ae +verdant_froglight, #ffffff +netherite_boots, #463d40 +music_disc_mall, #524d61 +cooked_mutton, #a5624a +acacia_stairs, #f08047 +crimson_fungus, #c93e29 +blue_carpet, #4b51e0 +yellow_concrete, #fffa1e +mangrove_fence, #a74d44 +allium, #cfcaff +warped_door, #43c0b9 +polished_andesite, #bcbfbe +vindicator_spawn_egg, #f7ffff +goat_horn, #6f6c68 +pumpkin_pie, #ffc86e +light_blue_concrete_powder, #69ffff +yellow_candle, #fff150 +skeleton_spawn_egg, #f7ffff +bone, #ffffff +ladder, #b1894d +bamboo_pressure_plate, #fff772 +sea_pickle, #ffffff +green_banner, #e7b96f +bone_block, #ffffff +yellow_stained_glass, #ffff48 +wither_skeleton_skull, #735847 +amethyst_block, #be8aff +villager_spawn_egg, #f7ffff +pufferfish_spawn_egg, #f7ffff +deepslate_tiles, #4d4d4e +golden_shovel, #b99e39 +bamboo_chest_raft, #a0843c +light_blue_glazed_terracotta, #86eaff +deepslate_brick_slab, #646465 +rail, #b29e7d +jungle_planks, #e4a472 +cyan_dye, #3297c2 +birch_button, #fffaac +tall_grass, #d7d4d7 +stripped_oak_wood, #fccd7a +red_nether_brick_wall, #620a0c +zombie_spawn_egg, #f7ffff +deepslate_bricks, #646465 +raw_copper_block, #dc9670 +mule_spawn_egg, #f7ffff +pufferfish_bucket, #c2b9a1 +anvil, #616161 +friend_pottery_sherd, #965444 +poisonous_potato, #c8b94d +diamond_sword, #379883 +smooth_sandstone_slab, #fffff2 +beacon, #c8d4d7 +heart_of_the_sea, #1f90bb +cooked_salmon, #986e4b +pink_petals, #fffbff +green_candle, #70971e +enchanted_golden_apple, #ffc839 +smooth_quartz, #ffffff +white_stained_glass_pane, #ffffff +spruce_pressure_plate, #a27844 +azalea, #829b3c +gray_concrete_powder, #6c7378 +lapis_block, #2a5fc8 +cocoa_beans, #7a4a26 +sunflower, #ffff4d +dragon_breath, #ffe4ff +cyan_candle, #18b9bb +end_stone_brick_wall, #ffffe7 +acacia_hanging_sign, #b96c40 +oak_stairs, #e7b96f +feather, #ffffff +netherite_sword, #624754 +oxidized_cut_copper, #70dab4 +oak_trapdoor, #b18d50 +gold_ingot, #ffff5e +bucket, #aaaaaa +wayfinder_armor_trim_smithing_template, #7a6f62 +jungle_trapdoor, #d99d6e +white_glazed_terracotta, #ffffff +quartz_stairs, #ffffff +green_terracotta, #6c763c +flower_pot, #964e3c +emerald_ore, #9ac2a4 +polished_deepslate_slab, #666668 +orange_stained_glass, #ffb548 +weeping_vines, #bc1611 +stripped_crimson_stem, #c35180 +enderman_spawn_egg, #f7ffff +deepslate_tile_slab, #4d4d4e +stone_stairs, #b2b2b2 +red_tulip, #84b534 +plenty_pottery_sherd, #935143 +sandstone, #ffffdd +orange_shulker_box, #ff970b +brown_bed, #a26539 +stone_pressure_plate, #b2b2b2 +bubble_coral, #e620e3 +ink_sac, #685f78 +snout_armor_trim_smithing_template, #505762 +prize_pottery_sherd, #975444 +stripped_spruce_log, #a47f4a +phantom_spawn_egg, #f7ffff +command_block, #f7bb97 +brick_stairs, #d68a76 +muddy_mangrove_roots, #615244 +weathered_cut_copper, #9bcf98 +piston, #9b9489 +light_gray_glazed_terracotta, #cdedee +lily_pad, #bebebe +clay_ball, #a4aec6 +cat_spawn_egg, #f7ffff +glowstone, #f4bb78 +sticky_piston, #9b9489 +saddle, #cc612d +quartz_pillar, #ffffff +ocelot_spawn_egg, #f7ffff +beetroot_seeds, #bf9b65 +carved_pumpkin, #d67818 +cherry_button, #fffef5 +prismarine_wall, #91dcd9 +shulker_shell, #a06ba7 +dark_oak_button, #5e3d1c +green_concrete, #688233 +yellow_wool, #ffff37 +cooked_rabbit, #f2a472 +light_blue_concrete, #32c3ff +jungle_chest_boat, #976c41 +waxed_cut_copper_stairs, #ff9772 +smooth_red_sandstone_slab, #ff8a2c +brewing_stand, #a89670 +torch, #c5a15a +packed_mud, #ca9770 +dark_oak_fence, #5e3d1c +cherry_log, #4d2f3e +wild_armor_trim_smithing_template, #8ca896 +wet_sponge, #f4ff64 +red_sand, #ff912f +birch_boat, #d2bc82 +exposed_cut_copper_stairs, #dcac90 +green_wool, #789b26 +crimson_pressure_plate, #904464 +waxed_weathered_cut_copper_stairs, #9bcf98 +cod, #eab583 +stripped_dark_oak_wood, #665033 +beef, #ff5448 +wither_rose, #39471f +gold_nugget, #ffd95b +jigsaw, #726273 +black_candle, #3d3a5c +blue_concrete_powder, #6468ed +mangrove_pressure_plate, #a74d44 +end_portal_frame, #d6e8ae +red_stained_glass, #da4848 +brown_wool, #a26539 +polished_granite_slab, #dc977f +chorus_plant, #845184 +black_concrete, #b0e15 +cod_spawn_egg, #f7ffff +acacia_fence_gate, #f08047 +gray_dye, #9e9e9e +iron_golem_spawn_egg, #f7ffff +birch_leaves, #b9b8b9 +bamboo_door, #fff470 +fern, #ffffff +globe_banner_pattern, #fffff1 +red_nether_brick_stairs, #620a0c +emerald, #40ed70 +brown_mushroom, #daa583 +cake, #ffeecc +command_block_minecart, #968475 +mangrove_log, #765e3a +purple_candle, #9e32e8 +nether_star, #daf7e0 +loom, #d3a875 +red_terracotta, #cc5741 +copper_block, #ff9870 +oak_slab, #e7b96f +magma_cream, #f2c051 +dirt_path, #bf895f +bat_spawn_egg, #f7ffff +stone_button, #b2b2b2 +repeating_command_block, #b69bee +polished_granite, #dc977f +chorus_fruit, #b484b2 +spruce_button, #a27844 +leather_boots, #b4b4b4 +wooden_shovel, #755720 +waxed_cut_copper_slab, #ff9772 +tnt, #ff7d78 +oxidized_cut_copper_slab, #70dab4 +cow_spawn_egg, #f7ffff +music_disc_relic, #98695f +yellow_carpet, #ffff37 +cyan_concrete, #1eaac2 +glass_pane, #c8d4d7 +mutton, #ff5a50 +lime_terracotta, #93a74a +light_weighted_pressure_plate, #ffff57 +cooked_cod, #ffffff +warped_slab, #3d948d +debug_stick, #6c5a37 +snow, #ffffff +mossy_cobblestone_wall, #9da886 +soul_sand, #735847 +mangrove_roots, #6b5436 +cyan_concrete_powder, #33d2e0 +enchanted_book, #905e3a +birch_hanging_sign, #d0bc83 +bamboo_sign, #f8dd68 +sweet_berries, #7a3228 +trident, #aed2c8 +netherite_scrap, #72473c +sugar, #ffffff +end_stone_brick_stairs, #ffffe7 +stripped_dark_oak_log, #665033 +dark_oak_chest_boat, #704d22 +fire_coral_block, #e83241 +danger_pottery_sherd, #9a5546 +repeater, #b28070 +purpur_stairs, #f1b2f1 +heartbreak_pottery_sherd, #965244 +magenta_terracotta, #d47d9a +white_concrete_powder, #ffffff +cherry_hanging_sign, #ffafb4 +cut_sandstone_slab, #ffffe3 +bamboo_hanging_sign, #e6cf6b +nether_brick_wall, #3e1e25 +soul_soil, #6b5141 +cherry_planks, #fffef5 +chicken, #ffe0c6 +weathered_cut_copper_slab, #9bcf98 +jungle_slab, #e4a472 +cherry_sign, #ffc9c5 +powder_snow_bucket, #cfe3e6 +mangrove_planks, #a74d44 +bone_meal, #e1e1ff +small_amethyst_bud, #bb8dff +splash_potion, #e8e8e8 +black_stained_glass_pane, #232323 +acacia_boat, #ac5e34 +tropical_fish, #ff8c4b +sheep_spawn_egg, #f7ffff +wither_skeleton_spawn_egg, #f7ffff +warped_wart_block, #1faaac +spruce_fence, #a27844 +goat_spawn_egg, #f7ffff +nether_sprouts, #1bd7be +burn_pottery_sherd, #9b5747 +frogspawn, #9d877a +fishing_rod, #7d7057 +stripped_cherry_log, #ffcfd3 +brown_banner, #e7b96f +dead_bubble_coral, #bcb1ab +stripped_jungle_wood, #f4bc78 +ancient_debris, #875a4e +piglin_head, #735847 +angler_pottery_sherd, #9d5747 +crimson_fence, #904464 +mangrove_fence_gate, #a74d44 +bee_nest, #ffd66e +detector_rail, #af9480 +oak_sign, #cda45f +golden_pickaxe, #a48326 +prismarine_crystals, #c9f8e7 +magma_cube_spawn_egg, #f7ffff +cherry_stairs, #fffef5 +nether_brick_stairs, #3e1e25 +horn_coral_fan, #ffff57 +slime_block, #9eff82 +polished_blackstone, #4b4450 +tropical_fish_bucket, #c5a7a4 +orange_banner, #e7b96f +netherite_upgrade_smithing_template, #835154 +minecart, #646e73 +bamboo_mosaic, #fff26f +lodestone, #aaaaaf +wooden_axe, #70541f +polished_blackstone_brick_wall, #443c46 +diorite, #ffffff +cherry_wood, #4d2f3e +cobblestone_slab, #b5b5b5 +gold_block, #ffff57 +mangrove_slab, #a74d44 +stripped_crimson_hyphae, #c35180 +disc_fragment_5, #3d5458 +rabbit_foot, #e8b67d +dark_oak_pressure_plate, #5e3d1c +prismarine_stairs, #91dcd9 +chipped_anvil, #616161 +oak_boat, #a28352 +blue_terracotta, #695482 +mangrove_hanging_sign, #8d4843 +horn_coral, #ffff58 +armor_stand, #a18457 +snowball, #ffffff +acacia_button, #f08047 +exposed_cut_copper_slab, #dcac90 +prismarine_shard, #9ae8d0 +nether_quartz_ore, #a75c58 +warped_hyphae, #52526e +acacia_fence, #f08047 +cobblestone, #b5b5b5 +acacia_chest_boat, #a16232 +waxed_oxidized_cut_copper_slab, #70dab4 +snow_block, #ffffff +oxeye_daisy, #ccffa1 +spore_blossom, #ff89e1 +potato, #feb648 +evoker_spawn_egg, #f7ffff +iron_ingot, #dedede +wither_spawn_egg, #f7ffff +structure_void, #227a84 +crying_obsidian, #2d0e55 +fermented_spider_eye, #931637 +glow_squid_spawn_egg, #f7ffff +infested_cobblestone, #b5b5b5 +orange_glazed_terracotta, #dcd282 +diamond_helmet, #32a798 +cyan_bed, #1ec3cf +end_stone, #ffffe1 +glowstone_dust, #ffb261 +flowering_azalea, #829b3c +water_bucket, #9ea8c5 +iron_bars, #c2c6c0 +chain_command_block, #b8decd +wheat_seeds, #57bf26 +ender_dragon_spawn_egg, #f7ffff +guardian_spawn_egg, #f7ffff +lime_bed, #a0ff23 +strider_spawn_egg, #f7ffff +jack_o_lantern, #ffd94a +shulker_spawn_egg, #f7ffff +brain_coral_block, #ff82e3 +acacia_sign, #be6c3d +red_stained_glass_pane, #da4848 +mushroom_stem, #ffffff +mangrove_chest_boat, #8d4e30 +waxed_cut_copper, #ff9772 +mourner_pottery_sherd, #945143 +suspicious_sand, #ffffe3 +scute, #4bd361 +exposed_copper, #e6b293 +diorite_slab, #ffffff +experience_bottle, #c9e85e +lead, #bf723e +netherite_helmet, #484143 +pointed_dripstone, #c29b84 +white_concrete, #ffffff +iron_horse_armor, #8a8282 +slime_ball, #8ddd82 +beetroot, #c23d3c +yellow_banner, #e7b96f +netherite_block, #5e575a +grindstone, #c6c6c6 +leather_chestplate, #bfbfbf +acacia_planks, #f08047 +waxed_exposed_copper, #e6b293 +red_sandstone, #ff8d29 +oxidized_cut_copper_stairs, #70dab4 +tube_coral_block, #467cff +waxed_weathered_cut_copper_slab, #9bcf98 +white_shulker_box, #ffffff +chicken_spawn_egg, #f7ffff +lime_concrete_powder, #b2ff3a +lime_shulker_box, #8df520 +yellow_glazed_terracotta, #ffff7d +oak_wood, #9b7947 +axolotl_bucket, #e6bbde +infested_mossy_stone_bricks, #a4ac96 +granite_wall, #d49379 +iron_sword, #96948e +orange_bed, #ffa81b +infested_stone, #b2b2b2 +sand, #ffffe8 +piglin_banner_pattern, #fffff1 +purpur_slab, #f1b2f1 +birch_stairs, #fffaac +arrow, #afa48e +bell, #ffda5b +lilac, #dcb2d2 +dark_oak_fence_gate, #5e3d1c +trapped_chest, #e7b96f +nether_brick, #572c34 +brown_glazed_terracotta, #aa9779 +iron_door, #ffffff +gilded_blackstone, #4e3c36 +large_amethyst_bud, #e6b4ff +raw_iron_block, #edc098 +bowl, #64440c +jungle_pressure_plate, #e4a472 +stripped_oak_log, #fccd7a +tripwire_hook, #cabea8 +white_wool, #ffffff +frog_spawn_egg, #f7ffff +dead_bush, #986f39 +diamond_axe, #448965 +warped_hanging_sign, #41918d +spyglass, #cd9e5f +red_shulker_box, #c82c2a +rabbit_spawn_egg, #f7ffff +dark_prismarine_stairs, #48826b +mossy_cobblestone, #9da886 +gray_carpet, #586165 +blue_glazed_terracotta, #435bc6 +budding_amethyst, #bc89ff +purple_banner, #e7b96f +jungle_button, #e4a472 +golden_chestplate, #fff150 +basalt, #68666e +lime_candle, #97fb2a +crimson_fence_gate, #904464 +bubble_coral_fan, #e42de3 +golden_leggings, #e8c53c +recovery_compass, #a1b9bb +smooth_sandstone_stairs, #fffff2 +acacia_log, #93897a +warped_fence, #3d948d +crimson_roots, #b40b3a +raw_copper, #c38962 +coal, #322f33 +bamboo_raft, #c8b457 +cobblestone_wall, #b5b5b5 +cobbled_deepslate_stairs, #6e6e72 +lime_banner, #e7b96f +green_stained_glass_pane, #91b548 +ward_armor_trim_smithing_template, #5c7c82 +explorer_pottery_sherd, #935143 +redstone_ore, #c89b9b +purple_glazed_terracotta, #9b43d9 +acacia_trapdoor, #de7c48 +bamboo_trapdoor, #ffff79 +polished_andesite_stairs, #bcbfbe +cartography_table, #5f3d1c +waxed_weathered_cut_copper, #9bcf98 +stone_brick_slab, #aeacae +phantom_membrane, #f2deda +bubble_coral_block, #eb25e7 +filled_map, #fffff2 +carrot, #aba11b +purpur_pillar, #f4b8f4 +wooden_pickaxe, #684d1c +stripped_jungle_log, #f4bc78 +eye_armor_trim_smithing_template, #ffffca +cyan_stained_glass, #6cb5da +mangrove_button, #a74d44 +smithing_table, #503436 +dark_oak_door, #644120 +cherry_fence, #fffef5 +pufferfish, #ffd472 +parrot_spawn_egg, #f7ffff +crimson_planks, #904464 +brain_coral_fan, #ff78da +amethyst_shard, #d2a0ff +drowned_spawn_egg, #f7ffff +paper, #ffffff +mud_brick_slab, #c39370 +allay_spawn_egg, #f7ffff +endermite_spawn_egg, #f7ffff +mangrove_sign, #8d433a +chainmail_leggings, #939393 +birch_sign, #e3cf91 +dark_oak_sign, #735029 +sandstone_slab, #ffffdd +birch_wood, #ffffff +birch_pressure_plate, #fffaac +coal_ore, #969696 +light_gray_carpet, #cacabf +ghast_spawn_egg, #f7ffff +green_shulker_box, #708e2c +dark_oak_slab, #5e3d1c +blue_ice, #a5eeff +cherry_leaves, #fff5ff +comparator, #aa7564 +prismarine_bricks, #8df4e1 +deepslate_gold_ore, #a4916f +elder_guardian_spawn_egg, #f7ffff +melon, #a2d02a +red_mushroom_block, #ff4140 +polar_bear_spawn_egg, #f7ffff +pumpkin_seeds, #ffffd0 +white_dye, #dad9f8 +mossy_stone_brick_stairs, #a4ac96 +purple_dye, #be5cfb +lingering_potion, #e8e8e8 +sniffer_egg, #6e645f +black_carpet, #1c1e23 +stray_spawn_egg, #f7ffff +writable_book, #aa8478 +sculk_vein, #a4350 +pillager_spawn_egg, #f7ffff +petrified_oak_slab, #e7b96f +creeper_head, #735847 +andesite_stairs, #c2c2c2 +baked_potato, #fab840 +glow_berries, #e3a73c +lime_dye, #83de20 +stripped_birch_wood, #fffba8 +podzol, #ae7c51 +soul_campfire, #87bca1 +mojang_banner_pattern, #fffff1 +andesite_slab, #c2c2c2 +light_gray_concrete, #b2b2a4 +pink_glazed_terracotta, #ffdcff +pumpkin, #ffa222 +dark_prismarine, #48826b +magenta_glazed_terracotta, #ff8eff +redstone_lamp, #874d2a +mangrove_boat, #8c3e33 +blackstone_stairs, #3c3239 +blue_orchid, #43e7f0 +iron_pickaxe, #847961 +music_disc_mellohi, #5b4e61 +dead_horn_coral_fan, #ffffff +warped_fungus_on_a_stick, #737354 +tadpole_bucket, #a0aaa5 +leather, #ca5e36 +music_disc_far, #506148 +pink_concrete_powder, #ffdaff +brown_concrete, #89542c +golden_sword, #d6b550 +dispenser, #aeacac +tadpole_spawn_egg, #f7ffff +light_gray_banner, #e7b96f +raw_iron, #dcbea0 +archer_pottery_sherd, #975444 +bamboo, #ffffff +infested_deepslate, #727275 +waxed_oxidized_cut_copper, #70dab4 +purple_stained_glass_pane, #b55afe +azalea_leaves, #80a23e +oak_hanging_sign, #c6a165 +stone_shovel, #7f725a +spruce_stairs, #a27844 +ghast_tear, #b4dddd +lime_carpet, #a0ff23 +snort_pottery_sherd, #935243 +shaper_armor_trim_smithing_template, #79665a +skull_pottery_sherd, #965244 +sandstone_stairs, #ffffdd +polished_granite_stairs, #dc977f +infested_cracked_stone_bricks, #a8a7a8 +deepslate_emerald_ore, #6f947c +blue_bed, #4b51e0 +birch_fence_gate, #fffaac +raw_gold, #ffe344 +pearlescent_froglight, #ffffff +bow, #725e37 +glass_bottle, #d4e7ff +brown_stained_glass_pane, #916c48 +flowering_azalea_leaves, #8d9e55 +jungle_boat, #9d6e4b +brown_mushroom_block, #d49e73 +cobbled_deepslate, #6e6e72 +cherry_slab, #fffef5 +red_nether_bricks, #620a0c +piglin_brute_spawn_egg, #f7ffff +lime_stained_glass, #b5ff23 +netherite_hoe, #5b4348 +mangrove_stairs, #a74d44 +birch_slab, #fffaac +light_blue_banner, #e7b96f +green_dye, #587f1c +cactus, #7db940 +bedrock, #797979 +donkey_spawn_egg, #f7ffff +blue_banner, #e7b96f +furnace, #828282 +ender_pearl, #1c7d6e +light_blue_candle, #3ac9ff +deepslate_diamond_ore, #769797 +diamond, #78ffff +powered_rail, #c39b69 +miner_pottery_sherd, #9b5747 +stone, #b2b2b2 +spruce_trapdoor, #937043 +light_blue_carpet, #52faff +sculk, #112a33 +ravager_spawn_egg, #f7ffff +poppy, #a2642d +pink_concrete, #ff90ca +chest, #e7b96f +blue_candle, #5273e8 +acacia_leaves, #d4d3d3 +iron_chestplate, #bfbfbf +egg, #f2e0aa +tube_coral, #4376ff +structure_block, #7d6980 +snow_golem_spawn_egg, #f7ffff +small_dripleaf, #86aa40 +red_sandstone_slab, #ff8d29 +mushroom_stew, #976836 +granite_stairs, #d49379 +mud, #555155 +jungle_log, #795f23 +smooth_basalt, #66666f +suspicious_stew, #967943 +weathered_cut_copper_stairs, #9bcf98 +waxed_exposed_cut_copper_slab, #dcac90 +oak_fence_gate, #e7b96f +deepslate_lapis_ore, #7080a4 +spruce_log, #523416 +chiseled_sandstone, #ffffdd +tube_coral_fan, #4782ff +bricks, #d68a76 +cyan_wool, #1ec3cf +llama_spawn_egg, #f7ffff +spectral_arrow, #ffcf47 +smooth_sandstone, #fffff2 +copper_ingot, #ff8358 +chainmail_helmet, #828282 +shield, #5e3d1c +chorus_flower, #d7abd7 +chiseled_polished_blackstone, #4b4450 +iron_leggings, #969696 +bamboo_stairs, #fff772 +yellow_terracotta, #ffbe32 +diamond_shovel, #4a9069 +warden_spawn_egg, #f7ffff +cherry_fence_gate, #fffef5 +purpur_block, #f1b2f1 +rabbit_stew, #b46e2c +sniffer_spawn_egg, #f7ffff +dark_oak_leaves, #d6d6d6 +cherry_trapdoor, #fffef5 +rooted_dirt, #cd936c +pink_banner, #e7b96f +melon_slice, #dd8040 +brown_stained_glass, #916c48 +dark_oak_wood, #554125 +red_concrete, #ca2d2d +spawner, #334158 +smooth_red_sandstone_stairs, #ff8a2c +andesite, #c2c2c2 +iron_boots, #909090 +string, #ccdcdd +arms_up_pottery_sherd, #975446 +lime_concrete, #86f022 +light_gray_stained_glass, #dadada +pink_bed, #ffc9f5 +composter, #a0642c +cyan_glazed_terracotta, #4aa8b2 +dead_bubble_coral_fan, #ffffff +polished_blackstone_brick_stairs, #443c46 +green_concrete_powder, #8aaa3e +warped_trapdoor, #43aa9e +gray_banner, #e7b96f +honey_block, #ffff4a +dead_tube_coral_block, #b9afaa +painting, #d0bb9d +red_candle, #e33a36 +yellow_bed, #ffff37 +deepslate_brick_wall, #646465 +large_fern, #b2b2b2 +oak_pressure_plate, #e7b96f +dead_fire_coral, #c2b6b1 +carrot_on_a_stick, #87693a +honeycomb, #ffda32 +wooden_sword, #644a1c +turtle_helmet, #349e47 +polished_blackstone_brick_slab, #443c46 +cobbled_deepslate_slab, #6e6e72 +cut_sandstone, #ffffe3 +grass, #cfcfcf +light_gray_shulker_box, #b1b1a4 +warped_stairs, #3d948d +cracked_nether_bricks, #391c20 +gray_terracotta, #513c32 +light_gray_bed, #cacabf +glow_item_frame, #f8c579 +bamboo_slab, #fff772 +spruce_slab, #a27844 +purple_wool, #ac3cf5 +diamond_hoe, #50724a +magenta_wool, #ff61ff +green_carpet, #789b26 +cobbled_deepslate_wall, #6e6e72 +prismarine_brick_slab, #8df4e1 +chiseled_nether_bricks, #432028 +netherite_chestplate, #51484b +glow_ink_sac, #3d9d96 +clay, #e4edff +red_carpet, #e43730 +daylight_detector, #b9a586 +fire_coral, #ed3441 +axolotl_spawn_egg, #f7ffff +light_blue_dye, #80bcff +dark_oak_boat, #613d1e +raiser_armor_trim_smithing_template, #796b5e +fire_coral_fan, #e13040 +red_dye, #f24d5a +beehive, #e0b46b +mooshroom_spawn_egg, #f7ffff +cut_copper_slab, #ff9772 +lime_stained_glass_pane, #b5ff23 +magenta_bed, #ff61ff +dark_oak_log, #554125 +shears, #c9a097 +charcoal, #373226 +deepslate, #727275 +nether_brick_slab, #3e1e25 +smooth_quartz_slab, #ffffff +blue_dye, #3d75ea +chiseled_bookshelf, #fecd7d +mossy_cobblestone_stairs, #9da886 +spruce_fence_gate, #a27844 +warped_roots, #1cc5b1 +diamond_pickaxe, #437654 +stick, #6c5a37 +waxed_weathered_copper, #9ada9d +glass, #c8d4d7 +zombie_horse_spawn_egg, #f7ffff +witch_spawn_egg, #f7ffff +silence_armor_trim_smithing_template, #47666c +flint, #474646 +gray_candle, #768a90 +totem_of_undying, #ffc86c +red_sandstone_stairs, #ff8d29 +mycelium, #a17c65 +deepslate_tile_wall, #4d4d4e +acacia_slab, #f08047 +bamboo_mosaic_slab, #fff26f +dead_bubble_coral_block, #bbafaa +echo_shard, #c4a57 +tuff, #9a9b91 +cyan_carpet, #1ec3cf +acacia_pressure_plate, #f08047 +pink_shulker_box, #fface0 +iron_hoe, #80725a +magenta_banner, #e7b96f +brown_shulker_box, #975e32 +cyan_banner, #e7b96f +oxidized_copper, #75e7bc +pink_carpet, #ffc9f5 +purple_stained_glass, #b55afe +iron_block, #ffffff +birch_chest_boat, #b89d62 +mangrove_propagule, #89fa76 +dead_horn_coral_block, #beb4ae +piglin_spawn_egg, #f7ffff +orange_candle, #ff9a1b +light_blue_shulker_box, #46e8ff +golden_apple, #ffc839 +peony, #b8b4c6 +pink_dye, #ffb5f1 +written_book, #874e3a +golden_helmet, #d4b134 +dead_brain_coral_fan, #fffcf8 +turtle_spawn_egg, #f7ffff +light_gray_wool, #cacabf +shulker_box, #c689c6 +rotten_flesh, #af5529 +medium_amethyst_bud, #e1abff +chainmail_boots, #8a8a8a +orange_carpet, #ffa81b +crimson_sign, #943e5e +brown_candle, #ab6c40 +dead_tube_coral, #a89e98 +hopper, #5f615f +gray_shulker_box, #4e5258 +skeleton_skull, #735847 +tide_armor_trim_smithing_template, #7feede +damaged_anvil, #616161 +dark_oak_stairs, #5e3d1c +sculk_shrieker, #12262f +prismarine_slab, #91dcd9 +polished_deepslate, #666668 +pig_spawn_egg, #f7ffff +cut_red_sandstone, #ff902c +coarse_dirt, #aa7954 +jungle_door, #dea170 +gravel, #bbb5b4 +brick_slab, #d68a76 +black_wool, #1c1e23 +cracked_deepslate_bricks, #5b5b5c +stone_axe, #7a6f58 +jungle_fence, #e4a472 +white_stained_glass, #ffffff +purple_shulker_box, #932dde +dolphin_spawn_egg, #f7ffff +oak_door, #caa764 +cut_red_sandstone_slab, #ff902c +smoker, #7c6b51 +cherry_boat, #ffd4cf +calibrated_sculk_sensor, #12262f +lapis_ore, #98a7c9 +quartz_block, #ffffff +blast_furnace, #989898 +spruce_boat, #7c5b36 +redstone, #980700 +brain_coral, #ff78d9 +dandelion, #d2f53d +grass_block, #bf895f +beetroot_soup, #7c3912 +blue_shulker_box, #3d40c8 +red_sandstone_wall, #ff8d29 +magenta_carpet, #ff61ff +zombified_piglin_spawn_egg, #f7ffff +horse_spawn_egg, #f7ffff +purple_concrete_powder, #bb4efc +light, #ffff2a +white_candle, #ffffff +torchflower_seeds, #79a762 +dune_armor_trim_smithing_template, #feffc5 +crimson_hyphae, #832329 +iron_shovel, #a2967f +waxed_exposed_cut_copper_stairs, #dcac90 +acacia_sapling, #a8a720 +crimson_hanging_sign, #904a66 +bee_spawn_egg, #f7ffff +trader_llama_spawn_egg, #f7ffff +knowledge_book, #6baa68 +pitcher_plant, #aecdff +deepslate_tile_stairs, #4d4d4e +map, #fffff2 +tnt_minecart, #9a6e62 +prismarine, #91dcd9 +respawn_anchor, #372058 +diamond_horse_armor, #86ffda +magenta_stained_glass, #fe6cff +stone_brick_wall, #aeacae +big_dripleaf, #9ec948 +barrier, #ff0000 +cave_spider_spawn_egg, #f7ffff +sheaf_pottery_sherd, #945243 +campfire, #d39647 +yellow_concrete_powder, #ffff4d +nautilus_shell, #e8bea0 +cookie, #ffa050 +gray_concrete, #4d5157 +ochre_froglight, #ffffff +oak_chest_boat, #9b7944 +sentry_armor_trim_smithing_template, #708080 +weathered_copper, #9ada9d +porkchop, #ffa1a1 +compass, #786f6f +flint_and_steel, #5b5b5b +lime_wool, #a0ff23 +observer, #939393 +milk_bucket, #c6c9c9 +diorite_wall, #ffffff +kelp, #7ab637 +glistering_melon_slice, #ff984a +netherrack, #8a3636 +seagrass, #75bf4b +chiseled_stone_bricks, #aaa8aa +stripped_birch_log, #fffba8 +stone_slab, #b2b2b2 +music_disc_pigstep, #9d4d3a +blackstone_wall, #3c3239 +golden_boots, #e1bf3d +dragon_egg, #110c15 +fletching_table, #f7dd9e +blue_wool, #4b51e0 +music_disc_ward, #4a5447 +shroomlight, #ffd064 +squid_spawn_egg, #f7ffff +dried_kelp, #9d9891 +red_concrete_powder, #f04d47 +fox_spawn_egg, #f7ffff +end_stone_bricks, #ffffe7 +stonecutter, #a8a7a8 +salmon_bucket, #9d9eaa +orange_wool, #ffa81b +diamond_leggings, #3cbfaf +magenta_dye, #f579f2 +blackstone_slab, #3c3239 +warped_sign, #3c9190 +rose_bush, #bb5e34 +red_mushroom, #ff6b5f +music_disc_stal, #414141 +lantern, #d0a176 +howl_pottery_sherd, #9a5546 +pink_tulip, #9ae37c +jungle_wood, #795f23 +packed_ice, #c9ffff +cyan_stained_glass_pane, #6cb5da +stripped_warped_stem, #51d6d2 +orange_concrete, #ff8a00 +crimson_button, #904464 +black_dye, #262539 +soul_torch, #9ba47f +music_disc_blocks, #5c4b48 +prismarine_brick_stairs, #8df4e1 +cut_copper, #ff9772 +crimson_trapdoor, #934766 +diamond_block, #8cffff +mangrove_door, #9e4640 +polished_basalt, #7d7d82 +music_disc_13, #615e51 +light_blue_terracotta, #a19ac3 +crimson_door, #ab5175 +magma_block, #ca5a2c +purple_concrete, #8e2cde +raw_gold_block, #fff141 +conduit, #fffffa +diamond_boots, #3cb5a5 +polished_diorite_stairs, #ffffff +zombie_villager_spawn_egg, #f7ffff +firework_rocket, #e17573 +spider_spawn_egg, #f7ffff +silverfish_spawn_egg, #f7ffff +pitcher_pod, #945f48 +dark_prismarine_slab, #48826b +golden_axe, #b9942a +netherite_axe, #5f434a +leather_helmet, #919191 +dead_brain_coral, #beb2ab +camel_spawn_egg, #f7ffff +birch_sapling, #b5e470 +stripped_cherry_wood, #ffcfd3 +spruce_chest_boat, #825e30 +spruce_sapling, #3e5533 +jungle_stairs, #e4a472 +mud_brick_wall, #c39370 +candle, #ffffb9 +diamond_chestplate, #50edda +dripstone_block, #bf9883 +leather_horse_armor, #bfa591 +polished_blackstone_pressure_plate, #4b4450 +glow_lichen, #a0b9ac +light_blue_stained_glass, #91daff +dirt, #bf895f +host_armor_trim_smithing_template, #6f5e51 +yellow_dye, #ffe132 +quartz_bricks, #ffffff +crimson_stairs, #904464 +ender_eye, #66ab7d +birch_planks, #fffaac +brick, #be5c41 +pink_stained_glass_pane, #ffb5eb +deepslate_redstone_ore, #946869 +golden_carrot, #ca8e26 +stripped_warped_hyphae, #51d6d2 +chiseled_deepslate, #4d4d4d +coast_armor_trim_smithing_template, #86949d +firework_star, #798987 +soul_lantern, #73b5c8 +warped_fence_gate, #3d948d +bamboo_mosaic_stairs, #fff26f +spruce_hanging_sign, #866640 +end_stone_brick_slab, #ffffe7 +magenta_shulker_box, #f74de8 +music_disc_wait, #4e545b +item_frame, #d7a468 +yellow_shulker_box, #ffff29 +deepslate_iron_ore, #978d86 +white_banner, #e7b96f +dropper, #aeacac +granite_slab, #d49379 +gray_bed, #586165 +warped_fungus, #699b7c +husk_spawn_egg, #f7ffff +chain, #465068 +wandering_trader_spawn_egg, #f7ffff +dead_tube_coral_fan, #ffffff +lily_of_the_valley, #ffffff +sculk_sensor, #12262f +polished_andesite_slab, #bcbfbe +nether_bricks, #3e1e25 +green_glazed_terracotta, #a7ca5f +red_bed, #e43730 +nether_brick_fence, #3e1e25 +redstone_torch, #f4703e +crimson_stem, #832329 +cooked_beef, #894b34 +bamboo_block, #b5cd51 +stripped_spruce_wood, #a47f4a +netherite_pickaxe, #5c4048 +iron_trapdoor, #ffffff +blaze_rod, #ffbf25 +twisting_vines, #1cc0ae +stripped_mangrove_wood, #aa4d43 +panda_spawn_egg, #f7ffff +stone_bricks, #aeacae +smooth_stone_slab, #eeeeee +end_rod, #ffffff +obsidian, #150e22 +blue_stained_glass, #486cfe +birch_trapdoor, #ffffe0 +jungle_fence_gate, #e4a472 +stone_brick_stairs, #aeacae +spruce_wood, #523416 +orange_dye, #ffb433 +oak_planks, #e7b96f +hoglin_spawn_egg, #f7ffff +cooked_porkchop, #f7d690 +light_blue_wool, #52faff +blue_stained_glass_pane, #486cfe +barrel, #987347 +moss_block, #7f9b40 +light_blue_bed, #52faff +red_glazed_terracotta, #ff544b +acacia_wood, #93897a +rabbit, #ffe6cd +sea_lantern, #f5ffff +light_gray_candle, #b4b4aa +warped_pressure_plate, #3d948d +rabbit_hide, #cf9e68 +polished_diorite_slab, #ffffff +oak_leaves, #cdcdcd +andesite_wall, #c2c2c2 +black_concrete_powder, #23252c +music_disc_11, #444444 +golden_horse_armor, #feb634 +gray_glazed_terracotta, #768084 +waxed_exposed_cut_copper, #dcac90 +activator_rail, #a47c69 +spruce_door, #91724b +azure_bluet, #e1ffdd +granite, #d49379 +jungle_leaves, #dedccc +polished_blackstone_stairs, #4b4450 +cobblestone_stairs, #b5b5b5