diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index a0a937ed0cb..f51d500f0c5 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -66,6 +66,7 @@ "behaviour.lighter.uses": "%d :sǝsn buıuıɐɯǝᴚ", "behaviour.memory_card.client_msg.cleared": "pǝɹɐǝןɔ uoıʇɐɹnbıɟuoɔ pǝɹoʇS", "behaviour.memory_card.client_msg.copied": "uoıʇɐɹnbıɟuoɔ ǝuıɥɔɐɯ pǝıdoƆ", + "behaviour.memory_card.client_msg.missing_items": "uoıʇɐɹnbıɟuoɔ ǝʇsɐd oʇ pǝɹınbǝɹ sɯǝʇı buıssıW", "behaviour.memory_card.client_msg.pasted": "uoıʇɐɹnbıɟuoɔ ǝuıɥɔɐɯ pǝıןddⱯ", "behaviour.memory_card.copy_target": "%s :buıʎdoƆ", "behaviour.memory_card.disabled": "ɹ§pǝןqɐsıᗡɔ§", @@ -1745,6 +1746,7 @@ "config.gtceu.option.addLoot": "ʇooꞀppɐ", "config.gtceu.option.ae2": "ᄅǝɐ", "config.gtceu.option.allowDrumsInputFluidsFromOutputSide": "ǝpıSʇndʇnOɯoɹℲspınןℲʇnduIsɯnɹᗡʍoןןɐ", + "config.gtceu.option.allowedImageDomains": "suıɐɯoᗡǝbɐɯIpǝʍoןןɐ", "config.gtceu.option.animationTime": "ǝɯı⟘uoıʇɐɯıuɐ", "config.gtceu.option.arcRecyclingYield": "pןǝıʎbuıןɔʎɔǝᴚɔɹɐ", "config.gtceu.option.armorHud": "pnHɹoɯɹɐ", @@ -1892,7 +1894,7 @@ "config.gtceu.option.steelSteamMultiblocks": "sʞɔoןqıʇןnWɯɐǝʇSןǝǝʇs", "config.gtceu.option.surfaceRockProspectRange": "ǝbuɐᴚʇɔǝdsoɹԀʞɔoᴚǝɔɐɟɹns", "config.gtceu.option.tankItemFluidPreview": "ʍǝıʌǝɹԀpınןℲɯǝʇIʞuɐʇ", - "config.gtceu.option.temperaturesInKelvin": "uıʌןǝʞuIsǝɹnʇɐɹǝdɯǝʇ", + "config.gtceu.option.temperaturesInCelsius": "snısןǝƆuIsǝɹnʇɐɹǝdɯǝʇ", "config.gtceu.option.titaniumBoilerHeatSpeed": "pǝǝdSʇɐǝHɹǝןıoᗺɯnıuɐʇıʇ", "config.gtceu.option.titaniumBoilerMaxTemperature": "ǝɹnʇɐɹǝdɯǝ⟘xɐWɹǝןıoᗺɯnıuɐʇıʇ", "config.gtceu.option.toggle": "ǝןbboʇ", @@ -2616,6 +2618,7 @@ "gtceu.key.armor_mode_switch": "ɥɔʇıʍS ǝpoW ɹoɯɹⱯ", "gtceu.key.enable_boots": "dɯnſ pǝʇsooᗺ ǝןqɐuƎ", "gtceu.key.enable_jetpack": "ʞɔɐdʇǝſ ǝןqɐuƎ", + "gtceu.key.enable_step_assist": "ʇsıssⱯdǝʇS ǝןqɐuƎ", "gtceu.key.tool_aoe_change": "ɥɔʇıʍS ǝpoW ƎoⱯ ןoo⟘", "gtceu.large_boiler": "ɹǝןıoᗺ ǝbɹɐꞀ", "gtceu.large_chemical_reactor": "ɹoʇɔɐǝᴚ ןɐɔıɯǝɥƆ ǝbɹɐꞀ", @@ -4733,7 +4736,7 @@ "item.gtceu.talc_dust": "ɔןɐ⟘", "item.gtceu.tantalum_capacitor": "ɹoʇıɔɐdɐƆ ɯnןɐʇuɐ⟘", "item.gtceu.terminal": "ןɐuıɯɹǝ⟘", - "item.gtceu.terminal.tooltip": "ʞɔoןq-ıʇןnɯ ǝɥʇ pןınq ʎןןɐɔıʇɐɯoʇnɐ oʇ ɹǝןןoɹʇuoɔ ɐ uo ʞɔıןƆ-ᴚ + ʇɟıɥS", + "item.gtceu.terminal.tooltip": "ʎɹoʇuǝʌuı ɹnoʎ ɯoɹɟ sɯǝʇı ɥʇıʍ ʞɔoןqıʇןnɯ ɐ pןınq ʎןןɐɔıʇɐɯoʇnɐ oʇ ɹǝןןoɹʇuoɔ ɐ uo ʞɔıןƆ-ᴚ + ʇɟıɥS", "item.gtceu.text_module": "ǝןnpoW ʇxǝ⟘", "item.gtceu.tiny_ash_dust": "sǝɥsⱯ ɟo ǝןıԀ ʎuı⟘", "item.gtceu.tiny_basaltic_mineral_sand_dust": "puɐS ןɐɹǝuıW ɔıʇןɐsɐᗺ ɟo ǝןıԀ ʎuı⟘", @@ -4836,7 +4839,7 @@ "item.gtceu.tool.lv_screwdriver.tooltip": "sǝuıɥɔɐW puɐ sɹǝʌoƆ sʇsnظpⱯ8§", "item.gtceu.tool.lv_wirecutter": ")ΛꞀ( ɹǝʇʇnƆ ǝɹıM %s", "item.gtceu.tool.lv_wrench": ")ΛꞀ( ɥɔuǝɹM %s", - "item.gtceu.tool.lv_wrench.tooltip": "sǝuıɥɔɐW ǝןʇuɐɯsıp oʇs ʞɔıןɔ ʇɟǝן pןoH8§", + "item.gtceu.tool.lv_wrench.tooltip": "sǝuıɥɔɐW ǝןʇuɐɯsıp oʇ ʞɔıןɔ ʇɟǝן pןoH8§", "item.gtceu.tool.mallet": "ʇǝןןɐW ʇɟoS %s", "item.gtceu.tool.mallet.tooltip.0": "˙ǝdıɔǝᴚ ʇuǝɹɹnƆ ɹǝʇɟⱯ ǝuıɥɔɐW ǝsnɐԀ oʇ ʞɐǝuS8§", "item.gtceu.tool.mallet.tooltip.1": "sǝuıɥɔɐW sʇɹɐʇS/sdoʇS8§", @@ -5698,20 +5701,24 @@ "metaarmor.message.nightvision.disabled": "ɟɟOɔ§ :uoısıΛʇɥbıNq§", "metaarmor.message.nightvision.enabled": "uOɐ§ :uoısıΛʇɥbıNq§", "metaarmor.message.nightvision.error": "¡ɹǝʍod ɥbnouǝ ʇoNɔ§", - "metaarmor.nms.boosted_jump.disabled": "pǝןqɐsıᗡ ʇsooᗺ dɯnſ :ǝʇınS ™ǝןɔsnWouɐN", - "metaarmor.nms.boosted_jump.enabled": "pǝןqɐuƎ ʇsooᗺ dɯnſ :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.nightvision.disabled": "pǝןqɐsıᗡ uoısıΛʇɥbıN :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.nightvision.enabled": "pǝןqɐuƎ uoısıΛʇɥbıN :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.nightvision.error": "¡ɹǝʍod ɥbnouǝ ʇoNɔ§ :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.share.disable": "pǝןqɐsıᗡ buıbɹɐɥƆ :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.share.enable": "pǝןqɐuƎ buıbɹɐɥƆ :ǝʇınS ™ǝןɔsnWouɐN", "metaarmor.nms.share.error": "¡buıbɹɐɥɔ ɹoɟ ɹǝʍod ɥbnouǝ ʇoNɔ§ :ǝʇınS ™ǝןɔsnWouɐN", + "metaarmor.nms.step_assist.disabled": "pǝןqɐsıᗡ ʇsıssⱯdǝʇS :ǝʇınS ™ǝןɔsnWouɐN", + "metaarmor.nms.step_assist.enabled": "pǝןqɐuƎ ʇsıssⱯdǝʇS :ǝʇınS ™ǝןɔsnWouɐN", + "metaarmor.qts.boosted_jump.disabled": "pǝןqɐsıᗡ ʇsooᗺ dɯnſ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", + "metaarmor.qts.boosted_jump.enabled": "pǝןqɐuƎ ʇsooᗺ dɯnſ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.nightvision.disabled": "pǝןqɐsıᗡ uoısıΛʇɥbıN :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.nightvision.enabled": "pǝןqɐuƎ uoısıΛʇɥbıN :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.nightvision.error": "¡ɹǝʍod ɥbnouǝ ʇoNɔ§ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.share.disable": "pǝןqɐsıᗡ buıbɹɐɥƆ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.share.enable": "pǝןqɐuƎ buıbɹɐɥƆ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.qts.share.error": "¡buıbɹɐɥɔ ɹoɟ ɹǝʍod ɥbnouǝ ʇoNɔ§ :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", + "metaarmor.qts.step_assist.disabled": "pǝןqɐsıᗡ ʇsıssⱯdǝʇS :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", + "metaarmor.qts.step_assist.enabled": "pǝןqɐuƎ ʇsıssⱯdǝʇS :ǝʇınS ™ɥɔǝ⟘ʞɹɐnὉ", "metaarmor.tooltip.autoeat": "ʎɹoʇuǝʌuI ɯoɹɟ pooℲ buıs∩ ʎq ɹɐᗺ pooℲ sǝɥsıuǝןdǝᴚ", "metaarmor.tooltip.breath": "ɹɐᗺ ɥʇɐǝɹᗺ ɹǝʇɐʍɹǝpu∩ sǝɥsıuǝןdǝᴚ", "metaarmor.tooltip.burning": "buıuɹnᗺ sǝıɟıןןnN", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index b738160a97f..3ceb805dee1 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -66,6 +66,7 @@ "behaviour.lighter.uses": "Remaining uses: %d", "behaviour.memory_card.client_msg.cleared": "Stored configuration cleared", "behaviour.memory_card.client_msg.copied": "Copied machine configuration", + "behaviour.memory_card.client_msg.missing_items": "Missing items required to paste configuration", "behaviour.memory_card.client_msg.pasted": "Applied machine configuration", "behaviour.memory_card.copy_target": "Copying: %s", "behaviour.memory_card.disabled": "§cDisabled§r", @@ -1745,6 +1746,7 @@ "config.gtceu.option.addLoot": "addLoot", "config.gtceu.option.ae2": "ae2", "config.gtceu.option.allowDrumsInputFluidsFromOutputSide": "allowDrumsInputFluidsFromOutputSide", + "config.gtceu.option.allowedImageDomains": "allowedImageDomains", "config.gtceu.option.animationTime": "animationTime", "config.gtceu.option.arcRecyclingYield": "arcRecyclingYield", "config.gtceu.option.armorHud": "armorHud", @@ -1892,7 +1894,7 @@ "config.gtceu.option.steelSteamMultiblocks": "steelSteamMultiblocks", "config.gtceu.option.surfaceRockProspectRange": "surfaceRockProspectRange", "config.gtceu.option.tankItemFluidPreview": "tankItemFluidPreview", - "config.gtceu.option.temperaturesInKelvin": "temperaturesInKelvin", + "config.gtceu.option.temperaturesInCelsius": "temperaturesInCelsius", "config.gtceu.option.titaniumBoilerHeatSpeed": "titaniumBoilerHeatSpeed", "config.gtceu.option.titaniumBoilerMaxTemperature": "titaniumBoilerMaxTemperature", "config.gtceu.option.toggle": "toggle", @@ -2616,8 +2618,8 @@ "gtceu.key.armor_mode_switch": "Armor Mode Switch", "gtceu.key.enable_boots": "Enable Boosted Jump", "gtceu.key.enable_jetpack": "Enable Jetpack", - "gtceu.key.tool_aoe_change": "Tool AoE Mode Switch", "gtceu.key.enable_step_assist": "Enable StepAssist", + "gtceu.key.tool_aoe_change": "Tool AoE Mode Switch", "gtceu.large_boiler": "Large Boiler", "gtceu.large_chemical_reactor": "Large Chemical Reactor", "gtceu.laser_engraver": "Laser Engraver", @@ -4734,7 +4736,7 @@ "item.gtceu.talc_dust": "Talc", "item.gtceu.tantalum_capacitor": "Tantalum Capacitor", "item.gtceu.terminal": "Terminal", - "item.gtceu.terminal.tooltip": "Shift + R-Click on a controller to automatically build the multi-block", + "item.gtceu.terminal.tooltip": "Shift + R-Click on a controller to automatically build a multiblock with items from your inventory", "item.gtceu.text_module": "Text Module", "item.gtceu.tiny_ash_dust": "Tiny Pile of Ashes", "item.gtceu.tiny_basaltic_mineral_sand_dust": "Tiny Pile of Basaltic Mineral Sand", @@ -5699,26 +5701,24 @@ "metaarmor.message.nightvision.disabled": "§bNightVision: §cOff", "metaarmor.message.nightvision.enabled": "§bNightVision: §aOn", "metaarmor.message.nightvision.error": "§cNot enough power!", - "metaarmor.message.step_assist.disabled": "StepAssist: §cOff", - "metaarmor.message.step_assist.enabled": "StepAssist: §aOn", "metaarmor.nms.nightvision.disabled": "NanoMuscle™ Suite: NightVision Disabled", "metaarmor.nms.nightvision.enabled": "NanoMuscle™ Suite: NightVision Enabled", "metaarmor.nms.nightvision.error": "NanoMuscle™ Suite: §cNot enough power!", - "metaarmor.qts.nightvision.disabled": "QuarkTech™ Suite: NightVision Disabled", - "metaarmor.qts.nightvision.enabled": "QuarkTech™ Suite: NightVision Enabled", - "metaarmor.qts.nightvision.error": "QuarkTech™ Suite: §cNot enough power!", - "metaarmor.nms.step_assist.disabled": "NanoMuscle™ Suite: StepAssist Disabled", - "metaarmor.nms.step_assist.enabled": "NanoMuscle™ Suite: StepAssist Enabled", - "metaarmor.qts.step_assist.disabled": "QuarkTech™ Suite: StepAssist Disabled", - "metaarmor.qts.step_assist.enabled": "QuarkTech™ Suite: StepAssist Enabled", "metaarmor.nms.share.disable": "NanoMuscle™ Suite: Charging Disabled", "metaarmor.nms.share.enable": "NanoMuscle™ Suite: Charging Enabled", "metaarmor.nms.share.error": "NanoMuscle™ Suite: §cNot enough power for charging!", + "metaarmor.nms.step_assist.disabled": "NanoMuscle™ Suite: StepAssist Disabled", + "metaarmor.nms.step_assist.enabled": "NanoMuscle™ Suite: StepAssist Enabled", + "metaarmor.qts.boosted_jump.disabled": "QuarkTech™ Suite: Jump Boost Disabled", + "metaarmor.qts.boosted_jump.enabled": "QuarkTech™ Suite: Jump Boost Enabled", + "metaarmor.qts.nightvision.disabled": "QuarkTech™ Suite: NightVision Disabled", + "metaarmor.qts.nightvision.enabled": "QuarkTech™ Suite: NightVision Enabled", + "metaarmor.qts.nightvision.error": "QuarkTech™ Suite: §cNot enough power!", "metaarmor.qts.share.disable": "QuarkTech™ Suite: Charging Disabled", "metaarmor.qts.share.enable": "QuarkTech™ Suite: Charging Enabled", "metaarmor.qts.share.error": "QuarkTech™ Suite: §cNot enough power for charging!", - "metaarmor.qts.boosted_jump.disabled": "QuarkTech™ Suite: Jump Boost Disabled", - "metaarmor.qts.boosted_jump.enabled": "QuarkTech™ Suite: Jump Boost Enabled", + "metaarmor.qts.step_assist.disabled": "QuarkTech™ Suite: StepAssist Disabled", + "metaarmor.qts.step_assist.enabled": "QuarkTech™ Suite: StepAssist Enabled", "metaarmor.tooltip.autoeat": "Replenishes Food Bar by Using Food from Inventory", "metaarmor.tooltip.breath": "Replenishes Underwater Breath Bar", "metaarmor.tooltip.burning": "Nullifies Burning", diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/huge_duct_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/huge_duct_pipe/center.json index 6318ac6c5b3..1916aa7d966 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/huge_duct_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/huge_duct_pipe/center.json @@ -41,7 +41,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_duct_in", "side": "gtceu:block/pipe/pipe_duct_side" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/large_duct_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/large_duct_pipe/center.json index 26aeac6acf3..39b3a894eac 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/large_duct_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/large_duct_pipe/center.json @@ -41,7 +41,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_duct_in", "side": "gtceu:block/pipe/pipe_duct_side" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_duct_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_duct_pipe/center.json index 55bac017a34..1c7b6fe9ce9 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_duct_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_duct_pipe/center.json @@ -41,7 +41,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_duct_in", "side": "gtceu:block/pipe/pipe_duct_side" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center.json index 0cc3032c0e5..9de7a83201f 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center.json @@ -79,7 +79,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_laser_in", "side": "gtceu:block/pipe/pipe_laser_side", "side_overlay": "gtceu:block/pipe/pipe_laser_side_overlay" } diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center_active.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center_active.json index 18781c339d2..088aa774a9f 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center_active.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/center_active.json @@ -1,6 +1,115 @@ { - "parent": "gtceu:block/pipe/normal_laser_pipe/center", + "parent": "minecraft:block/block", + "elements": [ + { + "faces": { + "down": { + "texture": "#side", + "tintindex": 0 + }, + "east": { + "texture": "#side", + "tintindex": 0 + }, + "north": { + "texture": "#side", + "tintindex": 0 + }, + "south": { + "texture": "#side", + "tintindex": 0 + }, + "up": { + "texture": "#side", + "tintindex": 0 + }, + "west": { + "texture": "#side", + "tintindex": 0 + } + }, + "from": [ + 5, + 5, + 5 + ], + "to": [ + 11, + 11, + 11 + ] + }, + { + "faces": { + "down": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "east": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "north": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "south": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "up": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "west": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + } + }, + "from": [ + 4.998, + 4.998, + 4.998 + ], + "to": [ + 11.002, + 11.002, + 11.002 + ] + } + ], "textures": { + "side": "gtceu:block/pipe/pipe_laser_side", "side_overlay": "gtceu:block/pipe/pipe_laser_side_overlay_emissive" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/connection_active.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/connection_active.json index a9170249dab..83cb7127326 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/connection_active.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_laser_pipe/connection_active.json @@ -1,6 +1,99 @@ { - "parent": "gtceu:block/pipe/normal_laser_pipe/connection", + "parent": "minecraft:block/block", + "elements": [ + { + "faces": { + "down": { + "cullface": "down", + "texture": "#end", + "tintindex": 1 + }, + "east": { + "texture": "#side", + "tintindex": 0 + }, + "north": { + "texture": "#side", + "tintindex": 0 + }, + "south": { + "texture": "#side", + "tintindex": 0 + }, + "up": { + "texture": "#end", + "tintindex": 1 + }, + "west": { + "texture": "#side", + "tintindex": 0 + } + }, + "from": [ + 5, + 0, + 5 + ], + "to": [ + 11, + 5, + 11 + ] + }, + { + "faces": { + "east": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "north": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "south": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "west": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + } + }, + "from": [ + 4.998, + -0.002, + 4.998 + ], + "to": [ + 11.002, + 5.002, + 11.002 + ] + } + ], "textures": { + "end": "gtceu:block/pipe/pipe_laser_in", + "side": "gtceu:block/pipe/pipe_laser_side", "side_overlay": "gtceu:block/pipe/pipe_laser_side_overlay_emissive" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center.json index c5356268055..1c46b15f85c 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center.json @@ -79,7 +79,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_optical_in", "side": "gtceu:block/pipe/pipe_optical_side", "side_overlay": "gtceu:block/pipe/pipe_optical_side_overlay" } diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center_active.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center_active.json index ac513d036e5..3a643f6dcc4 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center_active.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/center_active.json @@ -1,6 +1,115 @@ { - "parent": "gtceu:block/pipe/normal_optical_pipe/center", + "parent": "minecraft:block/block", + "elements": [ + { + "faces": { + "down": { + "texture": "#side", + "tintindex": 0 + }, + "east": { + "texture": "#side", + "tintindex": 0 + }, + "north": { + "texture": "#side", + "tintindex": 0 + }, + "south": { + "texture": "#side", + "tintindex": 0 + }, + "up": { + "texture": "#side", + "tintindex": 0 + }, + "west": { + "texture": "#side", + "tintindex": 0 + } + }, + "from": [ + 5, + 5, + 5 + ], + "to": [ + 11, + 11, + 11 + ] + }, + { + "faces": { + "down": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "east": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "north": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "south": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "up": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "west": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + } + }, + "from": [ + 4.998, + 4.998, + 4.998 + ], + "to": [ + 11.002, + 11.002, + 11.002 + ] + } + ], "textures": { + "side": "gtceu:block/pipe/pipe_optical_side", "side_overlay": "gtceu:block/pipe/pipe_optical_side_overlay_active" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/connection_active.json b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/connection_active.json index 224c446f985..962efa95cf6 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/connection_active.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/normal_optical_pipe/connection_active.json @@ -1,6 +1,99 @@ { - "parent": "gtceu:block/pipe/normal_optical_pipe/connection", + "parent": "minecraft:block/block", + "elements": [ + { + "faces": { + "down": { + "cullface": "down", + "texture": "#end", + "tintindex": 1 + }, + "east": { + "texture": "#side", + "tintindex": 0 + }, + "north": { + "texture": "#side", + "tintindex": 0 + }, + "south": { + "texture": "#side", + "tintindex": 0 + }, + "up": { + "texture": "#end", + "tintindex": 1 + }, + "west": { + "texture": "#side", + "tintindex": 0 + } + }, + "from": [ + 5, + 0, + 5 + ], + "to": [ + 11, + 5, + 11 + ] + }, + { + "faces": { + "east": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "north": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "south": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + }, + "west": { + "forge_data": { + "ambient_occlusion": false, + "block_light": 15, + "sky_light": 15 + }, + "texture": "#side_overlay", + "tintindex": 2 + } + }, + "from": [ + 4.998, + -0.002, + 4.998 + ], + "to": [ + 11.002, + 5.002, + 11.002 + ] + } + ], "textures": { + "end": "gtceu:block/pipe/pipe_optical_in", + "side": "gtceu:block/pipe/pipe_optical_side", "side_overlay": "gtceu:block/pipe/pipe_optical_side_overlay_active" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/pipe/small_duct_pipe/center.json b/src/generated/resources/assets/gtceu/models/block/pipe/small_duct_pipe/center.json index 98a31bc47ef..cf2698d2453 100644 --- a/src/generated/resources/assets/gtceu/models/block/pipe/small_duct_pipe/center.json +++ b/src/generated/resources/assets/gtceu/models/block/pipe/small_duct_pipe/center.json @@ -41,7 +41,6 @@ } ], "textures": { - "end": "gtceu:block/pipe/pipe_duct_in", "side": "gtceu:block/pipe/pipe_duct_side" } } \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java index 3ea09f9003c..ed8de15bb92 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic.Status; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.data.models.GTModels; +import com.gregtechceu.gtceu.utils.data.RuntimeExistingFileHelper; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.resources.ResourceLocation; @@ -23,31 +24,47 @@ public class HPCAOverlay { // spotless:off public static HPCAOverlay get(ResourceLocation normalSprite, ResourceLocation damagedSprite, ExistingFileHelper fileHelper) { - // normal - if (!fileHelper.exists(normalSprite, GTBlockstateProvider.TEXTURE)) { - return HPCAOverlay.EMPTY; + if (fileHelper instanceof RuntimeExistingFileHelper runtimeFileHelper) { + // if fileHelper is an instance of RuntimeExistingFileHelper, we have to enable its existence checking. + // the AutoCloseable warning is suppressed here because there's no clean way to + // use a try-with-resources statement in this. + //noinspection resource + fileHelper = runtimeFileHelper.activeHelper(); } - ResourceLocation activeSprite = normalSprite.withSuffix("_active"); - if (!fileHelper.exists(activeSprite, GTBlockstateProvider.TEXTURE)) activeSprite = normalSprite; - ResourceLocation damagedActiveSprite = damagedSprite.withSuffix("_active"); - if (!fileHelper.exists(damagedActiveSprite, GTBlockstateProvider.TEXTURE)) damagedActiveSprite = damagedSprite; - - // emissive - ResourceLocation normalSpriteEmissive = normalSprite.withSuffix("_emissive"); - if (!fileHelper.exists(normalSpriteEmissive, GTBlockstateProvider.TEXTURE)) normalSpriteEmissive = null; - - ResourceLocation activeSpriteEmissive = activeSprite.withSuffix("_emissive"); - if (!fileHelper.exists(activeSpriteEmissive, GTBlockstateProvider.TEXTURE)) activeSpriteEmissive = null; - - ResourceLocation damagedSpriteEmissive = damagedSprite.withSuffix("_emissive"); - if (!fileHelper.exists(damagedSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedSpriteEmissive = null; - - ResourceLocation damagedActiveSpriteEmissive = damagedActiveSprite.withSuffix("_emissive"); - if (!fileHelper.exists(damagedActiveSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedActiveSpriteEmissive = null; - - return new HPCAOverlay(normalSprite, activeSprite, damagedSprite, damagedActiveSprite, - normalSpriteEmissive, activeSpriteEmissive, damagedSpriteEmissive, damagedActiveSpriteEmissive); + try { + // normal + if (!fileHelper.exists(normalSprite, GTBlockstateProvider.TEXTURE)) { + return HPCAOverlay.EMPTY; + } + ResourceLocation activeSprite = normalSprite.withSuffix("_active"); + if (!fileHelper.exists(activeSprite, GTBlockstateProvider.TEXTURE)) activeSprite = normalSprite; + + ResourceLocation damagedActiveSprite = damagedSprite.withSuffix("_active"); + if (!fileHelper.exists(damagedActiveSprite, GTBlockstateProvider.TEXTURE)) damagedActiveSprite = damagedSprite; + + // emissive + ResourceLocation normalSpriteEmissive = normalSprite.withSuffix("_emissive"); + if (!fileHelper.exists(normalSpriteEmissive, GTBlockstateProvider.TEXTURE)) normalSpriteEmissive = null; + + ResourceLocation activeSpriteEmissive = activeSprite.withSuffix("_emissive"); + if (!fileHelper.exists(activeSpriteEmissive, GTBlockstateProvider.TEXTURE)) activeSpriteEmissive = null; + + ResourceLocation damagedSpriteEmissive = damagedSprite.withSuffix("_emissive"); + if (!fileHelper.exists(damagedSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedSpriteEmissive = null; + + ResourceLocation damagedActiveSpriteEmissive = damagedActiveSprite.withSuffix("_emissive"); + if (!fileHelper.exists(damagedActiveSpriteEmissive, GTBlockstateProvider.TEXTURE)) damagedActiveSpriteEmissive = null; + + return new HPCAOverlay(normalSprite, activeSprite, damagedSprite, damagedActiveSprite, + normalSpriteEmissive, activeSpriteEmissive, damagedSpriteEmissive, damagedActiveSpriteEmissive); + } finally { + if (fileHelper instanceof RuntimeExistingFileHelper.Active activeHelper) { + // close the active helper, just for good measure. + // Also in case we ever make it do anything, this won't be forgotten. + activeHelper.close(); + } + } } // spotless:on diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java index bf09a89f026..373ab7b33c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.common.data.models.GTModels; +import com.gregtechceu.gtceu.utils.data.RuntimeExistingFileHelper; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; @@ -25,6 +26,14 @@ public class WorkableOverlays { public static WorkableOverlays get(ResourceLocation textureDir, ExistingFileHelper fileHelper) { + if (fileHelper instanceof RuntimeExistingFileHelper runtimeFileHelper) { + // if fileHelper is an instance of RuntimeExistingFileHelper, we have to enable its existence checking. + // the AutoCloseable warning is suppressed here because there's no clean way to + // use a try-with-resources statement in this. + // noinspection resource + fileHelper = runtimeFileHelper.activeHelper(); + } + WorkableOverlays model = new WorkableOverlays(textureDir); for (OverlayFace overlayFace : OverlayFace.VALUES) { @@ -55,6 +64,13 @@ public static WorkableOverlays get(ResourceLocation textureDir, ExistingFileHelp model.textures.put(overlayFace, new StatusTextures(normalSprite, activeSprite, pausedSprite, normalSpriteEmissive, activeSpriteEmissive, pausedSpriteEmissive)); } + + if (fileHelper instanceof RuntimeExistingFileHelper.Active activeHelper) { + // close the active helper, just for good measure. + // Also in case we ever make it do anything, this won't be forgotten. + activeHelper.close(); + } + return model; } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/pipe/ActivablePipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/pipe/ActivablePipeModel.java index dc257bd4770..4213be34926 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/pipe/ActivablePipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/pipe/ActivablePipeModel.java @@ -5,10 +5,14 @@ import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.data.model.builder.PipeModelBuilder; +import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.model.generators.BlockModelBuilder; import net.minecraftforge.client.model.generators.IGeneratedBlockState; +import net.minecraftforge.client.model.generators.ModelBuilder; +import net.minecraftforge.client.model.generators.ModelFile; +import it.unimi.dsi.fastutil.objects.Reference2FloatMap; import lombok.Setter; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -23,6 +27,8 @@ public class ActivablePipeModel extends PipeModel { public @Nullable ResourceLocation sideSecondaryActive, endSecondaryActive; @Setter public @Nullable ResourceLocation sideOverlayActive, endOverlayActive; + @Setter + public int activeEmissivity = 15; /// Use {@link #getOrCreateActiveBlockModel()} instead of referencing this field directly. private BlockModelBuilder activeBlockModel; @@ -67,8 +73,7 @@ protected BlockModelBuilder getOrCreateActiveBlockModel() { // spotless:off return this.activeBlockModel = this.provider.models().getBuilder(this.blockId.withSuffix("_active").toString()) .parent(this.getOrCreateActiveCenterElement()) - .customLoader(PipeModelBuilder::begin) - .thickness(this.thickness).provider(this.provider) + .customLoader(PipeModelBuilder.begin(this.thickness, this.provider)) .centerModels(this.getOrCreateActiveCenterElement().getLocation()) .connectionModels(this.getOrCreateActiveConnectionElement().getLocation()) .end(); @@ -87,7 +92,9 @@ protected BlockModelBuilder getOrCreateActiveCenterElement() { if (this.activeCenterElement != null) { return this.activeCenterElement; } - return this.activeCenterElement = makeActiveVariant(this.getOrCreateCenterElement()); + return this.activeCenterElement = makeActiveElementModel( + this.blockId.withPath(path -> "block/pipe/" + path + "/center_active"), + null, minCoord, minCoord, minCoord, maxCoord, maxCoord, maxCoord); } /** @@ -105,24 +112,82 @@ protected BlockModelBuilder getOrCreateActiveConnectionElement() { if (this.activeConnectionElement != null) { return this.activeConnectionElement; } - return this.activeConnectionElement = makeActiveVariant(this.getOrCreateConnectionElement()); + return this.activeConnectionElement = makeActiveElementModel( + this.blockId.withPath(path -> "block/pipe/" + path + "/connection_active"), + Direction.DOWN, minCoord, 0, minCoord, maxCoord, minCoord, maxCoord); } - protected BlockModelBuilder makeActiveVariant(BlockModelBuilder parentModel) { - BlockModelBuilder model = this.provider.models() - .getBuilder(parentModel.getLocation().withSuffix("_active").toString()) - .parent(parentModel); - // override non-null textures, leave unset ones as is - if (this.sideActive != null) model.texture("side", this.sideActive); - if (this.endActive != null) model.texture("end", this.endActive); - if (this.sideSecondaryActive != null) model.texture("side_secondary", this.sideSecondaryActive); - if (this.endSecondaryActive != null) model.texture("end_secondary", this.endSecondaryActive); - if (this.sideOverlayActive != null) model.texture("side_overlay", this.sideOverlayActive); - if (this.endOverlayActive != null) model.texture("end_overlay", this.endOverlayActive); + /** + * Fills out a model builder with applicable pipe model elements and returns it for further use + *
+ * By default, this class assumes all resources exist and does not check any references' validity. + * To enable actual checking, you may use a try-with-resources statement like this: + * + *
{@code
+ * try (var helper = RuntimeExistingFileHelper.INSTANCE.activeHelper()) {
+ * // If you don't use a try-with-resources or try-finally block to
+ * // enable checking, calling `exists` will always return true.
+ * if (helper.exists(texture, GTBlockstateProvider.TEXTURE)) {
+ * // do stuff
+ * }
+ * }
+ * }
+ *
*/
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class RuntimeExistingFileHelper extends ExistingFileHelper {
- public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper();
+ public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper(HashMultimap.create());
- protected final Multimap+ * Note that it's safe to ignore "unclosed AutoCloseable"/{@code resource} warnings on this class, as is done in + * {@linkplain com.gregtechceu.gtceu.client.model.machine.overlays.WorkableOverlays#get WorkableOverlays#get}. + *
+ */ + public static class Active extends RuntimeExistingFileHelper implements AutoCloseable { + + protected Active(Multimap