版本:1.18.2-1.5.1-beta

* 重绘了数字方块的材质(小喵绘制,本来是有阴影的,但是因为颜色层可能不兼容就去掉了阴影)
* 数字方块的数字部分可以染色(不消耗染料),但是直接破坏会恢复为默认色(红色)
* 变更了数字方块的Null块的合成(现在为8个石英加个红石)
This commit is contained in:
叁玖领域 2025-05-03 20:14:08 +08:00
parent 4af1f2ef00
commit 27649bab37
74 changed files with 608 additions and 131 deletions

View File

@ -6,4 +6,4 @@ org.gradle.daemon=false
mod.id = modernlifepatch
mod.group = com.r3944realms.modernlifepatch
mod.author = r3944Realms
mod.version = 1.18.2-1.5.0-beta
mod.version = 1.18.2-1.5.1-beta

View File

@ -27,44 +27,44 @@ d5b9c1362a5b10137f0a8b20b4b5774cc2912429 assets/modernlifepatch/blockstates/two_
b9ecfdaadc1a9dd536d7124b65d6054d2d6a2ff5 assets/modernlifepatch/blockstates/white_concrete_barrier.json
a65db9338552468602ea4ed3707f569d88e98ac4 assets/modernlifepatch/blockstates/yellow_concrete_barrier.json
2972f1d246d42a194df6ef0e4aa97637bd81d012 assets/modernlifepatch/blockstates/zero_block.json
2f8aae98f4738e0f104ece5ed9e14d6d0dc2bd1f assets/modernlifepatch/lang/en_us.json
69cd8638171301da76611d20ca22007792cb5786 assets/modernlifepatch/lang/zh_cn.json
f03bebdffac97a52a25b16735d27b1f4ce620e7e assets/modernlifepatch/lang/en_us.json
e312ccca0b8e9ef5f4d3df3c0d55ecb7f23e0aef assets/modernlifepatch/lang/zh_cn.json
2f9098dc8325d5df5c620c407b6b10ee665e2bc3 assets/modernlifepatch/models/block/black_concrete_barrier.json
7fe678ee95c63aebb23a377ba9936871238006bf assets/modernlifepatch/models/block/blue_concrete_barrier.json
4e6d4ce5154a735fa898431cdf16d6dbd48d795f assets/modernlifepatch/models/block/brown_concrete_barrier.json
7a0ff06de77ed8acb5d19c771f71bccc035cfd91 assets/modernlifepatch/models/block/cyan_concrete_barrier.json
333b8a9079a64268ae6ed173752442d9c7f56ef1 assets/modernlifepatch/models/block/eight_block.json
a514643f7a36ba579e12bfbb2a3e35f92335b252 assets/modernlifepatch/models/block/five_block.json
09455f6fba4fb562f4b498c3b2ab48a4d0805c03 assets/modernlifepatch/models/block/four_block.json
01b2657496044ed794206c279ba5143ac4b3e59d assets/modernlifepatch/models/block/eight_block.json
51becd1dfd3479a5420810434f0c05ad40343b05 assets/modernlifepatch/models/block/five_block.json
87ffbb48bb533039d36f6975b6162398aeb27138 assets/modernlifepatch/models/block/four_block.json
d9dd48f5c165668c30ca2e7c385e3a360c82ac5e assets/modernlifepatch/models/block/gray_concrete_barrier.json
21cdf6bbe65055c572bb16604e6775757ec3b52b assets/modernlifepatch/models/block/green_concrete_barrier.json
e409887bf6618b759c36232f3b82e35279ffa81a assets/modernlifepatch/models/block/light_blue_concrete_barrier.json
c4fc2d2ef34f3c344b13c2ea6019c5067074cc5a assets/modernlifepatch/models/block/light_gray_concrete_barrier.json
7c8675df5f2bf5e75c710800b90f482bf3106497 assets/modernlifepatch/models/block/lime_concrete_barrier.json
58d3fee169c338be985552324b008768986f6dfb assets/modernlifepatch/models/block/magenta_concrete_barrier.json
dd080450b0fc0355426207d80c86eab1c4d5f67e assets/modernlifepatch/models/block/nine_block.json
6f915a3f8a3bd997e4a1fe284dd426626d15d656 assets/modernlifepatch/models/block/null_block.json
80b0b4895dcdb4a3879f35226a1b2ce77b841e56 assets/modernlifepatch/models/block/one_block.json
c19a132aa4d3628c9406988e4537147c060de7fb assets/modernlifepatch/models/block/nine_block.json
39aaf990b6c471880cbb3280fb0945bad5f9940f assets/modernlifepatch/models/block/null_block.json
47b677200890ff70e53c900e350717103c1259ea assets/modernlifepatch/models/block/one_block.json
13d8a1554bba976044a85fd9a09c16cf3de788fa assets/modernlifepatch/models/block/orange_concrete_barrier.json
89c827f9155942e0ffc085ba506f835816f98110 assets/modernlifepatch/models/block/pink_concrete_barrier.json
c8aac0bfecb588c5c5a984597b0a47e95f40903a assets/modernlifepatch/models/block/purple_concrete_barrier.json
88c4a55c6cc5b20069f5caa5a90d475aee97ef5f assets/modernlifepatch/models/block/quartz_block_barrier.json
17d406d701961246f8c892aad69b0cd836a424c4 assets/modernlifepatch/models/block/red_concrete_barrier.json
b65ba24a2e435d2dcd893010e7d39311f880aa4d assets/modernlifepatch/models/block/seven_block.json
77cdec6767b72a69ad5755da585346c828079395 assets/modernlifepatch/models/block/six_block.json
1ea15d6e316c8ec431f08e02f91f445d7c5eaeba assets/modernlifepatch/models/block/seven_block.json
20f3648c45d5891e9fe9e0d8c5991f053ede507b assets/modernlifepatch/models/block/six_block.json
a7d8260dc68880f3110590226a1fb83818587586 assets/modernlifepatch/models/block/smooth_quartz_barrier.json
1e58a73d3909e30e718db936ef93ced5f175c342 assets/modernlifepatch/models/block/three_block.json
dcac21e9dfb5108a3d84c27c4617c9c395b7517d assets/modernlifepatch/models/block/two_block.json
8d23e5c93b149ddd7c21cc307ac76583ee867155 assets/modernlifepatch/models/block/three_block.json
299bceae34425e8e865c35e1561d8967a7cace3e assets/modernlifepatch/models/block/two_block.json
06b847a878809b0a11992974018c231d64ade8b2 assets/modernlifepatch/models/block/white_concrete_barrier.json
5c63761872ee04c10163d1517054b323bce0879b assets/modernlifepatch/models/block/yellow_concrete_barrier.json
78c10eefde3c624e415d7d68c979a3152fba6497 assets/modernlifepatch/models/block/zero_block.json
5fa98043ccd3415cd03e586456dad7a528fc4c74 assets/modernlifepatch/models/block/zero_block.json
3f05e49c9a4dc41050e540e392cae6f8d661b550 assets/modernlifepatch/models/item/black_concrete_barrier.json
257475b9a67cd737e0b9d703758dbfaeda199df8 assets/modernlifepatch/models/item/blue_concrete_barrier.json
e4ad59c26f4e6195e1c3a08b9315ca023d50ee66 assets/modernlifepatch/models/item/brown_concrete_barrier.json
486e77c42febdff075c3af512aa3d7668f4e1605 assets/modernlifepatch/models/item/cyan_concrete_barrier.json
a080fd31d9afa277688a5293b079a7e4c84dffea assets/modernlifepatch/models/item/eight_block.json
b51a6b07411df0f68ba4e71b0fedcbb26d219af4 assets/modernlifepatch/models/item/five_block.json
ace9d957b1290185deaeb92a439030ae4cf89d75 assets/modernlifepatch/models/item/four_block.json
896daf77109e8ab17397b657c7d0eefcd3ff8a4a assets/modernlifepatch/models/item/eight_block.json
1e6cd99a0c2744f2287cc7ab992d8e253d813e89 assets/modernlifepatch/models/item/five_block.json
8db3a8eb9b2a307cbee2943d55e6383936ce7fcb assets/modernlifepatch/models/item/four_block.json
ef511c3322c14ec0435fa1f80e8c4a3e7b9c70a9 assets/modernlifepatch/models/item/gray_concrete_barrier.json
6ac27fc3feae8f773efe63e5841729c9e3afd353 assets/modernlifepatch/models/item/green_concrete_barrier.json
ac9cec2e51193a3ebaa165fe91c9bb3f9f3fcc32 assets/modernlifepatch/models/item/large_mirror.json
@ -74,23 +74,23 @@ b6d5b4adcd1080d10b1f61d8a005b189e9ac7916 assets/modernlifepatch/models/item/lime
b893eba1f576bd15b45738e5260c9c4e145f1ca9 assets/modernlifepatch/models/item/magenta_concrete_barrier.json
de63e31ba044ddc8d09dd10945a560d414e185c4 assets/modernlifepatch/models/item/massive_mirror.json
80cb85eae418087ea09e8b0d34289b3faf7f0faf assets/modernlifepatch/models/item/mirror.json
9f2a018d44c412f3d2e1dc1f076f1f7e119afddc assets/modernlifepatch/models/item/nine_block.json
bfd93a3d39c417a6ba203c06e9f007d4d3d62755 assets/modernlifepatch/models/item/null_block.json
c0220b60f875b208ca9be034f5436a01c72ba68b assets/modernlifepatch/models/item/one_block.json
82c68c60c6298acd6f921273688430f04b221eee assets/modernlifepatch/models/item/nine_block.json
b09d30c3f6537b42312d1cef618a867b5cd5fcd7 assets/modernlifepatch/models/item/null_block.json
0a90421d1a0b2a7ec420314906228faf3dd80b83 assets/modernlifepatch/models/item/one_block.json
820ca45ce0583fecd57532e96d5e63c588de7857 assets/modernlifepatch/models/item/orange_concrete_barrier.json
c01d9ce9cad70c212304f05e598c5106f6ebf032 assets/modernlifepatch/models/item/pink_concrete_barrier.json
d48d83cd3164a34cd11b659d1b4f68c9621d859d assets/modernlifepatch/models/item/purple_concrete_barrier.json
4b20a7fb96ba97bcd8d55df4c299f03be3c8905a assets/modernlifepatch/models/item/quartz_block_barrier.json
a7b15c8732d9932731417784e20a7d8bf1cf0cb5 assets/modernlifepatch/models/item/red_concrete_barrier.json
cf0270242758457c525f9e94738b566db626e364 assets/modernlifepatch/models/item/seven_block.json
a24f01550201a9de5aa2fd9dfb40cf549175ac81 assets/modernlifepatch/models/item/six_block.json
22d963654ce437c2684c1b70a46fd895421287d6 assets/modernlifepatch/models/item/seven_block.json
278f14b1f3225eb0dca6cd28343daecb02199d8f assets/modernlifepatch/models/item/six_block.json
596c0a1f96a7ce89cfbdd16e7f45d64129fa152c assets/modernlifepatch/models/item/smooth_quartz_barrier.json
ddaaed0180f28afb8dfa1c4270e9872360aca2a7 assets/modernlifepatch/models/item/tall_mirror.json
b9f44e3e4f757b504394e0d56b231127a26a9c74 assets/modernlifepatch/models/item/three_block.json
8a87c68a60901a815b9447ac91a350713bbb1ae0 assets/modernlifepatch/models/item/two_block.json
aab252031fbdc186b94f49db4fc36350a31cadf3 assets/modernlifepatch/models/item/three_block.json
2af0c9fbbf39519c9f41ad5bb4ecfc1c00982de4 assets/modernlifepatch/models/item/two_block.json
b32a5f2cc4838d261cb0b2f4429e3bb534bf7bc9 assets/modernlifepatch/models/item/white_concrete_barrier.json
f6baef0eba7e5d6332945cc9d952843b07415297 assets/modernlifepatch/models/item/yellow_concrete_barrier.json
c3b4a6df8a7eab34205e67cb5c7978a8d24fa1e1 assets/modernlifepatch/models/item/zero_block.json
2c81d08ab208f11d8af04dec1fa83fb2dc8de823 assets/modernlifepatch/models/item/zero_block.json
5776b0035345ad6dffe20dd4fe89c2ba4ec4f445 data/minecraft/advancements/recipes/decorations/black_concrete_barrier_from_black_concrete_stonecutting.json
0fe9ac0e040844bfe8c7f8acf789e9e62d1b504b data/minecraft/advancements/recipes/decorations/blue_concrete_barrier_from_blue_concrete_stonecutting.json
b3b168bf51019cd6bd6875b86fd74bcc5f5c2525 data/minecraft/advancements/recipes/decorations/brown_concrete_barrier_from_brown_concrete_stonecutting.json
@ -199,7 +199,7 @@ d47984a56d0e2e269c1653049710f7c111d21e46 data/minecraft/tags/blocks/mineable/pic
e3b1f573605d846515a967f0dc47f6cc194054ea data/modernlifepatch/advancements/recipes/decorations/large_mirror.json
2e19bc218d3414988ba9744dde0065b56d8568f1 data/modernlifepatch/advancements/recipes/decorations/massive_mirror.json
5ca06b9db5622369088059c82f7fbd9d6ebdb4e0 data/modernlifepatch/advancements/recipes/decorations/mirror.json
d873f2983c80e6870880f070fb18b033be57fbea data/modernlifepatch/advancements/recipes/decorations/null_block.json
fc829f2210f09b9f82d8b81d75b2580b3c488b0b data/modernlifepatch/advancements/recipes/decorations/null_block.json
f530958baac72ec117593beb583cfb489caaf795 data/modernlifepatch/advancements/recipes/decorations/tall_mirror.json
bf4d8877efd5a353a8c5648b1591b8b2dfefbbf1 data/modernlifepatch/loot_tables/blocks/black_concrete_barrier.json
eb288f8befe58a79b99e6434a9a74582d7ff82e9 data/modernlifepatch/loot_tables/blocks/blue_concrete_barrier.json
@ -237,7 +237,7 @@ eb207ede0cd5b1d4af813e3786e948b6b3e6807e data/modernlifepatch/loot_tables/blocks
991b44d89265fa18c6eae9d488fe266f992938f2 data/modernlifepatch/recipes/large_mirror.json
ab176773d07c8e9d6a798aa814cdc3b47ddc0594 data/modernlifepatch/recipes/massive_mirror.json
981f4ada5cbf1c4a387846415a916088ab305059 data/modernlifepatch/recipes/mirror.json
f9620cd772cf4ddbeddec1d4b4c686a2e7fbd0c6 data/modernlifepatch/recipes/null_block.json
a456ccc4dec979138e22e97041e1a2bec362429c data/modernlifepatch/recipes/null_block.json
520f615353aca735689ae25ba5b9d2a0728f97da data/modernlifepatch/recipes/tall_mirror.json
1becf0e6fd8a314f27873a4de1920598eb7d478a data/modernlifepatch/tags/items/bathroom.json
f1f91d804e6d1aa4180d305eafaf354637df142c data/modernlifepatch/tags/items/bedchamber.json

