diff --git a/build.gradle b/build.gradle index 1e033d93..ec7b3bd0 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,14 @@ repositories { // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. + maven { + name = "Jared's maven" + url = "https://maven.blamejared.com/" + } + maven { + name = "ModMaven" + url = "https://modmaven.dev" + } } loom { @@ -50,6 +58,9 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modCompileOnly "mezz.jei:jei-${project.minecraft_version}-fabric-api:${project.jei_version}" + modRuntimeOnly "mezz.jei:jei-${project.minecraft_version}-fabric:${project.jei_version}" // Uncomment the following line to enable the deprecated Fabric API modules. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. @@ -125,6 +136,7 @@ modrinth { uploadFile.set(tasks.remapJar) dependencies { required.project("fabric-api") + optional.project("jei") } } -tasks.modrinth.dependsOn(tasks.remapJar) \ No newline at end of file +tasks.modrinth.dependsOn(tasks.remapJar) diff --git a/gradle.properties b/gradle.properties index 78a6a808..0b34febf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,22 +1,23 @@ # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx1G +org.gradle.jvmargs=-Xmx4G org.gradle.parallel=true # Fabric Properties minecraft_version=1.21.11 -loader_version=0.18.3 +loader_version=0.19.2 loom_version=1.14-SNAPSHOT # Mod Properties -mod_version=4.0.2 +mod_version=4.0.3 maven_group=com.nemonotfound archives_base_name=nemos-carpentry mod_id=nemos-carpentry mod_name=Nemo's Carpentry # Dependencies -fabric_version=0.140.0+1.21.11 +fabric_version=0.141.4+1.21.11 +jei_version=27.4.0.22 # Upload curseforge_project_id=928372 -modrinth_project_id=nemos-carpentry \ No newline at end of file +modrinth_project_id=nemos-carpentry diff --git a/src/main/generated/assets/nemos-carpentry/lang/en_us.json b/src/main/generated/assets/nemos-carpentry/lang/en_us.json index 9184cd40..052ef989 100644 --- a/src/main/generated/assets/nemos-carpentry/lang/en_us.json +++ b/src/main/generated/assets/nemos-carpentry/lang/en_us.json @@ -631,5 +631,10 @@ "item.nemos-carpentry.pale_oak_glass_door_frame": "Pale Oak Glass Door Frame", "item.nemos-carpentry.spruce_glass_door_frame": "Spruce Glass Door Frame", "item.nemos-carpentry.warped_glass_door_frame": "Warped Glass Door Frame", + "jei.nemos-carpentry.category.carpentry": "Carpenter's Workbench", + "itemGroup.nemos-carpentry.nemos_carpentry": "Nemo's Carpentry", + "itemGroup.nemos-carpentry.outdoor": "Outdoor", + "itemGroup.nemos-carpentry.seats": "Seats", + "itemGroup.nemos-carpentry.tables": "Tables", "nemos-carpentry.container.carpenters_workbench": "Carpenter's Workbench" -} \ No newline at end of file +} diff --git a/src/main/generated/assets/nemos-carpentry/lang/zh_cn.json b/src/main/generated/assets/nemos-carpentry/lang/zh_cn.json new file mode 100644 index 00000000..0acabf9b --- /dev/null +++ b/src/main/generated/assets/nemos-carpentry/lang/zh_cn.json @@ -0,0 +1,640 @@ +{ + "block.nemos-carpentry.acacia_barrel_seat": "金合欢木木桶座椅", + "block.nemos-carpentry.acacia_black_chair_pascal": "金合欢木黑色帕斯卡椅子", + "block.nemos-carpentry.acacia_black_stained_glass_door": "金合欢木黑色染色玻璃门", + "block.nemos-carpentry.acacia_blue_chair_pascal": "金合欢木蓝色帕斯卡椅子", + "block.nemos-carpentry.acacia_blue_stained_glass_door": "金合欢木蓝色染色玻璃门", + "block.nemos-carpentry.acacia_brown_chair_pascal": "金合欢木棕色帕斯卡椅子", + "block.nemos-carpentry.acacia_brown_stained_glass_door": "金合欢木棕色染色玻璃门", + "block.nemos-carpentry.acacia_chair": "金合欢木椅子", + "block.nemos-carpentry.acacia_chair_felix": "金合欢木菲利克斯椅子", + "block.nemos-carpentry.acacia_chair_gregory": "金合欢木格雷戈里椅子", + "block.nemos-carpentry.acacia_chair_lukas": "金合欢木卢卡斯椅子", + "block.nemos-carpentry.acacia_chair_lukas_natural": "金合欢木自然款卢卡斯椅子", + "block.nemos-carpentry.acacia_chair_pascal": "金合欢木帕斯卡椅子", + "block.nemos-carpentry.acacia_chair_tommy": "金合欢木汤米椅子", + "block.nemos-carpentry.acacia_chair_tommy_natural": "金合欢木自然款汤米椅子", + "block.nemos-carpentry.acacia_coffee_table": "金合欢木茶几", + "block.nemos-carpentry.acacia_coffee_table_pascal": "金合欢木帕斯卡茶几", + "block.nemos-carpentry.acacia_cyan_chair_pascal": "金合欢木青色帕斯卡椅子", + "block.nemos-carpentry.acacia_cyan_stained_glass_door": "金合欢木青色染色玻璃门", + "block.nemos-carpentry.acacia_glass_door": "金合欢木玻璃门", + "block.nemos-carpentry.acacia_gray_chair_pascal": "金合欢木灰色帕斯卡椅子", + "block.nemos-carpentry.acacia_gray_stained_glass_door": "金合欢木灰色染色玻璃门", + "block.nemos-carpentry.acacia_green_chair_pascal": "金合欢木绿色帕斯卡椅子", + "block.nemos-carpentry.acacia_green_stained_glass_door": "金合欢木绿色染色玻璃门", + "block.nemos-carpentry.acacia_ladder": "金合欢木梯子", + "block.nemos-carpentry.acacia_light_blue_chair_pascal": "金合欢木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.acacia_light_blue_stained_glass_door": "金合欢木淡蓝色染色玻璃门", + "block.nemos-carpentry.acacia_light_gray_chair_pascal": "金合欢木淡灰色帕斯卡椅子", + "block.nemos-carpentry.acacia_light_gray_stained_glass_door": "金合欢木淡灰色染色玻璃门", + "block.nemos-carpentry.acacia_lime_chair_pascal": "金合欢木黄绿色帕斯卡椅子", + "block.nemos-carpentry.acacia_lime_stained_glass_door": "金合欢木黄绿色染色玻璃门", + "block.nemos-carpentry.acacia_log_seat": "金合欢木原木座椅", + "block.nemos-carpentry.acacia_magenta_chair_pascal": "金合欢木品红色帕斯卡椅子", + "block.nemos-carpentry.acacia_magenta_stained_glass_door": "金合欢木品红色染色玻璃门", + "block.nemos-carpentry.acacia_orange_chair_pascal": "金合欢木橙色帕斯卡椅子", + "block.nemos-carpentry.acacia_orange_stained_glass_door": "金合欢木橙色染色玻璃门", + "block.nemos-carpentry.acacia_park_bench": "金合欢木公园长椅", + "block.nemos-carpentry.acacia_pink_chair_pascal": "金合欢木粉红色帕斯卡椅子", + "block.nemos-carpentry.acacia_pink_stained_glass_door": "金合欢木粉红色染色玻璃门", + "block.nemos-carpentry.acacia_purple_chair_pascal": "金合欢木紫色帕斯卡椅子", + "block.nemos-carpentry.acacia_purple_stained_glass_door": "金合欢木紫色染色玻璃门", + "block.nemos-carpentry.acacia_red_chair_pascal": "金合欢木红色帕斯卡椅子", + "block.nemos-carpentry.acacia_red_stained_glass_door": "金合欢木红色染色玻璃门", + "block.nemos-carpentry.acacia_standing_table": "金合欢木高脚桌", + "block.nemos-carpentry.acacia_table_the_classic": "金合欢木经典款桌子", + "block.nemos-carpentry.acacia_white_chair_pascal": "金合欢木白色帕斯卡椅子", + "block.nemos-carpentry.acacia_white_stained_glass_door": "金合欢木白色染色玻璃门", + "block.nemos-carpentry.acacia_yellow_chair_pascal": "金合欢木黄色帕斯卡椅子", + "block.nemos-carpentry.acacia_yellow_stained_glass_door": "金合欢木黄色染色玻璃门", + "block.nemos-carpentry.bamboo_barrel_seat": "竹木桶座椅", + "block.nemos-carpentry.bamboo_black_chair_pascal": "竹黑色帕斯卡椅子", + "block.nemos-carpentry.bamboo_black_stained_glass_door": "竹黑色染色玻璃门", + "block.nemos-carpentry.bamboo_blue_chair_pascal": "竹蓝色帕斯卡椅子", + "block.nemos-carpentry.bamboo_blue_stained_glass_door": "竹蓝色染色玻璃门", + "block.nemos-carpentry.bamboo_brown_chair_pascal": "竹棕色帕斯卡椅子", + "block.nemos-carpentry.bamboo_brown_stained_glass_door": "竹棕色染色玻璃门", + "block.nemos-carpentry.bamboo_chair": "竹椅子", + "block.nemos-carpentry.bamboo_chair_felix": "竹菲利克斯椅子", + "block.nemos-carpentry.bamboo_chair_gregory": "竹格雷戈里椅子", + "block.nemos-carpentry.bamboo_chair_lukas": "竹卢卡斯椅子", + "block.nemos-carpentry.bamboo_chair_lukas_natural": "竹自然款卢卡斯椅子", + "block.nemos-carpentry.bamboo_chair_pascal": "竹帕斯卡椅子", + "block.nemos-carpentry.bamboo_chair_tommy": "竹汤米椅子", + "block.nemos-carpentry.bamboo_chair_tommy_natural": "竹自然款汤米椅子", + "block.nemos-carpentry.bamboo_coffee_table": "竹茶几", + "block.nemos-carpentry.bamboo_coffee_table_pascal": "竹帕斯卡茶几", + "block.nemos-carpentry.bamboo_cyan_chair_pascal": "竹青色帕斯卡椅子", + "block.nemos-carpentry.bamboo_cyan_stained_glass_door": "竹青色染色玻璃门", + "block.nemos-carpentry.bamboo_glass_door": "竹玻璃门", + "block.nemos-carpentry.bamboo_gray_chair_pascal": "竹灰色帕斯卡椅子", + "block.nemos-carpentry.bamboo_gray_stained_glass_door": "竹灰色染色玻璃门", + "block.nemos-carpentry.bamboo_green_chair_pascal": "竹绿色帕斯卡椅子", + "block.nemos-carpentry.bamboo_green_stained_glass_door": "竹绿色染色玻璃门", + "block.nemos-carpentry.bamboo_ladder": "竹梯子", + "block.nemos-carpentry.bamboo_light_blue_chair_pascal": "竹淡蓝色帕斯卡椅子", + "block.nemos-carpentry.bamboo_light_blue_stained_glass_door": "竹淡蓝色染色玻璃门", + "block.nemos-carpentry.bamboo_light_gray_chair_pascal": "竹淡灰色帕斯卡椅子", + "block.nemos-carpentry.bamboo_light_gray_stained_glass_door": "竹淡灰色染色玻璃门", + "block.nemos-carpentry.bamboo_lime_chair_pascal": "竹黄绿色帕斯卡椅子", + "block.nemos-carpentry.bamboo_lime_stained_glass_door": "竹黄绿色染色玻璃门", + "block.nemos-carpentry.bamboo_magenta_chair_pascal": "竹品红色帕斯卡椅子", + "block.nemos-carpentry.bamboo_magenta_stained_glass_door": "竹品红色染色玻璃门", + "block.nemos-carpentry.bamboo_orange_chair_pascal": "竹橙色帕斯卡椅子", + "block.nemos-carpentry.bamboo_orange_stained_glass_door": "竹橙色染色玻璃门", + "block.nemos-carpentry.bamboo_park_bench": "竹公园长椅", + "block.nemos-carpentry.bamboo_pink_chair_pascal": "竹粉红色帕斯卡椅子", + "block.nemos-carpentry.bamboo_pink_stained_glass_door": "竹粉红色染色玻璃门", + "block.nemos-carpentry.bamboo_purple_chair_pascal": "竹紫色帕斯卡椅子", + "block.nemos-carpentry.bamboo_purple_stained_glass_door": "竹紫色染色玻璃门", + "block.nemos-carpentry.bamboo_red_chair_pascal": "竹红色帕斯卡椅子", + "block.nemos-carpentry.bamboo_red_stained_glass_door": "竹红色染色玻璃门", + "block.nemos-carpentry.bamboo_standing_table": "竹高脚桌", + "block.nemos-carpentry.bamboo_table_the_classic": "竹经典款桌子", + "block.nemos-carpentry.bamboo_white_chair_pascal": "竹白色帕斯卡椅子", + "block.nemos-carpentry.bamboo_white_stained_glass_door": "竹白色染色玻璃门", + "block.nemos-carpentry.bamboo_yellow_chair_pascal": "竹黄色帕斯卡椅子", + "block.nemos-carpentry.bamboo_yellow_stained_glass_door": "竹黄色染色玻璃门", + "block.nemos-carpentry.birch_barrel_seat": "白桦木木桶座椅", + "block.nemos-carpentry.birch_black_chair_pascal": "白桦木黑色帕斯卡椅子", + "block.nemos-carpentry.birch_black_stained_glass_door": "白桦木黑色染色玻璃门", + "block.nemos-carpentry.birch_blue_chair_pascal": "白桦木蓝色帕斯卡椅子", + "block.nemos-carpentry.birch_blue_stained_glass_door": "白桦木蓝色染色玻璃门", + "block.nemos-carpentry.birch_brown_chair_pascal": "白桦木棕色帕斯卡椅子", + "block.nemos-carpentry.birch_brown_stained_glass_door": "白桦木棕色染色玻璃门", + "block.nemos-carpentry.birch_chair": "白桦木椅子", + "block.nemos-carpentry.birch_chair_felix": "白桦木菲利克斯椅子", + "block.nemos-carpentry.birch_chair_gregory": "白桦木格雷戈里椅子", + "block.nemos-carpentry.birch_chair_lukas": "白桦木卢卡斯椅子", + "block.nemos-carpentry.birch_chair_lukas_natural": "白桦木自然款卢卡斯椅子", + "block.nemos-carpentry.birch_chair_pascal": "白桦木帕斯卡椅子", + "block.nemos-carpentry.birch_chair_tommy": "白桦木汤米椅子", + "block.nemos-carpentry.birch_chair_tommy_natural": "白桦木自然款汤米椅子", + "block.nemos-carpentry.birch_coffee_table": "白桦木茶几", + "block.nemos-carpentry.birch_coffee_table_pascal": "白桦木帕斯卡茶几", + "block.nemos-carpentry.birch_cyan_chair_pascal": "白桦木青色帕斯卡椅子", + "block.nemos-carpentry.birch_cyan_stained_glass_door": "白桦木青色染色玻璃门", + "block.nemos-carpentry.birch_glass_door": "白桦木玻璃门", + "block.nemos-carpentry.birch_gray_chair_pascal": "白桦木灰色帕斯卡椅子", + "block.nemos-carpentry.birch_gray_stained_glass_door": "白桦木灰色染色玻璃门", + "block.nemos-carpentry.birch_green_chair_pascal": "白桦木绿色帕斯卡椅子", + "block.nemos-carpentry.birch_green_stained_glass_door": "白桦木绿色染色玻璃门", + "block.nemos-carpentry.birch_ladder": "白桦木梯子", + "block.nemos-carpentry.birch_light_blue_chair_pascal": "白桦木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.birch_light_blue_stained_glass_door": "白桦木淡蓝色染色玻璃门", + "block.nemos-carpentry.birch_light_gray_chair_pascal": "白桦木淡灰色帕斯卡椅子", + "block.nemos-carpentry.birch_light_gray_stained_glass_door": "白桦木淡灰色染色玻璃门", + "block.nemos-carpentry.birch_lime_chair_pascal": "白桦木黄绿色帕斯卡椅子", + "block.nemos-carpentry.birch_lime_stained_glass_door": "白桦木黄绿色染色玻璃门", + "block.nemos-carpentry.birch_log_seat": "白桦木原木座椅", + "block.nemos-carpentry.birch_magenta_chair_pascal": "白桦木品红色帕斯卡椅子", + "block.nemos-carpentry.birch_magenta_stained_glass_door": "白桦木品红色染色玻璃门", + "block.nemos-carpentry.birch_orange_chair_pascal": "白桦木橙色帕斯卡椅子", + "block.nemos-carpentry.birch_orange_stained_glass_door": "白桦木橙色染色玻璃门", + "block.nemos-carpentry.birch_park_bench": "白桦木公园长椅", + "block.nemos-carpentry.birch_pink_chair_pascal": "白桦木粉红色帕斯卡椅子", + "block.nemos-carpentry.birch_pink_stained_glass_door": "白桦木粉红色染色玻璃门", + "block.nemos-carpentry.birch_purple_chair_pascal": "白桦木紫色帕斯卡椅子", + "block.nemos-carpentry.birch_purple_stained_glass_door": "白桦木紫色染色玻璃门", + "block.nemos-carpentry.birch_red_chair_pascal": "白桦木红色帕斯卡椅子", + "block.nemos-carpentry.birch_red_stained_glass_door": "白桦木红色染色玻璃门", + "block.nemos-carpentry.birch_standing_table": "白桦木高脚桌", + "block.nemos-carpentry.birch_table_the_classic": "白桦木经典款桌子", + "block.nemos-carpentry.birch_white_chair_pascal": "白桦木白色帕斯卡椅子", + "block.nemos-carpentry.birch_white_stained_glass_door": "白桦木白色染色玻璃门", + "block.nemos-carpentry.birch_yellow_chair_pascal": "白桦木黄色帕斯卡椅子", + "block.nemos-carpentry.birch_yellow_stained_glass_door": "白桦木黄色染色玻璃门", + "block.nemos-carpentry.black_bar_chair": "黑色吧椅", + "block.nemos-carpentry.black_barber_chair": "黑色理发椅", + "block.nemos-carpentry.blue_bar_chair": "蓝色吧椅", + "block.nemos-carpentry.blue_barber_chair": "蓝色理发椅", + "block.nemos-carpentry.bound_bamboo_ladder": "捆扎竹梯", + "block.nemos-carpentry.brown_bar_chair": "棕色吧椅", + "block.nemos-carpentry.brown_barber_chair": "棕色理发椅", + "block.nemos-carpentry.carpenters_workbench": "木匠工作台", + "block.nemos-carpentry.cherry_barrel_seat": "樱花木木桶座椅", + "block.nemos-carpentry.cherry_black_chair_pascal": "樱花木黑色帕斯卡椅子", + "block.nemos-carpentry.cherry_black_stained_glass_door": "樱花木黑色染色玻璃门", + "block.nemos-carpentry.cherry_blue_chair_pascal": "樱花木蓝色帕斯卡椅子", + "block.nemos-carpentry.cherry_blue_stained_glass_door": "樱花木蓝色染色玻璃门", + "block.nemos-carpentry.cherry_brown_chair_pascal": "樱花木棕色帕斯卡椅子", + "block.nemos-carpentry.cherry_brown_stained_glass_door": "樱花木棕色染色玻璃门", + "block.nemos-carpentry.cherry_chair": "樱花木椅子", + "block.nemos-carpentry.cherry_chair_felix": "樱花木菲利克斯椅子", + "block.nemos-carpentry.cherry_chair_gregory": "樱花木格雷戈里椅子", + "block.nemos-carpentry.cherry_chair_lukas": "樱花木卢卡斯椅子", + "block.nemos-carpentry.cherry_chair_lukas_natural": "樱花木自然款卢卡斯椅子", + "block.nemos-carpentry.cherry_chair_pascal": "樱花木帕斯卡椅子", + "block.nemos-carpentry.cherry_chair_tommy": "樱花木汤米椅子", + "block.nemos-carpentry.cherry_chair_tommy_natural": "樱花木自然款汤米椅子", + "block.nemos-carpentry.cherry_coffee_table": "樱花木茶几", + "block.nemos-carpentry.cherry_coffee_table_pascal": "樱花木帕斯卡茶几", + "block.nemos-carpentry.cherry_cyan_chair_pascal": "樱花木青色帕斯卡椅子", + "block.nemos-carpentry.cherry_cyan_stained_glass_door": "樱花木青色染色玻璃门", + "block.nemos-carpentry.cherry_glass_door": "樱花木玻璃门", + "block.nemos-carpentry.cherry_gray_chair_pascal": "樱花木灰色帕斯卡椅子", + "block.nemos-carpentry.cherry_gray_stained_glass_door": "樱花木灰色染色玻璃门", + "block.nemos-carpentry.cherry_green_chair_pascal": "樱花木绿色帕斯卡椅子", + "block.nemos-carpentry.cherry_green_stained_glass_door": "樱花木绿色染色玻璃门", + "block.nemos-carpentry.cherry_ladder": "樱花木梯子", + "block.nemos-carpentry.cherry_light_blue_chair_pascal": "樱花木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.cherry_light_blue_stained_glass_door": "樱花木淡蓝色染色玻璃门", + "block.nemos-carpentry.cherry_light_gray_chair_pascal": "樱花木淡灰色帕斯卡椅子", + "block.nemos-carpentry.cherry_light_gray_stained_glass_door": "樱花木淡灰色染色玻璃门", + "block.nemos-carpentry.cherry_lime_chair_pascal": "樱花木黄绿色帕斯卡椅子", + "block.nemos-carpentry.cherry_lime_stained_glass_door": "樱花木黄绿色染色玻璃门", + "block.nemos-carpentry.cherry_log_seat": "樱花木原木座椅", + "block.nemos-carpentry.cherry_magenta_chair_pascal": "樱花木品红色帕斯卡椅子", + "block.nemos-carpentry.cherry_magenta_stained_glass_door": "樱花木品红色染色玻璃门", + "block.nemos-carpentry.cherry_orange_chair_pascal": "樱花木橙色帕斯卡椅子", + "block.nemos-carpentry.cherry_orange_stained_glass_door": "樱花木橙色染色玻璃门", + "block.nemos-carpentry.cherry_park_bench": "樱花木公园长椅", + "block.nemos-carpentry.cherry_pink_chair_pascal": "樱花木粉红色帕斯卡椅子", + "block.nemos-carpentry.cherry_pink_stained_glass_door": "樱花木粉红色染色玻璃门", + "block.nemos-carpentry.cherry_purple_chair_pascal": "樱花木紫色帕斯卡椅子", + "block.nemos-carpentry.cherry_purple_stained_glass_door": "樱花木紫色染色玻璃门", + "block.nemos-carpentry.cherry_red_chair_pascal": "樱花木红色帕斯卡椅子", + "block.nemos-carpentry.cherry_red_stained_glass_door": "樱花木红色染色玻璃门", + "block.nemos-carpentry.cherry_standing_table": "樱花木高脚桌", + "block.nemos-carpentry.cherry_table_the_classic": "樱花木经典款桌子", + "block.nemos-carpentry.cherry_white_chair_pascal": "樱花木白色帕斯卡椅子", + "block.nemos-carpentry.cherry_white_stained_glass_door": "樱花木白色染色玻璃门", + "block.nemos-carpentry.cherry_yellow_chair_pascal": "樱花木黄色帕斯卡椅子", + "block.nemos-carpentry.cherry_yellow_stained_glass_door": "樱花木黄色染色玻璃门", + "block.nemos-carpentry.crimson_barrel_seat": "绯红木木桶座椅", + "block.nemos-carpentry.crimson_black_chair_pascal": "绯红木黑色帕斯卡椅子", + "block.nemos-carpentry.crimson_black_stained_glass_door": "绯红木黑色染色玻璃门", + "block.nemos-carpentry.crimson_blue_chair_pascal": "绯红木蓝色帕斯卡椅子", + "block.nemos-carpentry.crimson_blue_stained_glass_door": "绯红木蓝色染色玻璃门", + "block.nemos-carpentry.crimson_brown_chair_pascal": "绯红木棕色帕斯卡椅子", + "block.nemos-carpentry.crimson_brown_stained_glass_door": "绯红木棕色染色玻璃门", + "block.nemos-carpentry.crimson_chair": "绯红木椅子", + "block.nemos-carpentry.crimson_chair_felix": "绯红木菲利克斯椅子", + "block.nemos-carpentry.crimson_chair_gregory": "绯红木格雷戈里椅子", + "block.nemos-carpentry.crimson_chair_lukas": "绯红木卢卡斯椅子", + "block.nemos-carpentry.crimson_chair_lukas_natural": "绯红木自然款卢卡斯椅子", + "block.nemos-carpentry.crimson_chair_pascal": "绯红木帕斯卡椅子", + "block.nemos-carpentry.crimson_chair_tommy": "绯红木汤米椅子", + "block.nemos-carpentry.crimson_chair_tommy_natural": "绯红木自然款汤米椅子", + "block.nemos-carpentry.crimson_coffee_table": "绯红木茶几", + "block.nemos-carpentry.crimson_coffee_table_pascal": "绯红木帕斯卡茶几", + "block.nemos-carpentry.crimson_cyan_chair_pascal": "绯红木青色帕斯卡椅子", + "block.nemos-carpentry.crimson_cyan_stained_glass_door": "绯红木青色染色玻璃门", + "block.nemos-carpentry.crimson_glass_door": "绯红木玻璃门", + "block.nemos-carpentry.crimson_gray_chair_pascal": "绯红木灰色帕斯卡椅子", + "block.nemos-carpentry.crimson_gray_stained_glass_door": "绯红木灰色染色玻璃门", + "block.nemos-carpentry.crimson_green_chair_pascal": "绯红木绿色帕斯卡椅子", + "block.nemos-carpentry.crimson_green_stained_glass_door": "绯红木绿色染色玻璃门", + "block.nemos-carpentry.crimson_ladder": "绯红木梯子", + "block.nemos-carpentry.crimson_light_blue_chair_pascal": "绯红木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.crimson_light_blue_stained_glass_door": "绯红木淡蓝色染色玻璃门", + "block.nemos-carpentry.crimson_light_gray_chair_pascal": "绯红木淡灰色帕斯卡椅子", + "block.nemos-carpentry.crimson_light_gray_stained_glass_door": "绯红木淡灰色染色玻璃门", + "block.nemos-carpentry.crimson_lime_chair_pascal": "绯红木黄绿色帕斯卡椅子", + "block.nemos-carpentry.crimson_lime_stained_glass_door": "绯红木黄绿色染色玻璃门", + "block.nemos-carpentry.crimson_magenta_chair_pascal": "绯红木品红色帕斯卡椅子", + "block.nemos-carpentry.crimson_magenta_stained_glass_door": "绯红木品红色染色玻璃门", + "block.nemos-carpentry.crimson_orange_chair_pascal": "绯红木橙色帕斯卡椅子", + "block.nemos-carpentry.crimson_orange_stained_glass_door": "绯红木橙色染色玻璃门", + "block.nemos-carpentry.crimson_park_bench": "绯红木公园长椅", + "block.nemos-carpentry.crimson_pink_chair_pascal": "绯红木粉红色帕斯卡椅子", + "block.nemos-carpentry.crimson_pink_stained_glass_door": "绯红木粉红色染色玻璃门", + "block.nemos-carpentry.crimson_purple_chair_pascal": "绯红木紫色帕斯卡椅子", + "block.nemos-carpentry.crimson_purple_stained_glass_door": "绯红木紫色染色玻璃门", + "block.nemos-carpentry.crimson_red_chair_pascal": "绯红木红色帕斯卡椅子", + "block.nemos-carpentry.crimson_red_stained_glass_door": "绯红木红色染色玻璃门", + "block.nemos-carpentry.crimson_standing_table": "绯红木高脚桌", + "block.nemos-carpentry.crimson_stem_seat": "绯红菌柄座椅", + "block.nemos-carpentry.crimson_table_the_classic": "绯红木经典款桌子", + "block.nemos-carpentry.crimson_white_chair_pascal": "绯红木白色帕斯卡椅子", + "block.nemos-carpentry.crimson_white_stained_glass_door": "绯红木白色染色玻璃门", + "block.nemos-carpentry.crimson_yellow_chair_pascal": "绯红木黄色帕斯卡椅子", + "block.nemos-carpentry.crimson_yellow_stained_glass_door": "绯红木黄色染色玻璃门", + "block.nemos-carpentry.cyan_bar_chair": "青色吧椅", + "block.nemos-carpentry.cyan_barber_chair": "青色理发椅", + "block.nemos-carpentry.dark_oak_barrel_seat": "深色橡木木桶座椅", + "block.nemos-carpentry.dark_oak_black_chair_pascal": "深色橡木黑色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_black_stained_glass_door": "深色橡木黑色染色玻璃门", + "block.nemos-carpentry.dark_oak_blue_chair_pascal": "深色橡木蓝色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_blue_stained_glass_door": "深色橡木蓝色染色玻璃门", + "block.nemos-carpentry.dark_oak_brown_chair_pascal": "深色橡木棕色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_brown_stained_glass_door": "深色橡木棕色染色玻璃门", + "block.nemos-carpentry.dark_oak_chair": "深色橡木椅子", + "block.nemos-carpentry.dark_oak_chair_felix": "深色橡木菲利克斯椅子", + "block.nemos-carpentry.dark_oak_chair_gregory": "深色橡木格雷戈里椅子", + "block.nemos-carpentry.dark_oak_chair_lukas": "深色橡木卢卡斯椅子", + "block.nemos-carpentry.dark_oak_chair_lukas_natural": "深色橡木自然款卢卡斯椅子", + "block.nemos-carpentry.dark_oak_chair_pascal": "深色橡木帕斯卡椅子", + "block.nemos-carpentry.dark_oak_chair_tommy": "深色橡木汤米椅子", + "block.nemos-carpentry.dark_oak_chair_tommy_natural": "深色橡木自然款汤米椅子", + "block.nemos-carpentry.dark_oak_coffee_table": "深色橡木茶几", + "block.nemos-carpentry.dark_oak_coffee_table_pascal": "深色橡木帕斯卡茶几", + "block.nemos-carpentry.dark_oak_cyan_chair_pascal": "深色橡木青色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_cyan_stained_glass_door": "深色橡木青色染色玻璃门", + "block.nemos-carpentry.dark_oak_glass_door": "深色橡木玻璃门", + "block.nemos-carpentry.dark_oak_gray_chair_pascal": "深色橡木灰色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_gray_stained_glass_door": "深色橡木灰色染色玻璃门", + "block.nemos-carpentry.dark_oak_green_chair_pascal": "深色橡木绿色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_green_stained_glass_door": "深色橡木绿色染色玻璃门", + "block.nemos-carpentry.dark_oak_ladder": "深色橡木梯子", + "block.nemos-carpentry.dark_oak_light_blue_chair_pascal": "深色橡木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_light_blue_stained_glass_door": "深色橡木淡蓝色染色玻璃门", + "block.nemos-carpentry.dark_oak_light_gray_chair_pascal": "深色橡木淡灰色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_light_gray_stained_glass_door": "深色橡木淡灰色染色玻璃门", + "block.nemos-carpentry.dark_oak_lime_chair_pascal": "深色橡木黄绿色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_lime_stained_glass_door": "深色橡木黄绿色染色玻璃门", + "block.nemos-carpentry.dark_oak_log_seat": "深色橡木原木座椅", + "block.nemos-carpentry.dark_oak_magenta_chair_pascal": "深色橡木品红色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_magenta_stained_glass_door": "深色橡木品红色染色玻璃门", + "block.nemos-carpentry.dark_oak_orange_chair_pascal": "深色橡木橙色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_orange_stained_glass_door": "深色橡木橙色染色玻璃门", + "block.nemos-carpentry.dark_oak_park_bench": "深色橡木公园长椅", + "block.nemos-carpentry.dark_oak_pink_chair_pascal": "深色橡木粉红色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_pink_stained_glass_door": "深色橡木粉红色染色玻璃门", + "block.nemos-carpentry.dark_oak_purple_chair_pascal": "深色橡木紫色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_purple_stained_glass_door": "深色橡木紫色染色玻璃门", + "block.nemos-carpentry.dark_oak_red_chair_pascal": "深色橡木红色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_red_stained_glass_door": "深色橡木红色染色玻璃门", + "block.nemos-carpentry.dark_oak_standing_table": "深色橡木高脚桌", + "block.nemos-carpentry.dark_oak_table_the_classic": "深色橡木经典款桌子", + "block.nemos-carpentry.dark_oak_white_chair_pascal": "深色橡木白色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_white_stained_glass_door": "深色橡木白色染色玻璃门", + "block.nemos-carpentry.dark_oak_yellow_chair_pascal": "深色橡木黄色帕斯卡椅子", + "block.nemos-carpentry.dark_oak_yellow_stained_glass_door": "深色橡木黄色染色玻璃门", + "block.nemos-carpentry.gray_bar_chair": "灰色吧椅", + "block.nemos-carpentry.gray_barber_chair": "灰色理发椅", + "block.nemos-carpentry.green_bar_chair": "绿色吧椅", + "block.nemos-carpentry.green_barber_chair": "绿色理发椅", + "block.nemos-carpentry.jungle_barrel_seat": "丛林木木桶座椅", + "block.nemos-carpentry.jungle_black_chair_pascal": "丛林木黑色帕斯卡椅子", + "block.nemos-carpentry.jungle_black_stained_glass_door": "丛林木黑色染色玻璃门", + "block.nemos-carpentry.jungle_blue_chair_pascal": "丛林木蓝色帕斯卡椅子", + "block.nemos-carpentry.jungle_blue_stained_glass_door": "丛林木蓝色染色玻璃门", + "block.nemos-carpentry.jungle_brown_chair_pascal": "丛林木棕色帕斯卡椅子", + "block.nemos-carpentry.jungle_brown_stained_glass_door": "丛林木棕色染色玻璃门", + "block.nemos-carpentry.jungle_chair": "丛林木椅子", + "block.nemos-carpentry.jungle_chair_felix": "丛林木菲利克斯椅子", + "block.nemos-carpentry.jungle_chair_gregory": "丛林木格雷戈里椅子", + "block.nemos-carpentry.jungle_chair_lukas": "丛林木卢卡斯椅子", + "block.nemos-carpentry.jungle_chair_lukas_natural": "丛林木自然款卢卡斯椅子", + "block.nemos-carpentry.jungle_chair_pascal": "丛林木帕斯卡椅子", + "block.nemos-carpentry.jungle_chair_tommy": "丛林木汤米椅子", + "block.nemos-carpentry.jungle_chair_tommy_natural": "丛林木自然款汤米椅子", + "block.nemos-carpentry.jungle_coffee_table": "丛林木茶几", + "block.nemos-carpentry.jungle_coffee_table_pascal": "丛林木帕斯卡茶几", + "block.nemos-carpentry.jungle_cyan_chair_pascal": "丛林木青色帕斯卡椅子", + "block.nemos-carpentry.jungle_cyan_stained_glass_door": "丛林木青色染色玻璃门", + "block.nemos-carpentry.jungle_glass_door": "丛林木玻璃门", + "block.nemos-carpentry.jungle_gray_chair_pascal": "丛林木灰色帕斯卡椅子", + "block.nemos-carpentry.jungle_gray_stained_glass_door": "丛林木灰色染色玻璃门", + "block.nemos-carpentry.jungle_green_chair_pascal": "丛林木绿色帕斯卡椅子", + "block.nemos-carpentry.jungle_green_stained_glass_door": "丛林木绿色染色玻璃门", + "block.nemos-carpentry.jungle_ladder": "丛林木梯子", + "block.nemos-carpentry.jungle_light_blue_chair_pascal": "丛林木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.jungle_light_blue_stained_glass_door": "丛林木淡蓝色染色玻璃门", + "block.nemos-carpentry.jungle_light_gray_chair_pascal": "丛林木淡灰色帕斯卡椅子", + "block.nemos-carpentry.jungle_light_gray_stained_glass_door": "丛林木淡灰色染色玻璃门", + "block.nemos-carpentry.jungle_lime_chair_pascal": "丛林木黄绿色帕斯卡椅子", + "block.nemos-carpentry.jungle_lime_stained_glass_door": "丛林木黄绿色染色玻璃门", + "block.nemos-carpentry.jungle_log_seat": "丛林木原木座椅", + "block.nemos-carpentry.jungle_magenta_chair_pascal": "丛林木品红色帕斯卡椅子", + "block.nemos-carpentry.jungle_magenta_stained_glass_door": "丛林木品红色染色玻璃门", + "block.nemos-carpentry.jungle_orange_chair_pascal": "丛林木橙色帕斯卡椅子", + "block.nemos-carpentry.jungle_orange_stained_glass_door": "丛林木橙色染色玻璃门", + "block.nemos-carpentry.jungle_park_bench": "丛林木公园长椅", + "block.nemos-carpentry.jungle_pink_chair_pascal": "丛林木粉红色帕斯卡椅子", + "block.nemos-carpentry.jungle_pink_stained_glass_door": "丛林木粉红色染色玻璃门", + "block.nemos-carpentry.jungle_purple_chair_pascal": "丛林木紫色帕斯卡椅子", + "block.nemos-carpentry.jungle_purple_stained_glass_door": "丛林木紫色染色玻璃门", + "block.nemos-carpentry.jungle_red_chair_pascal": "丛林木红色帕斯卡椅子", + "block.nemos-carpentry.jungle_red_stained_glass_door": "丛林木红色染色玻璃门", + "block.nemos-carpentry.jungle_standing_table": "丛林木高脚桌", + "block.nemos-carpentry.jungle_table_the_classic": "丛林木经典款桌子", + "block.nemos-carpentry.jungle_white_chair_pascal": "丛林木白色帕斯卡椅子", + "block.nemos-carpentry.jungle_white_stained_glass_door": "丛林木白色染色玻璃门", + "block.nemos-carpentry.jungle_yellow_chair_pascal": "丛林木黄色帕斯卡椅子", + "block.nemos-carpentry.jungle_yellow_stained_glass_door": "丛林木黄色染色玻璃门", + "block.nemos-carpentry.light_blue_bar_chair": "淡蓝色吧椅", + "block.nemos-carpentry.light_blue_barber_chair": "淡蓝色理发椅", + "block.nemos-carpentry.light_gray_bar_chair": "淡灰色吧椅", + "block.nemos-carpentry.light_gray_barber_chair": "淡灰色理发椅", + "block.nemos-carpentry.lime_bar_chair": "黄绿色吧椅", + "block.nemos-carpentry.lime_barber_chair": "黄绿色理发椅", + "block.nemos-carpentry.magenta_bar_chair": "品红色吧椅", + "block.nemos-carpentry.magenta_barber_chair": "品红色理发椅", + "block.nemos-carpentry.mangrove_barrel_seat": "红树木木桶座椅", + "block.nemos-carpentry.mangrove_black_chair_pascal": "红树木黑色帕斯卡椅子", + "block.nemos-carpentry.mangrove_black_stained_glass_door": "红树木黑色染色玻璃门", + "block.nemos-carpentry.mangrove_blue_chair_pascal": "红树木蓝色帕斯卡椅子", + "block.nemos-carpentry.mangrove_blue_stained_glass_door": "红树木蓝色染色玻璃门", + "block.nemos-carpentry.mangrove_brown_chair_pascal": "红树木棕色帕斯卡椅子", + "block.nemos-carpentry.mangrove_brown_stained_glass_door": "红树木棕色染色玻璃门", + "block.nemos-carpentry.mangrove_chair": "红树木椅子", + "block.nemos-carpentry.mangrove_chair_felix": "红树木菲利克斯椅子", + "block.nemos-carpentry.mangrove_chair_gregory": "红树木格雷戈里椅子", + "block.nemos-carpentry.mangrove_chair_lukas": "红树木卢卡斯椅子", + "block.nemos-carpentry.mangrove_chair_lukas_natural": "红树木自然款卢卡斯椅子", + "block.nemos-carpentry.mangrove_chair_pascal": "红树木帕斯卡椅子", + "block.nemos-carpentry.mangrove_chair_tommy": "红树木汤米椅子", + "block.nemos-carpentry.mangrove_chair_tommy_natural": "红树木自然款汤米椅子", + "block.nemos-carpentry.mangrove_coffee_table": "红树木茶几", + "block.nemos-carpentry.mangrove_coffee_table_pascal": "红树木帕斯卡茶几", + "block.nemos-carpentry.mangrove_cyan_chair_pascal": "红树木青色帕斯卡椅子", + "block.nemos-carpentry.mangrove_cyan_stained_glass_door": "红树木青色染色玻璃门", + "block.nemos-carpentry.mangrove_glass_door": "红树木玻璃门", + "block.nemos-carpentry.mangrove_gray_chair_pascal": "红树木灰色帕斯卡椅子", + "block.nemos-carpentry.mangrove_gray_stained_glass_door": "红树木灰色染色玻璃门", + "block.nemos-carpentry.mangrove_green_chair_pascal": "红树木绿色帕斯卡椅子", + "block.nemos-carpentry.mangrove_green_stained_glass_door": "红树木绿色染色玻璃门", + "block.nemos-carpentry.mangrove_ladder": "红树木梯子", + "block.nemos-carpentry.mangrove_light_blue_chair_pascal": "红树木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.mangrove_light_blue_stained_glass_door": "红树木淡蓝色染色玻璃门", + "block.nemos-carpentry.mangrove_light_gray_chair_pascal": "红树木淡灰色帕斯卡椅子", + "block.nemos-carpentry.mangrove_light_gray_stained_glass_door": "红树木淡灰色染色玻璃门", + "block.nemos-carpentry.mangrove_lime_chair_pascal": "红树木黄绿色帕斯卡椅子", + "block.nemos-carpentry.mangrove_lime_stained_glass_door": "红树木黄绿色染色玻璃门", + "block.nemos-carpentry.mangrove_log_seat": "红树木原木座椅", + "block.nemos-carpentry.mangrove_magenta_chair_pascal": "红树木品红色帕斯卡椅子", + "block.nemos-carpentry.mangrove_magenta_stained_glass_door": "红树木品红色染色玻璃门", + "block.nemos-carpentry.mangrove_orange_chair_pascal": "红树木橙色帕斯卡椅子", + "block.nemos-carpentry.mangrove_orange_stained_glass_door": "红树木橙色染色玻璃门", + "block.nemos-carpentry.mangrove_park_bench": "红树木公园长椅", + "block.nemos-carpentry.mangrove_pink_chair_pascal": "红树木粉红色帕斯卡椅子", + "block.nemos-carpentry.mangrove_pink_stained_glass_door": "红树木粉红色染色玻璃门", + "block.nemos-carpentry.mangrove_purple_chair_pascal": "红树木紫色帕斯卡椅子", + "block.nemos-carpentry.mangrove_purple_stained_glass_door": "红树木紫色染色玻璃门", + "block.nemos-carpentry.mangrove_red_chair_pascal": "红树木红色帕斯卡椅子", + "block.nemos-carpentry.mangrove_red_stained_glass_door": "红树木红色染色玻璃门", + "block.nemos-carpentry.mangrove_standing_table": "红树木高脚桌", + "block.nemos-carpentry.mangrove_table_the_classic": "红树木经典款桌子", + "block.nemos-carpentry.mangrove_white_chair_pascal": "红树木白色帕斯卡椅子", + "block.nemos-carpentry.mangrove_white_stained_glass_door": "红树木白色染色玻璃门", + "block.nemos-carpentry.mangrove_yellow_chair_pascal": "红树木黄色帕斯卡椅子", + "block.nemos-carpentry.mangrove_yellow_stained_glass_door": "红树木黄色染色玻璃门", + "block.nemos-carpentry.oak_barrel_seat": "橡木木桶座椅", + "block.nemos-carpentry.oak_black_chair_pascal": "橡木黑色帕斯卡椅子", + "block.nemos-carpentry.oak_black_stained_glass_door": "橡木黑色染色玻璃门", + "block.nemos-carpentry.oak_blue_chair_pascal": "橡木蓝色帕斯卡椅子", + "block.nemos-carpentry.oak_blue_stained_glass_door": "橡木蓝色染色玻璃门", + "block.nemos-carpentry.oak_brown_chair_pascal": "橡木棕色帕斯卡椅子", + "block.nemos-carpentry.oak_brown_stained_glass_door": "橡木棕色染色玻璃门", + "block.nemos-carpentry.oak_chair": "橡木椅子", + "block.nemos-carpentry.oak_chair_felix": "橡木菲利克斯椅子", + "block.nemos-carpentry.oak_chair_gregory": "橡木格雷戈里椅子", + "block.nemos-carpentry.oak_chair_lukas": "橡木卢卡斯椅子", + "block.nemos-carpentry.oak_chair_lukas_natural": "橡木自然款卢卡斯椅子", + "block.nemos-carpentry.oak_chair_pascal": "橡木帕斯卡椅子", + "block.nemos-carpentry.oak_chair_tommy": "橡木汤米椅子", + "block.nemos-carpentry.oak_chair_tommy_natural": "橡木自然款汤米椅子", + "block.nemos-carpentry.oak_coffee_table": "橡木茶几", + "block.nemos-carpentry.oak_coffee_table_pascal": "橡木帕斯卡茶几", + "block.nemos-carpentry.oak_cyan_chair_pascal": "橡木青色帕斯卡椅子", + "block.nemos-carpentry.oak_cyan_stained_glass_door": "橡木青色染色玻璃门", + "block.nemos-carpentry.oak_glass_door": "橡木玻璃门", + "block.nemos-carpentry.oak_gray_chair_pascal": "橡木灰色帕斯卡椅子", + "block.nemos-carpentry.oak_gray_stained_glass_door": "橡木灰色染色玻璃门", + "block.nemos-carpentry.oak_green_chair_pascal": "橡木绿色帕斯卡椅子", + "block.nemos-carpentry.oak_green_stained_glass_door": "橡木绿色染色玻璃门", + "block.nemos-carpentry.oak_light_blue_chair_pascal": "橡木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.oak_light_blue_stained_glass_door": "橡木淡蓝色染色玻璃门", + "block.nemos-carpentry.oak_light_gray_chair_pascal": "橡木淡灰色帕斯卡椅子", + "block.nemos-carpentry.oak_light_gray_stained_glass_door": "橡木淡灰色染色玻璃门", + "block.nemos-carpentry.oak_lime_chair_pascal": "橡木黄绿色帕斯卡椅子", + "block.nemos-carpentry.oak_lime_stained_glass_door": "橡木黄绿色染色玻璃门", + "block.nemos-carpentry.oak_log_seat": "橡木原木座椅", + "block.nemos-carpentry.oak_magenta_chair_pascal": "橡木品红色帕斯卡椅子", + "block.nemos-carpentry.oak_magenta_stained_glass_door": "橡木品红色染色玻璃门", + "block.nemos-carpentry.oak_orange_chair_pascal": "橡木橙色帕斯卡椅子", + "block.nemos-carpentry.oak_orange_stained_glass_door": "橡木橙色染色玻璃门", + "block.nemos-carpentry.oak_park_bench": "橡木公园长椅", + "block.nemos-carpentry.oak_pink_chair_pascal": "橡木粉红色帕斯卡椅子", + "block.nemos-carpentry.oak_pink_stained_glass_door": "橡木粉红色染色玻璃门", + "block.nemos-carpentry.oak_purple_chair_pascal": "橡木紫色帕斯卡椅子", + "block.nemos-carpentry.oak_purple_stained_glass_door": "橡木紫色染色玻璃门", + "block.nemos-carpentry.oak_red_chair_pascal": "橡木红色帕斯卡椅子", + "block.nemos-carpentry.oak_red_stained_glass_door": "橡木红色染色玻璃门", + "block.nemos-carpentry.oak_standing_table": "橡木高脚桌", + "block.nemos-carpentry.oak_table_the_classic": "橡木经典款桌子", + "block.nemos-carpentry.oak_white_chair_pascal": "橡木白色帕斯卡椅子", + "block.nemos-carpentry.oak_white_stained_glass_door": "橡木白色染色玻璃门", + "block.nemos-carpentry.oak_yellow_chair_pascal": "橡木黄色帕斯卡椅子", + "block.nemos-carpentry.oak_yellow_stained_glass_door": "橡木黄色染色玻璃门", + "block.nemos-carpentry.orange_bar_chair": "橙色吧椅", + "block.nemos-carpentry.orange_barber_chair": "橙色理发椅", + "block.nemos-carpentry.pale_oak_barrel_seat": "苍白橡木木桶座椅", + "block.nemos-carpentry.pale_oak_black_chair_pascal": "苍白橡木黑色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_black_stained_glass_door": "苍白橡木黑色染色玻璃门", + "block.nemos-carpentry.pale_oak_blue_chair_pascal": "苍白橡木蓝色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_blue_stained_glass_door": "苍白橡木蓝色染色玻璃门", + "block.nemos-carpentry.pale_oak_brown_chair_pascal": "苍白橡木棕色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_brown_stained_glass_door": "苍白橡木棕色染色玻璃门", + "block.nemos-carpentry.pale_oak_chair": "苍白橡木椅子", + "block.nemos-carpentry.pale_oak_chair_felix": "苍白橡木菲利克斯椅子", + "block.nemos-carpentry.pale_oak_chair_gregory": "苍白橡木格雷戈里椅子", + "block.nemos-carpentry.pale_oak_chair_lukas": "苍白橡木卢卡斯椅子", + "block.nemos-carpentry.pale_oak_chair_lukas_natural": "苍白橡木自然款卢卡斯椅子", + "block.nemos-carpentry.pale_oak_chair_pascal": "苍白橡木帕斯卡椅子", + "block.nemos-carpentry.pale_oak_chair_tommy": "苍白橡木汤米椅子", + "block.nemos-carpentry.pale_oak_chair_tommy_natural": "苍白橡木自然款汤米椅子", + "block.nemos-carpentry.pale_oak_coffee_table": "苍白橡木茶几", + "block.nemos-carpentry.pale_oak_coffee_table_pascal": "苍白橡木帕斯卡茶几", + "block.nemos-carpentry.pale_oak_cyan_chair_pascal": "苍白橡木青色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_cyan_stained_glass_door": "苍白橡木青色染色玻璃门", + "block.nemos-carpentry.pale_oak_glass_door": "苍白橡木玻璃门", + "block.nemos-carpentry.pale_oak_gray_chair_pascal": "苍白橡木灰色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_gray_stained_glass_door": "苍白橡木灰色染色玻璃门", + "block.nemos-carpentry.pale_oak_green_chair_pascal": "苍白橡木绿色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_green_stained_glass_door": "苍白橡木绿色染色玻璃门", + "block.nemos-carpentry.pale_oak_ladder": "苍白橡木梯子", + "block.nemos-carpentry.pale_oak_light_blue_chair_pascal": "苍白橡木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_light_blue_stained_glass_door": "苍白橡木淡蓝色染色玻璃门", + "block.nemos-carpentry.pale_oak_light_gray_chair_pascal": "苍白橡木淡灰色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_light_gray_stained_glass_door": "苍白橡木淡灰色染色玻璃门", + "block.nemos-carpentry.pale_oak_lime_chair_pascal": "苍白橡木黄绿色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_lime_stained_glass_door": "苍白橡木黄绿色染色玻璃门", + "block.nemos-carpentry.pale_oak_log_seat": "苍白橡木原木座椅", + "block.nemos-carpentry.pale_oak_magenta_chair_pascal": "苍白橡木品红色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_magenta_stained_glass_door": "苍白橡木品红色染色玻璃门", + "block.nemos-carpentry.pale_oak_orange_chair_pascal": "苍白橡木橙色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_orange_stained_glass_door": "苍白橡木橙色染色玻璃门", + "block.nemos-carpentry.pale_oak_park_bench": "苍白橡木公园长椅", + "block.nemos-carpentry.pale_oak_pink_chair_pascal": "苍白橡木粉红色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_pink_stained_glass_door": "苍白橡木粉红色染色玻璃门", + "block.nemos-carpentry.pale_oak_purple_chair_pascal": "苍白橡木紫色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_purple_stained_glass_door": "苍白橡木紫色染色玻璃门", + "block.nemos-carpentry.pale_oak_red_chair_pascal": "苍白橡木红色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_red_stained_glass_door": "苍白橡木红色染色玻璃门", + "block.nemos-carpentry.pale_oak_standing_table": "苍白橡木高脚桌", + "block.nemos-carpentry.pale_oak_table_the_classic": "苍白橡木经典款桌子", + "block.nemos-carpentry.pale_oak_white_chair_pascal": "苍白橡木白色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_white_stained_glass_door": "苍白橡木白色染色玻璃门", + "block.nemos-carpentry.pale_oak_yellow_chair_pascal": "苍白橡木黄色帕斯卡椅子", + "block.nemos-carpentry.pale_oak_yellow_stained_glass_door": "苍白橡木黄色染色玻璃门", + "block.nemos-carpentry.pink_bar_chair": "粉红色吧椅", + "block.nemos-carpentry.pink_barber_chair": "粉红色理发椅", + "block.nemos-carpentry.purple_bar_chair": "紫色吧椅", + "block.nemos-carpentry.purple_barber_chair": "紫色理发椅", + "block.nemos-carpentry.red_bar_chair": "红色吧椅", + "block.nemos-carpentry.red_barber_chair": "红色理发椅", + "block.nemos-carpentry.spruce_barrel_seat": "云杉木木桶座椅", + "block.nemos-carpentry.spruce_black_chair_pascal": "云杉木黑色帕斯卡椅子", + "block.nemos-carpentry.spruce_black_stained_glass_door": "云杉木黑色染色玻璃门", + "block.nemos-carpentry.spruce_blue_chair_pascal": "云杉木蓝色帕斯卡椅子", + "block.nemos-carpentry.spruce_blue_stained_glass_door": "云杉木蓝色染色玻璃门", + "block.nemos-carpentry.spruce_brown_chair_pascal": "云杉木棕色帕斯卡椅子", + "block.nemos-carpentry.spruce_brown_stained_glass_door": "云杉木棕色染色玻璃门", + "block.nemos-carpentry.spruce_chair": "云杉木椅子", + "block.nemos-carpentry.spruce_chair_felix": "云杉木菲利克斯椅子", + "block.nemos-carpentry.spruce_chair_gregory": "云杉木格雷戈里椅子", + "block.nemos-carpentry.spruce_chair_lukas": "云杉木卢卡斯椅子", + "block.nemos-carpentry.spruce_chair_lukas_natural": "云杉木自然款卢卡斯椅子", + "block.nemos-carpentry.spruce_chair_pascal": "云杉木帕斯卡椅子", + "block.nemos-carpentry.spruce_chair_tommy": "云杉木汤米椅子", + "block.nemos-carpentry.spruce_chair_tommy_natural": "云杉木自然款汤米椅子", + "block.nemos-carpentry.spruce_coffee_table": "云杉木茶几", + "block.nemos-carpentry.spruce_coffee_table_pascal": "云杉木帕斯卡茶几", + "block.nemos-carpentry.spruce_cyan_chair_pascal": "云杉木青色帕斯卡椅子", + "block.nemos-carpentry.spruce_cyan_stained_glass_door": "云杉木青色染色玻璃门", + "block.nemos-carpentry.spruce_glass_door": "云杉木玻璃门", + "block.nemos-carpentry.spruce_gray_chair_pascal": "云杉木灰色帕斯卡椅子", + "block.nemos-carpentry.spruce_gray_stained_glass_door": "云杉木灰色染色玻璃门", + "block.nemos-carpentry.spruce_green_chair_pascal": "云杉木绿色帕斯卡椅子", + "block.nemos-carpentry.spruce_green_stained_glass_door": "云杉木绿色染色玻璃门", + "block.nemos-carpentry.spruce_ladder": "云杉木梯子", + "block.nemos-carpentry.spruce_light_blue_chair_pascal": "云杉木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.spruce_light_blue_stained_glass_door": "云杉木淡蓝色染色玻璃门", + "block.nemos-carpentry.spruce_light_gray_chair_pascal": "云杉木淡灰色帕斯卡椅子", + "block.nemos-carpentry.spruce_light_gray_stained_glass_door": "云杉木淡灰色染色玻璃门", + "block.nemos-carpentry.spruce_lime_chair_pascal": "云杉木黄绿色帕斯卡椅子", + "block.nemos-carpentry.spruce_lime_stained_glass_door": "云杉木黄绿色染色玻璃门", + "block.nemos-carpentry.spruce_log_seat": "云杉木原木座椅", + "block.nemos-carpentry.spruce_magenta_chair_pascal": "云杉木品红色帕斯卡椅子", + "block.nemos-carpentry.spruce_magenta_stained_glass_door": "云杉木品红色染色玻璃门", + "block.nemos-carpentry.spruce_orange_chair_pascal": "云杉木橙色帕斯卡椅子", + "block.nemos-carpentry.spruce_orange_stained_glass_door": "云杉木橙色染色玻璃门", + "block.nemos-carpentry.spruce_park_bench": "云杉木公园长椅", + "block.nemos-carpentry.spruce_pink_chair_pascal": "云杉木粉红色帕斯卡椅子", + "block.nemos-carpentry.spruce_pink_stained_glass_door": "云杉木粉红色染色玻璃门", + "block.nemos-carpentry.spruce_purple_chair_pascal": "云杉木紫色帕斯卡椅子", + "block.nemos-carpentry.spruce_purple_stained_glass_door": "云杉木紫色染色玻璃门", + "block.nemos-carpentry.spruce_red_chair_pascal": "云杉木红色帕斯卡椅子", + "block.nemos-carpentry.spruce_red_stained_glass_door": "云杉木红色染色玻璃门", + "block.nemos-carpentry.spruce_standing_table": "云杉木高脚桌", + "block.nemos-carpentry.spruce_table_the_classic": "云杉木经典款桌子", + "block.nemos-carpentry.spruce_white_chair_pascal": "云杉木白色帕斯卡椅子", + "block.nemos-carpentry.spruce_white_stained_glass_door": "云杉木白色染色玻璃门", + "block.nemos-carpentry.spruce_yellow_chair_pascal": "云杉木黄色帕斯卡椅子", + "block.nemos-carpentry.spruce_yellow_stained_glass_door": "云杉木黄色染色玻璃门", + "block.nemos-carpentry.warped_barrel_seat": "诡异木木桶座椅", + "block.nemos-carpentry.warped_black_chair_pascal": "诡异木黑色帕斯卡椅子", + "block.nemos-carpentry.warped_black_stained_glass_door": "诡异木黑色染色玻璃门", + "block.nemos-carpentry.warped_blue_chair_pascal": "诡异木蓝色帕斯卡椅子", + "block.nemos-carpentry.warped_blue_stained_glass_door": "诡异木蓝色染色玻璃门", + "block.nemos-carpentry.warped_brown_chair_pascal": "诡异木棕色帕斯卡椅子", + "block.nemos-carpentry.warped_brown_stained_glass_door": "诡异木棕色染色玻璃门", + "block.nemos-carpentry.warped_chair": "诡异木椅子", + "block.nemos-carpentry.warped_chair_felix": "诡异木菲利克斯椅子", + "block.nemos-carpentry.warped_chair_gregory": "诡异木格雷戈里椅子", + "block.nemos-carpentry.warped_chair_lukas": "诡异木卢卡斯椅子", + "block.nemos-carpentry.warped_chair_lukas_natural": "诡异木自然款卢卡斯椅子", + "block.nemos-carpentry.warped_chair_pascal": "诡异木帕斯卡椅子", + "block.nemos-carpentry.warped_chair_tommy": "诡异木汤米椅子", + "block.nemos-carpentry.warped_chair_tommy_natural": "诡异木自然款汤米椅子", + "block.nemos-carpentry.warped_coffee_table": "诡异木茶几", + "block.nemos-carpentry.warped_coffee_table_pascal": "诡异木帕斯卡茶几", + "block.nemos-carpentry.warped_cyan_chair_pascal": "诡异木青色帕斯卡椅子", + "block.nemos-carpentry.warped_cyan_stained_glass_door": "诡异木青色染色玻璃门", + "block.nemos-carpentry.warped_glass_door": "诡异木玻璃门", + "block.nemos-carpentry.warped_gray_chair_pascal": "诡异木灰色帕斯卡椅子", + "block.nemos-carpentry.warped_gray_stained_glass_door": "诡异木灰色染色玻璃门", + "block.nemos-carpentry.warped_green_chair_pascal": "诡异木绿色帕斯卡椅子", + "block.nemos-carpentry.warped_green_stained_glass_door": "诡异木绿色染色玻璃门", + "block.nemos-carpentry.warped_ladder": "诡异木梯子", + "block.nemos-carpentry.warped_light_blue_chair_pascal": "诡异木淡蓝色帕斯卡椅子", + "block.nemos-carpentry.warped_light_blue_stained_glass_door": "诡异木淡蓝色染色玻璃门", + "block.nemos-carpentry.warped_light_gray_chair_pascal": "诡异木淡灰色帕斯卡椅子", + "block.nemos-carpentry.warped_light_gray_stained_glass_door": "诡异木淡灰色染色玻璃门", + "block.nemos-carpentry.warped_lime_chair_pascal": "诡异木黄绿色帕斯卡椅子", + "block.nemos-carpentry.warped_lime_stained_glass_door": "诡异木黄绿色染色玻璃门", + "block.nemos-carpentry.warped_magenta_chair_pascal": "诡异木品红色帕斯卡椅子", + "block.nemos-carpentry.warped_magenta_stained_glass_door": "诡异木品红色染色玻璃门", + "block.nemos-carpentry.warped_orange_chair_pascal": "诡异木橙色帕斯卡椅子", + "block.nemos-carpentry.warped_orange_stained_glass_door": "诡异木橙色染色玻璃门", + "block.nemos-carpentry.warped_park_bench": "诡异木公园长椅", + "block.nemos-carpentry.warped_pink_chair_pascal": "诡异木粉红色帕斯卡椅子", + "block.nemos-carpentry.warped_pink_stained_glass_door": "诡异木粉红色染色玻璃门", + "block.nemos-carpentry.warped_purple_chair_pascal": "诡异木紫色帕斯卡椅子", + "block.nemos-carpentry.warped_purple_stained_glass_door": "诡异木紫色染色玻璃门", + "block.nemos-carpentry.warped_red_chair_pascal": "诡异木红色帕斯卡椅子", + "block.nemos-carpentry.warped_red_stained_glass_door": "诡异木红色染色玻璃门", + "block.nemos-carpentry.warped_standing_table": "诡异木高脚桌", + "block.nemos-carpentry.warped_stem_seat": "诡异菌柄座椅", + "block.nemos-carpentry.warped_table_the_classic": "诡异木经典款桌子", + "block.nemos-carpentry.warped_white_chair_pascal": "诡异木白色帕斯卡椅子", + "block.nemos-carpentry.warped_white_stained_glass_door": "诡异木白色染色玻璃门", + "block.nemos-carpentry.warped_yellow_chair_pascal": "诡异木黄色帕斯卡椅子", + "block.nemos-carpentry.warped_yellow_stained_glass_door": "诡异木黄色染色玻璃门", + "block.nemos-carpentry.white_bar_chair": "白色吧椅", + "block.nemos-carpentry.white_barber_chair": "白色理发椅", + "block.nemos-carpentry.yellow_bar_chair": "黄色吧椅", + "block.nemos-carpentry.yellow_barber_chair": "黄色理发椅", + "item.nemos-carpentry.acacia_glass_door_frame": "金合欢木玻璃门框", + "item.nemos-carpentry.bamboo_glass_door_frame": "竹玻璃门框", + "item.nemos-carpentry.birch_glass_door_frame": "白桦木玻璃门框", + "item.nemos-carpentry.cherry_glass_door_frame": "樱花木玻璃门框", + "item.nemos-carpentry.crimson_glass_door_frame": "绯红木玻璃门框", + "item.nemos-carpentry.dark_oak_glass_door_frame": "深色橡木玻璃门框", + "item.nemos-carpentry.jungle_glass_door_frame": "丛林木玻璃门框", + "item.nemos-carpentry.mangrove_glass_door_frame": "红树木玻璃门框", + "item.nemos-carpentry.oak_glass_door_frame": "橡木玻璃门框", + "item.nemos-carpentry.pale_oak_glass_door_frame": "苍白橡木玻璃门框", + "item.nemos-carpentry.spruce_glass_door_frame": "云杉木玻璃门框", + "item.nemos-carpentry.warped_glass_door_frame": "诡异木玻璃门框", + "nemos-carpentry.container.carpenters_workbench": "木匠工作台", + "jei.nemos-carpentry.category.carpentry": "木匠工作台", + "itemGroup.nemos-carpentry.nemos_carpentry": "尼莫的木工坊", + "itemGroup.nemos-carpentry.seats": "座椅", + "itemGroup.nemos-carpentry.tables": "桌类", + "itemGroup.nemos-carpentry.outdoor": "户外" +} diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/datagen/langdatagen/EnglishLanguageProvider.java b/src/main/java/com/nemonotfound/nemos/carpentry/datagen/langdatagen/EnglishLanguageProvider.java index 69e49650..c345f455 100644 --- a/src/main/java/com/nemonotfound/nemos/carpentry/datagen/langdatagen/EnglishLanguageProvider.java +++ b/src/main/java/com/nemonotfound/nemos/carpentry/datagen/langdatagen/EnglishLanguageProvider.java @@ -361,6 +361,12 @@ public void generateTranslations(HolderLookup.@NotNull Provider provider, Transl translationBuilder.add(CarpentryBlocks.SPRUCE_CHAIR_GREGORY, "Spruce Chair \"Gregory\""); translationBuilder.add(CarpentryBlocks.WARPED_CHAIR_GREGORY, "Warped Chair \"Gregory\""); + translationBuilder.add("jei.nemos-carpentry.category.carpentry", "Carpenter's Workbench"); + translationBuilder.add("itemGroup.nemos-carpentry.nemos_carpentry", "Nemo's Carpentry"); + translationBuilder.add("itemGroup.nemos-carpentry.seats", "Seats"); + translationBuilder.add("itemGroup.nemos-carpentry.tables", "Tables"); + translationBuilder.add("itemGroup.nemos-carpentry.outdoor", "Outdoor"); + try { Optional optionalPath = dataOutput.getModContainer().findPath("en_us.json"); diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/item/CarpentryCreativeModeTabs.java b/src/main/java/com/nemonotfound/nemos/carpentry/item/CarpentryCreativeModeTabs.java index 44d27c0d..e7b1bc74 100644 --- a/src/main/java/com/nemonotfound/nemos/carpentry/item/CarpentryCreativeModeTabs.java +++ b/src/main/java/com/nemonotfound/nemos/carpentry/item/CarpentryCreativeModeTabs.java @@ -30,7 +30,7 @@ public static void registerItemGroups() { private static void registerNemosCarpentryItemGroup(Item iconItem) { CreativeModeTab ITEM_GROUP = FabricItemGroup.builder() .icon(() -> new ItemStack(iconItem)) - .title(Component.literal("Nemo's Carpentry")) + .title(Component.translatable("itemGroup.nemos-carpentry.nemos_carpentry")) .displayItems((context, entries) -> { entries.accept(CarpentryItems.CARPENTERS_WORKBENCH); entries.accept(CarpentryItems.ACACIA_LADDER); @@ -670,11 +670,10 @@ private static void registerNemosCarpentryItemGroup(Item iconItem) { Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, Identifier.fromNamespaceAndPath(MOD_ID, NEMOS_CARPENTRY_GROUP_ID), ITEM_GROUP); } - //TODO: Add translation private static void registerSeatsItemGroup(Item iconItem) { CreativeModeTab ITEM_GROUP = FabricItemGroup.builder() .icon(() -> new ItemStack(iconItem)) - .title(Component.translatable("Seats")) + .title(Component.translatable("itemGroup.nemos-carpentry.seats")) .displayItems((context, entries) -> { entries.accept(CarpentryItems.ACACIA_CHAIR); entries.accept(CarpentryItems.BAMBOO_CHAIR); @@ -1037,11 +1036,10 @@ private static void registerSeatsItemGroup(Item iconItem) { Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, Identifier.fromNamespaceAndPath(MOD_ID, NEMOS_CARPENTRY_GROUP_ID + "_seats"), ITEM_GROUP); } - //TODO: add translation private static void registerTablesItemGroup(Item iconItem) { CreativeModeTab ITEM_GROUP = FabricItemGroup.builder() .icon(() -> new ItemStack(iconItem)) - .title(Component.translatable("Tables")) + .title(Component.translatable("itemGroup.nemos-carpentry.tables")) .displayItems((context, entries) -> { entries.accept(CarpentryItems.ACACIA_TABLE_THE_CLASSIC); entries.accept(CarpentryItems.BAMBOO_TABLE_THE_CLASSIC); @@ -1097,11 +1095,10 @@ private static void registerTablesItemGroup(Item iconItem) { Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, Identifier.fromNamespaceAndPath(MOD_ID, NEMOS_CARPENTRY_GROUP_ID + "_tables"), ITEM_GROUP); } - //TODO: add translation private static void registerOutdoorItemGroup(Item iconItem) { CreativeModeTab ITEM_GROUP = FabricItemGroup.builder() .icon(() -> new ItemStack(iconItem)) - .title(Component.translatable("Outdoor")) + .title(Component.translatable("itemGroup.nemos-carpentry.outdoor")) .displayItems((context, entries) -> { entries.accept(CarpentryItems.ACACIA_LADDER); entries.accept(CarpentryItems.BAMBOO_LADDER); diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/jei/CarpentryRecipeCategory.java b/src/main/java/com/nemonotfound/nemos/carpentry/jei/CarpentryRecipeCategory.java new file mode 100644 index 00000000..6f077d61 --- /dev/null +++ b/src/main/java/com/nemonotfound/nemos/carpentry/jei/CarpentryRecipeCategory.java @@ -0,0 +1,73 @@ +package com.nemonotfound.nemos.carpentry.jei; + +import com.nemonotfound.nemos.carpentry.item.CarpentryItems; +import com.nemonotfound.nemos.carpentry.recipe.display.CarpentryRecipeDisplay; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.widgets.IRecipeExtrasBuilder; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.category.AbstractRecipeCategory; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.List; + +public class CarpentryRecipeCategory extends AbstractRecipeCategory { + + public static final int WIDTH = 82; + public static final int HEIGHT = 52; + + public CarpentryRecipeCategory(IGuiHelper guiHelper) { + super( + NemosCarpentryJeiRecipeTypes.CARPENTRY, + Component.translatable("jei.nemos-carpentry.category.carpentry"), + guiHelper.createDrawableItemLike(CarpentryItems.CARPENTERS_WORKBENCH), + WIDTH, + HEIGHT + ); + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, CarpentryRecipeDisplay.GroupEntry recipe, IFocusGroup focuses) { + List ingredients = recipe.ingredients(); + List inputCounts = recipe.inputCounts(); + + addInputSlot(builder, ingredients, inputCounts, 0, 1, ingredients.size() > 1 ? 1 : 9); + if (ingredients.size() > 1) { + addInputSlot(builder, ingredients, inputCounts, 1, 1, 27); + } + + builder.addOutputSlot(61, 18) + .setOutputSlotBackground() + .add(recipe.recipe().optionDisplay()); + } + + @Override + public void createRecipeExtras(IRecipeExtrasBuilder builder, CarpentryRecipeDisplay.GroupEntry recipe, IFocusGroup focuses) { + if (recipe.ingredients().size() > 1) { + builder.addRecipePlusSign().setPosition(22, 19); + } + builder.addRecipeArrow().setPosition(34, 18); + } + + @Override + public Identifier getIdentifier(CarpentryRecipeDisplay.GroupEntry recipe) { + return recipe.recipe().recipe() + .map(recipeHolder -> recipeHolder.id().identifier()) + .orElse(null); + } + + private static void addInputSlot(IRecipeLayoutBuilder builder, List ingredients, List inputCounts, int index, int x, int y) { + builder.addInputSlot(x, y) + .setStandardSlotBackground() + .addItemStacks(copyWithCount(ingredients.get(index), inputCounts.get(index))); + } + + private static List copyWithCount(Ingredient ingredient, int count) { + return ingredient.items() + .map(holder -> new ItemStack(holder.value(), count)) + .toList(); + } +} diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiPlugin.java b/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiPlugin.java new file mode 100644 index 00000000..32793439 --- /dev/null +++ b/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiPlugin.java @@ -0,0 +1,129 @@ +package com.nemonotfound.nemos.carpentry.jei; + +import com.nemonotfound.nemos.carpentry.interfaces.CarpentryRecipeManagerGetter; +import com.nemonotfound.nemos.carpentry.item.CarpentryItems; +import com.nemonotfound.nemos.carpentry.recipe.display.CarpentryRecipeDisplay; +import com.nemonotfound.nemos.carpentry.screen.CarpentryMenu; +import com.nemonotfound.nemos.carpentry.screen.CarpentryMenuTypes; +import com.nemonotfound.nemos.carpentry.screen.CarpentryScreen; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.registration.IGuiHandlerRegistration; +import mezz.jei.api.registration.IRecipeCatalystRegistration; +import mezz.jei.api.registration.IRecipeCategoryRegistration; +import mezz.jei.api.registration.IRecipeRegistration; +import mezz.jei.api.registration.IRecipeTransferRegistration; +import mezz.jei.api.runtime.IJeiRuntime; +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.nemonotfound.nemos.carpentry.NemosCarpentry.MOD_ID; + +@JeiPlugin +public class NemosCarpentryJeiPlugin implements IModPlugin { + + private static final Identifier UID = Identifier.fromNamespaceAndPath(MOD_ID, "jei_plugin"); + private static final Set REGISTERED_RECIPE_KEYS = new HashSet<>(); + private static @Nullable IJeiRuntime runtime; + + @Override + public @NotNull Identifier getPluginUid() { + return UID; + } + + @Override + public void registerCategories(IRecipeCategoryRegistration registration) { + IGuiHelper guiHelper = registration.getJeiHelpers().getGuiHelper(); + registration.addRecipeCategories(new CarpentryRecipeCategory(guiHelper)); + } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + List recipes = getCarpentryRecipes(); + if (!recipes.isEmpty()) { + registration.addRecipes(NemosCarpentryJeiRecipeTypes.CARPENTRY, recipes); + recipes.stream().map(NemosCarpentryJeiPlugin::recipeKey).forEach(REGISTERED_RECIPE_KEYS::add); + } + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addCraftingStation(NemosCarpentryJeiRecipeTypes.CARPENTRY, CarpentryItems.CARPENTERS_WORKBENCH); + } + + @Override + public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) { + registration.addRecipeTransferHandler(CarpentryMenu.class, CarpentryMenuTypes.CARPENTRY_SCREEN_HANDLER, + NemosCarpentryJeiRecipeTypes.CARPENTRY, 0, 2, 3, 36); + } + + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registration) { + registration.addRecipeClickArea(CarpentryScreen.class, 134, 28, 24, 24, NemosCarpentryJeiRecipeTypes.CARPENTRY); + } + + @Override + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { + runtime = jeiRuntime; + addRecipesAtRuntime(getCarpentryRecipes()); + } + + @Override + public void onRuntimeUnavailable() { + runtime = null; + REGISTERED_RECIPE_KEYS.clear(); + } + + public static void onCarpentryRecipesSynced(CarpentryRecipeDisplay.Grouping grouping) { + addRecipesAtRuntime(grouping.entries()); + } + + private static List getCarpentryRecipes() { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + return List.of(); + } + + CarpentryRecipeDisplay.Grouping grouping = ((CarpentryRecipeManagerGetter) minecraft.level) + .nemo_sCarpentry$getModRecipeManager() + .carpentryRecipes(); + + return grouping.entries(); + } + + private static void addRecipesAtRuntime(List recipes) { + IJeiRuntime currentRuntime = runtime; + if (currentRuntime == null || recipes.isEmpty()) { + return; + } + + List newRecipes = recipes.stream() + .filter(recipe -> !REGISTERED_RECIPE_KEYS.contains(recipeKey(recipe))) + .toList(); + + if (!newRecipes.isEmpty()) { + currentRuntime.getRecipeManager().addRecipes(NemosCarpentryJeiRecipeTypes.CARPENTRY, newRecipes); + newRecipes.stream().map(NemosCarpentryJeiPlugin::recipeKey).forEach(REGISTERED_RECIPE_KEYS::add); + } + } + + private static String recipeKey(CarpentryRecipeDisplay.GroupEntry recipe) { + return recipe.recipe().recipe() + .map(recipeHolder -> recipeHolder.id().identifier().toString()) + .orElseGet(() -> recipe.ingredients().stream() + .map(ingredient -> ingredient.items() + .map(holder -> BuiltInRegistries.ITEM.getKey(holder.value()).toString()) + .sorted() + .collect(Collectors.joining("|"))) + .collect(Collectors.joining(",")) + ";" + recipe.inputCounts() + "->" + recipe.recipe().optionDisplay()); + } +} diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiRecipeTypes.java b/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiRecipeTypes.java new file mode 100644 index 00000000..c097f3e5 --- /dev/null +++ b/src/main/java/com/nemonotfound/nemos/carpentry/jei/NemosCarpentryJeiRecipeTypes.java @@ -0,0 +1,19 @@ +package com.nemonotfound.nemos.carpentry.jei; + +import com.nemonotfound.nemos.carpentry.recipe.display.CarpentryRecipeDisplay; +import mezz.jei.api.recipe.types.IRecipeType; + +import static com.nemonotfound.nemos.carpentry.NemosCarpentry.MOD_ID; + +public final class NemosCarpentryJeiRecipeTypes { + + public static final IRecipeType CARPENTRY = + IRecipeType.create(MOD_ID, "carpentry", CarpentryRecipeDisplay.GroupEntry.class); + + private NemosCarpentryJeiRecipeTypes() { + } + + public static IRecipeType carpentry() { + return CARPENTRY; + } +} diff --git a/src/main/java/com/nemonotfound/nemos/carpentry/mixin/ClientPacketListenerMixin.java b/src/main/java/com/nemonotfound/nemos/carpentry/mixin/ClientPacketListenerMixin.java index e0269095..239abadc 100644 --- a/src/main/java/com/nemonotfound/nemos/carpentry/mixin/ClientPacketListenerMixin.java +++ b/src/main/java/com/nemonotfound/nemos/carpentry/mixin/ClientPacketListenerMixin.java @@ -36,5 +36,15 @@ protected ClientPacketListenerMixin(Minecraft minecraft, Connection connection, Minecraft minecraft = ((MinecraftGetter) this).nemo_sCarpentry$getMinecraft(); PacketUtils.ensureRunningOnSameThread(packet, this, minecraft.packetProcessor()); this.modRecipeManager = new ClientCarpentryRecipeManager(packet.carpentryRecipes()); + nemo_sCarpentry$syncJeiRecipes(packet.carpentryRecipes()); + } + + @Unique + private static void nemo_sCarpentry$syncJeiRecipes(CarpentryRecipeDisplay.Grouping grouping) { + try { + Class pluginClass = Class.forName("com.nemonotfound.nemos.carpentry.jei.NemosCarpentryJeiPlugin"); + pluginClass.getMethod("onCarpentryRecipesSynced", CarpentryRecipeDisplay.Grouping.class).invoke(null, grouping); + } catch (ReflectiveOperationException | LinkageError ignored) { + } } } diff --git a/src/main/resources/en_us.json b/src/main/resources/en_us.json index ccb6888a..a92d600d 100644 --- a/src/main/resources/en_us.json +++ b/src/main/resources/en_us.json @@ -283,6 +283,7 @@ "item.nemos-carpentry.warped_glass_door_frame": "Warped Glass Door Frame", "nemos-carpentry.container.carpenters_workbench": "Carpenter's Workbench", + "jei.nemos-carpentry.category.carpentry": "Carpenter's Workbench", "block.nemos-carpentry.acacia_chair_lukas": "Acacia Chair \"Lukas\"", "block.nemos-carpentry.bamboo_chair_lukas": "Bamboo Chair \"Lukas\"", @@ -309,4 +310,4 @@ "block.nemos-carpentry.oak_chair_lukas_natural": "Oak Chair \"Lukas\" - Natural", "block.nemos-carpentry.spruce_chair_lukas_natural": "Spruce Chair \"Lukas\" - Natural", "block.nemos-carpentry.warped_chair_lukas_natural": "Warped Chair \"Lukas\" - Natural" -} \ No newline at end of file +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d17ce2b4..523d353b 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -22,6 +22,9 @@ ], "client": [ "com.nemonotfound.nemos.carpentry.NemosCarpentryClient" + ], + "jei_mod_plugin": [ + "com.nemonotfound.nemos.carpentry.jei.NemosCarpentryJeiPlugin" ] }, "mixins": [ @@ -36,7 +39,7 @@ "fabric-api": "*" }, "suggests": { - "another-mod": "*" + "jei": "*" }, "accessWidener": "nemos-carpentry.accesswidener" -} \ No newline at end of file +}