diff --git a/common/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/common/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index e23d34b8..0bcda039 100644 --- a/common/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/common/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,4 +1,4 @@ -// 1.21.1 2024-11-24T21:50:16.9576883 Loot Tables +// 1.21.1 2024-11-30T14:43:00.0255867 Loot Tables 2b18f4ee4964de853f965809175e41672c73f2a3 data/eternal_starlight/loot_table/blocks/abyssal_fire.json 188b8614ef4815c81bb45c3a918877795892cf25 data/eternal_starlight/loot_table/blocks/abyssal_geyser.json 77967e1af1e01fc2bbf8f97dd52c510df8648a4c data/eternal_starlight/loot_table/blocks/abyssal_kelp.json @@ -162,6 +162,7 @@ f9f33b3b845903788f57f9bcb8bf7bf507aa99aa data/eternal_starlight/loot_table/block 1f5e8f6e7b05ca3c97f1c4276622c0641543b747 data/eternal_starlight/loot_table/blocks/golden_grass_block.json 7ab271d8aea5ad16a41a1621e3ae69abe69abf87 data/eternal_starlight/loot_table/blocks/golem_steel_bars.json 2d26e1daa167286265c4decbd3ed80f09a197da8 data/eternal_starlight/loot_table/blocks/golem_steel_block.json +f8635011cede8589e0f986477b86eb508b423dc8 data/eternal_starlight/loot_table/blocks/golem_steel_crate.json b27b8088b7003ef80790011bb1da391c07c59fa8 data/eternal_starlight/loot_table/blocks/golem_steel_grate.json 563e58be2e2d4760a620a7bef40b51d37b6aaf16 data/eternal_starlight/loot_table/blocks/golem_steel_jet.json 173c55305c1d05668683d30dc8d8351b3c6e330a data/eternal_starlight/loot_table/blocks/golem_steel_pillar.json diff --git a/common/src/generated/resources/.cache/6637fa8b1c8c784dfdf3dac0cbda5f32b6e4297a b/common/src/generated/resources/.cache/6637fa8b1c8c784dfdf3dac0cbda5f32b6e4297a index b38632c9..f6d5b563 100644 --- a/common/src/generated/resources/.cache/6637fa8b1c8c784dfdf3dac0cbda5f32b6e4297a +++ b/common/src/generated/resources/.cache/6637fa8b1c8c784dfdf3dac0cbda5f32b6e4297a @@ -1,4 +1,4 @@ -// 1.21.1 2024-11-24T21:50:16.9672403 Tags for minecraft:block mod id eternal_starlight +// 1.21.1 2024-11-30T17:03:38.9300023 Tags for minecraft:block mod id eternal_starlight 4e42849c79b21f7d80bc0c6ff216ffa705bb94aa data/c/tags/block/budding_blocks.json f2d1fdc1f3d6da57f00e708893a3bde6703c4d8f data/c/tags/block/buds.json 41ca90f7ff686d13272ff2c1d1d8c24ae80b676a data/c/tags/block/clusters.json @@ -82,9 +82,11 @@ a5c861e65bd285da7e6180ee485ddbd6c84b6cda data/minecraft/tags/block/combination_s 0c69071d8808fc63e12b14b997cf488ed35f27be data/minecraft/tags/block/dampens_vibrations.json 31eecaca3fab61da654ca42d2784f0e6ec824af3 data/minecraft/tags/block/dirt.json 4fad66675787b4f308e4629dd82bbf1aae4a1570 data/minecraft/tags/block/dragon_immune.json +bbd4c581bc8f647fe91802e9ac907e322e0f6404 data/minecraft/tags/block/features_cannot_replace.json 2e6a976a86010e675762413d1e443724a82ff7ac data/minecraft/tags/block/fence_gates.json 66b456d1a02e3606d75471a85fe65ed3f6f69241 data/minecraft/tags/block/flower_pots.json 42884e8c5a46a38bf9f966edf96dcb9f0e316b0e data/minecraft/tags/block/frog_prefer_jump_to.json +a3b5c288e24581425d5cf66d5082a574adaf87a9 data/minecraft/tags/block/guarded_by_piglins.json a206861dd2ba2007aefbafd0da6e97d5e2b1d648 data/minecraft/tags/block/impermeable.json b58ea2fa8a7953cf65d8720c57a475e5a124a782 data/minecraft/tags/block/inside_step_sound_blocks.json 7513342632805501456171c57bd0e1373d40b46c data/minecraft/tags/block/leaves.json @@ -93,11 +95,11 @@ b58ea2fa8a7953cf65d8720c57a475e5a124a782 data/minecraft/tags/block/inside_step_s 09e3541f1349505632f68c69c197d57121a93a9b data/minecraft/tags/block/mangrove_logs_can_grow_through.json ce8f35dc022f1a32927aaa3095c6e03a2c4f43a8 data/minecraft/tags/block/mangrove_roots_can_grow_through.json 78350735086753b066029b0dcb46c59a435ac6f1 data/minecraft/tags/block/mineable/axe.json -e2fc03dd75068003606377323d2f7b06fef109c7 data/minecraft/tags/block/mineable/pickaxe.json +e7ee87de83084a2908a4cb67212357dfda9b702e data/minecraft/tags/block/mineable/pickaxe.json 97516cf828ed57d08bf452c0650ff4004cd36f2c data/minecraft/tags/block/mineable/shovel.json 04be4ebce9f93c7dcdb4960c9c23c11e48caadce data/minecraft/tags/block/moss_replaceable.json 7bc1bb9e83c030a31a9e759a54bf77355e2f36ad data/minecraft/tags/block/mushroom_grow_block.json -e39ffc336235b24ea0ec552687751eb37bf9c911 data/minecraft/tags/block/needs_iron_tool.json +10062effa05b8b5156ec7b3fc59ad6507e42c7e0 data/minecraft/tags/block/needs_iron_tool.json 90de9afe0872027063bcb6f66d1fe2a0ff06b5e0 data/minecraft/tags/block/occludes_vibration_signals.json a034799a9a254fe3ae790f0047b291599e115314 data/minecraft/tags/block/planks.json d0ad7cbe8e4b2e08fea83cf0f9b09343be8ff883 data/minecraft/tags/block/portals.json diff --git a/common/src/generated/resources/.cache/9539076883c29777f26a3c22ea17f026ade8d9e9 b/common/src/generated/resources/.cache/9539076883c29777f26a3c22ea17f026ade8d9e9 index efc13e9a..3ebc7d98 100644 --- a/common/src/generated/resources/.cache/9539076883c29777f26a3c22ea17f026ade8d9e9 +++ b/common/src/generated/resources/.cache/9539076883c29777f26a3c22ea17f026ade8d9e9 @@ -1,4 +1,4 @@ -// 1.21.1 2024-11-24T21:50:16.9692399 Item Models: eternal_starlight +// 1.21.1 2024-11-30T14:43:00.0455465 Item Models: eternal_starlight f36b77087c8c68017703cd72753faa9ec0bb05c9 assets/eternal_starlight/models/item/abyssal_fruit.json 566abbb0b7c88c3e62953e9a59a3c7a789481e57 assets/eternal_starlight/models/item/abyssal_geyser.json 22602a3404b600eeca3221ff2689c59995af1cfc assets/eternal_starlight/models/item/abyssal_magma_block.json @@ -298,6 +298,7 @@ a2b32bb8b9d1143d619c2aec6e6ba66b177980cf assets/eternal_starlight/models/item/gl 740d00fb65e6c6952f6085f25e1b5999affb195d assets/eternal_starlight/models/item/golden_grass_block.json d23dc824a514f819ba5f8f358807a6cdf0b85e64 assets/eternal_starlight/models/item/golem_steel_bars.json 1ceffc9cb18bb93f4ede21a93db2b6f9ad244e24 assets/eternal_starlight/models/item/golem_steel_block.json +56961305707f06dd3082f1d4bcc9049381087462 assets/eternal_starlight/models/item/golem_steel_crate.json a27d3da47366342535867587bd44d9be7480f09e assets/eternal_starlight/models/item/golem_steel_grate.json 52e76089027387abf3d8c9e6abe024ea6dadb22f assets/eternal_starlight/models/item/golem_steel_ingot.json 70e380206dbfcd3e3c19f6d5664c0d36d3784584 assets/eternal_starlight/models/item/golem_steel_jet.json diff --git a/common/src/generated/resources/.cache/99319781d953ec6fa131cf87453d9d48ce0c3e28 b/common/src/generated/resources/.cache/99319781d953ec6fa131cf87453d9d48ce0c3e28 index b315abf4..76f680fc 100644 --- a/common/src/generated/resources/.cache/99319781d953ec6fa131cf87453d9d48ce0c3e28 +++ b/common/src/generated/resources/.cache/99319781d953ec6fa131cf87453d9d48ce0c3e28 @@ -1,4 +1,4 @@ -// 1.21.1 2024-11-24T21:50:16.9774767 Block States: eternal_starlight +// 1.21.1 2024-11-30T14:43:00.0558526 Block States: eternal_starlight 0fa0d5e3aac576a13b6468badbef299870f730a6 assets/eternal_starlight/blockstates/abyssal_geyser.json dd0f2627e74ab03459ebae3d5a1df9def4a89042 assets/eternal_starlight/blockstates/abyssal_kelp.json f02d5b82ec269c56ac32c6a38b0dc0cdbbf3d008 assets/eternal_starlight/blockstates/abyssal_kelp_plant.json @@ -161,6 +161,7 @@ ffd835f88b71b7297801156cd1d6fe0d385b739c assets/eternal_starlight/blockstates/gl b7a68798335ebba312a70ae9127f9ea54752761f assets/eternal_starlight/blockstates/golden_grass.json 5a36dc197fa0675e05025cabd2da1b1a1fc3037d assets/eternal_starlight/blockstates/golden_grass_block.json 7e11035c307e031acfb5bbb44e920159f983fddf assets/eternal_starlight/blockstates/golem_steel_block.json +651aca8eeabb14d95e61da41a778cd64c6a3a1a9 assets/eternal_starlight/blockstates/golem_steel_crate.json 5d07ec624fab2ff4b02b88a748663504e2351f96 assets/eternal_starlight/blockstates/golem_steel_grate.json 65359105fd9298bab335eb2b6a9c4da1ff7c9fe2 assets/eternal_starlight/blockstates/golem_steel_jet.json 739a08d1ec43e43409e38cfdd0faaabba755afd4 assets/eternal_starlight/blockstates/golem_steel_pillar.json diff --git a/common/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/common/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 06b406a5..7fbc1e47 100644 --- a/common/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/common/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,9 +1,9 @@ -// 1.21.1 2024-11-24T21:50:16.9887608 Recipes +// 1.21.1 2024-11-30T16:56:17.0719362 Recipes ad29647c03c8631e74ab853101908eda2a14194c data/eternal_starlight/advancement/recipes/brewing/cauldron_from_swamp_silver_ingot.json eadb12aecf81885f07435504edfeb0e4ef368170 data/eternal_starlight/advancement/recipes/building_blocks/aethersent_block.json 1275c7b0c865f7d3eb7915d21ede5298fd9c200b data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_block.json -457fd626a8827bcdb8612aeba07c5a5e706ee33a data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json -a7218c066e886a2cbf5c3b5ddcc072bd21f60fe4 data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json +58e8fcb0888f45b84482ce57aabac34ef0722c24 data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json +f4aec232ad3cd70eee3a53cbef526349fe37d9d4 data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json 08ddcf9cb890fd6c130205de8f892920c63559a8 data/eternal_starlight/advancement/recipes/building_blocks/chiseled_flare_pillar.json aca0bdd19cccd27b26ba8396c594283f2d283fb8 data/eternal_starlight/advancement/recipes/building_blocks/chiseled_flare_pillar_from_flare_bricks_stonecutting.json 458e8046991cbbb90b947a7e38ecf05a4be3fd1a data/eternal_starlight/advancement/recipes/building_blocks/chiseled_flare_pillar_from_flare_tiles_stonecutting.json @@ -597,8 +597,8 @@ c57ae54d002845be3e3665d642980a016ba41084 data/eternal_starlight/advancement/reci 5129f64098914aac5ba5a9eea2dc91c83d0b3f67 data/eternal_starlight/advancement/recipes/combat/aethersent_bottoms.json 33b06e3ea6c27d03bf55c9a049a3e0c2dbc29296 data/eternal_starlight/advancement/recipes/combat/aethersent_cape.json 4a51daca54b82f6d32faa972fe4d7d768947f7bb data/eternal_starlight/advancement/recipes/combat/aethersent_hood.json -9e825fb94526ba572ef2e8f7d96d05fd50e315d8 data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json -882a8948be275c455cafaf93ddccc3e0be25fd5e data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json +38eb893bff091d24eda61e8e2bbc45f617105ab8 data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json +eefedbbab6f20d92c22667e9b29ec25a523883b1 data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json 9c3778bddfd433c71887a6d5d5eef0231da0ca4e data/eternal_starlight/advancement/recipes/combat/amaramber_arrow.json b5413719c04ee1ee543f33074f64365239285b70 data/eternal_starlight/advancement/recipes/combat/amaramber_chestplate.json 21e068cc2f5cd0ed6c296b7478aa480ce757116f data/eternal_starlight/advancement/recipes/combat/amaramber_helmet.json @@ -643,6 +643,7 @@ bc03fd7b2c614d64cd21a56951f5d79258e49da8 data/eternal_starlight/advancement/reci 15ef869ccce7b024d20e854e94ab2571f6726857 data/eternal_starlight/advancement/recipes/decorations/cyan_bed.json e51f98b4ccdafc44e2a072bd5e3f2202570f28bb data/eternal_starlight/advancement/recipes/decorations/cyan_yeti_fur_carpet.json dced81f3b95d45e25485703c109105bddacfac9e data/eternal_starlight/advancement/recipes/decorations/golem_steel_bars.json +ffa11e1e2bf390b4fe23d22f7168514764e9206f data/eternal_starlight/advancement/recipes/decorations/golem_steel_crate.json 829a544294cc8d1d037d229a4b94b998ca2c1c62 data/eternal_starlight/advancement/recipes/decorations/gray_bed.json 9bd46a7c89751734cb04459c6179a03288352608 data/eternal_starlight/advancement/recipes/decorations/gray_yeti_fur_carpet.json 6072b1faf3ff12df0ce1eb189d2f3347b314516f data/eternal_starlight/advancement/recipes/decorations/green_bed.json @@ -857,8 +858,8 @@ c476d3036eaa548034935e2c687475e135d2c278 data/eternal_starlight/recipe/aethersen e80612ffdfa68d04262a0c000a8017796ca810d1 data/eternal_starlight/recipe/aethersent_ingot_from_nuggets.json effde9ff5215473c783d14b34db342dd0140e561 data/eternal_starlight/recipe/aethersent_ingot_smelting_from_raw_aethersent.json 864ffadd357f3b19979f209e0ccd18d5f51534f9 data/eternal_starlight/recipe/aethersent_nugget.json -58f41db40974ce9ebb94c5e48f4f2a98a7279ad6 data/eternal_starlight/recipe/alchemist_mask.json -40b4831284729bc366e4bad490347333ece946f7 data/eternal_starlight/recipe/alchemist_robe.json +0cdeca8176bf35ec8896140bad4eb63436cbe3b0 data/eternal_starlight/recipe/alchemist_mask.json +914341efadbf4e991faf20f976786872b42c0c0e data/eternal_starlight/recipe/alchemist_robe.json ed1f4628550d113bcc96e4e7f03638860a0c6005 data/eternal_starlight/recipe/amaramber_arrow.json d9bf0f0b843b7441bef2edf9feb42e921ab46a50 data/eternal_starlight/recipe/amaramber_axe.json 5df6425bc182f5013acc33f1c70f1178363a57d0 data/eternal_starlight/recipe/amaramber_candle.json @@ -878,7 +879,7 @@ c180f976898d2f38b23983bd83ce878d461d8e8c data/eternal_starlight/recipe/atalphait 8b2a72017cd5b7d74af674bc918c7b63e1308193 data/eternal_starlight/recipe/atalphaite_blasting_from_voidstone_atalphaite_ore.json 37ac824129cb24b84c9dda7e08092e7a93445910 data/eternal_starlight/recipe/atalphaite_block.json 4dfb24a5a216acc24d03ae57152449bd635d5d16 data/eternal_starlight/recipe/atalphaite_from_atalphaite_block.json -adf0e260be0aebbd793dc485c388c34d3189e7b4 data/eternal_starlight/recipe/atalphaite_light.json +ef71cc4f03a41a1edb137afcea0b11df882db2a2 data/eternal_starlight/recipe/atalphaite_light.json 475ab6f520e4125fbcc939a580973750a3204126 data/eternal_starlight/recipe/atalphaite_smelting_from_eternal_ice_atalphaite_ore.json c6853a042b5e039692f8c199aedfb141cc853b6d data/eternal_starlight/recipe/atalphaite_smelting_from_grimstone_atalphaite_ore.json f2118662763bf9bb1ca04e1b5c5c7f36658766c6 data/eternal_starlight/recipe/atalphaite_smelting_from_haze_ice_atalphaite_ore.json @@ -887,7 +888,7 @@ e4384eb1578c0e2a30c3ef2137be324890e3ffbf data/eternal_starlight/recipe/black_bed d533c4f91ca04ecb6fa9cdad35ce4a2124c9ee7b data/eternal_starlight/recipe/black_yeti_fur_carpet.json 7010c0146071dcaca18a330bd88cdcd7c5e25c9f data/eternal_starlight/recipe/blaze_crystal.json 2193afb353734baceb3bd58e75c63e0822f95c09 data/eternal_starlight/recipe/blaze_crystal_special.json -03e0b0c12d5b5fa683f8cbf222b902cfd025e593 data/eternal_starlight/recipe/blazing_atalphaite_block.json +7c04a8190cf9d9819ca2ffd29ffea85f65ce572f data/eternal_starlight/recipe/blazing_atalphaite_block.json b7a8e124f442489a8b1619b498ef45f39a493e74 data/eternal_starlight/recipe/blue_bed.json f8888738d5ab643b0f5913a9c3c51f59259a30e5 data/eternal_starlight/recipe/blue_yeti_fur_carpet.json 7e4e41f72780dc84432c543615cfba00c40776c9 data/eternal_starlight/recipe/brown_bed.json @@ -1090,6 +1091,7 @@ fac1019e6fcbdca7e19a80b70143e7438fb26108 data/eternal_starlight/recipe/glacite_s 87202f32a6e422f44e7a19341b2c9a3a445784f0 data/eternal_starlight/recipe/glacite_sword.json 8467b43249429c865269a142b2233108e6aca735 data/eternal_starlight/recipe/golem_steel_bars.json fd8573b789be8fe6c081cd118be95f88fe0da2d9 data/eternal_starlight/recipe/golem_steel_block.json +7bb881945d2d99ff2c3d84f2e28f44c14fa8e0d6 data/eternal_starlight/recipe/golem_steel_crate.json 3295c417f9124c6e7fbb3ceb89cfce0eb3499906 data/eternal_starlight/recipe/golem_steel_grate.json 12b6dcf884b82158356329c5ebdb37447866ff23 data/eternal_starlight/recipe/golem_steel_grate_from_golem_steel_block_stonecutting.json 035060549adb5f35201087085a15fd8bc365bf26 data/eternal_starlight/recipe/golem_steel_ingot_blasting_from_oxidized_golem_steel_ingot.json diff --git a/common/src/generated/resources/assets/eternal_starlight/blockstates/golem_steel_crate.json b/common/src/generated/resources/assets/eternal_starlight/blockstates/golem_steel_crate.json new file mode 100644 index 00000000..07bca7e2 --- /dev/null +++ b/common/src/generated/resources/assets/eternal_starlight/blockstates/golem_steel_crate.json @@ -0,0 +1,60 @@ +{ + "variants": { + "facing=down,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "x": 180, + "y": 90 + }, + "facing=down,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "x": 180, + "y": 90 + }, + "facing=east,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "x": 90, + "y": 90 + }, + "facing=east,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "x": 90, + "y": 90 + }, + "facing=north,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "x": 90 + }, + "facing=north,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "x": 90 + }, + "facing=south,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "x": 90, + "y": 180 + }, + "facing=south,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "x": 90, + "y": 180 + }, + "facing=up,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "y": 90 + }, + "facing=up,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "y": 90 + }, + "facing=west,open=false": { + "model": "eternal_starlight:block/golem_steel_crate", + "x": 90, + "y": 270 + }, + "facing=west,open=true": { + "model": "eternal_starlight:block/golem_steel_crate_open", + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/common/src/generated/resources/assets/eternal_starlight/models/item/golem_steel_crate.json b/common/src/generated/resources/assets/eternal_starlight/models/item/golem_steel_crate.json new file mode 100644 index 00000000..e5429a5e --- /dev/null +++ b/common/src/generated/resources/assets/eternal_starlight/models/item/golem_steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "eternal_starlight:block/golem_steel_crate" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json index c902ad1c..fe5caca1 100644 --- a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json +++ b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/atalphaite_light.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "eternal_starlight:atalphaite_block" + "items": "#c:storage_blocks/atalphaite" } ] }, diff --git a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json index 3f8540d2..a5f32de4 100644 --- a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json +++ b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/building_blocks/blazing_atalphaite_block.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "eternal_starlight:atalphaite_block" + "items": "#c:storage_blocks/atalphaite" } ] }, diff --git a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json index 1c5098b7..809c4711 100644 --- a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json +++ b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_mask.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "eternal_starlight:thioquartz_shard" + "items": "#c:gems/thioquartz" } ] }, diff --git a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json index daf64afd..9c1e15ff 100644 --- a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json +++ b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/combat/alchemist_robe.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "eternal_starlight:thioquartz_shard" + "items": "#c:gems/thioquartz" } ] }, diff --git a/common/src/generated/resources/data/eternal_starlight/advancement/recipes/decorations/golem_steel_crate.json b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/decorations/golem_steel_crate.json new file mode 100644 index 00000000..4c7b235f --- /dev/null +++ b/common/src/generated/resources/data/eternal_starlight/advancement/recipes/decorations/golem_steel_crate.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": "eternal_starlight:oxidized_golem_steel_ingot" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "eternal_starlight:golem_steel_crate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_item" + ] + ], + "rewards": { + "recipes": [ + "eternal_starlight:golem_steel_crate" + ] + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/eternal_starlight/loot_table/blocks/golem_steel_crate.json b/common/src/generated/resources/data/eternal_starlight/loot_table/blocks/golem_steel_crate.json new file mode 100644 index 00000000..a9fc9b40 --- /dev/null +++ b/common/src/generated/resources/data/eternal_starlight/loot_table/blocks/golem_steel_crate.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_components", + "include": [ + "minecraft:custom_name", + "minecraft:container", + "minecraft:lock", + "minecraft:container_loot" + ], + "source": "block_entity" + } + ], + "name": "eternal_starlight:golem_steel_crate" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "eternal_starlight:blocks/golem_steel_crate" +} \ No newline at end of file diff --git a/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_mask.json b/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_mask.json index 94c68a39..388a35de 100644 --- a/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_mask.json +++ b/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_mask.json @@ -6,7 +6,7 @@ "item": "minecraft:leather" }, "S": { - "item": "eternal_starlight:thioquartz_shard" + "tag": "c:gems/thioquartz" } }, "pattern": [ diff --git a/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_robe.json b/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_robe.json index df10c0d5..54199dd7 100644 --- a/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_robe.json +++ b/common/src/generated/resources/data/eternal_starlight/recipe/alchemist_robe.json @@ -6,7 +6,7 @@ "item": "minecraft:leather" }, "S": { - "item": "eternal_starlight:thioquartz_shard" + "tag": "c:gems/thioquartz" } }, "pattern": [ diff --git a/common/src/generated/resources/data/eternal_starlight/recipe/atalphaite_light.json b/common/src/generated/resources/data/eternal_starlight/recipe/atalphaite_light.json index cedc31d7..54cc016a 100644 --- a/common/src/generated/resources/data/eternal_starlight/recipe/atalphaite_light.json +++ b/common/src/generated/resources/data/eternal_starlight/recipe/atalphaite_light.json @@ -3,7 +3,7 @@ "category": "building", "key": { "B": { - "item": "eternal_starlight:atalphaite_block" + "tag": "c:storage_blocks/atalphaite" }, "G": { "item": "eternal_starlight:dusk_glass" diff --git a/common/src/generated/resources/data/eternal_starlight/recipe/blazing_atalphaite_block.json b/common/src/generated/resources/data/eternal_starlight/recipe/blazing_atalphaite_block.json index 64e59ebc..d28346a2 100644 --- a/common/src/generated/resources/data/eternal_starlight/recipe/blazing_atalphaite_block.json +++ b/common/src/generated/resources/data/eternal_starlight/recipe/blazing_atalphaite_block.json @@ -6,7 +6,7 @@ "tag": "c:gems/atalphaite" }, "B": { - "item": "eternal_starlight:atalphaite_block" + "tag": "c:storage_blocks/atalphaite" }, "T": { "tag": "c:ingots/thermal_springstone" diff --git a/common/src/generated/resources/data/eternal_starlight/recipe/golem_steel_crate.json b/common/src/generated/resources/data/eternal_starlight/recipe/golem_steel_crate.json new file mode 100644 index 00000000..4c1cf3ff --- /dev/null +++ b/common/src/generated/resources/data/eternal_starlight/recipe/golem_steel_crate.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "C": { + "item": "minecraft:chest" + }, + "G": { + "item": "eternal_starlight:oxidized_golem_steel_ingot" + }, + "S": { + "item": "eternal_starlight:swamp_silver_ingot" + } + }, + "pattern": [ + "SGS", + "SCS", + "SGS" + ], + "result": { + "count": 1, + "id": "eternal_starlight:golem_steel_crate" + } +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/features_cannot_replace.json b/common/src/generated/resources/data/minecraft/tags/block/features_cannot_replace.json new file mode 100644 index 00000000..96461695 --- /dev/null +++ b/common/src/generated/resources/data/minecraft/tags/block/features_cannot_replace.json @@ -0,0 +1,9 @@ +{ + "values": [ + "eternal_starlight:the_gatekeeper_spawner", + "eternal_starlight:starlight_golem_spawner", + "eternal_starlight:lunar_monstrosity_spawner", + "eternal_starlight:golem_steel_crate", + "eternal_starlight:energy_block" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/guarded_by_piglins.json b/common/src/generated/resources/data/minecraft/tags/block/guarded_by_piglins.json new file mode 100644 index 00000000..0c53da77 --- /dev/null +++ b/common/src/generated/resources/data/minecraft/tags/block/guarded_by_piglins.json @@ -0,0 +1,5 @@ +{ + "values": [ + "eternal_starlight:golem_steel_crate" + ] +} \ No newline at end of file diff --git a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index f8c3a5f5..4bf4a8aa 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/common/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -221,6 +221,7 @@ "eternal_starlight:oxidized_chiseled_golem_steel_block", "eternal_starlight:golem_steel_jet", "eternal_starlight:oxidized_golem_steel_jet", + "eternal_starlight:golem_steel_crate", "eternal_starlight:lunar_mosaic", "eternal_starlight:lunar_mosaic_slab", "eternal_starlight:lunar_mosaic_stairs", diff --git a/common/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json b/common/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json index 6116777f..e5a457b7 100644 --- a/common/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json +++ b/common/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -32,6 +32,7 @@ "eternal_starlight:oxidized_chiseled_golem_steel_block", "eternal_starlight:golem_steel_jet", "eternal_starlight:oxidized_golem_steel_jet", + "eternal_starlight:golem_steel_crate", "eternal_starlight:lunar_mosaic", "eternal_starlight:lunar_mosaic_slab", "eternal_starlight:lunar_mosaic_stairs", diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/EternalStarlight.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/EternalStarlight.java index 4ef20b44..8e7d9551 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/EternalStarlight.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/EternalStarlight.java @@ -34,6 +34,7 @@ public static void init() { ESSensorTypes.loadClass(); ESMobEffects.loadClass(); ESBlockEntities.loadClass(); + ESMenuTypes.loadClass(); ESEnchantmentEntityEffects.loadClass(); ESMaterialConditions.loadClass(); ESWorldCarvers.loadClass(); diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/block/CrateBlock.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/block/CrateBlock.java new file mode 100644 index 00000000..da10ad24 --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/block/CrateBlock.java @@ -0,0 +1,152 @@ +package cn.leolezury.eternalstarlight.common.block; + +import cn.leolezury.eternalstarlight.common.block.entity.CrateBlockEntity; +import cn.leolezury.eternalstarlight.common.registry.ESBlockEntities; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.piglin.PiglinAi; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.storage.loot.LootParams; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.List; + +public class CrateBlock extends BaseEntityBlock { + public static final MapCodec CODEC = simpleCodec(CrateBlock::new); + public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final BooleanProperty OPEN = BlockStateProperties.OPEN; + + @Override + public MapCodec codec() { + return CODEC; + } + + public CrateBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(OPEN, Boolean.valueOf(false))); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } else { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof CrateBlockEntity entity) { + player.openMenu(entity); + PiglinAi.angerNearbyPiglins(player, true); + } + + return InteractionResult.CONSUME; + } + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof CrateBlockEntity entity) { + entity.recheckOpen(); + } + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new CrateBlockEntity(pos, state); + } + + @Override + public BlockState playerWillDestroy(Level level, BlockPos blockPos, BlockState blockState, Player player) { + BlockEntity blockEntity = level.getBlockEntity(blockPos); + if (blockEntity instanceof CrateBlockEntity entity) { + if (!level.isClientSide && player.isCreative() && !entity.isEmpty()) { + ItemStack itemStack = asItem().getDefaultInstance(); + itemStack.applyComponents(blockEntity.collectComponents()); + ItemEntity itemEntity = new ItemEntity(level, blockPos.getX() + 0.5F, blockPos.getY() + 0.5F, blockPos.getZ() + 0.5F, itemStack); + itemEntity.setDefaultPickUpDelay(); + level.addFreshEntity(itemEntity); + } else { + entity.unpackLootTable(player); + } + } + + return super.playerWillDestroy(level, blockPos, blockState, player); + } + + @Override + protected List getDrops(BlockState blockState, LootParams.Builder builder) { + BlockEntity blockEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); + if (blockEntity instanceof CrateBlockEntity entity) { + builder = builder.withDynamicDrop(ResourceLocation.withDefaultNamespace("contents"), (consumer) -> { + for (int i = 0; i < entity.getContainerSize(); ++i) { + consumer.accept(entity.getItem(i)); + } + }); + } + + return super.getDrops(blockState, builder); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Override + protected boolean hasAnalogOutputSignal(BlockState state) { + return true; + } + + @Override + protected int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos pos) { + return AbstractContainerMenu.getRedstoneSignalFromBlockEntity(level.getBlockEntity(pos)); + } + + @Override + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { + ItemStack itemStack = super.getCloneItemStack(level, pos, state); + level.getBlockEntity(pos, ESBlockEntities.CRATE.get()).ifPresent((blockEntity) -> blockEntity.saveToItem(itemStack, level.registryAccess())); + return itemStack; + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, OPEN); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getNearestLookingDirection().getOpposite()); + } +} diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/block/entity/CrateBlockEntity.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/block/entity/CrateBlockEntity.java new file mode 100644 index 00000000..5fa129a3 --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/block/entity/CrateBlockEntity.java @@ -0,0 +1,134 @@ +package cn.leolezury.eternalstarlight.common.block.entity; + +import cn.leolezury.eternalstarlight.common.EternalStarlight; +import cn.leolezury.eternalstarlight.common.block.CrateBlock; +import cn.leolezury.eternalstarlight.common.item.menu.CrateMenu; +import cn.leolezury.eternalstarlight.common.registry.ESBlockEntities; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.NonNullList; +import net.minecraft.core.Vec3i; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.ContainerOpenersCounter; +import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; + +public class CrateBlockEntity extends RandomizableContainerBlockEntity { + private NonNullList items = NonNullList.withSize(36, ItemStack.EMPTY); + private final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() { + @Override + protected void onOpen(Level level, BlockPos pos, BlockState state) { + CrateBlockEntity.this.playSound(state, SoundEvents.BARREL_OPEN); + CrateBlockEntity.this.updateBlockState(state, true); + } + + @Override + protected void onClose(Level level, BlockPos pos, BlockState state) { + CrateBlockEntity.this.playSound(state, SoundEvents.BARREL_CLOSE); + CrateBlockEntity.this.updateBlockState(state, false); + } + + @Override + protected void openerCountChanged(Level level, BlockPos pos, BlockState state, int count, int openCount) { + } + + @Override + protected boolean isOwnContainer(Player player) { + if (player.containerMenu instanceof CrateMenu menu) { + Container container = menu.getContainer(); + return container == CrateBlockEntity.this; + } else { + return false; + } + } + }; + + public CrateBlockEntity(BlockPos pos, BlockState blockState) { + super(ESBlockEntities.CRATE.get(), pos, blockState); + } + + @Override + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (!this.trySaveLootTable(tag)) { + ContainerHelper.saveAllItems(tag, this.items, registries); + } + } + + @Override + protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + if (!this.tryLoadLootTable(tag)) { + ContainerHelper.loadAllItems(tag, this.items, registries); + } + } + + @Override + public int getContainerSize() { + return 36; + } + + @Override + protected NonNullList getItems() { + return this.items; + } + + @Override + protected void setItems(NonNullList items) { + this.items = items; + } + + @Override + protected Component getDefaultName() { + return Component.translatable("container." + EternalStarlight.ID + ".crate"); + } + + @Override + protected AbstractContainerMenu createMenu(int id, Inventory player) { + return new CrateMenu(id, player.player.getInventory(), this); + } + + @Override + public void startOpen(Player player) { + if (!this.remove && !player.isSpectator()) { + this.openersCounter.incrementOpeners(player, this.getLevel(), this.getBlockPos(), this.getBlockState()); + } + } + + @Override + public void stopOpen(Player player) { + if (!this.remove && !player.isSpectator()) { + this.openersCounter.decrementOpeners(player, this.getLevel(), this.getBlockPos(), this.getBlockState()); + } + } + + public void recheckOpen() { + if (!this.remove) { + this.openersCounter.recheckOpeners(this.getLevel(), this.getBlockPos(), this.getBlockState()); + } + } + + void updateBlockState(BlockState state, boolean open) { + this.level.setBlock(this.getBlockPos(), state.setValue(CrateBlock.OPEN, Boolean.valueOf(open)), 3); + } + + void playSound(BlockState state, SoundEvent sound) { + Vec3i vec3i = state.getValue(CrateBlock.FACING).getNormal(); + double x = this.worldPosition.getX() + 0.5 + vec3i.getX() / 2.0; + double y = this.worldPosition.getY() + 0.5 + vec3i.getY() / 2.0; + double z = this.worldPosition.getZ() + 0.5 + vec3i.getZ() / 2.0; + this.level.playSound(null, x, y, z, sound, SoundSource.BLOCKS, 0.5F, this.level.random.nextFloat() * 0.1F + 0.9F); + } +} diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/client/gui/screen/CrateScreen.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/client/gui/screen/CrateScreen.java new file mode 100644 index 00000000..faf286ca --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/client/gui/screen/CrateScreen.java @@ -0,0 +1,34 @@ +package cn.leolezury.eternalstarlight.common.client.gui.screen; + +import cn.leolezury.eternalstarlight.common.item.menu.CrateMenu; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.MenuAccess; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; + +@Environment(EnvType.CLIENT) +public class CrateScreen extends AbstractContainerScreen implements MenuAccess { + private static final ResourceLocation CONTAINER_BACKGROUND = ResourceLocation.withDefaultNamespace("textures/gui/container/generic_54.png"); + + public CrateScreen(CrateMenu menu, Inventory inventory, Component title) { + super(menu, inventory, title); + this.imageHeight = 114 + 4 * 18; + this.inventoryLabelY = this.imageHeight - 94; + } + + public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + super.render(guiGraphics, mouseX, mouseY, partialTick); + this.renderTooltip(guiGraphics, mouseX, mouseY); + } + + protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { + int x = (this.width - this.imageWidth) / 2; + int y = (this.height - this.imageHeight) / 2; + guiGraphics.blit(CONTAINER_BACKGROUND, x, y, 0, 0, this.imageWidth, 4 * 18 + 17); + guiGraphics.blit(CONTAINER_BACKGROUND, x, y + 4 * 18 + 17, 0, 126, this.imageWidth, 96); + } +} \ No newline at end of file diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/client/handler/ClientSetupHandlers.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/client/handler/ClientSetupHandlers.java index b72d38a3..44fac7f2 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/client/handler/ClientSetupHandlers.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/client/handler/ClientSetupHandlers.java @@ -2,6 +2,7 @@ import cn.leolezury.eternalstarlight.common.EternalStarlight; import cn.leolezury.eternalstarlight.common.block.ESSkullType; +import cn.leolezury.eternalstarlight.common.client.gui.screen.CrateScreen; import cn.leolezury.eternalstarlight.common.client.model.animation.PlayerAnimator; import cn.leolezury.eternalstarlight.common.client.model.animation.definition.PlayerAnimation; import cn.leolezury.eternalstarlight.common.client.model.armor.AlchemistArmorModel; @@ -40,6 +41,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.item.ItemColor; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.MenuAccess; import net.minecraft.client.model.*; import net.minecraft.client.model.geom.EntityModelSet; import net.minecraft.client.model.geom.ModelLayerLocation; @@ -64,6 +68,8 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CrossbowItem; import net.minecraft.world.item.ItemDisplayContext; @@ -107,6 +113,10 @@ public interface RendererLayerRegisterStrategy { void register(ModelLayerLocation layerLocation, Supplier supplier); } + public interface MenuScreenRegisterStrategy { + > void register(MenuType menuType, MenuScreens.ScreenConstructor screenConstructor); + } + public interface ShaderRegisterStrategy { void register(ResourceLocation location, VertexFormat format, Consumer loaded); } @@ -704,4 +714,8 @@ public static void registerLayers(RendererLayerRegisterStrategy strategy) { strategy.register(LunarVineRenderer.VineModel.LAYER_LOCATION, LunarVineRenderer.VineModel::createLayer); strategy.register(LunarVineRenderer.FlowerModel.LAYER_LOCATION, LunarVineRenderer.FlowerModel::createLayer); } + + public static void registerMenuScreens(MenuScreenRegisterStrategy strategy) { + strategy.register(ESMenuTypes.CRATE.get(), CrateScreen::new); + } } diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/misc/EyeOfSeeking.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/misc/EyeOfSeeking.java index 81065241..7d117ab5 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/misc/EyeOfSeeking.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/misc/EyeOfSeeking.java @@ -4,11 +4,13 @@ import cn.leolezury.eternalstarlight.common.registry.ESItems; import cn.leolezury.eternalstarlight.common.registry.ESSoundEvents; import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -156,8 +158,8 @@ public void tick() { this.discard(); if (this.surviveAfterDeath) { this.level().addFreshEntity(new ItemEntity(this.level(), this.getX(), this.getY(), this.getZ(), this.getItem())); - } else { - this.level().levelEvent(2003, this.blockPosition(), 0); + } else if (level() instanceof ServerLevel serverLevel) { + serverLevel.sendParticles(new ItemParticleOption(ParticleTypes.ITEM, getItem()), this.getX() + (this.random.nextFloat() - 0.5) * getBbWidth(), this.getY() + random.nextFloat() * getBbHeight(), this.getZ() + (this.random.nextFloat() - 0.5) * getBbWidth(), 5, 0.2, 0.2, 0.2, 0.0); } } } else { diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/projectile/ShatteredBlade.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/projectile/ShatteredBlade.java index 29c988f5..9954c656 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/projectile/ShatteredBlade.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/entity/projectile/ShatteredBlade.java @@ -146,12 +146,13 @@ public void addAdditionalSaveData(CompoundTag compoundTag) { compoundTag.putBoolean(TAG_DEALT_DAMAGE, this.dealtDamage); } - @Override + // just despawn it as it sometimes gets really annoying + /*@Override public void tickDespawn() { if (this.pickup != Pickup.ALLOWED) { super.tickDespawn(); } - } + }*/ @Override protected float getWaterInertia() { diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/item/menu/CrateMenu.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/item/menu/CrateMenu.java new file mode 100644 index 00000000..c248bc3e --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/item/menu/CrateMenu.java @@ -0,0 +1,82 @@ +package cn.leolezury.eternalstarlight.common.item.menu; + +import cn.leolezury.eternalstarlight.common.registry.ESMenuTypes; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ShulkerBoxSlot; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public class CrateMenu extends AbstractContainerMenu { + private final Container container; + + public CrateMenu(int containerId, Inventory playerInventory) { + this(containerId, playerInventory, new SimpleContainer(36)); + } + + public CrateMenu(int containerId, Inventory inventory, Container container) { + super(ESMenuTypes.CRATE.get(), containerId); + checkContainerSize(container, 36); + this.container = container; + container.startOpen(inventory.player); + + for (int y = 0; y < 4; y++) { + for (int x = 0; x < 9; x++) { + this.addSlot(new ShulkerBoxSlot(container, x + y * 9, 8 + x * 18, 18 + y * 18)); + } + } + + for (int y = 0; y < 3; y++) { + for (int x = 0; x < 9; x++) { + this.addSlot(new Slot(inventory, x + y * 9 + 9, 8 + x * 18, 103 + y * 18)); + } + } + + for (int y = 0; y < 9; y++) { + this.addSlot(new Slot(inventory, y, 8 + y * 18, 161)); + } + } + + public Container getContainer() { + return container; + } + + @Override + public boolean stillValid(Player player) { + return this.container.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemStack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack slotItem = slot.getItem(); + itemStack = slotItem.copy(); + if (index < this.container.getContainerSize()) { + if (!this.moveItemStackTo(slotItem, this.container.getContainerSize(), this.slots.size(), true)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(slotItem, 0, this.container.getContainerSize(), false)) { + return ItemStack.EMPTY; + } + + if (slotItem.isEmpty()) { + slot.setByPlayer(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + } + + return itemStack; + } + + @Override + public void removed(Player player) { + super.removed(player); + this.container.stopOpen(player); + } +} diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/item/misc/ContainerBlockItem.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/item/misc/ContainerBlockItem.java new file mode 100644 index 00000000..37741f26 --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/item/misc/ContainerBlockItem.java @@ -0,0 +1,15 @@ +package cn.leolezury.eternalstarlight.common.item.misc; + +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.level.block.Block; + +public class ContainerBlockItem extends BlockItem { + public ContainerBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + public boolean canFitInsideContainerItems() { + return false; + } +} diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlockEntities.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlockEntities.java index 5b93adc7..14e4d81b 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlockEntities.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlockEntities.java @@ -26,6 +26,7 @@ public class ESBlockEntities { public static final RegistryObject, BlockEntityType> LUNAR_MONSTROSITY_SPAWNER = BLOCK_ENTITIES.register("lunar_monstrosity_spawner", () -> BlockEntityType.Builder.of(LunarMonstrositySpawnerBlockEntity::new, ESBlocks.LUNAR_MONSTROSITY_SPAWNER.get()).build(null)); public static final RegistryObject, BlockEntityType> LUNAR_VINE = BLOCK_ENTITIES.register("lunar_vine", () -> BlockEntityType.Builder.of(LunarVineBlockEntity::new, ESBlocks.LUNAR_VINE.get()).build(null)); public static final RegistryObject, BlockEntityType> STELLAR_RACK = BLOCK_ENTITIES.register("stellar_rack", () -> BlockEntityType.Builder.of(StellarRackBlockEntity::new, ESBlocks.STELLAR_RACK.get()).build(null)); + public static final RegistryObject, BlockEntityType> CRATE = BLOCK_ENTITIES.register("crate", () -> BlockEntityType.Builder.of(CrateBlockEntity::new, ESBlocks.GOLEM_STEEL_CRATE.get()).build(null)); public static final RegistryObject, BlockEntityType> STARLIGHT_PORTAL = BLOCK_ENTITIES.register("starlight_portal", () -> BlockEntityType.Builder.of(ESPortalBlockEntity::new, ESBlocks.STARLIGHT_PORTAL.get()).build(null)); public static void loadClass() { diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlocks.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlocks.java index 9ebc23c0..46f2fbeb 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlocks.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESBlocks.java @@ -526,6 +526,7 @@ public class ESBlocks { public static final RegistryObject OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK = BLOCKS.register("oxidized_chiseled_golem_steel_block", () -> new WeatheringGolemSteelFullBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_GRAY))); public static final RegistryObject GOLEM_STEEL_JET = BLOCKS.register("golem_steel_jet", () -> new WeatheringGolemSteelJetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_BLUE))); public static final RegistryObject OXIDIZED_GOLEM_STEEL_JET = BLOCKS.register("oxidized_golem_steel_jet", () -> new WeatheringGolemSteelJetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_GRAY))); + public static final RegistryObject GOLEM_STEEL_CRATE = BLOCKS.register("golem_steel_crate", () -> new CrateBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BLOCK).mapColor(MapColor.COLOR_GRAY).strength(10F, 12F))); // lunar monstrosity public static final RegistryObject SHADEGRIEVE = BLOCKS.register("shadegrieve", () -> new ShadegrieveBlock(false, BlockBehaviour.Properties.of().strength(25F).sound(SoundType.AZALEA_LEAVES).mapColor(MapColor.COLOR_PURPLE))); diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESItems.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESItems.java index 8ff81eb8..41588feb 100644 --- a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESItems.java +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESItems.java @@ -453,6 +453,7 @@ private static RegistryObject registerItem(String name, Supplier OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK = registerItem("oxidized_chiseled_golem_steel_block", () -> new BlockItem(ESBlocks.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get(), new Item.Properties())); public static final RegistryObject GOLEM_STEEL_JET = registerItem("golem_steel_jet", () -> new BlockItem(ESBlocks.GOLEM_STEEL_JET.get(), new Item.Properties())); public static final RegistryObject OXIDIZED_GOLEM_STEEL_JET = registerItem("oxidized_golem_steel_jet", () -> new BlockItem(ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get(), new Item.Properties())); + public static final RegistryObject GOLEM_STEEL_CRATE = registerItem("golem_steel_crate", () -> new ContainerBlockItem(ESBlocks.GOLEM_STEEL_CRATE.get(), new Item.Properties())); // tenacious petal public static final RegistryObject SHADEGRIEVE = registerItem("shadegrieve", () -> new BlockItem(ESBlocks.SHADEGRIEVE.get(), new Item.Properties())); diff --git a/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESMenuTypes.java b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESMenuTypes.java new file mode 100644 index 00000000..333d26fd --- /dev/null +++ b/common/src/main/java/cn/leolezury/eternalstarlight/common/registry/ESMenuTypes.java @@ -0,0 +1,17 @@ +package cn.leolezury.eternalstarlight.common.registry; + +import cn.leolezury.eternalstarlight.common.EternalStarlight; +import cn.leolezury.eternalstarlight.common.item.menu.CrateMenu; +import cn.leolezury.eternalstarlight.common.platform.registry.RegistrationProvider; +import cn.leolezury.eternalstarlight.common.platform.registry.RegistryObject; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.inventory.MenuType; + +public class ESMenuTypes { + public static final RegistrationProvider> MENU_TYPES = RegistrationProvider.get(Registries.MENU, EternalStarlight.ID); + public static final RegistryObject, MenuType> CRATE = MENU_TYPES.register("crate", () -> new MenuType<>(CrateMenu::new, FeatureFlags.VANILLA_SET)); + + public static void loadClass() { + } +} diff --git a/common/src/main/resources/assets/eternal_starlight/lang/en_us.json b/common/src/main/resources/assets/eternal_starlight/lang/en_us.json index c469ddf6..961d4315 100644 --- a/common/src/main/resources/assets/eternal_starlight/lang/en_us.json +++ b/common/src/main/resources/assets/eternal_starlight/lang/en_us.json @@ -368,6 +368,7 @@ "block.eternal_starlight.oxidized_chiseled_golem_steel_block": "Oxidized Chiseled Golem Steel Block", "block.eternal_starlight.golem_steel_jet": "Golem Steel Jet", "block.eternal_starlight.oxidized_golem_steel_jet": "Oxidized Golem Steel Jet", + "block.eternal_starlight.golem_steel_crate": "Golem Steel Crate", "block.eternal_starlight.shadegrieve": "Shadegrieve", "block.eternal_starlight.blooming_shadegrieve": "Blooming Shadegrieve", "block.eternal_starlight.lunar_vine": "Lunar Vine", @@ -839,7 +840,7 @@ "entity.eternal_starlight.tangled_skull": "Tangled Skull", "entity.eternal_starlight.tangled_hatred": "Tangled Hatred", "entity.eternal_starlight.tangled_hatred_part": "Tangled Hatred", - "entity.eternal_starlight.shattered_sword_blade": "Shattered Sword Blade", + "entity.eternal_starlight.shattered_blade": "Shattered Blade", "entity.eternal_starlight.amaramber_arrow": "Amaramber Arrow", "entity.eternal_starlight.voracious_arrow": "Voracious Arrow", "entity.eternal_starlight.sonar_bomb": "Sonar Bomb", @@ -978,6 +979,7 @@ "advancements.eternal_starlight.chain_tangled_skull_explosion.description": "Kill a Tangled Skull and use it's explosion to kill another", "advancements.eternal_starlight.use_blossom_of_stars.title": "Swinging in the Boundless Milky Way", "advancements.eternal_starlight.use_blossom_of_stars.description": "To a thinker!", + "container.eternal_starlight.crate": "Crate", "container.eternal_starlight.stellar_rack": "Stellar Rack", "death.attack.eternal_starlight.ether": "%1$s drifts away", "death.attack.eternal_starlight.ether.player": "%1$s drifts away while trying to escape %2$s", diff --git a/common/src/main/resources/assets/eternal_starlight/lang/ja_jp.json b/common/src/main/resources/assets/eternal_starlight/lang/ja_jp.json index 58b62512..74ad316c 100644 --- a/common/src/main/resources/assets/eternal_starlight/lang/ja_jp.json +++ b/common/src/main/resources/assets/eternal_starlight/lang/ja_jp.json @@ -368,6 +368,7 @@ "block.eternal_starlight.oxidized_chiseled_golem_steel_block": "酸化した模様入りのゴーレム鋼ブロック", "block.eternal_starlight.golem_steel_jet": "ゴーレム鋼の噴射口", "block.eternal_starlight.oxidized_golem_steel_jet": "酸化したゴーレム鋼の噴射口", + "block.eternal_starlight.golem_steel_crate": "ゴーレム鋼クレート", "block.eternal_starlight.shadegrieve": "シェードグリーヴ", "block.eternal_starlight.blooming_shadegrieve": "開花したシェードグリーヴ", "block.eternal_starlight.lunar_vine": "月光のツタ", @@ -839,7 +840,7 @@ "entity.eternal_starlight.tangled_skull": "タングルドの頭蓋骨", "entity.eternal_starlight.tangled_hatred": "タングルドの怨念", "entity.eternal_starlight.tangled_hatred_part": "タングルドの怨念", - "entity.eternal_starlight.shattered_sword_blade": "破砕の剣の刃", + "entity.eternal_starlight.shattered_blade": "破砕の剣の刃", "entity.eternal_starlight.amaramber_arrow": "アマラ琥珀の矢", "entity.eternal_starlight.voracious_arrow": "飢餓の矢", "entity.eternal_starlight.sonar_bomb": "音響爆弾", @@ -978,6 +979,7 @@ "advancements.eternal_starlight.chain_tangled_skull_explosion.description": "タングルドの頭蓋骨を倒したときの爆発を利用して別の頭蓋骨を倒す", "advancements.eternal_starlight.use_blossom_of_stars.title": "果てなき銀河に浮かぶは…", "advancements.eternal_starlight.use_blossom_of_stars.description": "夢想家に捧ぐ", + "container.eternal_starlight.crate": "クレート", "container.eternal_starlight.stellar_rack": "星明りの書架", "death.attack.eternal_starlight.ether": "%1$sは漂流した", "death.attack.eternal_starlight.ether.player": "%1$sは%2$sから逃れようとして漂流した", diff --git a/common/src/main/resources/assets/eternal_starlight/lang/ru_ru.json b/common/src/main/resources/assets/eternal_starlight/lang/ru_ru.json index 694a7d26..728b7dda 100644 --- a/common/src/main/resources/assets/eternal_starlight/lang/ru_ru.json +++ b/common/src/main/resources/assets/eternal_starlight/lang/ru_ru.json @@ -368,6 +368,7 @@ "block.eternal_starlight.oxidized_chiseled_golem_steel_block": "Окисленный резной големостальной блок", "block.eternal_starlight.golem_steel_jet": "Големостальной массив", "block.eternal_starlight.oxidized_golem_steel_jet": "Окисленный големостальной массив", + "block.eternal_starlight.golem_steel_crate": "големостальной ящик", "block.eternal_starlight.shadegrieve": "Тенескорбь", "block.eternal_starlight.blooming_shadegrieve": "Цветущая тенескорбь", "block.eternal_starlight.lunar_vine": "Лунная лиана", @@ -839,7 +840,7 @@ "entity.eternal_starlight.tangled_skull": "Запутанный череп", "entity.eternal_starlight.tangled_hatred": "Запутанная ненависть", "entity.eternal_starlight.tangled_hatred_part": "Запутанная ненависть", - "entity.eternal_starlight.shattered_sword_blade": "Лезвие расколотого меча", + "entity.eternal_starlight.shattered_blade": "Лезвие расколотого меча", "entity.eternal_starlight.amaramber_arrow": "Горянтарная стрела", "entity.eternal_starlight.voracious_arrow": "Прожорливая стрела", "entity.eternal_starlight.sonar_bomb": "Гидроакустическая бомба", @@ -978,6 +979,7 @@ "advancements.eternal_starlight.chain_tangled_skull_explosion.description": "Убейте запутанного черепа и используйте его взрыв, чтобы убить другого", "advancements.eternal_starlight.use_blossom_of_stars.title": "Качаясь в бескрайнем Млечном Пути", "advancements.eternal_starlight.use_blossom_of_stars.description": "Для мыслителя!", + "container.eternal_starlight.crate": "ящик", "container.eternal_starlight.stellar_rack": "Звёздная стойка", "death.attack.eternal_starlight.ether": "%1$s уплывает прочь", "death.attack.eternal_starlight.ether.player": "%1$s уплывает прочь, спасаясь от %2$s", diff --git a/common/src/main/resources/assets/eternal_starlight/lang/zh_cn.json b/common/src/main/resources/assets/eternal_starlight/lang/zh_cn.json index 3f1c71ee..ea3924e7 100644 --- a/common/src/main/resources/assets/eternal_starlight/lang/zh_cn.json +++ b/common/src/main/resources/assets/eternal_starlight/lang/zh_cn.json @@ -368,6 +368,7 @@ "block.eternal_starlight.oxidized_chiseled_golem_steel_block": "氧化雕纹傀儡钢块", "block.eternal_starlight.golem_steel_jet": "傀儡钢喷气口", "block.eternal_starlight.oxidized_golem_steel_jet": "氧化傀儡钢喷气口", + "block.eternal_starlight.golem_steel_crate": "傀儡钢板条箱", "block.eternal_starlight.shadegrieve": "阴怨叶", "block.eternal_starlight.blooming_shadegrieve": "开花阴怨叶", "block.eternal_starlight.lunar_vine": "月藤", @@ -839,7 +840,7 @@ "entity.eternal_starlight.tangled_skull": "怨颅", "entity.eternal_starlight.tangled_hatred": "藤缠怨意", "entity.eternal_starlight.tangled_hatred_part": "藤缠怨意", - "entity.eternal_starlight.shattered_sword_blade": "破碎剑刃", + "entity.eternal_starlight.shattered_blade": "破碎剑刃", "entity.eternal_starlight.amaramber_arrow": "绯夜脂箭", "entity.eternal_starlight.voracious_arrow": "饥渴之箭", "entity.eternal_starlight.sonar_bomb": "声波炸弹", @@ -978,6 +979,7 @@ "advancements.eternal_starlight.chain_tangled_skull_explosion.description": "杀死一个怨颅并利用他的爆炸杀死另一个怨颅", "advancements.eternal_starlight.use_blossom_of_stars.title": "荡漾在无垠的星河", "advancements.eternal_starlight.use_blossom_of_stars.description": "献给一位梦想家!", + "container.eternal_starlight.crate": "板条箱", "container.eternal_starlight.stellar_rack": "置星架", "death.attack.eternal_starlight.ether": "%1$s飘然而去", "death.attack.eternal_starlight.ether.player": "%1$s在逃离%2$s时飘然而去", diff --git a/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate.json b/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate.json new file mode 100644 index 00000000..0e28d769 --- /dev/null +++ b/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate.json @@ -0,0 +1,1012 @@ +{ + "parent": "block/block", + "textures": { + "all": "eternal_starlight:block/golem_steel_crate", + "particle": "eternal_starlight:block/golem_steel_crate" + }, + "elements": [ + { + "from": [ + 1, + 1, + 1 + ], + "to": [ + 15, + 15, + 15 + ], + "faces": { + "north": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 3, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 16, + 3, + 13, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 0 + ], + "to": [ + 16, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 3, + 0, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 13 + ], + "to": [ + 3, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 16, + 16, + 13, + 13 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 13 + ], + "to": [ + 16, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 16, + 0, + 13 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 13, + 0 + ], + "to": [ + 13, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 3, + 13, + 0 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 0, + 0 + ], + "to": [ + 13, + 3, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 3, + 3, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 13, + 3 + ], + "to": [ + 3, + 16, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 3, + 0, + 13 + ], + "rotation": 90, + "texture": "#all" + }, + "south": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 3, + 3, + 13 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 90, + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 3 + ], + "to": [ + 3, + 3, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 16, + 3, + 13, + 13 + ], + "rotation": 90, + "texture": "#all" + }, + "south": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 270, + "texture": "#all" + }, + "down": { + "uv": [ + 16, + 13, + 13, + 3 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 13, + 13 + ], + "to": [ + 13, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 180, + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 0, + 13 + ], + "to": [ + 13, + 3, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 16, + 13, + 13 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 180, + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "rotation": 180, + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 13, + 3 + ], + "to": [ + 16, + 16, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 16, + 3, + 13, + 13 + ], + "rotation": 270, + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 3, + 16, + 13 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 270, + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 3 + ], + "to": [ + 16, + 3, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 3 + ], + "rotation": 90, + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 90, + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 13, + 0, + 3 + ], + "texture": "#all" + } + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate_open.json b/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate_open.json new file mode 100644 index 00000000..2654a58b --- /dev/null +++ b/common/src/main/resources/assets/eternal_starlight/models/block/golem_steel_crate_open.json @@ -0,0 +1,1013 @@ +{ + "parent": "block/block", + "textures": { + "all": "eternal_starlight:block/golem_steel_crate", + "open": "eternal_starlight:block/golem_steel_crate_open", + "particle": "eternal_starlight:block/golem_steel_crate" + }, + "elements": [ + { + "from": [ + 1, + 1, + 1 + ], + "to": [ + 15, + 15, + 15 + ], + "faces": { + "north": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 1, + 1, + 15, + 15 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 3, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 16, + 3, + 13, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 0 + ], + "to": [ + 16, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 3, + 3, + 0, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 13 + ], + "to": [ + 3, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 16, + 16, + 13, + 13 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 13 + ], + "to": [ + 16, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 0, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 0, + 0, + 3, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 16, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 16, + 0, + 13, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 3, + 16, + 0, + 13 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 13, + 0 + ], + "to": [ + 13, + 16, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 3, + 13, + 0 + ], + "texture": "#open" + }, + "west": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 0, + 0 + ], + "to": [ + 13, + 3, + 3 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "down": { + "uv": [ + 13, + 3, + 3, + 0 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 13, + 3 + ], + "to": [ + 3, + 16, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 3, + 0, + 13 + ], + "rotation": 90, + "texture": "#open" + }, + "south": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 0, + 3, + 3, + 13 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 90, + "texture": "#all" + } + } + }, + { + "from": [ + 0, + 0, + 3 + ], + "to": [ + 3, + 3, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 16, + 3, + 13, + 13 + ], + "rotation": 90, + "texture": "#all" + }, + "south": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 270, + "texture": "#all" + }, + "down": { + "uv": [ + 16, + 13, + 13, + 3 + ], + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 13, + 13 + ], + "to": [ + 13, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "texture": "#open" + }, + "east": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 180, + "texture": "#all" + } + } + }, + { + "from": [ + 3, + 0, + 13 + ], + "to": [ + 13, + 3, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 16, + 13, + 13 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 180, + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "rotation": 180, + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 13, + 3 + ], + "to": [ + 16, + 16, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 3, + 3 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 0, + 13, + 3 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 0, + 16, + 3 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 16, + 3, + 13, + 13 + ], + "rotation": 270, + "texture": "#open" + }, + "up": { + "uv": [ + 13, + 3, + 16, + 13 + ], + "texture": "#open" + }, + "down": { + "uv": [ + 13, + 0, + 3, + 3 + ], + "rotation": 270, + "texture": "#all" + } + } + }, + { + "from": [ + 13, + 0, + 3 + ], + "to": [ + 16, + 3, + 13 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 13, + 3, + 16 + ], + "texture": "#all" + }, + "east": { + "uv": [ + 3, + 13, + 13, + 16 + ], + "texture": "#all" + }, + "south": { + "uv": [ + 13, + 13, + 16, + 16 + ], + "texture": "#all" + }, + "west": { + "uv": [ + 0, + 13, + 3, + 3 + ], + "rotation": 90, + "texture": "#all" + }, + "up": { + "uv": [ + 13, + 13, + 3, + 16 + ], + "rotation": 90, + "texture": "#all" + }, + "down": { + "uv": [ + 3, + 13, + 0, + 3 + ], + "texture": "#all" + } + } + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate.png b/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate.png new file mode 100644 index 00000000..7357bef3 Binary files /dev/null and b/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate.png differ diff --git a/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate_open.png b/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate_open.png new file mode 100644 index 00000000..6b36fbc7 Binary files /dev/null and b/common/src/main/resources/assets/eternal_starlight/textures/block/golem_steel_crate_open.png differ diff --git a/common/src/main/resources/data/eternal_starlight/structure/golem_forge/battle_room.nbt b/common/src/main/resources/data/eternal_starlight/structure/golem_forge/battle_room.nbt index 367bd6ff..a4216ef9 100644 Binary files a/common/src/main/resources/data/eternal_starlight/structure/golem_forge/battle_room.nbt and b/common/src/main/resources/data/eternal_starlight/structure/golem_forge/battle_room.nbt differ diff --git a/common/src/main/resources/data/eternal_starlight/structure/golem_forge/lava_storage.nbt b/common/src/main/resources/data/eternal_starlight/structure/golem_forge/lava_storage.nbt index 448fc7c4..643a36d0 100644 Binary files a/common/src/main/resources/data/eternal_starlight/structure/golem_forge/lava_storage.nbt and b/common/src/main/resources/data/eternal_starlight/structure/golem_forge/lava_storage.nbt differ diff --git a/common/src/main/resources/eternal_starlight.accesswidener b/common/src/main/resources/eternal_starlight.accesswidener index ce175b24..92c8e564 100644 --- a/common/src/main/resources/eternal_starlight.accesswidener +++ b/common/src/main/resources/eternal_starlight.accesswidener @@ -42,6 +42,9 @@ accessible method net/minecraft/world/level/block/state/properties/WoodType regi accessible method net/minecraft/client/renderer/Sheets createSignMaterial (Lnet/minecraft/world/level/block/state/properties/WoodType;)Lnet/minecraft/client/resources/model/Material; accessible class net/minecraft/client/particle/ParticleEngine$SpriteParticleRegistration accessible class net/minecraft/client/renderer/RenderStateShard$ShaderStateShard +accessible method net/minecraft/world/inventory/MenuType (Lnet/minecraft/world/inventory/MenuType$MenuSupplier;Lnet/minecraft/world/flag/FeatureFlagSet;)V +accessible class net/minecraft/world/inventory/MenuType$MenuSupplier +accessible class net/minecraft/client/gui/screens/MenuScreens$ScreenConstructor # blocks accessible method net/minecraft/world/level/block/GrowingPlantBlock canAttachTo (Lnet/minecraft/world/level/block/state/BlockState;)Z diff --git a/fabric/src/main/java/cn/leolezury/eternalstarlight/fabric/client/ESFabricClientEntrypoint.java b/fabric/src/main/java/cn/leolezury/eternalstarlight/fabric/client/ESFabricClientEntrypoint.java index 4264e269..b08d8079 100644 --- a/fabric/src/main/java/cn/leolezury/eternalstarlight/fabric/client/ESFabricClientEntrypoint.java +++ b/fabric/src/main/java/cn/leolezury/eternalstarlight/fabric/client/ESFabricClientEntrypoint.java @@ -23,6 +23,7 @@ import net.fabricmc.fabric.api.client.rendering.v1.*; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.particle.ParticleEngine; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.particles.ParticleOptions; @@ -54,6 +55,7 @@ public void register(ParticleType particle, Parti ClientSetupHandlers.registerEntityRenderers(EntityRendererRegistry::register); ClientSetupHandlers.registerLayers((layerLocation, supplier) -> EntityModelLayerRegistry.registerModelLayer(layerLocation, supplier::get)); + ClientSetupHandlers.registerMenuScreens(MenuScreens::register); WorldRenderEvents.AFTER_ENTITIES.register(context -> ClientHandlers.onAfterRenderEntities(context.consumers(), context.matrixStack(), context.tickCounter().getGameTimeDeltaPartialTick(Minecraft.getInstance().level != null && Minecraft.getInstance().level.tickRateManager().runsNormally()))); for (Supplier blockSupplier : ClientSetupHandlers.BLOCKS_CUTOUT_MIPPED) { diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/client/event/ClientSetupEvents.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/client/event/ClientSetupEvents.java index b99e106d..097ab499 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/client/event/ClientSetupEvents.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/client/event/ClientSetupEvents.java @@ -164,6 +164,11 @@ private static void onRegisterLayers(EntityRenderersEvent.RegisterLayerDefinitio ClientSetupHandlers.registerLayers(event::registerLayerDefinition); } + @SubscribeEvent + private static void onRegisterMenuScreens(RegisterMenuScreensEvent event) { + ClientSetupHandlers.registerMenuScreens(event::register); + } + @SubscribeEvent private static void onRegisterShader(RegisterShadersEvent event) { ClientSetupHandlers.registerShaders((location, format, loaded) -> { diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/ESRecipeProvider.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/ESRecipeProvider.java index 5878beb4..a4df0b69 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/ESRecipeProvider.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/ESRecipeProvider.java @@ -858,6 +858,15 @@ private void addStoneRecipes(RecipeOutput recipeOutput) { .define('#', ESItems.OXIDIZED_GOLEM_STEEL_INGOT.get()) .unlockedBy("has_item", has(ESItems.OXIDIZED_GOLEM_STEEL_INGOT.get())) .save(recipeOutput); + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, ESBlocks.GOLEM_STEEL_CRATE.get()) + .pattern("SGS") + .pattern("SCS") + .pattern("SGS") + .define('G', ESItems.OXIDIZED_GOLEM_STEEL_INGOT.get()) + .define('S', ESItems.SWAMP_SILVER_INGOT.get()) + .define('C', Items.CHEST) + .unlockedBy("has_item", has(ESItems.OXIDIZED_GOLEM_STEEL_INGOT.get())) + .save(recipeOutput); nineBlockStorageCustomUnpacking(recipeOutput, RecipeCategory.MISC, ESItems.TENACIOUS_PETAL.get(), RecipeCategory.BUILDING_BLOCKS, ESItems.LUNAR_MOSAIC.get(), "tenacious_petal_from_lunar_mosaic", "tenacious_petal"); addStairs(recipeOutput, ESBlocks.LUNAR_MOSAIC_STAIRS.get(), ESBlocks.LUNAR_MOSAIC.get()); @@ -874,16 +883,16 @@ private void addAlchemistArmorRecipes(RecipeOutput recipeOutput) { .pattern("###") .pattern("S S") .define('#', Items.LEATHER) - .define('S', ESItems.THIOQUARTZ_SHARD.get()) - .unlockedBy("has_item", has(ESItems.THIOQUARTZ_SHARD.get())) + .define('S', ESConventionalTags.Items.GEMS_THIOQUARTZ) + .unlockedBy("has_item", has(ESConventionalTags.Items.GEMS_THIOQUARTZ)) .save(recipeOutput); ShapedRecipeBuilder.shaped(RecipeCategory.COMBAT, ESItems.ALCHEMIST_ROBE.get()) .pattern("S S") .pattern("#S#") .pattern("#S#") .define('#', Items.LEATHER) - .define('S', ESItems.THIOQUARTZ_SHARD.get()) - .unlockedBy("has_item", has(ESItems.THIOQUARTZ_SHARD.get())) + .define('S', ESConventionalTags.Items.GEMS_THIOQUARTZ) + .unlockedBy("has_item", has(ESConventionalTags.Items.GEMS_THIOQUARTZ)) .save(recipeOutput); } @@ -1040,18 +1049,18 @@ private void addAtalphaiteRecipes(RecipeOutput recipeOutput) { .pattern("TAT") .pattern("ABA") .pattern("TAT") - .define('B', ESItems.ATALPHAITE_BLOCK.get()) + .define('B', ESConventionalTags.Items.STORAGE_BLOCKS_ATALPHAITE) .define('A', ESConventionalTags.Items.GEMS_ATALPHAITE) .define('T', ESConventionalTags.Items.INGOTS_THERMAL_SPRINGSTONE) - .unlockedBy("has_item", has(ESItems.ATALPHAITE_BLOCK.get())) + .unlockedBy("has_item", has(ESConventionalTags.Items.STORAGE_BLOCKS_ATALPHAITE)) .save(recipeOutput); ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, ESItems.ATALPHAITE_LIGHT.get()) .pattern(" G ") .pattern("GBG") .pattern(" G ") - .define('B', ESItems.ATALPHAITE_BLOCK.get()) + .define('B', ESConventionalTags.Items.STORAGE_BLOCKS_ATALPHAITE) .define('G', ESItems.DUSK_GLASS.get()) - .unlockedBy("has_item", has(ESItems.ATALPHAITE_BLOCK.get())) + .unlockedBy("has_item", has(ESConventionalTags.Items.STORAGE_BLOCKS_ATALPHAITE)) .save(recipeOutput); } diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/loot/ESBlockLootSubProvider.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/loot/ESBlockLootSubProvider.java index 87c9b12b..5cf5ee6b 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/loot/ESBlockLootSubProvider.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/loot/ESBlockLootSubProvider.java @@ -61,16 +61,16 @@ protected void generate() { add(ESBlocks.ORBFLORA_PLANT.get(), noDrop()); dropSelf(ESBlocks.ORBFLORA_LIGHT.get()); - add(ESBlocks.RED_STARLIGHT_CRYSTAL_CLUSTER.get(), (block) -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); - add(ESBlocks.BLUE_STARLIGHT_CRYSTAL_CLUSTER.get(), (block) -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); - add(ESBlocks.BLOOMING_RED_STARLIGHT_CRYSTAL_CLUSTER.get(), (block) -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); - add(ESBlocks.BLOOMING_BLUE_STARLIGHT_CRYSTAL_CLUSTER.get(), (block) -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); + add(ESBlocks.RED_STARLIGHT_CRYSTAL_CLUSTER.get(), block -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); + add(ESBlocks.BLUE_STARLIGHT_CRYSTAL_CLUSTER.get(), block -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); + add(ESBlocks.BLOOMING_RED_STARLIGHT_CRYSTAL_CLUSTER.get(), block -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.RED_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); + add(ESBlocks.BLOOMING_BLUE_STARLIGHT_CRYSTAL_CLUSTER.get(), block -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.BLUE_STARLIGHT_CRYSTAL_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); dropSelf(ESBlocks.RED_CRYSTALFLEUR.get()); dropPottedContents(ESBlocks.POTTED_RED_CRYSTALFLEUR.get()); dropSelf(ESBlocks.BLUE_CRYSTALFLEUR.get()); dropPottedContents(ESBlocks.POTTED_BLUE_CRYSTALFLEUR.get()); - add(ESBlocks.RED_CRYSTALFLEUR_VINE.get(), (block) -> this.createMultifaceBlockDrops(block, HAS_SHEARS_OR_SICKLE)); - add(ESBlocks.BLUE_CRYSTALFLEUR_VINE.get(), (block) -> this.createMultifaceBlockDrops(block, HAS_SHEARS_OR_SICKLE)); + add(ESBlocks.RED_CRYSTALFLEUR_VINE.get(), block -> this.createMultifaceBlockDrops(block, HAS_SHEARS_OR_SICKLE)); + add(ESBlocks.BLUE_CRYSTALFLEUR_VINE.get(), block -> this.createMultifaceBlockDrops(block, HAS_SHEARS_OR_SICKLE)); dropSelf(ESBlocks.RED_STARLIGHT_CRYSTAL_BLOCK.get()); dropSelf(ESBlocks.BLUE_STARLIGHT_CRYSTAL_BLOCK.get()); @@ -87,7 +87,7 @@ protected void generate() { dropWhenSilkTouch(ESBlocks.TENTACLES_CORAL_FAN.get()); otherWhenSilkTouch(ESBlocks.TENTACLES_CORAL_WALL_FAN.get(), ESBlocks.TENTACLES_CORAL_FAN.get()); dropSelf(ESBlocks.DEAD_TENTACLES_CORAL_BLOCK.get()); - add(ESBlocks.TENTACLES_CORAL_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_TENTACLES_CORAL_BLOCK.get())); + add(ESBlocks.TENTACLES_CORAL_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_TENTACLES_CORAL_BLOCK.get())); dropWhenSilkTouch(ESBlocks.DEAD_GOLDEN_CORAL.get()); dropWhenSilkTouch(ESBlocks.GOLDEN_CORAL.get()); @@ -96,7 +96,7 @@ protected void generate() { dropWhenSilkTouch(ESBlocks.GOLDEN_CORAL_FAN.get()); otherWhenSilkTouch(ESBlocks.GOLDEN_CORAL_WALL_FAN.get(), ESBlocks.GOLDEN_CORAL_FAN.get()); dropSelf(ESBlocks.DEAD_GOLDEN_CORAL_BLOCK.get()); - add(ESBlocks.GOLDEN_CORAL_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_GOLDEN_CORAL_BLOCK.get())); + add(ESBlocks.GOLDEN_CORAL_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_GOLDEN_CORAL_BLOCK.get())); dropWhenSilkTouch(ESBlocks.DEAD_CRYSTALLUM_CORAL.get()); dropWhenSilkTouch(ESBlocks.CRYSTALLUM_CORAL.get()); @@ -105,9 +105,9 @@ protected void generate() { dropWhenSilkTouch(ESBlocks.CRYSTALLUM_CORAL_FAN.get()); otherWhenSilkTouch(ESBlocks.CRYSTALLUM_CORAL_WALL_FAN.get(), ESBlocks.CRYSTALLUM_CORAL_FAN.get()); dropSelf(ESBlocks.DEAD_CRYSTALLUM_CORAL_BLOCK.get()); - add(ESBlocks.CRYSTALLUM_CORAL_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_CRYSTALLUM_CORAL_BLOCK.get())); + add(ESBlocks.CRYSTALLUM_CORAL_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.DEAD_CRYSTALLUM_CORAL_BLOCK.get())); - add(ESBlocks.VELVETUMOSS.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.VELVETUMOSS_BALL.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 8.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.VELVETUMOSS.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.VELVETUMOSS_BALL.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 8.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); dropWhenSilkTouch(ESBlocks.VELVETUMOSS_VILLI.get()); dropSelf(ESBlocks.RED_VELVETUMOSS.get()); @@ -115,7 +115,7 @@ protected void generate() { dropSelf(ESBlocks.RED_VELVETUMOSS_FLOWER.get()); dropPottedContents(ESBlocks.POTTED_RED_VELVETUMOSS_FLOWER.get()); - add(ESBlocks.LUNAR_LEAVES.get(), (block) -> this.createLunarLeavesDrops(block, ESBlocks.LUNAR_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); + add(ESBlocks.LUNAR_LEAVES.get(), block -> this.createLunarLeavesDrops(block, ESBlocks.LUNAR_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); dropSelf(ESBlocks.LUNAR_LOG.get()); dropSelf(ESBlocks.LUNAR_WOOD.get()); dropSelf(ESBlocks.LUNAR_PLANKS.get()); @@ -140,7 +140,7 @@ protected void generate() { dropSelf(ESBlocks.RED_CRYSTALLIZED_LUNAR_LOG.get()); dropSelf(ESBlocks.BLUE_CRYSTALLIZED_LUNAR_LOG.get()); - add(ESBlocks.NORTHLAND_LEAVES.get(), (block) -> this.createLeavesDrops(block, ESBlocks.NORTHLAND_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); + add(ESBlocks.NORTHLAND_LEAVES.get(), block -> this.createLeavesDrops(block, ESBlocks.NORTHLAND_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); dropSelf(ESBlocks.NORTHLAND_LOG.get()); dropSelf(ESBlocks.NORTHLAND_WOOD.get()); dropSelf(ESBlocks.NORTHLAND_PLANKS.get()); @@ -161,7 +161,7 @@ protected void generate() { dropSelf(ESBlocks.NORTHLAND_SAPLING.get()); dropPottedContents(ESBlocks.POTTED_NORTHLAND_SAPLING.get()); - add(ESBlocks.STARLIGHT_MANGROVE_LEAVES.get(), (block) -> this.createLeavesDrops(block, ESBlocks.STARLIGHT_MANGROVE_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); + add(ESBlocks.STARLIGHT_MANGROVE_LEAVES.get(), block -> this.createLeavesDrops(block, ESBlocks.STARLIGHT_MANGROVE_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); dropSelf(ESBlocks.STARLIGHT_MANGROVE_LOG.get()); dropSelf(ESBlocks.STARLIGHT_MANGROVE_WOOD.get()); dropSelf(ESBlocks.STARLIGHT_MANGROVE_PLANKS.get()); @@ -184,7 +184,7 @@ protected void generate() { dropSelf(ESBlocks.STARLIGHT_MANGROVE_ROOTS.get()); dropSelf(ESBlocks.MUDDY_STARLIGHT_MANGROVE_ROOTS.get()); - add(ESBlocks.SCARLET_LEAVES.get(), (block) -> this.createLeavesDrops(block, ESBlocks.SCARLET_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); + add(ESBlocks.SCARLET_LEAVES.get(), block -> this.createLeavesDrops(block, ESBlocks.SCARLET_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); add(ESBlocks.SCARLET_LEAVES_PILE.get(), noDrop()); dropSelf(ESBlocks.SCARLET_LOG.get()); dropSelf(ESBlocks.SCARLET_WOOD.get()); @@ -206,7 +206,7 @@ protected void generate() { dropSelf(ESBlocks.SCARLET_SAPLING.get()); dropPottedContents(ESBlocks.POTTED_SCARLET_SAPLING.get()); - add(ESBlocks.TORREYA_LEAVES.get(), (block) -> this.createLeavesDrops(block, ESBlocks.TORREYA_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); + add(ESBlocks.TORREYA_LEAVES.get(), block -> this.createLeavesDrops(block, ESBlocks.TORREYA_SAPLING.get(), NORMAL_LEAVES_SAPLING_CHANCES)); dropSelf(ESBlocks.TORREYA_LOG.get()); dropSelf(ESBlocks.TORREYA_WOOD.get()); dropSelf(ESBlocks.TORREYA_PLANKS.get()); @@ -228,9 +228,9 @@ protected void generate() { dropPottedContents(ESBlocks.POTTED_TORREYA_SAPLING.get()); dropSelf(ESBlocks.TORREYA_VINES.get()); dropOther(ESBlocks.TORREYA_VINES_PLANT.get(), ESBlocks.TORREYA_VINES.get()); - add(ESBlocks.TORREYA_CAMPFIRE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.RAW_AMARAMBER.get())))); + add(ESBlocks.TORREYA_CAMPFIRE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.RAW_AMARAMBER.get())))); - add(ESBlocks.GRIMSTONE.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.COBBLED_GRIMSTONE.get())); + add(ESBlocks.GRIMSTONE.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.COBBLED_GRIMSTONE.get())); dropSelf(ESBlocks.COBBLED_GRIMSTONE.get()); add(ESBlocks.COBBLED_GRIMSTONE_SLAB.get(), this::createSlabItemTable); dropSelf(ESBlocks.COBBLED_GRIMSTONE_STAIRS.get()); @@ -250,7 +250,7 @@ protected void generate() { dropSelf(ESBlocks.CHISELED_GRIMSTONE.get()); dropSelf(ESBlocks.GLOWING_GRIMSTONE.get()); - add(ESBlocks.VOIDSTONE.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.COBBLED_VOIDSTONE.get())); + add(ESBlocks.VOIDSTONE.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.COBBLED_VOIDSTONE.get())); dropSelf(ESBlocks.COBBLED_VOIDSTONE.get()); add(ESBlocks.COBBLED_VOIDSTONE_SLAB.get(), this::createSlabItemTable); dropSelf(ESBlocks.COBBLED_VOIDSTONE_STAIRS.get()); @@ -293,10 +293,10 @@ protected void generate() { dropSelf(ESBlocks.ATALPHAITE_BLOCK.get()); dropSelf(ESBlocks.BLAZING_ATALPHAITE_BLOCK.get()); dropSelf(ESBlocks.ATALPHAITE_LIGHT.get()); - add(ESBlocks.GRIMSTONE_ATALPHAITE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.VOIDSTONE_ATALPHAITE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.ETERNAL_ICE_ATALPHAITE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.HAZE_ICE_ATALPHAITE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.GRIMSTONE_ATALPHAITE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.VOIDSTONE_ATALPHAITE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.ETERNAL_ICE_ATALPHAITE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.HAZE_ICE_ATALPHAITE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.ATALPHAITE.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); dropWhenSilkTouch(ESBlocks.DUSK_GLASS.get()); dropWhenSilkTouch(ESBlocks.DUSK_LIGHT.get()); add(ESBlocks.ECLIPSE_CORE.get(), noDrop()); @@ -386,7 +386,7 @@ protected void generate() { dropSelf(ESBlocks.THIOQUARTZ_BLOCK.get()); add(ESBlocks.BUDDING_THIOQUARTZ.get(), noDrop()); - add(ESBlocks.THIOQUARTZ_CLUSTER.get(), (block) -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.THIOQUARTZ_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.THIOQUARTZ_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); + add(ESBlocks.THIOQUARTZ_CLUSTER.get(), block -> createSilkTouchDispatchTable(block, LootItem.lootTableItem(ESItems.THIOQUARTZ_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(4.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE))).when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(ItemTags.CLUSTER_MAX_HARVESTABLES))).otherwise(this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.THIOQUARTZ_SHARD.get()).apply(SetItemCountFunction.setCount(ConstantValue.exactly(2.0F))))))); dropSelf(ESBlocks.TOXITE.get()); add(ESBlocks.TOXITE_SLAB.get(), this::createSlabItemTable); dropSelf(ESBlocks.TOXITE_STAIRS.get()); @@ -415,15 +415,13 @@ protected void generate() { dropSelf(ESBlocks.CUT_TWILIGHT_SANDSTONE_WALL.get()); dropSelf(ESBlocks.CHISELED_TWILIGHT_SANDSTONE.get()); - add(ESBlocks.DUSTED_GRAVEL.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.DUSTED_SHARD.get()).when(BonusLevelTableCondition.bonusLevelFlatChance(enchantments.getOrThrow(Enchantments.FORTUNE), 0.1F, 0.14285715F, 0.25F, 1.0F)).otherwise(LootItem.lootTableItem(block))))); + add(ESBlocks.DUSTED_GRAVEL.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionCondition(block, LootItem.lootTableItem(ESItems.DUSTED_SHARD.get()).when(BonusLevelTableCondition.bonusLevelFlatChance(enchantments.getOrThrow(Enchantments.FORTUNE), 0.1F, 0.14285715F, 0.25F, 1.0F)).otherwise(LootItem.lootTableItem(block))))); dropSelf(ESBlocks.DUSTED_BRICKS.get()); add(ESBlocks.DUSTED_BRICK_SLAB.get(), this::createSlabItemTable); dropSelf(ESBlocks.DUSTED_BRICK_STAIRS.get()); dropSelf(ESBlocks.DUSTED_BRICK_WALL.get()); dropSelf(ESBlocks.GOLEM_STEEL_BLOCK.get()); - dropSelf(ESBlocks.GOLEM_STEEL_JET.get()); - dropSelf(ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get()); dropSelf(ESBlocks.OXIDIZED_GOLEM_STEEL_BLOCK.get()); add(ESBlocks.GOLEM_STEEL_SLAB.get(), this::createSlabItemTable); add(ESBlocks.OXIDIZED_GOLEM_STEEL_SLAB.get(), this::createSlabItemTable); @@ -443,6 +441,9 @@ protected void generate() { dropSelf(ESBlocks.OXIDIZED_GOLEM_STEEL_BARS.get()); dropSelf(ESBlocks.CHISELED_GOLEM_STEEL_BLOCK.get()); dropSelf(ESBlocks.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get()); + dropSelf(ESBlocks.GOLEM_STEEL_JET.get()); + dropSelf(ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get()); + add(ESBlocks.GOLEM_STEEL_CRATE.get(), this::createShulkerBoxDrop); dropSelf(ESBlocks.SHADEGRIEVE.get()); dropSelf(ESBlocks.BLOOMING_SHADEGRIEVE.get()); @@ -577,11 +578,11 @@ protected void generate() { plant(ESBlocks.GOLDEN_GRASS.get()); add(ESBlocks.TALL_GOLDEN_GRASS.get(), this::createDoublePlantDrops); - add(ESBlocks.NIGHTFALL_GRASS_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); - add(ESBlocks.NIGHTFALL_PODZOL.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); - add(ESBlocks.TENACIOUS_NIGHTFALL_GRASS_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); - add(ESBlocks.GOLDEN_GRASS_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); - add(ESBlocks.FANTASY_GRASS_BLOCK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_MUD.get())); + add(ESBlocks.NIGHTFALL_GRASS_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); + add(ESBlocks.NIGHTFALL_PODZOL.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); + add(ESBlocks.TENACIOUS_NIGHTFALL_GRASS_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); + add(ESBlocks.GOLDEN_GRASS_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_DIRT.get())); + add(ESBlocks.FANTASY_GRASS_BLOCK.get(), block -> this.createSingleItemTableWithSilkTouch(block, ESBlocks.NIGHTFALL_MUD.get())); dropSelf(ESBlocks.FANTASY_GRASS_CARPET.get()); dropSelf(ESBlocks.NIGHTFALL_DIRT.get()); dropOther(ESBlocks.NIGHTFALL_FARMLAND.get(), ESBlocks.NIGHTFALL_DIRT.get()); @@ -647,17 +648,17 @@ protected void generate() { add(ESBlocks.THERMAL_SPRINGSTONE_BRICK_SLAB.get(), this::createSlabItemTable); dropSelf(ESBlocks.THERMAL_SPRINGSTONE_BRICK_STAIRS.get()); dropSelf(ESBlocks.THERMAL_SPRINGSTONE_BRICK_WALL.get()); - add(ESBlocks.GLACITE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.GLACITE_SHARD.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.SWAMP_SILVER_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SWAMP_SILVER_NUGGET.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.GLACITE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.GLACITE_SHARD.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.SWAMP_SILVER_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SWAMP_SILVER_NUGGET.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); dropSelf(ESBlocks.SWAMP_SILVER_BLOCK.get()); - add(ESBlocks.GRIMSTONE_REDSTONE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.VOIDSTONE_REDSTONE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.ETERNAL_ICE_REDSTONE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.HAZE_ICE_REDSTONE_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.GRIMSTONE_SALTPETER_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.VOIDSTONE_SALTPETER_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.ETERNAL_ICE_SALTPETER_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); - add(ESBlocks.HAZE_ICE_SALTPETER_ORE.get(), (block) -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.GRIMSTONE_REDSTONE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.VOIDSTONE_REDSTONE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.ETERNAL_ICE_REDSTONE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.HAZE_ICE_REDSTONE_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(Items.REDSTONE).apply(SetItemCountFunction.setCount(UniformGenerator.between(2.0F, 6.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.GRIMSTONE_SALTPETER_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.VOIDSTONE_SALTPETER_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.ETERNAL_ICE_SALTPETER_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); + add(ESBlocks.HAZE_ICE_SALTPETER_ORE.get(), block -> createSilkTouchDispatchTable(block, this.applyExplosionDecay(block, LootItem.lootTableItem(ESItems.SALTPETER_POWDER.get()).apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 2.0F))).apply(ApplyBonusCount.addOreBonusCount(enchantments.getOrThrow(Enchantments.FORTUNE)))))); dropSelf(ESBlocks.SALTPETER_BLOCK.get()); dropSelf(ESBlocks.AMARAMBER_LANTERN.get()); diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESBlockStateProvider.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESBlockStateProvider.java index 0d8ea863..ad5b2712 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESBlockStateProvider.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESBlockStateProvider.java @@ -250,6 +250,7 @@ protected void registerStatesAndModels() { simpleBlock(ESBlocks.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get()); simpleBlock(ESBlocks.GOLEM_STEEL_JET.get()); simpleBlock(ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get()); + directionalOnOffBlock(ESBlocks.GOLEM_STEEL_CRATE.get(), CrateBlock.OPEN, models().getExistingFile(modLoc("golem_steel_crate_open")), models().getExistingFile(modLoc("golem_steel_crate"))); shadegrieve(ESBlocks.SHADEGRIEVE.get()); shadegrieve(ESBlocks.BLOOMING_SHADEGRIEVE.get()); @@ -1047,6 +1048,14 @@ private void onOffBlock(Block block, BooleanProperty property, ModelFile on, Mod .modelForState().modelFile(on).addModel(); } + private void directionalOnOffBlock(Block block, BooleanProperty property, ModelFile on, ModelFile off) { + getVariantBuilder(block).forAllStates(state -> { + Direction direction = state.getValue(BlockStateProperties.FACING); + int rotX = direction == Direction.DOWN ? 180 : direction == Direction.UP ? 0 : 90; + return ConfiguredModel.builder().modelFile(state.getValue(property) ? on : off).rotationX(rotX).rotationY(((int) direction.toYRot() + 180) % 360).build(); + }); + } + private void simpleSign(Block normal, Block wall, ResourceLocation location) { particleOnly(normal, location); particleOnly(wall, location); diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESItemModelProvider.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESItemModelProvider.java index 4d7681d0..de92e904 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESItemModelProvider.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/model/ESItemModelProvider.java @@ -423,6 +423,7 @@ protected void registerModels() { block(ESItems.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get()); block(ESItems.GOLEM_STEEL_JET.get()); block(ESItems.OXIDIZED_GOLEM_STEEL_JET.get()); + block(ESItems.GOLEM_STEEL_CRATE.get()); block(ESItems.SHADEGRIEVE.get()); block(ESItems.BLOOMING_SHADEGRIEVE.get()); diff --git a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/tags/ESBlockTagsProvider.java b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/tags/ESBlockTagsProvider.java index f16b7bed..51dcf16f 100644 --- a/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/tags/ESBlockTagsProvider.java +++ b/neoforge/src/main/java/cn/leolezury/eternalstarlight/neoforge/datagen/provider/tags/ESBlockTagsProvider.java @@ -1025,6 +1025,7 @@ protected void addTags(HolderLookup.Provider lookupProvider) { ESBlocks.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get(), ESBlocks.GOLEM_STEEL_JET.get(), ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get(), + ESBlocks.GOLEM_STEEL_CRATE.get(), ESBlocks.LUNAR_MOSAIC.get(), ESBlocks.LUNAR_MOSAIC_SLAB.get(), ESBlocks.LUNAR_MOSAIC_STAIRS.get(), @@ -1132,6 +1133,7 @@ protected void addTags(HolderLookup.Provider lookupProvider) { ESBlocks.OXIDIZED_CHISELED_GOLEM_STEEL_BLOCK.get(), ESBlocks.GOLEM_STEEL_JET.get(), ESBlocks.OXIDIZED_GOLEM_STEEL_JET.get(), + ESBlocks.GOLEM_STEEL_CRATE.get(), ESBlocks.LUNAR_MOSAIC.get(), ESBlocks.LUNAR_MOSAIC_SLAB.get(), ESBlocks.LUNAR_MOSAIC_STAIRS.get(), @@ -1139,6 +1141,13 @@ protected void addTags(HolderLookup.Provider lookupProvider) { ESBlocks.LUNAR_MOSAIC_FENCE_GATE.get(), ESBlocks.LUNAR_MAT.get() ); + tag(BlockTags.FEATURES_CANNOT_REPLACE).add( + ESBlocks.THE_GATEKEEPER_SPAWNER.get(), + ESBlocks.STARLIGHT_GOLEM_SPAWNER.get(), + ESBlocks.LUNAR_MONSTROSITY_SPAWNER.get(), + ESBlocks.GOLEM_STEEL_CRATE.get(), + ESBlocks.ENERGY_BLOCK.get() + ); tag(BlockTags.CANDLES).add( ESBlocks.AMARAMBER_CANDLE.get() ); @@ -1157,6 +1166,9 @@ protected void addTags(HolderLookup.Provider lookupProvider) { ESBlocks.MOONLIGHT_LILY_PAD.get(), ESBlocks.STARLIT_LILY_PAD.get() ); + tag(BlockTags.GUARDED_BY_PIGLINS).add( + ESBlocks.GOLEM_STEEL_CRATE.get() + ); tag(BlockTags.CAMPFIRES).add( ESBlocks.TORREYA_CAMPFIRE.get() );