View File

@ -106,6 +106,8 @@
"modernlifepatch.lang.motorboat.hover_text.2": "Remaining fuel: %f%%",
"modernlifepatch.lang.motorboat.hover_text.3": "Refuel by using a gas can on the deployed boat",
"modernlifepatch.lang.need_rs_power.hover_text.0": "Requires redstone power to operate",
"modernlifepatch.lang.number_block.hover_text.1": "The number on the block defaults to red and can be recolored using dyes.",
"modernlifepatch.lang.number_block.hover_text.2": "Can be converted into other numbers via a Stonecutter.",
"modernlifepatch.lang.paved_road.hover_text.0": "Slightly increases movement speed of vehicles",
"modernlifepatch.lang.photocopier.hover_text.1": "Interact with a canvas or photograph to make copies",
"modernlifepatch.lang.photocopier.hover_text.2": " * Requires paper",

View File

@ -106,6 +106,8 @@
"modernlifepatch.lang.motorboat.hover_text.2": "\u71C3\u6599\u5269\u4F59\u91CF: %f%%",
"modernlifepatch.lang.motorboat.hover_text.3": "\u5BF9\u8239\u4F7F\u7528\u6C7D\u6CB9\u7F50\u6765\u52A0\u6CB9",
"modernlifepatch.lang.need_rs_power.hover_text.0": "\u9700\u8981\u7EA2\u77F3\u5145\u80FD",
"modernlifepatch.lang.number_block.hover_text.1": "\u6570\u5B57\u65B9\u5757\u6570\u5B57\u989C\u8272\u9ED8\u8BA4\u4E3A\u7EA2\u8272\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4F7F\u7528\u67D3\u6599\u6765\u6539\u53D8\u5176\u989C\u8272\u3002",
"modernlifepatch.lang.number_block.hover_text.2": "\u6570\u5B57\u65B9\u5757\u53EF\u4EE5\u901A\u8FC7\u5207\u77F3\u673A\u6362\u6210\u5176\u5B83\u6570\u5B57\u3002",
"modernlifepatch.lang.paved_road.hover_text.0": "\u8F7D\u5177\u5728\u8BE5\u8DEF\u4E0A\u884C\u9A76\uFF0C\u79FB\u901F\u4F1A\u6709\u6240\u63D0\u5347",
"modernlifepatch.lang.photocopier.hover_text.1": "\u53EF\u4EE5\u7528\u4E8E\u7167\u7247\u6216\u753B\u4F5C\u7684\u590D\u5236",
"modernlifepatch.lang.photocopier.hover_text.2": " * \u9700\u8981\u7EB8",

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/eight_block"
"number": "modernlifepatch:block/number/eight_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/five_block"
"number": "modernlifepatch:block/number/five_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/four_block"
"number": "modernlifepatch:block/number/four_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/nine_block"
"number": "modernlifepatch:block/number/nine_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/null_block"
"number": "modernlifepatch:block/number/null_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/one_block"
"number": "modernlifepatch:block/number/one_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/seven_block"
"number": "modernlifepatch:block/number/seven_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/six_block"
"number": "modernlifepatch:block/number/six_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/three_block"
"number": "modernlifepatch:block/number/three_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/two_block"
"number": "modernlifepatch:block/number/two_block_layer"
}
}

View File

@ -1,6 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"parent": "modernlifepatch:block/number_block",
"textures": {
"all": "modernlifepatch:block/zero_block"
"number": "modernlifepatch:block/number/zero_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/eight_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/eight_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/five_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/five_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/four_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/four_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/nine_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/nine_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/null_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/null_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/one_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/one_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/seven_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/seven_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/six_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/six_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/three_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/three_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/two_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/two_block_layer"
}
}

View File

@ -1,3 +1,6 @@
{
"parent": "modernlifepatch:block/zero_block"
"parent": "modernlifepatch:item/number_block_item",
"textures": {
"number": "modernlifepatch:block/number/zero_block_layer"
}
}

View File

@ -6,13 +6,13 @@
]
},
"criteria": {
"has_red_dye": {
"has_quartz": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"minecraft:red_dye"
"minecraft:quartz"
]
}
]
@ -27,7 +27,7 @@
},
"requirements": [
[
"has_red_dye",
"has_quartz",
"has_the_recipe"
]
]

View File

@ -1,40 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#$#",
"$@$",
"#$#"
"###",
"#@#",
"###"
],
"key": {
"#": {
"item": "minecraft:white_dye"
"item": "minecraft:quartz"
},
"$": {
"item": "minecraft:red_dye"
},
"@": [
{
"item": "minecraft:stone"
},
{
"item": "minecraft:granite"
},
{
"item": "minecraft:diorite"
},
{
"item": "minecraft:andesite"
},
{
"item": "minecraft:deepslate"
},
{
"item": "minecraft:calcite"
},
{
"item": "minecraft:tuff"
}
]
"@": {
"item": "minecraft:red_concrete_powder"
}
},
"result": {
"item": "modernlifepatch:null_block",

View File

@ -3,24 +3,34 @@ package com.r3944realms.modernlifepatch;
import com.dairymoose.modernlife.core.CustomBlocks;
import com.r3944realms.modernlifepatch.client.event.CreativeScreenEvents;
import com.r3944realms.modernlifepatch.client.render.BlockOutlineRenderer;
import com.r3944realms.modernlifepatch.client.render.color.blockColor.NumberBlockColorHandler;
import com.r3944realms.modernlifepatch.client.render.color.itemColor.NumberBlockItemColorHandler;
import com.r3944realms.modernlifepatch.client.render.outline.RampOutlineRenderer;
import com.r3944realms.modernlifepatch.client.renderer.blockentity.MirrorBlockEntityRenderer;
import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import com.r3944realms.modernlifepatch.content.blocks.entities.ModBlockEntityType;
import com.r3944realms.modernlifepatch.content.items.ModItems;
import com.r3944realms.modernlifepatch.data.SpecialHitBoxBlockType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.color.block.BlockColors;
import net.minecraft.client.color.item.ItemColors;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.EntityRenderersEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.ChunkEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
public abstract class ClientEventHandler {
// @net.minecraftforge.fml.common.Mod.EventBusSubscriber(value = Dist.CLIENT, bus = net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus.FORGE, modid = ModernLifePatch.MOD_ID)
@net.minecraftforge.fml.common.Mod.EventBusSubscriber(value = Dist.CLIENT, bus = net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus.FORGE, modid = ModernLifePatch.MOD_ID)
public static class Game extends ClientEventHandler {
@SubscribeEvent
public static void onChunkWatch(ChunkEvent.Load event) {
}
}
@net.minecraftforge.fml.common.Mod.EventBusSubscriber(value = Dist.CLIENT, bus = net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus.MOD, modid = ModernLifePatch.MOD_ID)
public static class Mod extends ClientEventHandler {
@ -39,12 +49,53 @@ public abstract class ClientEventHandler {
ItemBlockRenderTypes.setRenderLayer(CustomBlocks.BLOCK_CRIMSON_CHAIR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(CustomBlocks.BLOCK_WARPED_CHAIR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(CustomBlocks.BLOCK_POWER_RECEIVER.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.NULL_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.ZERO_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.ONE_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.TWO_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.THREE_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.FOUR_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.FIVE_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.SIX_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.SEVEN_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.EIGHT_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(ModBlocks.NINE_BLOCK.get(), RenderType.cutout());
});
if (ModernLifePatch.isModernLifeLoaded) {
if (ModernLifePatch.isModernLifeLoaded) {
MinecraftForge.EVENT_BUS.register(new CreativeScreenEvents());
BlockOutlineRenderer.registerOutlineRender(SpecialHitBoxBlockType.RAMP, new RampOutlineRenderer());
event.enqueueWork(() -> {
BlockOutlineRenderer.registerOutlineRender(SpecialHitBoxBlockType.RAMP, new RampOutlineRenderer());
BlockColors blockColors = Minecraft.getInstance().getBlockColors();
blockColors.register(new NumberBlockColorHandler(),
ModBlocks.NULL_BLOCK.get(),
ModBlocks.ONE_BLOCK.get(),
ModBlocks.TWO_BLOCK.get(),
ModBlocks.THREE_BLOCK.get(),
ModBlocks.FOUR_BLOCK.get(),
ModBlocks.FIVE_BLOCK.get(),
ModBlocks.SIX_BLOCK.get(),
ModBlocks.SEVEN_BLOCK.get(),
ModBlocks.EIGHT_BLOCK.get(),
ModBlocks.NINE_BLOCK.get(),
ModBlocks.ZERO_BLOCK.get()
);
ItemColors itemColors = Minecraft.getInstance().getItemColors();
itemColors.register(new NumberBlockItemColorHandler(),
ModItems.NULL_BLOCK_ITEM.get(),
ModItems.ZERO_BLOCK_ITEM.get(),
ModItems.ONE_BLOCK_ITEM.get(),
ModItems.TWO_BLOCK_ITEM.get(),
ModItems.THREE_BLOCK_ITEM.get(),
ModItems.FOUR_BLOCK_ITEM.get(),
ModItems.FIVE_BLOCK_ITEM.get(),
ModItems.SIX_BLOCK_ITEM.get(),
ModItems.SEVEN_BLOCK_ITEM.get(),
ModItems.EIGHT_BLOCK_ITEM.get(),
ModItems.NINE_BLOCK_ITEM.get()
);
});
MinecraftForge.EVENT_BUS.addListener(BlockOutlineRenderer::onRenderBlockHighlight);
}
}
}
@SubscribeEvent

View File

@ -4,6 +4,7 @@ import com.r3944realms.modernlifepatch.config.MLPConfig;
import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import com.r3944realms.modernlifepatch.content.blocks.entities.ModBlockEntityType;
import com.r3944realms.modernlifepatch.content.items.ModItems;
import com.r3944realms.modernlifepatch.network.Channel;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext;
@ -28,6 +29,7 @@ public class ModernLifePatch {
ModBlocks.register(modEventBus);
ModBlockEntityType.register(modEventBus);
logger.info("ModernLifePatch loaded");
Channel.register();
if(FMLEnvironment.dist.isDedicatedServer())
ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, MLPConfig.spec);
}

View File

@ -0,0 +1,31 @@
package com.r3944realms.modernlifepatch.client.render.color;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Maps;
import net.minecraft.world.item.DyeColor;
import java.util.Map;
import java.util.Objects;
public final class ColorSharedData {
public static Map<Integer, DyeColor> COLORS;
private static void init() {
DyeColor[] dyeColors = DyeColor.values();
BiMap<Integer, DyeColor> objectObjectHashMap = HashBiMap.create(dyeColors.length);
for (DyeColor dyeColor : dyeColors) {
objectObjectHashMap.put(dyeColor.getTextColor(), dyeColor);
}
COLORS = Maps.unmodifiableBiMap(objectObjectHashMap);
}
static {
init();
}
public static Map<Integer, DyeColor> getColorBiMap() {
return COLORS;
}
public static int getColor(DyeColor dyeColor) {
return Objects.requireNonNullElse(dyeColor, DyeColor.RED).getTextColor();
}
}

View File

@ -0,0 +1,11 @@
package com.r3944realms.modernlifepatch.client.render.color.blockColor;
import net.minecraft.world.item.DyeColor;
import java.util.Objects;
public interface BlockColor extends net.minecraft.client.color.block.BlockColor {
default int getColor(DyeColor dyeColor) {
return Objects.requireNonNullElse(dyeColor, DyeColor.RED).getTextColor();
}
}

View File

@ -0,0 +1,30 @@
package com.r3944realms.modernlifepatch.client.render.color.blockColor;
import com.r3944realms.modernlifepatch.content.blocks.entities.type.custom.NumberBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class NumberBlockColorHandler implements BlockColor {
@Override
public int getColor(@NotNull BlockState state, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int tintIndex) {
if (tintIndex == 0) {
if(level != null && pos != null) {
BlockEntity blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof NumberBlockEntity numberBlock) {
return getColor(numberBlock.getBlockColor());
}
}
}
return getColor(DyeColor.RED);
}
}

View File

@ -0,0 +1,11 @@
package com.r3944realms.modernlifepatch.client.render.color.itemColor;
import net.minecraft.world.item.DyeColor;
import java.util.Objects;
public interface ItemColor extends net.minecraft.client.color.item.ItemColor {
default int getColor(DyeColor dyeColor) {
return Objects.requireNonNullElse(dyeColor, DyeColor.RED).getTextColor();
}
}

View File

@ -0,0 +1,24 @@
package com.r3944realms.modernlifepatch.client.render.color.itemColor;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
public class NumberBlockItemColorHandler implements ItemColor{
@Override
public int getColor(@NotNull ItemStack pStack, int pTintIndex) {
if (pTintIndex == 0) {
AtomicReference<DyeColor> color = new AtomicReference<>();
CompoundTag tag = pStack.getTag();Optional.ofNullable(tag)
.map(i -> i.contains("BlockEntityTag") ? i.getCompound("BlockEntityTag") : null)
.map(i -> i.contains("b_color") ? i.getString("b_color") : null)
.map(i -> DyeColor.byName(i, DyeColor.RED)).ifPresent(color::set);
return color.get() == null ? getColor(DyeColor.RED) : getColor(color.get());
}
return getColor(DyeColor.RED);
}
}

View File

@ -6,6 +6,7 @@ import com.r3944realms.modernlifepatch.content.blocks.type.NumberBlock;
import com.r3944realms.modernlifepatch.content.blocks.type.mirror.MirrorBlock;
import com.r3944realms.modernlifepatch.content.blocks.type.mirror.MirrorPart;
import com.r3944realms.modernlifepatch.content.items.ModItems;
import com.r3944realms.modernlifepatch.content.items.type.NumberBlockItem;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
@ -92,6 +93,9 @@ public class ModBlocks {
public static <T extends Block> RegistryObject<BlockItem> registerBlockItem(String name , RegistryObject<T> block){
return ModItems.ITEMS.register(name,() -> new BlockItem(block.get(),new Item.Properties().tab(CreativeModeTab.TAB_DECORATIONS)));
}
public static <T extends Block> RegistryObject<BlockItem> registerNumberBlockItem(String name , RegistryObject<T> block){
return ModItems.ITEMS.register(name,() -> new NumberBlockItem(block.get(),new Item.Properties().tab(CreativeModeTab.TAB_DECORATIONS)));
}
public static void register(IEventBus bus) {
BLOCKS.register(bus);
}

View File

@ -2,6 +2,7 @@ package com.r3944realms.modernlifepatch.content.blocks.entities;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import com.r3944realms.modernlifepatch.content.blocks.entities.type.custom.NumberBlockEntity;
import com.r3944realms.modernlifepatch.content.blocks.entities.type.mirror.MirrorBlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.eventbus.api.IEventBus;
@ -17,6 +18,9 @@ public class ModBlockEntityType {
@SuppressWarnings("DataFlowIssue")
public static final RegistryObject<BlockEntityType<MirrorBlockEntity>> MIRROR
= BLOCK_ENTITY_TYPE.register("mirror", () -> new BlockEntityType<>(MirrorBlockEntity::new, Set.of(ModBlocks.MIRROR.get()), null));
@SuppressWarnings("DataFlowIssue")
public static final RegistryObject<BlockEntityType<NumberBlockEntity>> NUMBER_BLOCK
= BLOCK_ENTITY_TYPE.register("number_block", () -> new BlockEntityType<>(NumberBlockEntity::new, Set.of(ModBlocks.NULL_BLOCK.get(), ModBlocks.ONE_BLOCK.get(), ModBlocks.TWO_BLOCK.get(), ModBlocks.THREE_BLOCK.get(), ModBlocks.FOUR_BLOCK.get(), ModBlocks.FIVE_BLOCK.get(), ModBlocks.SIX_BLOCK.get(), ModBlocks.SEVEN_BLOCK.get(), ModBlocks.EIGHT_BLOCK.get(), ModBlocks.NINE_BLOCK.get(), ModBlocks.ZERO_BLOCK.get()), null));
public static void register(IEventBus bus) {
BLOCK_ENTITY_TYPE.register(bus);
}

View File

@ -0,0 +1,71 @@
package com.r3944realms.modernlifepatch.content.blocks.entities.type.custom;
import com.r3944realms.modernlifepatch.content.blocks.entities.ModBlockEntityType;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public class NumberBlockEntity extends BlockEntity {
public DyeColor blockColor;
public NumberBlockEntity(BlockPos pPos, BlockState pBlockState) {
super(ModBlockEntityType.NUMBER_BLOCK.get(), pPos, pBlockState);
}
public void setBlockColor(DyeColor pColor) {
this.blockColor = pColor;
setChanged(); // 标记数据需要保存
if (level != null && !level.isClientSide()) {
level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), Block.UPDATE_ALL);
}
}
public DyeColor getBlockColor() {
return Objects.requireNonNullElse(this.blockColor, DyeColor.RED);
}
public int getBlockColorInt() {
return getBlockColor().getTextColor();
}
// NBT 序列化
@Override
public void load(@NotNull CompoundTag tag) {
super.load(tag);
if (tag.contains("b_color")) {
blockColor = DyeColor.byName(tag.getString("b_color"), DyeColor.RED);
}
}
@Override
public void saveAdditional(@NotNull CompoundTag tag) {
super.saveAdditional(tag);
tag.putString("b_color", getBlockColor().getName());
}
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
}
@Override
public @NotNull CompoundTag getUpdateTag() {
CompoundTag tag = super.getUpdateTag();
saveAdditional(tag);
return tag;
}
@Override
public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt) {
if (level != null && level.isClientSide) {
load(Objects.requireNonNull(pkt.getTag())); // 加载接收到的 NBT 数据
level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), Block.UPDATE_ALL); // 触发客户端重绘
}
}
}

View File

@ -1,12 +1,32 @@
package com.r3944realms.modernlifepatch.content.blocks.type;
import com.r3944realms.modernlifepatch.content.blocks.entities.type.custom.NumberBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.DyeItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class NumberBlock extends HorizontalDirectionalBlock {
public class NumberBlock extends HorizontalDirectionalBlock implements EntityBlock {
public NumberBlock(Properties pProperties) {
super(pProperties);
}
@ -20,4 +40,43 @@ public class NumberBlock extends HorizontalDirectionalBlock {
pBuilder.add(FACING);
}
@Nullable
@Override
public BlockEntity newBlockEntity(@NotNull BlockPos pPos, @NotNull BlockState pState) {
return new NumberBlockEntity(pPos, pState);
}
@Override
public @NotNull InteractionResult use(@NotNull BlockState state, Level level, @NotNull BlockPos pos, @NotNull Player player,
@NotNull InteractionHand hand, @NotNull BlockHitResult hit) {
if (!level.isClientSide && hand == InteractionHand.MAIN_HAND) {
ItemStack stack = player.getItemInHand(hand);
if (stack.getItem() instanceof DyeItem dyeItem) {
BlockEntity blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof NumberBlockEntity numberBlock) {
DyeColor dyeColor = dyeItem.getDyeColor();
numberBlock.setBlockColor(dyeColor);
return InteractionResult.SUCCESS;
}
}
}
return InteractionResult.PASS;
}
@Override
public void setPlacedBy(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state, @Nullable LivingEntity placer, @NotNull ItemStack stack) {
super.setPlacedBy(level, pos, state, placer, stack);
if (level.isClientSide) return; // 仅服务端执行
// 读取物品的 BlockEntityTag
CompoundTag tag = stack.getTagElement("BlockEntityTag");
if (tag != null) {
BlockEntity blockEntity = level.getBlockEntity(pos);
if (blockEntity instanceof NumberBlockEntity myBE) {
// BlockEntityTag 的数据加载到方块实体
myBE.load(tag);
myBE.setChanged(); // 标记数据变更
}
}
}
}

View File

@ -37,17 +37,17 @@ public class ModItems {
public static final RegistryObject<BlockItem> SMOOTH_QUARTZ_BARRIER = ModBlocks.registerBlockItem("smooth_quartz_barrier", ModBlocks.SMOOTH_QUARTZ_BARRIER);
//NUMBER
public static final RegistryObject<BlockItem> NULL_BLOCK_ITEM = ModBlocks.registerBlockItem("null_block", ModBlocks.NULL_BLOCK);
public static final RegistryObject<BlockItem> ONE_BLOCK_ITEM = ModBlocks.registerBlockItem("one_block", ModBlocks.ONE_BLOCK);
public static final RegistryObject<BlockItem> TWO_BLOCK_ITEM = ModBlocks.registerBlockItem("two_block", ModBlocks.TWO_BLOCK);
public static final RegistryObject<BlockItem> THREE_BLOCK_ITEM = ModBlocks.registerBlockItem("three_block", ModBlocks.THREE_BLOCK);
public static final RegistryObject<BlockItem> FOUR_BLOCK_ITEM = ModBlocks.registerBlockItem("four_block", ModBlocks.FOUR_BLOCK);
public static final RegistryObject<BlockItem> FIVE_BLOCK_ITEM = ModBlocks.registerBlockItem("five_block", ModBlocks.FIVE_BLOCK);
public static final RegistryObject<BlockItem> SIX_BLOCK_ITEM = ModBlocks.registerBlockItem("six_block", ModBlocks.SIX_BLOCK);
public static final RegistryObject<BlockItem> SEVEN_BLOCK_ITEM = ModBlocks.registerBlockItem("seven_block", ModBlocks.SEVEN_BLOCK);
public static final RegistryObject<BlockItem> EIGHT_BLOCK_ITEM = ModBlocks.registerBlockItem("eight_block", ModBlocks.EIGHT_BLOCK);
public static final RegistryObject<BlockItem> NINE_BLOCK_ITEM = ModBlocks.registerBlockItem("nine_block", ModBlocks.NINE_BLOCK);
public static final RegistryObject<BlockItem> ZERO_BLOCK_ITEM = ModBlocks.registerBlockItem("zero_block", ModBlocks.ZERO_BLOCK);
public static final RegistryObject<BlockItem> NULL_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("null_block", ModBlocks.NULL_BLOCK);
public static final RegistryObject<BlockItem> ONE_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("one_block", ModBlocks.ONE_BLOCK);
public static final RegistryObject<BlockItem> TWO_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("two_block", ModBlocks.TWO_BLOCK);
public static final RegistryObject<BlockItem> THREE_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("three_block", ModBlocks.THREE_BLOCK);
public static final RegistryObject<BlockItem> FOUR_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("four_block", ModBlocks.FOUR_BLOCK);
public static final RegistryObject<BlockItem> FIVE_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("five_block", ModBlocks.FIVE_BLOCK);
public static final RegistryObject<BlockItem> SIX_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("six_block", ModBlocks.SIX_BLOCK);
public static final RegistryObject<BlockItem> SEVEN_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("seven_block", ModBlocks.SEVEN_BLOCK);
public static final RegistryObject<BlockItem> EIGHT_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("eight_block", ModBlocks.EIGHT_BLOCK);
public static final RegistryObject<BlockItem> NINE_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("nine_block", ModBlocks.NINE_BLOCK);
public static final RegistryObject<BlockItem> ZERO_BLOCK_ITEM = ModBlocks.registerNumberBlockItem("zero_block", ModBlocks.ZERO_BLOCK);
public static void register(IEventBus bus) {
ITEMS.register(bus);
}

View File

@ -0,0 +1,26 @@
package com.r3944realms.modernlifepatch.content.items.type;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class NumberBlockItem extends BlockItem {
public NumberBlockItem(Block pBlock, Properties pProperties) {
super(pBlock, pProperties);
}
@Override
public void appendHoverText(@NotNull ItemStack pStack, @Nullable Level pLevel, @NotNull List<Component> pTooltip, @NotNull TooltipFlag pFlag) {
pTooltip.add(new TranslatableComponent(ModLangKeyValue.NUMBER_BLOCK_ITEM_HOVER_ONE.getKey()));
pTooltip.add(new TranslatableComponent(ModLangKeyValue.NUMBER_BLOCK_ITEM_HOVER_TWO.getKey()));
}
}

View File

@ -186,7 +186,9 @@ public enum ModLangKeyValue {
NINE_BLOCK_ITEM(getItemKey(ModItems.NINE_BLOCK_ITEM.get()), "Nine", ""),
NINE_BLOCK(getBlockKey(ModBlocks.NINE_BLOCK.get()), copyEnglish(NINE_BLOCK_ITEM), copySimpleChinese(NINE_BLOCK_ITEM)),
ZERO_BLOCK_ITEM(getItemKey(ModItems.ZERO_BLOCK_ITEM.get()), "Zero", ""),
ZERO_BLOCK(getBlockKey(ModBlocks.ZERO_BLOCK.get()), copyEnglish(ZERO_BLOCK_ITEM), copySimpleChinese(ZERO_BLOCK_ITEM))
ZERO_BLOCK(getBlockKey(ModBlocks.ZERO_BLOCK.get()), copyEnglish(ZERO_BLOCK_ITEM), copySimpleChinese(ZERO_BLOCK_ITEM)),
NUMBER_BLOCK_ITEM_HOVER_ONE(getHoverTextKey("number_block", "1"), "The number on the block defaults to red and can be recolored using dyes.", "数字方块数字颜色默认为红色,可以通过使用染料来改变其颜色。"),
NUMBER_BLOCK_ITEM_HOVER_TWO(getHoverTextKey("number_block", "2"), "Can be converted into other numbers via a Stonecutter.", "数字方块可以通过切石机换成其它数字。"),
;
private final String key;

View File

@ -5,7 +5,9 @@ import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import net.minecraft.data.DataGenerator;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.model.generators.*;
import net.minecraftforge.client.model.generators.BlockModelBuilder;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.client.model.generators.ModelFile;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.ForgeRegistries;
@ -49,9 +51,10 @@ public class ModBlockStateProvider extends BlockStateProvider {
registerNumberStates(ModBlocks.ZERO_BLOCK.get(), "zero");
}
public void registerNumberStates(Block block, String number) {
BlockModelBuilder numberBlock = models().cubeAll(number + "_block", new ResourceLocation(ModernLifePatch.MOD_ID, "block/" + number + "_block"));
BlockModelBuilder numberBlock = models()
.withExistingParent(number + "_block", new ResourceLocation(ModernLifePatch.MOD_ID, "block/number_block"))
.texture("number", new ResourceLocation(ModernLifePatch.MOD_ID, "block/number/"+ number + "_block_layer"));
horizontalBlock(block, numberBlock);
simpleBlockItem(block, numberBlock);
}
public void registerBarrierStates(Block block, ResourceLocation location) {
ModelFile.ExistingModelFile existingFile = models().getExistingFile(location);

View File

@ -4,7 +4,9 @@ import com.r3944realms.modernlifepatch.ModernLifePatch;
import com.r3944realms.modernlifepatch.content.items.ModItems;
import net.minecraft.data.DataGenerator;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.model.generators.ItemModelProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.ForgeRegistries;
@ -13,6 +15,7 @@ import java.util.Objects;
public class ModItemModelProvider extends ItemModelProvider {
public static final String GENERATED = "item/generated";
public static final ResourceLocation NUMBER_BLOCK_ITEM = new ResourceLocation(ModernLifePatch.MOD_ID, "item/number_block_item");
public ModItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) {
super(generator, ModernLifePatch.MOD_ID, existingFileHelper);
}
@ -23,12 +26,26 @@ public class ModItemModelProvider extends ItemModelProvider {
itemGeneratedModel(ModItems.TALL_MIRROR_ITEM.get(), new ResourceLocation(ModernLifePatch.MOD_ID, "item/tall_mirror_item"));
itemGeneratedModel(ModItems.LARGE_MIRROR_ITEM.get(), new ResourceLocation(ModernLifePatch.MOD_ID, "item/large_mirror_item"));
itemGeneratedModel(ModItems.MASSIVE_MIRROR_ITEM.get(), new ResourceLocation(ModernLifePatch.MOD_ID, "item/massive_mirror_item"));
numberBlockGeneratedModel(ModItems.NULL_BLOCK_ITEM.get(), "null");
numberBlockGeneratedModel(ModItems.ZERO_BLOCK_ITEM.get(), "zero");
numberBlockGeneratedModel(ModItems.ONE_BLOCK_ITEM.get(), "one");
numberBlockGeneratedModel(ModItems.TWO_BLOCK_ITEM.get(), "two");
numberBlockGeneratedModel(ModItems.THREE_BLOCK_ITEM.get(), "three");
numberBlockGeneratedModel(ModItems.FOUR_BLOCK_ITEM.get(), "four");
numberBlockGeneratedModel(ModItems.FIVE_BLOCK_ITEM.get(), "five");
numberBlockGeneratedModel(ModItems.SIX_BLOCK_ITEM.get(), "six");
numberBlockGeneratedModel(ModItems.SEVEN_BLOCK_ITEM.get(), "seven");
numberBlockGeneratedModel(ModItems.EIGHT_BLOCK_ITEM.get(), "eight");
numberBlockGeneratedModel(ModItems.NINE_BLOCK_ITEM.get(), "nine");
}
public void itemGeneratedModel(Item item, ResourceLocation texture) {
withExistingParent(itemName(item), GENERATED).texture("layer0", texture);
}
public void numberBlockGeneratedModel(BlockItem bite, String number) {
withExistingParent(itemName(bite), NUMBER_BLOCK_ITEM)
.texture("number", new ResourceLocation(ModernLifePatch.MOD_ID, "block/number/"+ number + "_block_layer"));
}
private String itemName(Item item) {
return Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(item)).getPath();

View File

@ -84,13 +84,12 @@ public class ModRecipeProvider extends RecipeProvider {
stonecutterResultFromBase(pFinishedRecipeConsumer, ModItems.RED_CONCRETE_BARRIER_ITEM.get(), Items.RED_CONCRETE, 2);
stonecutterResultFromBase(pFinishedRecipeConsumer, ModItems.BLACK_CONCRETE_BARRIER_ITEM.get(), Items.BLACK_CONCRETE, 2);
ShapedRecipeBuilder.shaped(ModItems.NULL_BLOCK_ITEM.get(), 2)
.define('#', Items.WHITE_DYE)
.define('$', Items.RED_DYE)
.define('@', Ingredient.of(Items.STONE, Items.GRANITE, Items.DIORITE, Items.ANDESITE, Items.DEEPSLATE, Items.CALCITE, Items.TUFF))
.pattern("#$#")
.pattern("$@$")
.pattern("#$#")
.unlockedBy("has_red_dye",has(Items.RED_DYE))
.define('#', Items.QUARTZ)
.define('@', Items.RED_CONCRETE_POWDER)
.pattern("###")
.pattern("#@#")
.pattern("###")
.unlockedBy("has_quartz",has(Items.QUARTZ))
.save(pFinishedRecipeConsumer);
ShapelessRecipeBuilder.shapeless(ModItems.NULL_BLOCK_ITEM.get())

View File

@ -2,7 +2,6 @@ package com.r3944realms.modernlifepatch.mixin.block.kitchen;
import com.dairymoose.modernlife.blocks.RefrigeratorBlock;
import com.dairymoose.modernlife.tileentities.RefrigeratorBlockEntity;
import com.dairymoose.modernlife.tileentities.SeedSpreaderBlockEntity;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;

View File

@ -1,9 +0,0 @@
package com.r3944realms.modernlifepatch.modInterface;
import net.minecraft.world.item.ItemStack;
import java.util.function.Consumer;
public interface CreativeItem {
void fill(Consumer<ItemStack> output);
}

View File

@ -0,0 +1,29 @@
package com.r3944realms.modernlifepatch.network;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkRegistry;
import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.simple.SimpleChannel;
public class Channel {
private static final String PROTOCOL_VERSION = "1";
private static int ID = -1;
public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(
new ResourceLocation(ModernLifePatch.MOD_ID, "main"),
() -> PROTOCOL_VERSION,
PROTOCOL_VERSION::equals,
PROTOCOL_VERSION::equals
);
public static void register() {
}
public static <MSG> void sendAllPlayer(MSG message){
CHANNEL.send(PacketDistributor.ALL.noArg(), message);
}
public static <MSG> void sendToPlayer(MSG message, ServerPlayer player){
CHANNEL.send(PacketDistributor.PLAYER.with(() -> player), message);
}
}

View File

@ -0,0 +1,34 @@
{
"credit": "Made with Blockbench",
"textures": {
"number": "block/2",
"particle": "modernlifepatch:block/number/number_block_background",
"background": "modernlifepatch:block/number/number_block_background"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#background"},
"east": {"uv": [0, 0, 16, 16], "texture": "#background"},
"south": {"uv": [0, 0, 16, 16], "texture": "#background"},
"west": {"uv": [0, 0, 16, 16], "texture": "#background"},
"up": {"uv": [0, 0, 16, 16], "texture": "#background"},
"down": {"uv": [0, 0, 16, 16], "texture": "#background"}
}
},
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"east": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"south": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"west": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"up": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"down": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0}
}
}
]
}

View File

@ -0,0 +1,65 @@
{
"credit": "Made with Blockbench",
"textures": {
"number": "item/0",
"background": "modernlifepatch:block/number/number_block_background"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#background"},
"east": {"uv": [0, 0, 16, 16], "texture": "#background"},
"south": {"uv": [0, 0, 16, 16], "texture": "#background"},
"west": {"uv": [0, 0, 16, 16], "texture": "#background"},
"up": {"uv": [0, 0, 16, 16], "texture": "#background"},
"down": {"uv": [0, 0, 16, 16], "texture": "#background"}
}
},
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"east": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"south": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"west": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"up": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0},
"down": {"uv": [0, 0, 16, 16], "texture": "#number", "tintindex": 0}
}
}
],
"gui_light": "front",
"display": {
"thirdperson_righthand": {
"rotation": [55, 46, 0],
"translation": [0, 0, -1.25],
"scale": [0.25, 0.25, 0.25]
},
"thirdperson_lefthand": {
"rotation": [55, 45, 0],
"translation": [0, 0, -1.25],
"scale": [0.25, 0.25, 0.25]
},
"firstperson_righthand": {
"rotation": [0, 27, 0],
"translation": [0, 2.5, 0],
"scale": [0.25, 0.25, 0.25]
},
"firstperson_lefthand": {
"rotation": [0, -65, 0],
"translation": [0.75, 2.5, 0],
"scale": [0.25, 0.25, 0.25]
},
"ground": {
"rotation": [8, 0, 0],
"translation": [0.5, 1.5, 0],
"scale": [0.25, 0.25, 0.25]
},
"gui": {
"rotation": [20, -33, 0],
"scale": [0.6, 0.6, 0.6]
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 989 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB